package com.google.zxing;
-import com.google.zxing.common.ByteMatrix;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.oned.Code128Writer;
+import com.google.zxing.oned.Code39Writer;
+import com.google.zxing.oned.EAN13Writer;
+import com.google.zxing.oned.EAN8Writer;
+import com.google.zxing.oned.ITFWriter;
import com.google.zxing.qrcode.QRCodeWriter;
import java.util.Hashtable;
+/**
+ * This is a factory class which finds the appropriate Writer subclass for the BarcodeFormat
+ * requested and encodes the barcode with the supplied contents.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ */
public final class MultiFormatWriter implements Writer {
- public ByteMatrix encode(byte[] contents, BarcodeFormat format, int width,
- int height) throws Exception {
+ public BitMatrix encode(String contents, BarcodeFormat format, int width,
+ int height) throws WriterException {
return encode(contents, format, width, height, null);
}
- public ByteMatrix encode(byte[] contents, BarcodeFormat format, int width, int height,
- Hashtable hints) throws Exception {
+ public BitMatrix encode(String contents, BarcodeFormat format, int width, int height,
+ Hashtable hints) throws WriterException {
- if (format == BarcodeFormat.QR_CODE) {
- return new QRCodeWriter().encode(contents, format, width, height, hints);
+ Writer writer;
+ if (format == BarcodeFormat.EAN_8) {
+ writer = new EAN8Writer();
+ } else if (format == BarcodeFormat.EAN_13) {
+ writer = new EAN13Writer();
+ } else if (format == BarcodeFormat.QR_CODE) {
+ writer = new QRCodeWriter();
+ } else if (format == BarcodeFormat.CODE_39) {
+ writer = new Code39Writer();
+ } else if (format == BarcodeFormat.CODE_128) {
+ writer = new Code128Writer();
+ } else if (format == BarcodeFormat.ITF) {
+ writer = new ITFWriter();
} else {
throw new IllegalArgumentException("No encoder available for format " + format);
}
+ return writer.encode(contents, format, width, height, hints);
}
}