Fixed some code which was ignoring the result of MonochromeBitmapSource calls, which...
[zxing.git] / core / src / com / google / zxing / oned / AbstractOneDReader.java
index 7506db5..508e05c 100644 (file)
@@ -24,7 +24,6 @@ import com.google.zxing.Result;
 import com.google.zxing.ResultMetadataType;
 import com.google.zxing.ResultPoint;
 import com.google.zxing.common.BitArray;
-import com.google.zxing.common.GenericResultPoint;
 
 import java.util.Hashtable;
 
@@ -113,7 +112,7 @@ public abstract class AbstractOneDReader implements OneDReader {
       } catch (ReaderException re) {
         continue;
       }
-      image.getBlackRow(rowNumber, row, 0, width);
+      row = image.getBlackRow(rowNumber, row, 0, width);
 
       // While we have the image data in a BitArray, it's fairly cheap to reverse it in place to
       // handle decoding upside down barcodes.
@@ -130,8 +129,8 @@ public abstract class AbstractOneDReader implements OneDReader {
             result.putMetadata(ResultMetadataType.ORIENTATION, new Integer(180));
             // And remember to flip the result points horizontally.
             ResultPoint[] points = result.getResultPoints();
-            points[0] = new GenericResultPoint(width - points[0].getX() - 1, points[0].getY());
-            points[1] = new GenericResultPoint(width - points[1].getX() - 1, points[1].getY());
+            points[0] = new ResultPoint(width - points[0].getX() - 1, points[0].getY());
+            points[1] = new ResultPoint(width - points[1].getX() - 1, points[1].getY());
           }
           return result;
         } catch (ReaderException re) {
@@ -169,7 +168,7 @@ public abstract class AbstractOneDReader implements OneDReader {
     int i = start;
     while (i < end) {
       boolean pixel = row.get(i);
-      if ((!pixel && isWhite) || (pixel && !isWhite)) {
+      if (pixel ^ isWhite) { // that is, exactly one is true
         counters[counterPosition]++;
       } else {
         counterPosition++;
@@ -177,7 +176,7 @@ public abstract class AbstractOneDReader implements OneDReader {
           break;
         } else {
           counters[counterPosition] = 1;
-          isWhite = !isWhite;
+          isWhite ^= true; // isWhite = !isWhite;  Is this too clever? shorter byte code, no conditional
         }
       }
       i++;