Update DataMask.java (#653)

Further micro-optimize QR data mask recognition; more comment for earlier such changes.
This commit is contained in:
fgrieu 2016-08-29 00:12:25 +02:00 committed by Sean Owen
parent 7b1e1ccadb
commit e9e2bd280b

View file

@ -85,6 +85,7 @@ enum DataMask {
/** /**
* 101: mask bits for which xy mod 2 + xy mod 3 == 0 * 101: mask bits for which xy mod 2 + xy mod 3 == 0
* equivalently, such that xy mod 6 == 0
*/ */
DATA_MASK_101() { DATA_MASK_101() {
@Override @Override
@ -95,17 +96,18 @@ enum DataMask {
/** /**
* 110: mask bits for which (xy mod 2 + xy mod 3) mod 2 == 0 * 110: mask bits for which (xy mod 2 + xy mod 3) mod 2 == 0
* equivalently, such that xy mod 6 < 3
*/ */
DATA_MASK_110() { DATA_MASK_110() {
@Override @Override
boolean isMasked(int i, int j) { boolean isMasked(int i, int j) {
int temp = i * j; return ((i * j) % 6) < 3;
return ((temp + (temp % 3)) & 0x01) == 0;
} }
}, },
/** /**
* 111: mask bits for which ((x+y)mod 2 + xy mod 3) mod 2 == 0 * 111: mask bits for which ((x+y)mod 2 + xy mod 3) mod 2 == 0
* equivalently, such that (x + y + xy mod 3) mod 2 == 0
*/ */
DATA_MASK_111() { DATA_MASK_111() {
@Override @Override