X-Git-Url: http://git.rot13.org/?p=zxing.git;a=blobdiff_plain;f=core%2Fsrc%2Fcom%2Fgoogle%2Fzxing%2Fdatamatrix%2Fdecoder%2FBitMatrixParser.java;h=45ffd2d04bdcf48c688c8848682135c8b512f4b4;hp=849f5be081e981428bce437f1cc3bd20b1385a62;hb=d0920ceb07da310eb8e10f6a11d5590bcb3184ea;hpb=ac343e4ddc7af1f54c2d2634abb1be992d183a35 diff --git a/core/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.java b/core/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.java index 849f5be0..45ffd2d0 100644 --- a/core/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.java +++ b/core/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.java @@ -30,18 +30,21 @@ final class BitMatrixParser { /** * @param bitMatrix {@link BitMatrix} to parse - * @throws FormatException if dimension is < 10 or > 144 or not 0 mod 2 + * @throws FormatException if dimension is < 8 or > 144 or not 0 mod 2 */ BitMatrixParser(BitMatrix bitMatrix) throws FormatException { - int dimension = bitMatrix.getDimension(); - if (dimension < 10 || dimension > 144 || (dimension & 0x01) != 0) { + int dimension = bitMatrix.getHeight(); + if (dimension < 8 || dimension > 144 || (dimension & 0x01) != 0) { throw FormatException.getFormatInstance(); } version = readVersion(bitMatrix); this.mappingBitMatrix = extractDataRegion(bitMatrix); - // TODO(bbrown): Make this work for rectangular symbols - this.readMappingMatrix = new BitMatrix(this.mappingBitMatrix.getDimension()); + this.readMappingMatrix = new BitMatrix(this.mappingBitMatrix.getWidth(), this.mappingBitMatrix.getHeight()); + } + + Version getVersion() { + return version; } /** @@ -55,16 +58,9 @@ final class BitMatrixParser { * @throws FormatException if the dimensions of the mapping matrix are not valid * Data Matrix dimensions. */ - Version readVersion(BitMatrix bitMatrix) throws FormatException { - - if (version != null) { - return version; - } - - // TODO(bbrown): make this work for rectangular dimensions as well. - int numRows = bitMatrix.getDimension(); - int numColumns = numRows; - + private static Version readVersion(BitMatrix bitMatrix) throws FormatException { + int numRows = bitMatrix.getHeight(); + int numColumns = bitMatrix.getWidth(); return Version.getVersionForDimensions(numRows, numColumns); } @@ -83,9 +79,9 @@ final class BitMatrixParser { int row = 4; int column = 0; - // TODO(bbrown): Data Matrix can be rectangular, assuming square for now - int numRows = mappingBitMatrix.getDimension(); - int numColumns = numRows; + + int numRows = mappingBitMatrix.getHeight(); + int numColumns = mappingBitMatrix.getWidth(); boolean corner1Read = false; boolean corner2Read = false; @@ -407,8 +403,7 @@ final class BitMatrixParser { int symbolSizeRows = version.getSymbolSizeRows(); int symbolSizeColumns = version.getSymbolSizeColumns(); - // TODO(bbrown): Make this work with rectangular codes - if (bitMatrix.getDimension() != symbolSizeRows) { + if (bitMatrix.getHeight() != symbolSizeRows) { throw new IllegalArgumentException("Dimension of bitMarix must match the version size"); } @@ -419,10 +414,9 @@ final class BitMatrixParser { int numDataRegionsColumn = symbolSizeColumns / dataRegionSizeColumns; int sizeDataRegionRow = numDataRegionsRow * dataRegionSizeRows; - //int sizeDataRegionColumn = numDataRegionsColumn * dataRegionSizeColumns; + int sizeDataRegionColumn = numDataRegionsColumn * dataRegionSizeColumns; - // TODO(bbrown): Make this work with rectangular codes - BitMatrix bitMatrixWithoutAlignment = new BitMatrix(sizeDataRegionRow); + BitMatrix bitMatrixWithoutAlignment = new BitMatrix(sizeDataRegionColumn, sizeDataRegionRow); for (int dataRegionRow = 0; dataRegionRow < numDataRegionsRow; ++dataRegionRow) { int dataRegionRowOffset = dataRegionRow * dataRegionSizeRows; for (int dataRegionColumn = 0; dataRegionColumn < numDataRegionsColumn; ++dataRegionColumn) {