Update Codabar style and disable it as its causing too many false positives
[zxing.git] / core / src / com / google / zxing / oned / MultiFormatOneDReader.java
index 33b6edc..fa3de5d 100644 (file)
@@ -18,9 +18,13 @@ package com.google.zxing.oned;
 
 import com.google.zxing.BarcodeFormat;
 import com.google.zxing.DecodeHintType;
+import com.google.zxing.NotFoundException;
+import com.google.zxing.Reader;
 import com.google.zxing.ReaderException;
 import com.google.zxing.Result;
 import com.google.zxing.common.BitArray;
+import com.google.zxing.oned.rss.RSS14Reader;
+import com.google.zxing.oned.rss.expanded.RSSExpandedReader;
 
 import java.util.Hashtable;
 import java.util.Vector;
@@ -49,22 +53,38 @@ public final class MultiFormatOneDReader extends OneDReader {
       if (possibleFormats.contains(BarcodeFormat.CODE_39)) {
         readers.addElement(new Code39Reader(useCode39CheckDigit));
       }
+      if (possibleFormats.contains(BarcodeFormat.CODE_93)) {
+        readers.addElement(new Code93Reader());
+      }
       if (possibleFormats.contains(BarcodeFormat.CODE_128)) {
         readers.addElement(new Code128Reader());
       }
       if (possibleFormats.contains(BarcodeFormat.ITF)) {
          readers.addElement(new ITFReader());
       }
+      if (possibleFormats.contains(BarcodeFormat.CODABAR)) {
+         readers.addElement(new CodaBarReader());
+      }
+      if (possibleFormats.contains(BarcodeFormat.RSS14)) {
+         readers.addElement(new RSS14Reader());
+      }
+      if (possibleFormats.contains(BarcodeFormat.RSS_EXPANDED)){
+        readers.addElement(new RSSExpandedReader());
+      }
     }
     if (readers.isEmpty()) {
       readers.addElement(new MultiFormatUPCEANReader(hints));
       readers.addElement(new Code39Reader());
+      //readers.addElement(new CodaBarReader());
+      readers.addElement(new Code93Reader());      
       readers.addElement(new Code128Reader());
       readers.addElement(new ITFReader());
+      readers.addElement(new RSS14Reader());      
+      readers.addElement(new RSSExpandedReader());      
     }
   }
 
-  public Result decodeRow(int rowNumber, BitArray row, Hashtable hints) throws ReaderException {
+  public Result decodeRow(int rowNumber, BitArray row, Hashtable hints) throws NotFoundException {
     int size = readers.size();
     for (int i = 0; i < size; i++) {
       OneDReader reader = (OneDReader) readers.elementAt(i);
@@ -75,7 +95,15 @@ public final class MultiFormatOneDReader extends OneDReader {
       }
     }
 
-    throw ReaderException.getInstance();
+    throw NotFoundException.getNotFoundInstance();
+  }
+
+  public void reset() {
+    int size = readers.size();
+    for (int i = 0; i < size; i++) {
+      Reader reader = (Reader) readers.elementAt(i);
+      reader.reset();
+    }
   }
 
 }