Fix small display problem when extension starts with 9
[zxing.git] / core / src / com / google / zxing / oned / ITFWriter.java
index b85a652..16894a6 100644 (file)
@@ -28,37 +28,41 @@ import com.google.zxing.common.BitMatrix;
  */
 public final class ITFWriter extends UPCEANWriter {
 
-         public BitMatrix encode(String contents, BarcodeFormat format, int width, int height,
-             Hashtable hints) throws WriterException {
-           if (format != BarcodeFormat.ITF) {
-             throw new IllegalArgumentException("Can only encode ITF, but got " + format);
-           }
-           
-           return super.encode(contents, format, width, height, hints);
-         }
+  public BitMatrix encode(String contents,
+                          BarcodeFormat format,
+                          int width,
+                          int height,
+                          Hashtable hints) throws WriterException {
+    if (format != BarcodeFormat.ITF) {
+      throw new IllegalArgumentException("Can only encode ITF, but got " + format);
+    }
 
-         public byte[] encode(String contents) {
-      int length = contents.length();
-           if (length > 80) {
-             throw new IllegalArgumentException(
-                 "Requested contents should be less than 80 digits long, but got " + length);
-           }
-           byte[] result = new byte[9 + 9 * length];
-           int[] start = {1, 1, 1, 1};
-      int pos = appendPattern(result, 0, start, 1);
-           for (int i = 0; i < length; i += 2) {
-        int one = Character.digit(contents.charAt(i), 10);
-        int two = Character.digit(contents.charAt(i+1), 10);
-               int[] encoding = new int[18];
-               for (int j = 0; j < 10; j += 2) {
-                       encoding[j] = ITFReader.PATTERNS[one][j];
-                       encoding[j + 1] = ITFReader.PATTERNS[two][j];
-               }
-               pos += appendPattern(result, pos, encoding, 1);
-           }
-      int[] end = {3, 1, 1};
-      pos += appendPattern(result, pos, end, 1);
+    return super.encode(contents, format, width, height, hints);
+  }
+
+  public byte[] encode(String contents) {
+    int length = contents.length();
+    if (length > 80) {
+      throw new IllegalArgumentException(
+          "Requested contents should be less than 80 digits long, but got " + length);
+    }
+    byte[] result = new byte[9 + 9 * length];
+    int[] start = {1, 1, 1, 1};
+    int pos = appendPattern(result, 0, start, 1);
+    for (int i = 0; i < length; i += 2) {
+      int one = Character.digit(contents.charAt(i), 10);
+      int two = Character.digit(contents.charAt(i+1), 10);
+      int[] encoding = new int[18];
+      for (int j = 0; j < 5; j++) {
+        encoding[(j << 1)] = ITFReader.PATTERNS[one][j];
+        encoding[(j << 1) + 1] = ITFReader.PATTERNS[two][j];
+      }
+      pos += appendPattern(result, pos, encoding, 1);
+    }
+    int[] end = {3, 1, 1};
+    pos += appendPattern(result, pos, end, 1);
+
+    return result;
+  }
 
-           return result;
-         }
 }
\ No newline at end of file