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,31 @@
|
|
|
1
|
+
// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*-
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2010 ZXing authors. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#include <zxing/common/BitArray.h>
|
|
19
|
+
|
|
20
|
+
using zxing::BitArray;
|
|
21
|
+
using std::ostream;
|
|
22
|
+
|
|
23
|
+
ostream& zxing::operator << (ostream& os, BitArray const& ba) {
|
|
24
|
+
for (int i = 0, size = ba.getSize(); i < size; i++) {
|
|
25
|
+
if ((i & 0x07) == 0) {
|
|
26
|
+
os << ' ';
|
|
27
|
+
}
|
|
28
|
+
os << (ba.get(i) ? 'X' : '.');
|
|
29
|
+
}
|
|
30
|
+
return os;
|
|
31
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*-
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2010 ZXing authors. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#include <zxing/common/BitMatrix.h>
|
|
19
|
+
#include <zxing/common/IllegalArgumentException.h>
|
|
20
|
+
|
|
21
|
+
#include <iostream>
|
|
22
|
+
#include <sstream>
|
|
23
|
+
#include <string>
|
|
24
|
+
|
|
25
|
+
using std::ostream;
|
|
26
|
+
using std::ostringstream;
|
|
27
|
+
|
|
28
|
+
using zxing::BitMatrix;
|
|
29
|
+
using zxing::BitArray;
|
|
30
|
+
using zxing::ArrayRef;
|
|
31
|
+
using zxing::Ref;
|
|
32
|
+
|
|
33
|
+
void BitMatrix::init(int width, int height) {
|
|
34
|
+
if (width < 1 || height < 1) {
|
|
35
|
+
throw IllegalArgumentException("Both dimensions must be greater than 0");
|
|
36
|
+
}
|
|
37
|
+
this->width = width;
|
|
38
|
+
this->height = height;
|
|
39
|
+
this->rowSize = (width + bitsPerWord - 1) >> logBits;
|
|
40
|
+
bits = ArrayRef<int>(rowSize * height);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
BitMatrix::BitMatrix(int dimension) {
|
|
44
|
+
init(dimension, dimension);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
BitMatrix::BitMatrix(int width, int height) {
|
|
48
|
+
init(width, height);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
BitMatrix::~BitMatrix() {}
|
|
52
|
+
|
|
53
|
+
void BitMatrix::flip(int x, int y) {
|
|
54
|
+
int offset = y * rowSize + (x >> logBits);
|
|
55
|
+
bits[offset] ^= 1 << (x & bitsMask);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
void BitMatrix::setRegion(int left, int top, int width, int height) {
|
|
59
|
+
if (top < 0 || left < 0) {
|
|
60
|
+
throw IllegalArgumentException("Left and top must be nonnegative");
|
|
61
|
+
}
|
|
62
|
+
if (height < 1 || width < 1) {
|
|
63
|
+
throw IllegalArgumentException("Height and width must be at least 1");
|
|
64
|
+
}
|
|
65
|
+
int right = left + width;
|
|
66
|
+
int bottom = top + height;
|
|
67
|
+
if (bottom > this->height || right > this->width) {
|
|
68
|
+
throw IllegalArgumentException("The region must fit inside the matrix");
|
|
69
|
+
}
|
|
70
|
+
for (int y = top; y < bottom; y++) {
|
|
71
|
+
int offset = y * rowSize;
|
|
72
|
+
for (int x = left; x < right; x++) {
|
|
73
|
+
bits[offset + (x >> logBits)] |= 1 << (x & bitsMask);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Ref<BitArray> BitMatrix::getRow(int y, Ref<BitArray> row) {
|
|
79
|
+
if (row.empty() || row->getSize() < width) {
|
|
80
|
+
row = new BitArray(width);
|
|
81
|
+
}
|
|
82
|
+
int offset = y * rowSize;
|
|
83
|
+
for (int x = 0; x < rowSize; x++) {
|
|
84
|
+
row->setBulk(x << logBits, bits[offset + x]);
|
|
85
|
+
}
|
|
86
|
+
return row;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
int BitMatrix::getWidth() const {
|
|
90
|
+
return width;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
int BitMatrix::getHeight() const {
|
|
94
|
+
return height;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
ArrayRef<int> BitMatrix::getTopLeftOnBit() const {
|
|
98
|
+
int bitsOffset = 0;
|
|
99
|
+
while (bitsOffset < bits->size() && bits[bitsOffset] == 0) {
|
|
100
|
+
bitsOffset++;
|
|
101
|
+
}
|
|
102
|
+
if (bitsOffset == bits->size()) {
|
|
103
|
+
return ArrayRef<int>();
|
|
104
|
+
}
|
|
105
|
+
int y = bitsOffset / rowSize;
|
|
106
|
+
int x = (bitsOffset % rowSize) << 5;
|
|
107
|
+
|
|
108
|
+
int theBits = bits[bitsOffset];
|
|
109
|
+
int bit = 0;
|
|
110
|
+
while ((theBits << (31-bit)) == 0) {
|
|
111
|
+
bit++;
|
|
112
|
+
}
|
|
113
|
+
x += bit;
|
|
114
|
+
ArrayRef<int> res (2);
|
|
115
|
+
res[0]=x;
|
|
116
|
+
res[1]=y;
|
|
117
|
+
return res;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
ArrayRef<int> BitMatrix::getBottomRightOnBit() const {
|
|
121
|
+
int bitsOffset = bits->size() - 1;
|
|
122
|
+
while (bitsOffset >= 0 && bits[bitsOffset] == 0) {
|
|
123
|
+
bitsOffset--;
|
|
124
|
+
}
|
|
125
|
+
if (bitsOffset < 0) {
|
|
126
|
+
return ArrayRef<int>();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
int y = bitsOffset / rowSize;
|
|
130
|
+
int x = (bitsOffset % rowSize) << 5;
|
|
131
|
+
|
|
132
|
+
int theBits = bits[bitsOffset];
|
|
133
|
+
int bit = 31;
|
|
134
|
+
while ((theBits >> bit) == 0) {
|
|
135
|
+
bit--;
|
|
136
|
+
}
|
|
137
|
+
x += bit;
|
|
138
|
+
|
|
139
|
+
ArrayRef<int> res (2);
|
|
140
|
+
res[0]=x;
|
|
141
|
+
res[1]=y;
|
|
142
|
+
return res;
|
|
143
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*-
|
|
2
|
+
#ifndef __BIT_MATRIX_H__
|
|
3
|
+
#define __BIT_MATRIX_H__
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* BitMatrix.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/common/Counted.h>
|
|
25
|
+
#include <zxing/common/BitArray.h>
|
|
26
|
+
#include <zxing/common/Array.h>
|
|
27
|
+
#include <limits>
|
|
28
|
+
|
|
29
|
+
namespace zxing {
|
|
30
|
+
|
|
31
|
+
class BitMatrix : public Counted {
|
|
32
|
+
public:
|
|
33
|
+
static const int bitsPerWord = std::numeric_limits<unsigned int>::digits;
|
|
34
|
+
|
|
35
|
+
private:
|
|
36
|
+
int width;
|
|
37
|
+
int height;
|
|
38
|
+
int rowSize;
|
|
39
|
+
ArrayRef<int> bits;
|
|
40
|
+
|
|
41
|
+
#define ZX_LOG_DIGITS(digits) \
|
|
42
|
+
((digits == 8) ? 3 : \
|
|
43
|
+
((digits == 16) ? 4 : \
|
|
44
|
+
((digits == 32) ? 5 : \
|
|
45
|
+
((digits == 64) ? 6 : \
|
|
46
|
+
((digits == 128) ? 7 : \
|
|
47
|
+
(-1))))))
|
|
48
|
+
|
|
49
|
+
static const int logBits = ZX_LOG_DIGITS(bitsPerWord);
|
|
50
|
+
static const int bitsMask = (1 << logBits) - 1;
|
|
51
|
+
|
|
52
|
+
public:
|
|
53
|
+
BitMatrix(int dimension);
|
|
54
|
+
BitMatrix(int width, int height);
|
|
55
|
+
|
|
56
|
+
~BitMatrix();
|
|
57
|
+
|
|
58
|
+
bool get(int x, int y) const {
|
|
59
|
+
int offset = y * rowSize + (x >> logBits);
|
|
60
|
+
return ((((unsigned)bits[offset]) >> (x & bitsMask)) & 1) != 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
void set(int x, int y) {
|
|
64
|
+
int offset = y * rowSize + (x >> logBits);
|
|
65
|
+
bits[offset] |= 1 << (x & bitsMask);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
void flip(int x, int y);
|
|
69
|
+
void clear();
|
|
70
|
+
void setRegion(int left, int top, int width, int height);
|
|
71
|
+
Ref<BitArray> getRow(int y, Ref<BitArray> row);
|
|
72
|
+
|
|
73
|
+
int getWidth() const;
|
|
74
|
+
int getHeight() const;
|
|
75
|
+
|
|
76
|
+
ArrayRef<int> getTopLeftOnBit() const;
|
|
77
|
+
ArrayRef<int> getBottomRightOnBit() const;
|
|
78
|
+
|
|
79
|
+
friend std::ostream& operator<<(std::ostream &out, const BitMatrix &bm);
|
|
80
|
+
const char *description();
|
|
81
|
+
|
|
82
|
+
private:
|
|
83
|
+
inline void init(int, int);
|
|
84
|
+
|
|
85
|
+
BitMatrix(const BitMatrix&);
|
|
86
|
+
BitMatrix& operator =(const BitMatrix&);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#endif // __BIT_MATRIX_H__
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*-
|
|
2
|
+
/*
|
|
3
|
+
* BitSource.cpp
|
|
4
|
+
* zxing
|
|
5
|
+
*
|
|
6
|
+
* Created by Christian Brunschen on 09/05/2008.
|
|
7
|
+
* Copyright 2008 Google UK. All rights reserved.
|
|
8
|
+
*
|
|
9
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
* you may not use this file except in compliance with the License.
|
|
11
|
+
* You may obtain a copy of the License at
|
|
12
|
+
*
|
|
13
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
*
|
|
15
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
* See the License for the specific language governing permissions and
|
|
19
|
+
* limitations under the License.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#include <zxing/common/BitSource.h>
|
|
23
|
+
#include <sstream>
|
|
24
|
+
#include <zxing/common/IllegalArgumentException.h>
|
|
25
|
+
|
|
26
|
+
namespace zxing {
|
|
27
|
+
|
|
28
|
+
int BitSource::readBits(int numBits) {
|
|
29
|
+
if (numBits < 0 || numBits > 32 || numBits > available()) {
|
|
30
|
+
std::ostringstream oss;
|
|
31
|
+
oss << numBits;
|
|
32
|
+
throw IllegalArgumentException(oss.str().c_str());
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
int result = 0;
|
|
36
|
+
|
|
37
|
+
// First, read remainder from current byte
|
|
38
|
+
if (bitOffset_ > 0) {
|
|
39
|
+
int bitsLeft = 8 - bitOffset_;
|
|
40
|
+
int toRead = numBits < bitsLeft ? numBits : bitsLeft;
|
|
41
|
+
int bitsToNotRead = bitsLeft - toRead;
|
|
42
|
+
int mask = (0xFF >> (8 - toRead)) << bitsToNotRead;
|
|
43
|
+
result = (bytes_[byteOffset_] & mask) >> bitsToNotRead;
|
|
44
|
+
numBits -= toRead;
|
|
45
|
+
bitOffset_ += toRead;
|
|
46
|
+
if (bitOffset_ == 8) {
|
|
47
|
+
bitOffset_ = 0;
|
|
48
|
+
byteOffset_++;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Next read whole bytes
|
|
53
|
+
if (numBits > 0) {
|
|
54
|
+
while (numBits >= 8) {
|
|
55
|
+
result = (result << 8) | (bytes_[byteOffset_] & 0xFF);
|
|
56
|
+
byteOffset_++;
|
|
57
|
+
numBits -= 8;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
// Finally read a partial byte
|
|
62
|
+
if (numBits > 0) {
|
|
63
|
+
int bitsToNotRead = 8 - numBits;
|
|
64
|
+
int mask = (0xFF >> bitsToNotRead) << bitsToNotRead;
|
|
65
|
+
result = (result << numBits) | ((bytes_[byteOffset_] & mask) >> bitsToNotRead);
|
|
66
|
+
bitOffset_ += numBits;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
int BitSource::available() {
|
|
74
|
+
return 8 * (bytes_->size() - byteOffset_) - bitOffset_;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#ifndef __BIT_SOURCE_H__
|
|
2
|
+
#define __BIT_SOURCE_H__
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* BitSource.h
|
|
6
|
+
* zxing
|
|
7
|
+
*
|
|
8
|
+
* Copyright 2010 ZXing authors All rights reserved.
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include <zxing/common/Array.h>
|
|
24
|
+
|
|
25
|
+
namespace zxing {
|
|
26
|
+
/**
|
|
27
|
+
* <p>This provides an easy abstraction to read bits at a time from a sequence of bytes, where the
|
|
28
|
+
* number of bits read is not often a multiple of 8.</p>
|
|
29
|
+
*
|
|
30
|
+
* <p>This class is not thread-safe.</p>
|
|
31
|
+
*
|
|
32
|
+
* @author srowen@google.com (Sean Owen)
|
|
33
|
+
* @author christian.brunschen@gmail.com (Christian Brunschen)
|
|
34
|
+
*/
|
|
35
|
+
class BitSource : public Counted {
|
|
36
|
+
typedef char byte;
|
|
37
|
+
private:
|
|
38
|
+
ArrayRef<byte> bytes_;
|
|
39
|
+
int byteOffset_;
|
|
40
|
+
int bitOffset_;
|
|
41
|
+
public:
|
|
42
|
+
/**
|
|
43
|
+
* @param bytes bytes from which this will read bits. Bits will be read from the first byte first.
|
|
44
|
+
* Bits are read within a byte from most-significant to least-significant bit.
|
|
45
|
+
*/
|
|
46
|
+
BitSource(ArrayRef<byte> &bytes) :
|
|
47
|
+
bytes_(bytes), byteOffset_(0), bitOffset_(0) {
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
int getBitOffset() {
|
|
51
|
+
return bitOffset_;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
int getByteOffset() {
|
|
55
|
+
return byteOffset_;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @param numBits number of bits to read
|
|
60
|
+
* @return int representing the bits read. The bits will appear as the least-significant
|
|
61
|
+
* bits of the int
|
|
62
|
+
* @throws IllegalArgumentException if numBits isn't in [1,32]
|
|
63
|
+
*/
|
|
64
|
+
int readBits(int numBits);
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @return number of bits that can be read successfully
|
|
68
|
+
*/
|
|
69
|
+
int available();
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#endif // __BIT_SOURCE_H__
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*-
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2008-2011 ZXing authors
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#include <zxing/common/CharacterSetECI.h>
|
|
19
|
+
#include <zxing/common/IllegalArgumentException.h>
|
|
20
|
+
#include <zxing/FormatException.h>
|
|
21
|
+
|
|
22
|
+
using std::string;
|
|
23
|
+
|
|
24
|
+
using zxing::common::CharacterSetECI;
|
|
25
|
+
using zxing::IllegalArgumentException;
|
|
26
|
+
|
|
27
|
+
std::map<int, CharacterSetECI*> CharacterSetECI::VALUE_TO_ECI;
|
|
28
|
+
std::map<std::string, CharacterSetECI*> CharacterSetECI::NAME_TO_ECI;
|
|
29
|
+
|
|
30
|
+
const bool CharacterSetECI::inited = CharacterSetECI::init_tables();
|
|
31
|
+
|
|
32
|
+
#define ADD_CHARACTER_SET(VALUES, STRINGS) \
|
|
33
|
+
{ static int values[] = {VALUES, -1}; \
|
|
34
|
+
static char const* strings[] = {STRINGS, 0}; \
|
|
35
|
+
addCharacterSet(values, strings); }
|
|
36
|
+
|
|
37
|
+
#define XC ,
|
|
38
|
+
|
|
39
|
+
bool CharacterSetECI::init_tables() {
|
|
40
|
+
ADD_CHARACTER_SET(0 XC 2, "Cp437");
|
|
41
|
+
ADD_CHARACTER_SET(1 XC 3, "ISO8859_1" XC "ISO-8859-1");
|
|
42
|
+
ADD_CHARACTER_SET(4, "ISO8859_2" XC "ISO-8859-2");
|
|
43
|
+
ADD_CHARACTER_SET(5, "ISO8859_3" XC "ISO-8859-3");
|
|
44
|
+
ADD_CHARACTER_SET(6, "ISO8859_4" XC "ISO-8859-4");
|
|
45
|
+
ADD_CHARACTER_SET(7, "ISO8859_5" XC "ISO-8859-5");
|
|
46
|
+
ADD_CHARACTER_SET(8, "ISO8859_6" XC "ISO-8859-6");
|
|
47
|
+
ADD_CHARACTER_SET(9, "ISO8859_7" XC "ISO-8859-7");
|
|
48
|
+
ADD_CHARACTER_SET(10, "ISO8859_8" XC "ISO-8859-8");
|
|
49
|
+
ADD_CHARACTER_SET(11, "ISO8859_9" XC "ISO-8859-9");
|
|
50
|
+
ADD_CHARACTER_SET(12, "ISO8859_10" XC "ISO-8859-10");
|
|
51
|
+
ADD_CHARACTER_SET(13, "ISO8859_11" XC "ISO-8859-11");
|
|
52
|
+
ADD_CHARACTER_SET(15, "ISO8859_13" XC "ISO-8859-13");
|
|
53
|
+
ADD_CHARACTER_SET(16, "ISO8859_14" XC "ISO-8859-14");
|
|
54
|
+
ADD_CHARACTER_SET(17, "ISO8859_15" XC "ISO-8859-15");
|
|
55
|
+
ADD_CHARACTER_SET(18, "ISO8859_16" XC "ISO-8859-16");
|
|
56
|
+
ADD_CHARACTER_SET(20, "SJIS" XC "Shift_JIS");
|
|
57
|
+
ADD_CHARACTER_SET(21, "Cp1250" XC "windows-1250");
|
|
58
|
+
ADD_CHARACTER_SET(22, "Cp1251" XC "windows-1251");
|
|
59
|
+
ADD_CHARACTER_SET(23, "Cp1252" XC "windows-1252");
|
|
60
|
+
ADD_CHARACTER_SET(24, "Cp1256" XC "windows-1256");
|
|
61
|
+
ADD_CHARACTER_SET(25, "UnicodeBigUnmarked" XC "UTF-16BE" XC "UnicodeBig");
|
|
62
|
+
ADD_CHARACTER_SET(26, "UTF8" XC "UTF-8");
|
|
63
|
+
ADD_CHARACTER_SET(27 XC 170, "ASCII" XC "US-ASCII");
|
|
64
|
+
ADD_CHARACTER_SET(28, "Big5");
|
|
65
|
+
ADD_CHARACTER_SET(29, "GB18030" XC "GB2312" XC "EUC_CN" XC "GBK");
|
|
66
|
+
ADD_CHARACTER_SET(30, "EUC_KR" XC "EUC-KR");
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#undef XC
|
|
71
|
+
|
|
72
|
+
CharacterSetECI::CharacterSetECI(int const* values,
|
|
73
|
+
char const* const* names)
|
|
74
|
+
: values_(values), names_(names) {
|
|
75
|
+
for(int const* values = values_; *values != -1; values++) {
|
|
76
|
+
VALUE_TO_ECI[*values] = this;
|
|
77
|
+
}
|
|
78
|
+
for(char const* const* names = names_; *names; names++) {
|
|
79
|
+
NAME_TO_ECI[string(*names)] = this;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
char const* CharacterSetECI::name() const {
|
|
84
|
+
return names_[0];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
int CharacterSetECI::getValue() const {
|
|
88
|
+
return values_[0];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
void CharacterSetECI::addCharacterSet(int const* values, char const* const* names) {
|
|
92
|
+
new CharacterSetECI(values, names);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
CharacterSetECI* CharacterSetECI::getCharacterSetECIByValue(int value) {
|
|
96
|
+
if (value < 0 || value >= 900) {
|
|
97
|
+
throw FormatException();
|
|
98
|
+
}
|
|
99
|
+
return VALUE_TO_ECI[value];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
CharacterSetECI* CharacterSetECI::getCharacterSetECIByName(string const& name) {
|
|
103
|
+
return NAME_TO_ECI[name];
|
|
104
|
+
}
|