mirror of
https://github.com/zxing/zxing.git
synced 2024-11-09 20:44:03 -08:00
Initial support for DMRE
This commit is contained in:
parent
3374aed3fd
commit
395dc6b83f
|
@ -159,7 +159,7 @@ public final class BitMatrix implements Cloneable {
|
|||
*/
|
||||
public boolean get(int x, int y) {
|
||||
int offset = y * rowSize + (x / 32);
|
||||
return ((bits[offset] >>> (x & 0x1f)) & 1) != 0;
|
||||
return offset < bits.length && ((bits[offset] >>> (x & 0x1f)) & 1) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -170,12 +170,16 @@ public final class BitMatrix implements Cloneable {
|
|||
*/
|
||||
public void set(int x, int y) {
|
||||
int offset = y * rowSize + (x / 32);
|
||||
bits[offset] |= 1 << (x & 0x1f);
|
||||
if (offset < bits.length) {
|
||||
bits[offset] |= 1 << (x & 0x1f);
|
||||
}
|
||||
}
|
||||
|
||||
public void unset(int x, int y) {
|
||||
int offset = y * rowSize + (x / 32);
|
||||
bits[offset] &= ~(1 << (x & 0x1f));
|
||||
if (offset < bits.length) {
|
||||
bits[offset] &= ~(1 << (x & 0x1f));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -186,7 +190,9 @@ public final class BitMatrix implements Cloneable {
|
|||
*/
|
||||
public void flip(int x, int y) {
|
||||
int offset = y * rowSize + (x / 32);
|
||||
bits[offset] ^= 1 << (x & 0x1f);
|
||||
if (offset < bits.length) {
|
||||
bits[offset] ^= 1 << (x & 0x1f);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -48,7 +48,7 @@ final class BitMatrixParser {
|
|||
}
|
||||
|
||||
/**
|
||||
* <p>Creates the version object based on the dimension of the original bit matrix from
|
||||
* <p>Creates the version object based on the dimension of the original bit matrix from
|
||||
* the datamatrix code.</p>
|
||||
*
|
||||
* <p>See ISO 16022:2006 Table 7 - ECC 200 symbol attributes</p>
|
||||
|
@ -136,7 +136,8 @@ final class BitMatrixParser {
|
|||
}
|
||||
} while ((row < numRows) || (column < numColumns));
|
||||
|
||||
if (resultOffset != version.getTotalCodewords()) {
|
||||
if (resultOffset != version.getTotalCodewords() &&
|
||||
resultOffset != version.getTotalCodewords() - 1) {
|
||||
throw FormatException.getFormatInstance();
|
||||
}
|
||||
return result;
|
||||
|
|
|
@ -230,7 +230,37 @@ public final class Version {
|
|||
new Version(29, 16, 36, 14, 16,
|
||||
new ECBlocks(24, new ECB(1, 32))),
|
||||
new Version(30, 16, 48, 14, 22,
|
||||
new ECBlocks(28, new ECB(1, 49)))
|
||||
new ECBlocks(28, new ECB(1, 49))),
|
||||
|
||||
// extended forms as specified in
|
||||
// AIM-D - Symbology Specification – Data Matrix Rectangular Extension (DMRE)
|
||||
// Revision 1.0 September 22, 2014
|
||||
new Version(31, 8, 48, 6, 22,
|
||||
new ECBlocks(15, new ECB(1, 18))),
|
||||
new Version(32, 8, 64, 6, 14,
|
||||
new ECBlocks(18, new ECB(1, 24))),
|
||||
new Version(33, 12, 48, 10, 22,
|
||||
new ECBlocks(23, new ECB(1, 32))),
|
||||
new Version(34, 12, 64, 10, 14,
|
||||
new ECBlocks(27, new ECB(1, 43))),
|
||||
new Version(35, 16, 64, 14, 14,
|
||||
new ECBlocks(36, new ECB(1, 62))),
|
||||
new Version(36, 24, 32, 22, 14,
|
||||
new ECBlocks(28, new ECB(1, 49))),
|
||||
new Version(37, 24, 36, 22, 16,
|
||||
new ECBlocks(33, new ECB(1, 55))),
|
||||
new Version(38, 24, 48, 22, 22,
|
||||
new ECBlocks(41, new ECB(1, 80))),
|
||||
new Version(39, 24, 64, 22, 14,
|
||||
new ECBlocks(46, new ECB(1, 108))),
|
||||
new Version(40, 26, 32, 24, 14,
|
||||
new ECBlocks(32, new ECB(1, 52))),
|
||||
new Version(41, 26, 40, 24, 18,
|
||||
new ECBlocks(38, new ECB(1, 70))),
|
||||
new Version(42, 26, 48, 24, 22,
|
||||
new ECBlocks(42, new ECB(1, 90))),
|
||||
new Version(43, 26, 64, 24, 14,
|
||||
new ECBlocks(50, new ECB(1, 118)))
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue