Tiny optimizations to boolean logic to avoid extra byte code and branches in semi...
authorsrowen <srowen@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Mon, 23 Feb 2009 13:52:45 +0000 (13:52 +0000)
committersrowen <srowen@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Mon, 23 Feb 2009 13:52:45 +0000 (13:52 +0000)
git-svn-id: http://zxing.googlecode.com/svn/trunk@867 59b500cc-1b3d-0410-9834-0bbf25fbcc57

core/src/com/google/zxing/datamatrix/detector/Detector.java
core/src/com/google/zxing/oned/AbstractOneDReader.java
core/src/com/google/zxing/oned/AbstractUPCEANReader.java
core/src/com/google/zxing/oned/Code128Reader.java
core/src/com/google/zxing/oned/Code39Reader.java
core/src/com/google/zxing/oned/ITFReader.java
core/src/com/google/zxing/qrcode/decoder/BitMatrixParser.java

index 4e47692..3cd2c1d 100644 (file)
@@ -231,7 +231,7 @@ public final class Detector {
     boolean inBlack = image.isBlack(steep ? fromY : fromX, steep ? fromX : fromY);
     for (int x = fromX, y = fromY; x != toX; x += xstep) {
       boolean isBlack = image.isBlack(steep ? y : x, steep ? x : y);
-      if (isBlack == !inBlack) {
+      if (isBlack != inBlack) {
         transitions++;
         inBlack = isBlack;
       }
index 7506db5..004eb47 100644 (file)
@@ -169,7 +169,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 +177,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++;
index 5336e0d..ab9da0a 100644 (file)
@@ -228,7 +228,7 @@ public abstract class AbstractUPCEANReader extends AbstractOneDReader implements
     int patternStart = rowOffset;
     for (int x = rowOffset; x < width; x++) {
       boolean pixel = row.get(x);
-      if ((!pixel && isWhite) || (pixel && !isWhite)) {
+      if (pixel ^ isWhite) {
         counters[counterPosition]++;
       } else {
         if (counterPosition == patternLength - 1) {
@@ -246,7 +246,7 @@ public abstract class AbstractUPCEANReader extends AbstractOneDReader implements
           counterPosition++;
         }
         counters[counterPosition] = 1;
-        isWhite = !isWhite;
+        isWhite ^= true; // isWhite = !isWhite;
       }
     }
     throw ReaderException.getInstance();
index 75be560..59da167 100644 (file)
@@ -180,7 +180,7 @@ public final class Code128Reader extends AbstractOneDReader {
 
     for (int i = rowOffset; i < width; i++) {
       boolean pixel = row.get(i);
-      if ((!pixel && isWhite) || (pixel && !isWhite)) {
+      if (pixel ^ isWhite) {
         counters[counterPosition]++;
       } else {
         if (counterPosition == patternLength - 1) {
@@ -210,7 +210,7 @@ public final class Code128Reader extends AbstractOneDReader {
           counterPosition++;
         }
         counters[counterPosition] = 1;
-        isWhite = !isWhite;
+        isWhite ^= true; // isWhite = !isWhite;
       }
     }
     throw ReaderException.getInstance();
index 50f2509..7a7514c 100644 (file)
@@ -184,7 +184,7 @@ public final class Code39Reader extends AbstractOneDReader {
 
     for (int i = rowOffset; i < width; i++) {
       boolean pixel = row.get(i);
-      if ((!pixel && isWhite) || (pixel && !isWhite)) {
+      if (pixel ^ isWhite) {
         counters[counterPosition]++;
       } else {
         if (counterPosition == patternLength - 1) {
@@ -209,7 +209,7 @@ public final class Code39Reader extends AbstractOneDReader {
           counterPosition++;
         }
         counters[counterPosition] = 1;
-        isWhite = !isWhite;
+        isWhite ^= true; // isWhite = !isWhite;
       }
     }
     throw ReaderException.getInstance();
index 49f065d..cf68d58 100644 (file)
@@ -296,7 +296,7 @@ public final class ITFReader extends AbstractOneDReader {
     int patternStart = rowOffset;\r
     for (int x = rowOffset; x < width; x++) {\r
       boolean pixel = row.get(x);\r
-      if ((!pixel && isWhite) || (pixel && !isWhite)) {\r
+      if (pixel ^ isWhite) {\r
         counters[counterPosition]++;\r
       } else {\r
         if (counterPosition == patternLength - 1) {\r
@@ -314,7 +314,7 @@ public final class ITFReader extends AbstractOneDReader {
           counterPosition++;\r
         }\r
         counters[counterPosition] = 1;\r
-        isWhite = !isWhite;\r
+        isWhite ^= true; // isWhite = !isWhite;\r
       }\r
     }\r
     throw ReaderException.getInstance();\r
index 8e1ff46..db86fde 100644 (file)
@@ -198,7 +198,7 @@ final class BitMatrixParser {
           }\r
         }\r
       }\r
-      readingUp = !readingUp; // switch directions\r
+      readingUp ^= true; // readingUp = !readingUp; // switch directions\r
     }\r
     if (resultOffset != version.getTotalCodewords()) {\r
       throw ReaderException.getInstance();\r