Move character encoding logic out to common, try again to improve its handling of...
[zxing.git] / core / src / com / google / zxing / MultiFormatWriter.java
index a93d07a..297b79e 100644 (file)
 
 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;
@@ -31,25 +34,32 @@ import java.util.Hashtable;
  */
 public final class MultiFormatWriter implements Writer {
 
-  public ByteMatrix encode(String contents, BarcodeFormat format, int width,
+  public BitMatrix encode(String contents, BarcodeFormat format, int width,
       int height) throws WriterException {
 
     return encode(contents, format, width, height, null);
   }
 
-  public ByteMatrix encode(String contents, BarcodeFormat format, int width, int height,
+  public BitMatrix encode(String contents, BarcodeFormat format, int width, int height,
       Hashtable hints) throws WriterException {
 
+    Writer writer;
     if (format == BarcodeFormat.EAN_8) {
-      return new EAN8Writer().encode(contents, format, width, height, hints);
+      writer = new EAN8Writer();
     } else if (format == BarcodeFormat.EAN_13) {
-      return new EAN13Writer().encode(contents, format, width, height, hints);
+      writer = new EAN13Writer();
     } else if (format == BarcodeFormat.QR_CODE) {
-      return new QRCodeWriter().encode(contents, format, width, height, hints);
-    }
-    else {
+      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);
   }
 
 }