zxing_cpp_no_cmake 0.1.1
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 +0 -0
- data/CHANGELOG.rdoc +6 -0
- data/Gemfile +3 -0
- data/Manifest.txt +375 -0
- data/README.rdoc +141 -0
- data/Rakefile +28 -0
- data/bin/zxd +87 -0
- data/bin/zxe +53 -0
- data/ext/zxing/extconf.rb +20 -0
- data/ext/zxing/zxing-cpp/.gitignore +2 -0
- data/ext/zxing/zxing-cpp/AUTHORS +115 -0
- data/ext/zxing/zxing-cpp/CMakeLists.txt +89 -0
- data/ext/zxing/zxing-cpp/COPYING +201 -0
- data/ext/zxing/zxing-cpp/NOTICE +65 -0
- data/ext/zxing/zxing-cpp/README.md +45 -0
- data/ext/zxing/zxing-cpp/build/CMakeCache.txt +382 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CMakeCCompiler.cmake +76 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CMakeCXXCompiler.cmake +79 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CMakeDetermineCompilerABI_C.bin +0 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CMakeDetermineCompilerABI_CXX.bin +0 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CMakeSystem.cmake +15 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CompilerIdC/CMakeCCompilerId.c +665 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CompilerIdC/a.out +0 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CompilerIdCXX/CMakeCXXCompilerId.cpp +644 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/3.15.4/CompilerIdCXX/a.out +0 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/CMakeOutput.log +447 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/Makefile.cmake +125 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/Makefile2 +177 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/TargetDirectories.txt +9 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/cmake.check_cache +1 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/CXX.includecache +1892 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/DependInfo.cmake +120 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/build.make +1584 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/cmake_clean.cmake +109 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/cmake_clean_target.cmake +3 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/depend.internal +1465 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/depend.make +1465 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/flags.make +10 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/link.txt +2 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/libzxing.dir/progress.make +102 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/progress.marks +1 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/CXX.includecache +344 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/DependInfo.cmake +33 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/build.make +266 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/cmake_clean.cmake +21 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/depend.internal +103 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/depend.make +103 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/flags.make +10 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/link.txt +1 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/testrunner.dir/progress.make +14 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/CXX.includecache +378 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/DependInfo.cmake +25 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/build.make +145 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/cmake_clean.cmake +13 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/depend.internal +53 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/depend.make +53 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/flags.make +10 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/link.txt +1 -0
- data/ext/zxing/zxing-cpp/build/CMakeFiles/zxing.dir/progress.make +6 -0
- data/ext/zxing/zxing-cpp/build/Makefile +3706 -0
- data/ext/zxing/zxing-cpp/build/cmake_install.cmake +73 -0
- data/ext/zxing/zxing-cpp/build/libzxing.a +0 -0
- data/ext/zxing/zxing-cpp/build/testrunner +0 -0
- data/ext/zxing/zxing-cpp/build/zxing +0 -0
- data/ext/zxing/zxing-cpp/cli/src/ImageReaderSource.cpp +113 -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 +105 -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 +175 -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 +415 -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 +447 -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 +497 -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 +329 -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 +303 -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 +228 -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 +70 -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 +665 -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 +715 -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 +428 -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 +315 -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 +109 -0
- data/lib/zxing/version.rb +33 -0
- data/zxing_cpp.gemspec +36 -0
- metadata +515 -0
@@ -0,0 +1,88 @@
|
|
1
|
+
// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*-
|
2
|
+
#ifndef __UPC_EAN_READER_H__
|
3
|
+
#define __UPC_EAN_READER_H__
|
4
|
+
|
5
|
+
/*
|
6
|
+
* Copyright 2010 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/oned/OneDReader.h>
|
22
|
+
#include <zxing/common/BitArray.h>
|
23
|
+
#include <zxing/Result.h>
|
24
|
+
|
25
|
+
namespace zxing {
|
26
|
+
namespace oned {
|
27
|
+
|
28
|
+
class UPCEANReader : public OneDReader {
|
29
|
+
private:
|
30
|
+
std::string decodeRowStringBuffer;
|
31
|
+
// UPCEANExtensionSupport extensionReader;
|
32
|
+
// EANManufacturerOrgSupport eanManSupport;
|
33
|
+
|
34
|
+
static const int MAX_AVG_VARIANCE;
|
35
|
+
static const int MAX_INDIVIDUAL_VARIANCE;
|
36
|
+
|
37
|
+
static Range findStartGuardPattern(Ref<BitArray> row);
|
38
|
+
|
39
|
+
virtual Range decodeEnd(Ref<BitArray> row, int endStart);
|
40
|
+
|
41
|
+
static bool checkStandardUPCEANChecksum(Ref<String> const& s);
|
42
|
+
|
43
|
+
static Range findGuardPattern(Ref<BitArray> row,
|
44
|
+
int rowOffset,
|
45
|
+
bool whiteFirst,
|
46
|
+
std::vector<int> const& pattern,
|
47
|
+
std::vector<int>& counters);
|
48
|
+
|
49
|
+
|
50
|
+
protected:
|
51
|
+
static const std::vector<int> START_END_PATTERN;
|
52
|
+
static const std::vector<int> MIDDLE_PATTERN;
|
53
|
+
|
54
|
+
static const std::vector<int const*> L_PATTERNS;
|
55
|
+
static const std::vector<int const*> L_AND_G_PATTERNS;
|
56
|
+
|
57
|
+
static Range findGuardPattern(Ref<BitArray> row,
|
58
|
+
int rowOffset,
|
59
|
+
bool whiteFirst,
|
60
|
+
std::vector<int> const& pattern);
|
61
|
+
|
62
|
+
public:
|
63
|
+
UPCEANReader();
|
64
|
+
|
65
|
+
virtual int decodeMiddle(Ref<BitArray> row,
|
66
|
+
Range const& startRange,
|
67
|
+
std::string& resultString) = 0;
|
68
|
+
|
69
|
+
virtual Ref<Result> decodeRow(int rowNumber, Ref<BitArray> row);
|
70
|
+
virtual Ref<Result> decodeRow(int rowNumber, Ref<BitArray> row, Range const& range);
|
71
|
+
|
72
|
+
static int decodeDigit(Ref<BitArray> row,
|
73
|
+
std::vector<int>& counters,
|
74
|
+
int rowOffset,
|
75
|
+
std::vector<int const*> const& patterns);
|
76
|
+
|
77
|
+
virtual bool checkChecksum(Ref<String> const& s);
|
78
|
+
|
79
|
+
virtual BarcodeFormat getBarcodeFormat() = 0;
|
80
|
+
virtual ~UPCEANReader();
|
81
|
+
|
82
|
+
friend class MultiFormatUPCEANReader;
|
83
|
+
};
|
84
|
+
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
#endif
|
@@ -0,0 +1,146 @@
|
|
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/ZXing.h>
|
19
|
+
#include <zxing/oned/UPCEReader.h>
|
20
|
+
#include <zxing/ReaderException.h>
|
21
|
+
|
22
|
+
using std::string;
|
23
|
+
using std::vector;
|
24
|
+
using zxing::Ref;
|
25
|
+
using zxing::String;
|
26
|
+
using zxing::oned::UPCEReader;
|
27
|
+
|
28
|
+
// VC++
|
29
|
+
using zxing::BitArray;
|
30
|
+
|
31
|
+
#define VECTOR_INIT(v) v, v + sizeof(v)/sizeof(v[0])
|
32
|
+
|
33
|
+
namespace {
|
34
|
+
/**
|
35
|
+
* The pattern that marks the middle, and end, of a UPC-E pattern.
|
36
|
+
* There is no "second half" to a UPC-E barcode.
|
37
|
+
*/
|
38
|
+
const int MIDDLE_END_PATTERN_[6] = {1, 1, 1, 1, 1, 1};
|
39
|
+
const vector<int> MIDDLE_END_PATTERN (VECTOR_INIT(MIDDLE_END_PATTERN_));
|
40
|
+
|
41
|
+
|
42
|
+
/**
|
43
|
+
* See {@link #L_AND_G_PATTERNS}; these values similarly represent patterns of
|
44
|
+
* even-odd parity encodings of digits that imply both the number system (0 or 1)
|
45
|
+
* used, and the check digit.
|
46
|
+
*/
|
47
|
+
const int NUMSYS_AND_CHECK_DIGIT_PATTERNS[2][10] = {
|
48
|
+
{0x38, 0x34, 0x32, 0x31, 0x2C, 0x26, 0x23, 0x2A, 0x29, 0x25},
|
49
|
+
{0x07, 0x0B, 0x0D, 0x0E, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A}
|
50
|
+
};
|
51
|
+
}
|
52
|
+
|
53
|
+
UPCEReader::UPCEReader() {
|
54
|
+
}
|
55
|
+
|
56
|
+
int UPCEReader::decodeMiddle(Ref<BitArray> row, Range const& startRange, string& result) {
|
57
|
+
vector<int>& counters (decodeMiddleCounters);
|
58
|
+
counters.clear();
|
59
|
+
counters.resize(4);
|
60
|
+
int end = row->getSize();
|
61
|
+
int rowOffset = startRange[1];
|
62
|
+
|
63
|
+
int lgPatternFound = 0;
|
64
|
+
|
65
|
+
for (int x = 0; x < 6 && rowOffset < end; x++) {
|
66
|
+
int bestMatch = decodeDigit(row, counters, rowOffset, L_AND_G_PATTERNS);
|
67
|
+
result.append(1, (char) ('0' + bestMatch % 10));
|
68
|
+
for (int i = 0, e = counters.size(); i < e; i++) {
|
69
|
+
rowOffset += counters[i];
|
70
|
+
}
|
71
|
+
if (bestMatch >= 10) {
|
72
|
+
lgPatternFound |= 1 << (5 - x);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
determineNumSysAndCheckDigit(result, lgPatternFound);
|
77
|
+
|
78
|
+
return rowOffset;
|
79
|
+
}
|
80
|
+
|
81
|
+
UPCEReader::Range UPCEReader::decodeEnd(Ref<BitArray> row, int endStart) {
|
82
|
+
return findGuardPattern(row, endStart, true, MIDDLE_END_PATTERN);
|
83
|
+
}
|
84
|
+
|
85
|
+
bool UPCEReader::checkChecksum(Ref<String> const& s){
|
86
|
+
return UPCEANReader::checkChecksum(convertUPCEtoUPCA(s));
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
bool UPCEReader::determineNumSysAndCheckDigit(std::string& resultString, int lgPatternFound) {
|
91
|
+
for (int numSys = 0; numSys <= 1; numSys++) {
|
92
|
+
for (int d = 0; d < 10; d++) {
|
93
|
+
if (lgPatternFound == NUMSYS_AND_CHECK_DIGIT_PATTERNS[numSys][d]) {
|
94
|
+
resultString.insert(0, 1, (char) ('0' + numSys));
|
95
|
+
resultString.append(1, (char) ('0' + d));
|
96
|
+
return true;
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
return false;
|
101
|
+
}
|
102
|
+
|
103
|
+
/**
|
104
|
+
* Expands a UPC-E value back into its full, equivalent UPC-A code value.
|
105
|
+
*
|
106
|
+
* @param upce UPC-E code as string of digits
|
107
|
+
* @return equivalent UPC-A code as string of digits
|
108
|
+
*/
|
109
|
+
Ref<String> UPCEReader::convertUPCEtoUPCA(Ref<String> const& upce_) {
|
110
|
+
string const& upce(upce_->getText());
|
111
|
+
string result;
|
112
|
+
result.append(1, upce[0]);
|
113
|
+
char lastChar = upce[6];
|
114
|
+
switch (lastChar) {
|
115
|
+
case '0':
|
116
|
+
case '1':
|
117
|
+
case '2':
|
118
|
+
result.append(upce.substr(1,2));
|
119
|
+
result.append(1, lastChar);
|
120
|
+
result.append("0000");
|
121
|
+
result.append(upce.substr(3,3));
|
122
|
+
break;
|
123
|
+
case '3':
|
124
|
+
result.append(upce.substr(1,3));
|
125
|
+
result.append("00000");
|
126
|
+
result.append(upce.substr(4,2));
|
127
|
+
break;
|
128
|
+
case '4':
|
129
|
+
result.append(upce.substr(1,4));
|
130
|
+
result.append("00000");
|
131
|
+
result.append(1, upce[5]);
|
132
|
+
break;
|
133
|
+
default:
|
134
|
+
result.append(upce.substr(1,5));
|
135
|
+
result.append("0000");
|
136
|
+
result.append(1, lastChar);
|
137
|
+
break;
|
138
|
+
}
|
139
|
+
result.append(1, upce[7]);
|
140
|
+
return Ref<String>(new String(result));
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
zxing::BarcodeFormat UPCEReader::getBarcodeFormat() {
|
145
|
+
return BarcodeFormat::UPC_E;
|
146
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*-
|
2
|
+
#ifndef __UPC_E_READER_H__
|
3
|
+
#define __UPC_E_READER_H__
|
4
|
+
|
5
|
+
/*
|
6
|
+
* Copyright 2010 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/oned/UPCEANReader.h>
|
22
|
+
#include <zxing/Result.h>
|
23
|
+
|
24
|
+
namespace zxing {
|
25
|
+
namespace oned {
|
26
|
+
|
27
|
+
class UPCEReader : public UPCEANReader {
|
28
|
+
private:
|
29
|
+
std::vector<int> decodeMiddleCounters;
|
30
|
+
static bool determineNumSysAndCheckDigit(std::string& resultString, int lgPatternFound);
|
31
|
+
|
32
|
+
protected:
|
33
|
+
Range decodeEnd(Ref<BitArray> row, int endStart);
|
34
|
+
bool checkChecksum(Ref<String> const& s);
|
35
|
+
public:
|
36
|
+
UPCEReader();
|
37
|
+
|
38
|
+
int decodeMiddle(Ref<BitArray> row, Range const& startRange, std::string& resultString);
|
39
|
+
static Ref<String> convertUPCEtoUPCA(Ref<String> const& upce);
|
40
|
+
|
41
|
+
BarcodeFormat getBarcodeFormat();
|
42
|
+
};
|
43
|
+
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
#endif
|
@@ -0,0 +1,170 @@
|
|
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/pdf417/PDF417Reader.h>
|
19
|
+
#include <zxing/pdf417/detector/Detector.h>
|
20
|
+
|
21
|
+
using zxing::Ref;
|
22
|
+
using zxing::Result;
|
23
|
+
using zxing::BitMatrix;
|
24
|
+
using zxing::pdf417::PDF417Reader;
|
25
|
+
using zxing::pdf417::detector::Detector;
|
26
|
+
|
27
|
+
// VC++
|
28
|
+
using zxing::ArrayRef;
|
29
|
+
using zxing::BinaryBitmap;
|
30
|
+
using zxing::DecodeHints;
|
31
|
+
|
32
|
+
Ref<Result> PDF417Reader::decode(Ref<BinaryBitmap> image, DecodeHints hints) {
|
33
|
+
Ref<DecoderResult> decoderResult;
|
34
|
+
/* 2012-05-30 hfn C++ DecodeHintType does not yet know a type "PURE_BARCODE", */
|
35
|
+
/* therefore skip this for now, todo: may be add this type later */
|
36
|
+
/*
|
37
|
+
if (!hints.isEmpty() && hints.containsKey(DecodeHintType.PURE_BARCODE)) {
|
38
|
+
BitMatrix bits = extractPureBits(image.getBlackMatrix());
|
39
|
+
decoderResult = decoder.decode(bits);
|
40
|
+
points = NO_POINTS;
|
41
|
+
} else {
|
42
|
+
*/
|
43
|
+
Detector detector(image);
|
44
|
+
Ref<DetectorResult> detectorResult = detector.detect(hints); /* 2012-09-17 hints ("try_harder") */
|
45
|
+
ArrayRef< Ref<ResultPoint> > points(detectorResult->getPoints());
|
46
|
+
|
47
|
+
if (!hints.isEmpty()) {
|
48
|
+
Ref<ResultPointCallback> rpcb = hints.getResultPointCallback();
|
49
|
+
/* .get(DecodeHintType.NEED_RESULT_POINT_CALLBACK); */
|
50
|
+
if (rpcb != NULL) {
|
51
|
+
for (int i = 0; i < points->size(); i++) {
|
52
|
+
rpcb->foundPossibleResultPoint(*points[i]);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
56
|
+
decoderResult = decoder.decode(detectorResult->getBits(),hints);
|
57
|
+
/*
|
58
|
+
}
|
59
|
+
*/
|
60
|
+
Ref<Result> r(new Result(decoderResult->getText(), decoderResult->getRawBytes(), points,
|
61
|
+
BarcodeFormat::PDF_417));
|
62
|
+
return r;
|
63
|
+
}
|
64
|
+
|
65
|
+
void PDF417Reader::reset() {
|
66
|
+
// do nothing
|
67
|
+
}
|
68
|
+
|
69
|
+
Ref<BitMatrix> PDF417Reader::extractPureBits(Ref<BitMatrix> image) {
|
70
|
+
ArrayRef<int> leftTopBlack = image->getTopLeftOnBit();
|
71
|
+
ArrayRef<int> rightBottomBlack = image->getBottomRightOnBit();
|
72
|
+
/* see BitMatrix::getTopLeftOnBit etc.:
|
73
|
+
if (leftTopBlack == null || rightBottomBlack == null) {
|
74
|
+
throw NotFoundException.getNotFoundInstance();
|
75
|
+
} */
|
76
|
+
|
77
|
+
int nModuleSize = moduleSize(leftTopBlack, image);
|
78
|
+
|
79
|
+
int top = leftTopBlack[1];
|
80
|
+
int bottom = rightBottomBlack[1];
|
81
|
+
int left = findPatternStart(leftTopBlack[0], top, image);
|
82
|
+
int right = findPatternEnd(leftTopBlack[0], top, image);
|
83
|
+
|
84
|
+
int matrixWidth = (right - left + 1) / nModuleSize;
|
85
|
+
int matrixHeight = (bottom - top + 1) / nModuleSize;
|
86
|
+
if (matrixWidth <= 0 || matrixHeight <= 0) {
|
87
|
+
throw NotFoundException("PDF417Reader::extractPureBits: no matrix found!");
|
88
|
+
}
|
89
|
+
|
90
|
+
// Push in the "border" by half the module width so that we start
|
91
|
+
// sampling in the middle of the module. Just in case the image is a
|
92
|
+
// little off, this will help recover.
|
93
|
+
int nudge = nModuleSize >> 1;
|
94
|
+
top += nudge;
|
95
|
+
left += nudge;
|
96
|
+
|
97
|
+
// Now just read off the bits
|
98
|
+
Ref<BitMatrix> bits(new BitMatrix(matrixWidth, matrixHeight));
|
99
|
+
for (int y = 0; y < matrixHeight; y++) {
|
100
|
+
int iOffset = top + y * nModuleSize;
|
101
|
+
for (int x = 0; x < matrixWidth; x++) {
|
102
|
+
if (image->get(left + x * nModuleSize, iOffset)) {
|
103
|
+
bits->set(x, y);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
return bits;
|
108
|
+
}
|
109
|
+
|
110
|
+
int PDF417Reader::moduleSize(ArrayRef<int> leftTopBlack, Ref<BitMatrix> image) {
|
111
|
+
int x = leftTopBlack[0];
|
112
|
+
int y = leftTopBlack[1];
|
113
|
+
int width = image->getWidth();
|
114
|
+
while (x < width && image->get(x, y)) {
|
115
|
+
x++;
|
116
|
+
}
|
117
|
+
if (x == width) {
|
118
|
+
throw NotFoundException("PDF417Reader::moduleSize: not found!");
|
119
|
+
}
|
120
|
+
|
121
|
+
int moduleSize = (int)(((unsigned)(x - leftTopBlack[0])) >> 3); // We've crossed left first bar, which is 8x
|
122
|
+
if (moduleSize == 0) {
|
123
|
+
throw NotFoundException("PDF417Reader::moduleSize: is zero!");
|
124
|
+
}
|
125
|
+
|
126
|
+
return moduleSize;
|
127
|
+
}
|
128
|
+
|
129
|
+
int PDF417Reader::findPatternStart(int x, int y, Ref<BitMatrix> image) {
|
130
|
+
int width = image->getWidth();
|
131
|
+
int start = x;
|
132
|
+
// start should be on black
|
133
|
+
int transitions = 0;
|
134
|
+
bool black = true;
|
135
|
+
while (start < width - 1 && transitions < 8) {
|
136
|
+
start++;
|
137
|
+
bool newBlack = image->get(start, y);
|
138
|
+
if (black != newBlack) {
|
139
|
+
transitions++;
|
140
|
+
}
|
141
|
+
black = newBlack;
|
142
|
+
}
|
143
|
+
if (start == width - 1) {
|
144
|
+
throw NotFoundException("PDF417Reader::findPatternStart: no pattern start found!");
|
145
|
+
}
|
146
|
+
return start;
|
147
|
+
}
|
148
|
+
|
149
|
+
int PDF417Reader::findPatternEnd(int x, int y, Ref<BitMatrix> image) {
|
150
|
+
int width = image->getWidth();
|
151
|
+
int end = width - 1;
|
152
|
+
// end should be on black
|
153
|
+
while (end > x && !image->get(end, y)) {
|
154
|
+
end--;
|
155
|
+
}
|
156
|
+
int transitions = 0;
|
157
|
+
bool black = true;
|
158
|
+
while (end > x && transitions < 9) {
|
159
|
+
end--;
|
160
|
+
bool newBlack = image->get(end, y);
|
161
|
+
if (black != newBlack) {
|
162
|
+
transitions++;
|
163
|
+
}
|
164
|
+
black = newBlack;
|
165
|
+
}
|
166
|
+
if (end == x) {
|
167
|
+
throw NotFoundException("PDF417Reader::findPatternEnd: no pattern end found!");
|
168
|
+
}
|
169
|
+
return end;
|
170
|
+
}
|