zxing_cpp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.gitmodules +3 -0
- data/CHANGELOG.rdoc +6 -0
- data/Gemfile +3 -0
- data/Manifest.txt +331 -0
- data/README.rdoc +138 -0
- data/Rakefile +28 -0
- data/bin/zxd +87 -0
- data/bin/zxe +53 -0
- data/ext/zxing/extconf.rb +27 -0
- data/ext/zxing/zxing-cpp/.gitignore +4 -0
- data/ext/zxing/zxing-cpp/AUTHORS +115 -0
- data/ext/zxing/zxing-cpp/CMakeLists.txt +84 -0
- data/ext/zxing/zxing-cpp/COPYING +201 -0
- data/ext/zxing/zxing-cpp/NOTICE +65 -0
- data/ext/zxing/zxing-cpp/README.md +50 -0
- data/ext/zxing/zxing-cpp/cli/src/ImageReaderSource.cpp +112 -0
- data/ext/zxing/zxing-cpp/cli/src/ImageReaderSource.h +40 -0
- data/ext/zxing/zxing-cpp/cli/src/jpgd.cpp +3174 -0
- data/ext/zxing/zxing-cpp/cli/src/jpgd.h +319 -0
- data/ext/zxing/zxing-cpp/cli/src/lodepng.cpp +6261 -0
- data/ext/zxing/zxing-cpp/cli/src/lodepng.h +1695 -0
- data/ext/zxing/zxing-cpp/cli/src/main.cpp +297 -0
- data/ext/zxing/zxing-cpp/cmake/FindCPPUNIT.cmake +54 -0
- data/ext/zxing/zxing-cpp/cmake/FindIconv.cmake +57 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/.gitignore +6 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigInteger.cc +405 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigInteger.hh +215 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerAlgorithms.cc +70 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerAlgorithms.hh +25 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerLibrary.hh +8 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerUtils.cc +50 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigIntegerUtils.hh +72 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigUnsigned.cc +697 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigUnsigned.hh +418 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigUnsignedInABase.cc +125 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/BigUnsignedInABase.hh +122 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/ChangeLog +146 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/Makefile +73 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/NumberlikeArray.hh +177 -0
- data/ext/zxing/zxing-cpp/core/src/bigint/README +71 -0
- data/ext/zxing/zxing-cpp/core/src/win32/zxing/iconv.h +14 -0
- data/ext/zxing/zxing-cpp/core/src/win32/zxing/stdint.h +247 -0
- data/ext/zxing/zxing-cpp/core/src/win32/zxing/win_iconv.c +2035 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/BarcodeFormat.cpp +40 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/BarcodeFormat.h +60 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Binarizer.cpp +45 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Binarizer.h +50 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/BinaryBitmap.cpp +70 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/BinaryBitmap.h +56 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ChecksumException.cpp +28 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ChecksumException.h +34 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/DecodeHints.cpp +142 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/DecodeHints.h +85 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Exception.cpp +43 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Exception.h +51 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/FormatException.cpp +41 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/FormatException.h +37 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/IllegalStateException.h +35 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/InvertedLuminanceSource.cpp +68 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/InvertedLuminanceSource.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/LuminanceSource.cpp +86 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/LuminanceSource.h +59 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/MultiFormatReader.cpp +124 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/MultiFormatReader.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/NotFoundException.h +35 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Reader.cpp +31 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Reader.h +40 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ReaderException.h +37 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Result.cpp +61 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/Result.h +55 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultIO.cpp +34 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultPoint.cpp +108 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultPoint.h +55 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultPointCallback.cpp +26 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ResultPointCallback.h +39 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/ZXing.h +133 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/AztecDetectorResult.cpp +54 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/AztecDetectorResult.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/AztecReader.cpp +68 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/AztecReader.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/decoder/Decoder.cpp +489 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/decoder/Decoder.h +69 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/detector/Detector.cpp +548 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/aztec/detector/Detector.h +92 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Array.h +170 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitArray.cpp +155 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitArray.h +81 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitArrayIO.cpp +31 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitMatrix.cpp +143 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitMatrix.h +91 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitSource.cpp +76 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/BitSource.h +74 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/CharacterSetECI.cpp +104 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/CharacterSetECI.h +53 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Counted.h +140 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/DecoderResult.cpp +46 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/DecoderResult.h +51 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/DetectorResult.cpp +39 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/DetectorResult.h +43 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GlobalHistogramBinarizer.cpp +212 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GlobalHistogramBinarizer.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GreyscaleLuminanceSource.cpp +80 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GreyscaleLuminanceSource.h +53 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GreyscaleRotatedLuminanceSource.cpp +81 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GreyscaleRotatedLuminanceSource.h +46 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GridSampler.cpp +122 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/GridSampler.h +45 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/HybridBinarizer.cpp +226 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/HybridBinarizer.h +67 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/IllegalArgumentException.cpp +27 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/IllegalArgumentException.h +36 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/PerspectiveTransform.cpp +107 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/PerspectiveTransform.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Point.h +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Str.cpp +61 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/Str.h +51 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/StringUtils.cpp +198 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/StringUtils.h +52 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/JavaMath.h +43 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/MathUtils.h +57 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/MonochromeRectangleDetector.cpp +174 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/MonochromeRectangleDetector.h +62 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/WhiteRectangleDetector.cpp +330 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/detector/WhiteRectangleDetector.h +59 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/GenericGF.cpp +150 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/GenericGF.h +73 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/GenericGFPoly.cpp +218 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/GenericGFPoly.h +56 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/ReedSolomonDecoder.cpp +174 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/ReedSolomonDecoder.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/ReedSolomonException.cpp +30 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/common/reedsolomon/ReedSolomonException.h +33 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/DataMatrixReader.cpp +54 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/DataMatrixReader.h +45 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/Version.cpp +199 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/Version.h +87 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/BitMatrixParser.cpp +361 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/BitMatrixParser.h +59 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/DataBlock.cpp +113 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/DataBlock.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/DecodedBitStreamParser.cpp +416 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/DecodedBitStreamParser.h +104 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/Decoder.cpp +93 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/decoder/Decoder.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/CornerPoint.cpp +46 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/CornerPoint.h +43 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/Detector.cpp +446 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/Detector.h +94 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/DetectorException.cpp +23 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/datamatrix/detector/DetectorException.h +23 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/ByQuadrantReader.cpp +75 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/ByQuadrantReader.h +42 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/GenericMultipleBarcodeReader.cpp +137 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/GenericMultipleBarcodeReader.h +51 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/MultipleBarcodeReader.cpp +29 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/MultipleBarcodeReader.h +41 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/QRCodeMultiReader.cpp +58 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/QRCodeMultiReader.h +36 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/detector/MultiDetector.cpp +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/detector/MultiDetector.h +37 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/detector/MultiFinderPatternFinder.cpp +236 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/multi/qrcode/detector/MultiFinderPatternFinder.h +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/CodaBarReader.cpp +340 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/CodaBarReader.h +57 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code128Reader.cpp +496 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code128Reader.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code39Reader.cpp +328 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code39Reader.h +63 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code93Reader.cpp +293 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/Code93Reader.h +58 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/EAN13Reader.cpp +85 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/EAN13Reader.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/EAN8Reader.cpp +65 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/EAN8Reader.h +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/ITFReader.cpp +337 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/ITFReader.h +54 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/MultiFormatOneDReader.cpp +96 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/MultiFormatOneDReader.h +38 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/MultiFormatUPCEANReader.cpp +110 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/MultiFormatUPCEANReader.h +41 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/OneDReader.cpp +227 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/OneDReader.h +81 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/OneDResultPoint.cpp +28 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/OneDResultPoint.h +35 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCAReader.cpp +71 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCAReader.h +50 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCEANReader.cpp +309 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCEANReader.h +88 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCEReader.cpp +146 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/oned/UPCEReader.h +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/PDF417Reader.cpp +170 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/PDF417Reader.h +49 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/BitMatrixParser.cpp +997 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/BitMatrixParser.h +84 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/DecodedBitStreamParser.cpp +563 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/DecodedBitStreamParser.h +84 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/Decoder.cpp +118 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/Decoder.h +62 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ErrorCorrection.cpp +214 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ErrorCorrection.h +71 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ModulusGF.cpp +120 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ModulusGF.h +72 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ModulusPoly.cpp +284 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/decoder/ec/ModulusPoly.h +68 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/detector/Detector.cpp +664 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/detector/Detector.h +106 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/detector/LinesSampler.cpp +714 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/pdf417/detector/LinesSampler.h +122 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/ErrorCorrectionLevel.cpp +65 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/ErrorCorrectionLevel.h +52 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/FormatInformation.cpp +117 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/FormatInformation.h +54 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/QRCodeReader.cpp +52 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/QRCodeReader.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/Version.cpp +560 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/Version.h +85 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/BitMatrixParser.cpp +183 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/BitMatrixParser.h +56 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DataBlock.cpp +118 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DataBlock.h +50 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DataMask.cpp +159 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DataMask.h +50 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.cpp +425 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.h +72 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/Decoder.cpp +107 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/Decoder.h +46 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/Mode.cpp +90 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/decoder/Mode.h +57 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/AlignmentPattern.cpp +47 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/AlignmentPattern.h +45 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/AlignmentPatternFinder.cpp +208 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/AlignmentPatternFinder.h +68 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/Detector.cpp +314 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/Detector.h +69 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPattern.cpp +69 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPattern.h +48 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPatternFinder.cpp +559 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPatternFinder.h +76 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPatternInfo.cpp +41 -0
- data/ext/zxing/zxing-cpp/core/src/zxing/qrcode/detector/FinderPatternInfo.h +47 -0
- data/ext/zxing/zxing-cpp/core/tests/src/TestRunner.cpp +30 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitArrayTest.cpp +216 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitArrayTest.h +61 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitMatrixTest.cpp +106 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitMatrixTest.h +55 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitSourceTest.cpp +49 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/BitSourceTest.h +42 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/CountedTest.cpp +58 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/CountedTest.h +46 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/PerspectiveTransformTest.cpp +69 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/PerspectiveTransformTest.h +47 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/reedsolomon/ReedSolomonTest.cpp +129 -0
- data/ext/zxing/zxing-cpp/core/tests/src/common/reedsolomon/ReedSolomonTest.h +62 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/ErrorCorrectionLevelTest.cpp +47 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/ErrorCorrectionLevelTest.h +45 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/FormatInformationTest.cpp +88 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/FormatInformationTest.h +47 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/VersionTest.cpp +88 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/VersionTest.h +49 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/decoder/DataMaskTest.cpp +132 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/decoder/DataMaskTest.h +91 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/decoder/ModeTest.cpp +52 -0
- data/ext/zxing/zxing-cpp/core/tests/src/qrcode/decoder/ModeTest.h +47 -0
- data/ext/zxing/zxing.cc +224 -0
- data/lib/zxing.rb +50 -0
- data/lib/zxing/.gitignore +2 -0
- data/lib/zxing/aztec.rb +5 -0
- data/lib/zxing/aztec/aztec_reader.rb +14 -0
- data/lib/zxing/bad_image_exception.rb +4 -0
- data/lib/zxing/binarizer.rb +8 -0
- data/lib/zxing/binary_bitmap.rb +15 -0
- data/lib/zxing/checksum_exception.rb +4 -0
- data/lib/zxing/common.rb +7 -0
- data/lib/zxing/common/bit_matrix.rb +9 -0
- data/lib/zxing/common/hybrid_binarizer.rb +17 -0
- data/lib/zxing/common/illegal_argument_exception.rb +4 -0
- data/lib/zxing/datamatrix.rb +5 -0
- data/lib/zxing/datamatrix/data_matrix_reader.rb +14 -0
- data/lib/zxing/decodable.rb +11 -0
- data/lib/zxing/exception.rb +4 -0
- data/lib/zxing/ffi.rb +20 -0
- data/lib/zxing/ffi/aztec.rb +6 -0
- data/lib/zxing/ffi/aztec/aztec_reader.rb +9 -0
- data/lib/zxing/ffi/binarizer.rb +25 -0
- data/lib/zxing/ffi/binary_bitmap.rb +15 -0
- data/lib/zxing/ffi/common.rb +8 -0
- data/lib/zxing/ffi/common/bit_matrix.rb +12 -0
- data/lib/zxing/ffi/common/greyscale_luminance_source.rb +30 -0
- data/lib/zxing/ffi/common/hybrid_binarizer.rb +10 -0
- data/lib/zxing/ffi/datamatrix.rb +6 -0
- data/lib/zxing/ffi/datamatrix/data_matrix_reader.rb +9 -0
- data/lib/zxing/ffi/library.rb +102 -0
- data/lib/zxing/ffi/luminance_source.rb +18 -0
- data/lib/zxing/ffi/multi_format_reader.rb +9 -0
- data/lib/zxing/ffi/oned.rb +6 -0
- data/lib/zxing/ffi/oned/code_39_reader.rb +10 -0
- data/lib/zxing/ffi/qrcode.rb +8 -0
- data/lib/zxing/ffi/qrcode/decoder.rb +10 -0
- data/lib/zxing/ffi/qrcode/detector.rb +10 -0
- data/lib/zxing/ffi/reader.rb +58 -0
- data/lib/zxing/ffi/result.rb +23 -0
- data/lib/zxing/format_exception.rb +4 -0
- data/lib/zxing/illegal_argument_exception.rb +4 -0
- data/lib/zxing/image.rb +15 -0
- data/lib/zxing/luminance_source.rb +18 -0
- data/lib/zxing/multi_format_reader.rb +11 -0
- data/lib/zxing/not_found_exception.rb +4 -0
- data/lib/zxing/oned.rb +5 -0
- data/lib/zxing/oned/code_39_reader.rb +15 -0
- data/lib/zxing/qrcode.rb +8 -0
- data/lib/zxing/qrcode/decoder.rb +14 -0
- data/lib/zxing/qrcode/detector.rb +14 -0
- data/lib/zxing/qrcode/encoder.rb +8 -0
- data/lib/zxing/qrcode/encoder/byte_matrix.rb +18 -0
- data/lib/zxing/qrcode/encoder/encoder.rb +9 -0
- data/lib/zxing/qrcode/encoder/qrcode.rb +18 -0
- data/lib/zxing/reader.rb +8 -0
- data/lib/zxing/reader_exception.rb +4 -0
- data/lib/zxing/reed_solomon_exception.rb +2 -0
- data/lib/zxing/result.rb +18 -0
- data/lib/zxing/rmagick.rb +5 -0
- data/lib/zxing/rmagick/image.rb +104 -0
- data/lib/zxing/version.rb +33 -0
- data/test/qrcode.png +0 -0
- data/test/test_helper.rb +5 -0
- data/test/test_zxing.rb +58 -0
- data/test/vendor.rb +360 -0
- data/test/zxing/test_decodable.rb +38 -0
- data/zxing_cpp.gemspec +48 -0
- metadata +473 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*-
|
|
2
|
+
#ifndef __QR_CODE_READER_H__
|
|
3
|
+
#define __QR_CODE_READER_H__
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* QRCodeReader.h
|
|
7
|
+
* zxing
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2010 ZXing authors All rights reserved.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#include <zxing/Reader.h>
|
|
25
|
+
#include <zxing/qrcode/decoder/Decoder.h>
|
|
26
|
+
#include <zxing/DecodeHints.h>
|
|
27
|
+
|
|
28
|
+
namespace zxing {
|
|
29
|
+
namespace qrcode {
|
|
30
|
+
|
|
31
|
+
class QRCodeReader : public Reader {
|
|
32
|
+
private:
|
|
33
|
+
Decoder decoder_;
|
|
34
|
+
|
|
35
|
+
protected:
|
|
36
|
+
Decoder& getDecoder();
|
|
37
|
+
|
|
38
|
+
public:
|
|
39
|
+
QRCodeReader();
|
|
40
|
+
virtual ~QRCodeReader();
|
|
41
|
+
|
|
42
|
+
Ref<Result> decode(Ref<BinaryBitmap> image, DecodeHints hints);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
#endif // __QR_CODE_READER_H__
|
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Version.cpp
|
|
3
|
+
* zxing
|
|
4
|
+
*
|
|
5
|
+
* Created by Christian Brunschen on 14/05/2008.
|
|
6
|
+
* Copyright 2008 ZXing authors All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#include <zxing/qrcode/Version.h>
|
|
22
|
+
#include <zxing/qrcode/FormatInformation.h>
|
|
23
|
+
#include <zxing/FormatException.h>
|
|
24
|
+
#include <limits>
|
|
25
|
+
#include <iostream>
|
|
26
|
+
#include <cstdarg>
|
|
27
|
+
|
|
28
|
+
using std::vector;
|
|
29
|
+
using std::numeric_limits;
|
|
30
|
+
|
|
31
|
+
namespace zxing {
|
|
32
|
+
namespace qrcode {
|
|
33
|
+
|
|
34
|
+
ECB::ECB(int count, int dataCodewords) :
|
|
35
|
+
count_(count), dataCodewords_(dataCodewords) {
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
int ECB::getCount() {
|
|
39
|
+
return count_;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
int ECB::getDataCodewords() {
|
|
43
|
+
return dataCodewords_;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
ECBlocks::ECBlocks(int ecCodewords, ECB *ecBlocks) :
|
|
47
|
+
ecCodewords_(ecCodewords), ecBlocks_(1, ecBlocks) {
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
ECBlocks::ECBlocks(int ecCodewords, ECB *ecBlocks1, ECB *ecBlocks2) :
|
|
51
|
+
ecCodewords_(ecCodewords), ecBlocks_(1, ecBlocks1) {
|
|
52
|
+
ecBlocks_.push_back(ecBlocks2);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
int ECBlocks::getECCodewords() {
|
|
56
|
+
return ecCodewords_;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
std::vector<ECB*>& ECBlocks::getECBlocks() {
|
|
60
|
+
return ecBlocks_;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
ECBlocks::~ECBlocks() {
|
|
64
|
+
for (size_t i = 0; i < ecBlocks_.size(); i++) {
|
|
65
|
+
delete ecBlocks_[i];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
unsigned int Version::VERSION_DECODE_INFO[] = { 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, 0x0E60D,
|
|
70
|
+
0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB,
|
|
71
|
+
0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, 0x2542E, 0x26A64,
|
|
72
|
+
0x27541, 0x28C69
|
|
73
|
+
};
|
|
74
|
+
int Version::N_VERSION_DECODE_INFOS = 34;
|
|
75
|
+
vector<Ref<Version> > Version::VERSIONS;
|
|
76
|
+
static int N_VERSIONS = Version::buildVersions();
|
|
77
|
+
|
|
78
|
+
int Version::getVersionNumber() {
|
|
79
|
+
return versionNumber_;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
vector<int> &Version::getAlignmentPatternCenters() {
|
|
83
|
+
return alignmentPatternCenters_;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
int Version::getTotalCodewords() {
|
|
87
|
+
return totalCodewords_;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
int Version::getDimensionForVersion() {
|
|
91
|
+
return 17 + 4 * versionNumber_;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
ECBlocks& Version::getECBlocksForLevel(ErrorCorrectionLevel &ecLevel) {
|
|
95
|
+
return *ecBlocks_[ecLevel.ordinal()];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
Version *Version::getProvisionalVersionForDimension(int dimension) {
|
|
99
|
+
if (dimension % 4 != 1) {
|
|
100
|
+
throw FormatException();
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
return Version::getVersionForNumber((dimension - 17) >> 2);
|
|
104
|
+
} catch (IllegalArgumentException const& ignored) {
|
|
105
|
+
(void)ignored;
|
|
106
|
+
throw FormatException();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
Version *Version::getVersionForNumber(int versionNumber) {
|
|
111
|
+
if (versionNumber < 1 || versionNumber > N_VERSIONS) {
|
|
112
|
+
throw ReaderException("versionNumber must be between 1 and 40");
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return VERSIONS[versionNumber - 1];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
Version::Version(int versionNumber, vector<int> *alignmentPatternCenters, ECBlocks *ecBlocks1, ECBlocks *ecBlocks2,
|
|
119
|
+
ECBlocks *ecBlocks3, ECBlocks *ecBlocks4) :
|
|
120
|
+
versionNumber_(versionNumber), alignmentPatternCenters_(*alignmentPatternCenters), ecBlocks_(4), totalCodewords_(0) {
|
|
121
|
+
ecBlocks_[0] = ecBlocks1;
|
|
122
|
+
ecBlocks_[1] = ecBlocks2;
|
|
123
|
+
ecBlocks_[2] = ecBlocks3;
|
|
124
|
+
ecBlocks_[3] = ecBlocks4;
|
|
125
|
+
|
|
126
|
+
int total = 0;
|
|
127
|
+
int ecCodewords = ecBlocks1->getECCodewords();
|
|
128
|
+
vector<ECB*> &ecbArray = ecBlocks1->getECBlocks();
|
|
129
|
+
for (size_t i = 0; i < ecbArray.size(); i++) {
|
|
130
|
+
ECB *ecBlock = ecbArray[i];
|
|
131
|
+
total += ecBlock->getCount() * (ecBlock->getDataCodewords() + ecCodewords);
|
|
132
|
+
}
|
|
133
|
+
totalCodewords_ = total;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
Version::~Version() {
|
|
137
|
+
delete &alignmentPatternCenters_;
|
|
138
|
+
for (size_t i = 0; i < ecBlocks_.size(); i++) {
|
|
139
|
+
delete ecBlocks_[i];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
Version *Version::decodeVersionInformation(unsigned int versionBits) {
|
|
144
|
+
int bestDifference = numeric_limits<int>::max();
|
|
145
|
+
size_t bestVersion = 0;
|
|
146
|
+
for (int i = 0; i < N_VERSION_DECODE_INFOS; i++) {
|
|
147
|
+
unsigned targetVersion = VERSION_DECODE_INFO[i];
|
|
148
|
+
// Do the version info bits match exactly? done.
|
|
149
|
+
if (targetVersion == versionBits) {
|
|
150
|
+
return getVersionForNumber(i + 7);
|
|
151
|
+
}
|
|
152
|
+
// Otherwise see if this is the closest to a real version info bit
|
|
153
|
+
// string we have seen so far
|
|
154
|
+
int bitsDifference = FormatInformation::numBitsDiffering(versionBits, targetVersion);
|
|
155
|
+
if (bitsDifference < bestDifference) {
|
|
156
|
+
bestVersion = i + 7;
|
|
157
|
+
bestDifference = bitsDifference;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// We can tolerate up to 3 bits of error since no two version info codewords will
|
|
161
|
+
// differ in less than 4 bits.
|
|
162
|
+
if (bestDifference <= 3) {
|
|
163
|
+
return getVersionForNumber(bestVersion);
|
|
164
|
+
}
|
|
165
|
+
// If we didn't find a close enough match, fail
|
|
166
|
+
return 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
Ref<BitMatrix> Version::buildFunctionPattern() {
|
|
170
|
+
int dimension = getDimensionForVersion();
|
|
171
|
+
Ref<BitMatrix> functionPattern(new BitMatrix(dimension));
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
// Top left finder pattern + separator + format
|
|
175
|
+
functionPattern->setRegion(0, 0, 9, 9);
|
|
176
|
+
// Top right finder pattern + separator + format
|
|
177
|
+
functionPattern->setRegion(dimension - 8, 0, 8, 9);
|
|
178
|
+
// Bottom left finder pattern + separator + format
|
|
179
|
+
functionPattern->setRegion(0, dimension - 8, 9, 8);
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
// Alignment patterns
|
|
183
|
+
size_t max = alignmentPatternCenters_.size();
|
|
184
|
+
for (size_t x = 0; x < max; x++) {
|
|
185
|
+
int i = alignmentPatternCenters_[x] - 2;
|
|
186
|
+
for (size_t y = 0; y < max; y++) {
|
|
187
|
+
if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) {
|
|
188
|
+
// No alignment patterns near the three finder patterns
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
functionPattern->setRegion(alignmentPatternCenters_[y] - 2, i, 5, 5);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Vertical timing pattern
|
|
196
|
+
functionPattern->setRegion(6, 9, 1, dimension - 17);
|
|
197
|
+
// Horizontal timing pattern
|
|
198
|
+
functionPattern->setRegion(9, 6, dimension - 17, 1);
|
|
199
|
+
|
|
200
|
+
if (versionNumber_ > 6) {
|
|
201
|
+
// Version info, top right
|
|
202
|
+
functionPattern->setRegion(dimension - 11, 0, 3, 6);
|
|
203
|
+
// Version info, bottom left
|
|
204
|
+
functionPattern->setRegion(0, dimension - 11, 6, 3);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return functionPattern;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
static vector<int> *intArray(size_t n...) {
|
|
211
|
+
va_list ap;
|
|
212
|
+
va_start(ap, n);
|
|
213
|
+
vector<int> *result = new vector<int>(n);
|
|
214
|
+
for (size_t i = 0; i < n; i++) {
|
|
215
|
+
(*result)[i] = va_arg(ap, int);
|
|
216
|
+
}
|
|
217
|
+
va_end(ap);
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
int Version::buildVersions() {
|
|
222
|
+
VERSIONS.push_back(Ref<Version>(new Version(1, intArray(0),
|
|
223
|
+
new ECBlocks(7, new ECB(1, 19)),
|
|
224
|
+
new ECBlocks(10, new ECB(1, 16)),
|
|
225
|
+
new ECBlocks(13, new ECB(1, 13)),
|
|
226
|
+
new ECBlocks(17, new ECB(1, 9)))));
|
|
227
|
+
VERSIONS.push_back(Ref<Version>(new Version(2, intArray(2, 6, 18),
|
|
228
|
+
new ECBlocks(10, new ECB(1, 34)),
|
|
229
|
+
new ECBlocks(16, new ECB(1, 28)),
|
|
230
|
+
new ECBlocks(22, new ECB(1, 22)),
|
|
231
|
+
new ECBlocks(28, new ECB(1, 16)))));
|
|
232
|
+
VERSIONS.push_back(Ref<Version>(new Version(3, intArray(2, 6, 22),
|
|
233
|
+
new ECBlocks(15, new ECB(1, 55)),
|
|
234
|
+
new ECBlocks(26, new ECB(1, 44)),
|
|
235
|
+
new ECBlocks(18, new ECB(2, 17)),
|
|
236
|
+
new ECBlocks(22, new ECB(2, 13)))));
|
|
237
|
+
VERSIONS.push_back(Ref<Version>(new Version(4, intArray(2, 6, 26),
|
|
238
|
+
new ECBlocks(20, new ECB(1, 80)),
|
|
239
|
+
new ECBlocks(18, new ECB(2, 32)),
|
|
240
|
+
new ECBlocks(26, new ECB(2, 24)),
|
|
241
|
+
new ECBlocks(16, new ECB(4, 9)))));
|
|
242
|
+
VERSIONS.push_back(Ref<Version>(new Version(5, intArray(2, 6, 30),
|
|
243
|
+
new ECBlocks(26, new ECB(1, 108)),
|
|
244
|
+
new ECBlocks(24, new ECB(2, 43)),
|
|
245
|
+
new ECBlocks(18, new ECB(2, 15),
|
|
246
|
+
new ECB(2, 16)),
|
|
247
|
+
new ECBlocks(22, new ECB(2, 11),
|
|
248
|
+
new ECB(2, 12)))));
|
|
249
|
+
VERSIONS.push_back(Ref<Version>(new Version(6, intArray(2, 6, 34),
|
|
250
|
+
new ECBlocks(18, new ECB(2, 68)),
|
|
251
|
+
new ECBlocks(16, new ECB(4, 27)),
|
|
252
|
+
new ECBlocks(24, new ECB(4, 19)),
|
|
253
|
+
new ECBlocks(28, new ECB(4, 15)))));
|
|
254
|
+
VERSIONS.push_back(Ref<Version>(new Version(7, intArray(3, 6, 22, 38),
|
|
255
|
+
new ECBlocks(20, new ECB(2, 78)),
|
|
256
|
+
new ECBlocks(18, new ECB(4, 31)),
|
|
257
|
+
new ECBlocks(18, new ECB(2, 14),
|
|
258
|
+
new ECB(4, 15)),
|
|
259
|
+
new ECBlocks(26, new ECB(4, 13),
|
|
260
|
+
new ECB(1, 14)))));
|
|
261
|
+
VERSIONS.push_back(Ref<Version>(new Version(8, intArray(3, 6, 24, 42),
|
|
262
|
+
new ECBlocks(24, new ECB(2, 97)),
|
|
263
|
+
new ECBlocks(22, new ECB(2, 38),
|
|
264
|
+
new ECB(2, 39)),
|
|
265
|
+
new ECBlocks(22, new ECB(4, 18),
|
|
266
|
+
new ECB(2, 19)),
|
|
267
|
+
new ECBlocks(26, new ECB(4, 14),
|
|
268
|
+
new ECB(2, 15)))));
|
|
269
|
+
VERSIONS.push_back(Ref<Version>(new Version(9, intArray(3, 6, 26, 46),
|
|
270
|
+
new ECBlocks(30, new ECB(2, 116)),
|
|
271
|
+
new ECBlocks(22, new ECB(3, 36),
|
|
272
|
+
new ECB(2, 37)),
|
|
273
|
+
new ECBlocks(20, new ECB(4, 16),
|
|
274
|
+
new ECB(4, 17)),
|
|
275
|
+
new ECBlocks(24, new ECB(4, 12),
|
|
276
|
+
new ECB(4, 13)))));
|
|
277
|
+
VERSIONS.push_back(Ref<Version>(new Version(10, intArray(3, 6, 28, 50),
|
|
278
|
+
new ECBlocks(18, new ECB(2, 68),
|
|
279
|
+
new ECB(2, 69)),
|
|
280
|
+
new ECBlocks(26, new ECB(4, 43),
|
|
281
|
+
new ECB(1, 44)),
|
|
282
|
+
new ECBlocks(24, new ECB(6, 19),
|
|
283
|
+
new ECB(2, 20)),
|
|
284
|
+
new ECBlocks(28, new ECB(6, 15),
|
|
285
|
+
new ECB(2, 16)))));
|
|
286
|
+
VERSIONS.push_back(Ref<Version>(new Version(11, intArray(3, 6, 30, 54),
|
|
287
|
+
new ECBlocks(20, new ECB(4, 81)),
|
|
288
|
+
new ECBlocks(30, new ECB(1, 50),
|
|
289
|
+
new ECB(4, 51)),
|
|
290
|
+
new ECBlocks(28, new ECB(4, 22),
|
|
291
|
+
new ECB(4, 23)),
|
|
292
|
+
new ECBlocks(24, new ECB(3, 12),
|
|
293
|
+
new ECB(8, 13)))));
|
|
294
|
+
VERSIONS.push_back(Ref<Version>(new Version(12, intArray(3, 6, 32, 58),
|
|
295
|
+
new ECBlocks(24, new ECB(2, 92),
|
|
296
|
+
new ECB(2, 93)),
|
|
297
|
+
new ECBlocks(22, new ECB(6, 36),
|
|
298
|
+
new ECB(2, 37)),
|
|
299
|
+
new ECBlocks(26, new ECB(4, 20),
|
|
300
|
+
new ECB(6, 21)),
|
|
301
|
+
new ECBlocks(28, new ECB(7, 14),
|
|
302
|
+
new ECB(4, 15)))));
|
|
303
|
+
VERSIONS.push_back(Ref<Version>(new Version(13, intArray(3, 6, 34, 62),
|
|
304
|
+
new ECBlocks(26, new ECB(4, 107)),
|
|
305
|
+
new ECBlocks(22, new ECB(8, 37),
|
|
306
|
+
new ECB(1, 38)),
|
|
307
|
+
new ECBlocks(24, new ECB(8, 20),
|
|
308
|
+
new ECB(4, 21)),
|
|
309
|
+
new ECBlocks(22, new ECB(12, 11),
|
|
310
|
+
new ECB(4, 12)))));
|
|
311
|
+
VERSIONS.push_back(Ref<Version>(new Version(14, intArray(4, 6, 26, 46, 66),
|
|
312
|
+
new ECBlocks(30, new ECB(3, 115),
|
|
313
|
+
new ECB(1, 116)),
|
|
314
|
+
new ECBlocks(24, new ECB(4, 40),
|
|
315
|
+
new ECB(5, 41)),
|
|
316
|
+
new ECBlocks(20, new ECB(11, 16),
|
|
317
|
+
new ECB(5, 17)),
|
|
318
|
+
new ECBlocks(24, new ECB(11, 12),
|
|
319
|
+
new ECB(5, 13)))));
|
|
320
|
+
VERSIONS.push_back(Ref<Version>(new Version(15, intArray(4, 6, 26, 48, 70),
|
|
321
|
+
new ECBlocks(22, new ECB(5, 87),
|
|
322
|
+
new ECB(1, 88)),
|
|
323
|
+
new ECBlocks(24, new ECB(5, 41),
|
|
324
|
+
new ECB(5, 42)),
|
|
325
|
+
new ECBlocks(30, new ECB(5, 24),
|
|
326
|
+
new ECB(7, 25)),
|
|
327
|
+
new ECBlocks(24, new ECB(11, 12),
|
|
328
|
+
new ECB(7, 13)))));
|
|
329
|
+
VERSIONS.push_back(Ref<Version>(new Version(16, intArray(4, 6, 26, 50, 74),
|
|
330
|
+
new ECBlocks(24, new ECB(5, 98),
|
|
331
|
+
new ECB(1, 99)),
|
|
332
|
+
new ECBlocks(28, new ECB(7, 45),
|
|
333
|
+
new ECB(3, 46)),
|
|
334
|
+
new ECBlocks(24, new ECB(15, 19),
|
|
335
|
+
new ECB(2, 20)),
|
|
336
|
+
new ECBlocks(30, new ECB(3, 15),
|
|
337
|
+
new ECB(13, 16)))));
|
|
338
|
+
VERSIONS.push_back(Ref<Version>(new Version(17, intArray(4, 6, 30, 54, 78),
|
|
339
|
+
new ECBlocks(28, new ECB(1, 107),
|
|
340
|
+
new ECB(5, 108)),
|
|
341
|
+
new ECBlocks(28, new ECB(10, 46),
|
|
342
|
+
new ECB(1, 47)),
|
|
343
|
+
new ECBlocks(28, new ECB(1, 22),
|
|
344
|
+
new ECB(15, 23)),
|
|
345
|
+
new ECBlocks(28, new ECB(2, 14),
|
|
346
|
+
new ECB(17, 15)))));
|
|
347
|
+
VERSIONS.push_back(Ref<Version>(new Version(18, intArray(4, 6, 30, 56, 82),
|
|
348
|
+
new ECBlocks(30, new ECB(5, 120),
|
|
349
|
+
new ECB(1, 121)),
|
|
350
|
+
new ECBlocks(26, new ECB(9, 43),
|
|
351
|
+
new ECB(4, 44)),
|
|
352
|
+
new ECBlocks(28, new ECB(17, 22),
|
|
353
|
+
new ECB(1, 23)),
|
|
354
|
+
new ECBlocks(28, new ECB(2, 14),
|
|
355
|
+
new ECB(19, 15)))));
|
|
356
|
+
VERSIONS.push_back(Ref<Version>(new Version(19, intArray(4, 6, 30, 58, 86),
|
|
357
|
+
new ECBlocks(28, new ECB(3, 113),
|
|
358
|
+
new ECB(4, 114)),
|
|
359
|
+
new ECBlocks(26, new ECB(3, 44),
|
|
360
|
+
new ECB(11, 45)),
|
|
361
|
+
new ECBlocks(26, new ECB(17, 21),
|
|
362
|
+
new ECB(4, 22)),
|
|
363
|
+
new ECBlocks(26, new ECB(9, 13),
|
|
364
|
+
new ECB(16, 14)))));
|
|
365
|
+
VERSIONS.push_back(Ref<Version>(new Version(20, intArray(4, 6, 34, 62, 90),
|
|
366
|
+
new ECBlocks(28, new ECB(3, 107),
|
|
367
|
+
new ECB(5, 108)),
|
|
368
|
+
new ECBlocks(26, new ECB(3, 41),
|
|
369
|
+
new ECB(13, 42)),
|
|
370
|
+
new ECBlocks(30, new ECB(15, 24),
|
|
371
|
+
new ECB(5, 25)),
|
|
372
|
+
new ECBlocks(28, new ECB(15, 15),
|
|
373
|
+
new ECB(10, 16)))));
|
|
374
|
+
VERSIONS.push_back(Ref<Version>(new Version(21, intArray(5, 6, 28, 50, 72, 94),
|
|
375
|
+
new ECBlocks(28, new ECB(4, 116),
|
|
376
|
+
new ECB(4, 117)),
|
|
377
|
+
new ECBlocks(26, new ECB(17, 42)),
|
|
378
|
+
new ECBlocks(28, new ECB(17, 22),
|
|
379
|
+
new ECB(6, 23)),
|
|
380
|
+
new ECBlocks(30, new ECB(19, 16),
|
|
381
|
+
new ECB(6, 17)))));
|
|
382
|
+
VERSIONS.push_back(Ref<Version>(new Version(22, intArray(5, 6, 26, 50, 74, 98),
|
|
383
|
+
new ECBlocks(28, new ECB(2, 111),
|
|
384
|
+
new ECB(7, 112)),
|
|
385
|
+
new ECBlocks(28, new ECB(17, 46)),
|
|
386
|
+
new ECBlocks(30, new ECB(7, 24),
|
|
387
|
+
new ECB(16, 25)),
|
|
388
|
+
new ECBlocks(24, new ECB(34, 13)))));
|
|
389
|
+
VERSIONS.push_back(Ref<Version>(new Version(23, intArray(5, 6, 30, 54, 78, 102),
|
|
390
|
+
new ECBlocks(30, new ECB(4, 121),
|
|
391
|
+
new ECB(5, 122)),
|
|
392
|
+
new ECBlocks(28, new ECB(4, 47),
|
|
393
|
+
new ECB(14, 48)),
|
|
394
|
+
new ECBlocks(30, new ECB(11, 24),
|
|
395
|
+
new ECB(14, 25)),
|
|
396
|
+
new ECBlocks(30, new ECB(16, 15),
|
|
397
|
+
new ECB(14, 16)))));
|
|
398
|
+
VERSIONS.push_back(Ref<Version>(new Version(24, intArray(5, 6, 28, 54, 80, 106),
|
|
399
|
+
new ECBlocks(30, new ECB(6, 117),
|
|
400
|
+
new ECB(4, 118)),
|
|
401
|
+
new ECBlocks(28, new ECB(6, 45),
|
|
402
|
+
new ECB(14, 46)),
|
|
403
|
+
new ECBlocks(30, new ECB(11, 24),
|
|
404
|
+
new ECB(16, 25)),
|
|
405
|
+
new ECBlocks(30, new ECB(30, 16),
|
|
406
|
+
new ECB(2, 17)))));
|
|
407
|
+
VERSIONS.push_back(Ref<Version>(new Version(25, intArray(5, 6, 32, 58, 84, 110),
|
|
408
|
+
new ECBlocks(26, new ECB(8, 106),
|
|
409
|
+
new ECB(4, 107)),
|
|
410
|
+
new ECBlocks(28, new ECB(8, 47),
|
|
411
|
+
new ECB(13, 48)),
|
|
412
|
+
new ECBlocks(30, new ECB(7, 24),
|
|
413
|
+
new ECB(22, 25)),
|
|
414
|
+
new ECBlocks(30, new ECB(22, 15),
|
|
415
|
+
new ECB(13, 16)))));
|
|
416
|
+
VERSIONS.push_back(Ref<Version>(new Version(26, intArray(5, 6, 30, 58, 86, 114),
|
|
417
|
+
new ECBlocks(28, new ECB(10, 114),
|
|
418
|
+
new ECB(2, 115)),
|
|
419
|
+
new ECBlocks(28, new ECB(19, 46),
|
|
420
|
+
new ECB(4, 47)),
|
|
421
|
+
new ECBlocks(28, new ECB(28, 22),
|
|
422
|
+
new ECB(6, 23)),
|
|
423
|
+
new ECBlocks(30, new ECB(33, 16),
|
|
424
|
+
new ECB(4, 17)))));
|
|
425
|
+
VERSIONS.push_back(Ref<Version>(new Version(27, intArray(5, 6, 34, 62, 90, 118),
|
|
426
|
+
new ECBlocks(30, new ECB(8, 122),
|
|
427
|
+
new ECB(4, 123)),
|
|
428
|
+
new ECBlocks(28, new ECB(22, 45),
|
|
429
|
+
new ECB(3, 46)),
|
|
430
|
+
new ECBlocks(30, new ECB(8, 23),
|
|
431
|
+
new ECB(26, 24)),
|
|
432
|
+
new ECBlocks(30, new ECB(12, 15),
|
|
433
|
+
new ECB(28, 16)))));
|
|
434
|
+
VERSIONS.push_back(Ref<Version>(new Version(28, intArray(6, 6, 26, 50, 74, 98, 122),
|
|
435
|
+
new ECBlocks(30, new ECB(3, 117),
|
|
436
|
+
new ECB(10, 118)),
|
|
437
|
+
new ECBlocks(28, new ECB(3, 45),
|
|
438
|
+
new ECB(23, 46)),
|
|
439
|
+
new ECBlocks(30, new ECB(4, 24),
|
|
440
|
+
new ECB(31, 25)),
|
|
441
|
+
new ECBlocks(30, new ECB(11, 15),
|
|
442
|
+
new ECB(31, 16)))));
|
|
443
|
+
VERSIONS.push_back(Ref<Version>(new Version(29, intArray(6, 6, 30, 54, 78, 102, 126),
|
|
444
|
+
new ECBlocks(30, new ECB(7, 116),
|
|
445
|
+
new ECB(7, 117)),
|
|
446
|
+
new ECBlocks(28, new ECB(21, 45),
|
|
447
|
+
new ECB(7, 46)),
|
|
448
|
+
new ECBlocks(30, new ECB(1, 23),
|
|
449
|
+
new ECB(37, 24)),
|
|
450
|
+
new ECBlocks(30, new ECB(19, 15),
|
|
451
|
+
new ECB(26, 16)))));
|
|
452
|
+
VERSIONS.push_back(Ref<Version>(new Version(30, intArray(6, 6, 26, 52, 78, 104, 130),
|
|
453
|
+
new ECBlocks(30, new ECB(5, 115),
|
|
454
|
+
new ECB(10, 116)),
|
|
455
|
+
new ECBlocks(28, new ECB(19, 47),
|
|
456
|
+
new ECB(10, 48)),
|
|
457
|
+
new ECBlocks(30, new ECB(15, 24),
|
|
458
|
+
new ECB(25, 25)),
|
|
459
|
+
new ECBlocks(30, new ECB(23, 15),
|
|
460
|
+
new ECB(25, 16)))));
|
|
461
|
+
VERSIONS.push_back(Ref<Version>(new Version(31, intArray(6, 6, 30, 56, 82, 108, 134),
|
|
462
|
+
new ECBlocks(30, new ECB(13, 115),
|
|
463
|
+
new ECB(3, 116)),
|
|
464
|
+
new ECBlocks(28, new ECB(2, 46),
|
|
465
|
+
new ECB(29, 47)),
|
|
466
|
+
new ECBlocks(30, new ECB(42, 24),
|
|
467
|
+
new ECB(1, 25)),
|
|
468
|
+
new ECBlocks(30, new ECB(23, 15),
|
|
469
|
+
new ECB(28, 16)))));
|
|
470
|
+
VERSIONS.push_back(Ref<Version>(new Version(32, intArray(6, 6, 34, 60, 86, 112, 138),
|
|
471
|
+
new ECBlocks(30, new ECB(17, 115)),
|
|
472
|
+
new ECBlocks(28, new ECB(10, 46),
|
|
473
|
+
new ECB(23, 47)),
|
|
474
|
+
new ECBlocks(30, new ECB(10, 24),
|
|
475
|
+
new ECB(35, 25)),
|
|
476
|
+
new ECBlocks(30, new ECB(19, 15),
|
|
477
|
+
new ECB(35, 16)))));
|
|
478
|
+
VERSIONS.push_back(Ref<Version>(new Version(33, intArray(6, 6, 30, 58, 86, 114, 142),
|
|
479
|
+
new ECBlocks(30, new ECB(17, 115),
|
|
480
|
+
new ECB(1, 116)),
|
|
481
|
+
new ECBlocks(28, new ECB(14, 46),
|
|
482
|
+
new ECB(21, 47)),
|
|
483
|
+
new ECBlocks(30, new ECB(29, 24),
|
|
484
|
+
new ECB(19, 25)),
|
|
485
|
+
new ECBlocks(30, new ECB(11, 15),
|
|
486
|
+
new ECB(46, 16)))));
|
|
487
|
+
VERSIONS.push_back(Ref<Version>(new Version(34, intArray(6, 6, 34, 62, 90, 118, 146),
|
|
488
|
+
new ECBlocks(30, new ECB(13, 115),
|
|
489
|
+
new ECB(6, 116)),
|
|
490
|
+
new ECBlocks(28, new ECB(14, 46),
|
|
491
|
+
new ECB(23, 47)),
|
|
492
|
+
new ECBlocks(30, new ECB(44, 24),
|
|
493
|
+
new ECB(7, 25)),
|
|
494
|
+
new ECBlocks(30, new ECB(59, 16),
|
|
495
|
+
new ECB(1, 17)))));
|
|
496
|
+
VERSIONS.push_back(Ref<Version>(new Version(35, intArray(7, 6, 30, 54, 78,
|
|
497
|
+
102, 126, 150),
|
|
498
|
+
new ECBlocks(30, new ECB(12, 121),
|
|
499
|
+
new ECB(7, 122)),
|
|
500
|
+
new ECBlocks(28, new ECB(12, 47),
|
|
501
|
+
new ECB(26, 48)),
|
|
502
|
+
new ECBlocks(30, new ECB(39, 24),
|
|
503
|
+
new ECB(14, 25)),
|
|
504
|
+
new ECBlocks(30, new ECB(22, 15),
|
|
505
|
+
new ECB(41, 16)))));
|
|
506
|
+
VERSIONS.push_back(Ref<Version>(new Version(36, intArray(7, 6, 24, 50, 76,
|
|
507
|
+
102, 128, 154),
|
|
508
|
+
new ECBlocks(30, new ECB(6, 121),
|
|
509
|
+
new ECB(14, 122)),
|
|
510
|
+
new ECBlocks(28, new ECB(6, 47),
|
|
511
|
+
new ECB(34, 48)),
|
|
512
|
+
new ECBlocks(30, new ECB(46, 24),
|
|
513
|
+
new ECB(10, 25)),
|
|
514
|
+
new ECBlocks(30, new ECB(2, 15),
|
|
515
|
+
new ECB(64, 16)))));
|
|
516
|
+
VERSIONS.push_back(Ref<Version>(new Version(37, intArray(7, 6, 28, 54, 80,
|
|
517
|
+
106, 132, 158),
|
|
518
|
+
new ECBlocks(30, new ECB(17, 122),
|
|
519
|
+
new ECB(4, 123)),
|
|
520
|
+
new ECBlocks(28, new ECB(29, 46),
|
|
521
|
+
new ECB(14, 47)),
|
|
522
|
+
new ECBlocks(30, new ECB(49, 24),
|
|
523
|
+
new ECB(10, 25)),
|
|
524
|
+
new ECBlocks(30, new ECB(24, 15),
|
|
525
|
+
new ECB(46, 16)))));
|
|
526
|
+
VERSIONS.push_back(Ref<Version>(new Version(38, intArray(7, 6, 32, 58, 84,
|
|
527
|
+
110, 136, 162),
|
|
528
|
+
new ECBlocks(30, new ECB(4, 122),
|
|
529
|
+
new ECB(18, 123)),
|
|
530
|
+
new ECBlocks(28, new ECB(13, 46),
|
|
531
|
+
new ECB(32, 47)),
|
|
532
|
+
new ECBlocks(30, new ECB(48, 24),
|
|
533
|
+
new ECB(14, 25)),
|
|
534
|
+
new ECBlocks(30, new ECB(42, 15),
|
|
535
|
+
new ECB(32, 16)))));
|
|
536
|
+
VERSIONS.push_back(Ref<Version>(new Version(39, intArray(7, 6, 26, 54, 82,
|
|
537
|
+
110, 138, 166),
|
|
538
|
+
new ECBlocks(30, new ECB(20, 117),
|
|
539
|
+
new ECB(4, 118)),
|
|
540
|
+
new ECBlocks(28, new ECB(40, 47),
|
|
541
|
+
new ECB(7, 48)),
|
|
542
|
+
new ECBlocks(30, new ECB(43, 24),
|
|
543
|
+
new ECB(22, 25)),
|
|
544
|
+
new ECBlocks(30, new ECB(10, 15),
|
|
545
|
+
new ECB(67, 16)))));
|
|
546
|
+
VERSIONS.push_back(Ref<Version>(new Version(40, intArray(7, 6, 30, 58, 86,
|
|
547
|
+
114, 142, 170),
|
|
548
|
+
new ECBlocks(30, new ECB(19, 118),
|
|
549
|
+
new ECB(6, 119)),
|
|
550
|
+
new ECBlocks(28, new ECB(18, 47),
|
|
551
|
+
new ECB(31, 48)),
|
|
552
|
+
new ECBlocks(30, new ECB(34, 24),
|
|
553
|
+
new ECB(34, 25)),
|
|
554
|
+
new ECBlocks(30, new ECB(20, 15),
|
|
555
|
+
new ECB(61, 16)))));
|
|
556
|
+
return VERSIONS.size();
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
}
|
|
560
|
+
}
|