- public Result decode(MonochromeBitmapSource image, Hashtable hints)
- throws ReaderException {
- Hashtable possibleFormats =
- hints == null ? null : (Hashtable) hints.get(DecodeHintType.POSSIBLE_FORMATS);
- boolean tryUPC = false;
- boolean tryQR = false;
-
- if (possibleFormats == null) {
- tryUPC = true;
- tryQR = true;
- } else if (possibleFormats.contains(BarcodeFormat.UPC)) {
- tryUPC = true;
- } else if (possibleFormats.contains(BarcodeFormat.QR_CODE)) {
- tryQR = true;
- } else {
- throw new ReaderException();
- }
-
- // UPC is much faster to decode, so try it first.
- if (tryUPC) {
- try {
- return new UPCReader().decode(image, hints);
- } catch (ReaderException e) {
+ public Result decode(MonochromeBitmapSource image, Hashtable hints) throws ReaderException {
+
+ Vector possibleFormats = hints == null ? null : (Vector) hints.get(DecodeHintType.POSSIBLE_FORMATS);
+ Vector readers = new Vector();
+ if (possibleFormats != null) {
+ if (possibleFormats.contains(BarcodeFormat.UPC_A) ||
+ possibleFormats.contains(BarcodeFormat.UPC_E) ||
+ possibleFormats.contains(BarcodeFormat.EAN_13) ||
+ possibleFormats.contains(BarcodeFormat.EAN_8) ||
+ possibleFormats.contains(BarcodeFormat.CODE_39) ||
+ possibleFormats.contains(BarcodeFormat.CODE_128)) {
+ readers.addElement(new MultiFormatOneDReader());
+ }
+ if (possibleFormats.contains(BarcodeFormat.QR_CODE)) {
+ readers.addElement(new QRCodeReader());