react-native-nitro-zxing 0.1.0-alpha.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.
- package/README.md +34 -0
- package/VisionCameraZxing.podspec +48 -0
- package/android/CMakeLists.txt +43 -0
- package/android/build.gradle +150 -0
- package/android/fix-prefab.gradle +51 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/cpp/cpp-adapter.cpp +7 -0
- package/android/src/main/java/com/margelo/nitro/camera/zxing/VisionCameraZxingPackage.kt +21 -0
- package/cpp/BarcodeValueTypeClassifier.cpp +70 -0
- package/cpp/BarcodeValueTypeClassifier.hpp +14 -0
- package/cpp/FrameImageView.cpp +75 -0
- package/cpp/FrameImageView.hpp +34 -0
- package/cpp/HybridBarcode.cpp +59 -0
- package/cpp/HybridBarcode.hpp +26 -0
- package/cpp/HybridBarcodeScanner.cpp +121 -0
- package/cpp/HybridBarcodeScanner.hpp +26 -0
- package/cpp/HybridBarcodeScannerFactory.cpp +11 -0
- package/cpp/HybridBarcodeScannerFactory.hpp +14 -0
- package/cpp/ImageDownscaler.cpp +34 -0
- package/cpp/ImageDownscaler.hpp +21 -0
- package/cpp/ZXingDecoder.cpp +189 -0
- package/cpp/ZXingDecoder.hpp +72 -0
- package/cpp/zxing-core/LICENSE +202 -0
- package/cpp/zxing-core/README.md +156 -0
- package/cpp/zxing-core/core/CMakeLists.txt +784 -0
- package/cpp/zxing-core/core/Version.h.in +28 -0
- package/cpp/zxing-core/core/ZXingConfig.cmake.in +9 -0
- package/cpp/zxing-core/core/src/Barcode.cpp +255 -0
- package/cpp/zxing-core/core/src/Barcode.h +191 -0
- package/cpp/zxing-core/core/src/BarcodeData.h +100 -0
- package/cpp/zxing-core/core/src/BarcodeFormat.cpp +286 -0
- package/cpp/zxing-core/core/src/BarcodeFormat.h +272 -0
- package/cpp/zxing-core/core/src/BinaryBitmap.cpp +111 -0
- package/cpp/zxing-core/core/src/BinaryBitmap.h +66 -0
- package/cpp/zxing-core/core/src/BitArray.cpp +38 -0
- package/cpp/zxing-core/core/src/BitArray.h +181 -0
- package/cpp/zxing-core/core/src/BitMatrix.cpp +175 -0
- package/cpp/zxing-core/core/src/BitMatrix.h +199 -0
- package/cpp/zxing-core/core/src/BitMatrixCursor.h +253 -0
- package/cpp/zxing-core/core/src/BitMatrixIO.cpp +101 -0
- package/cpp/zxing-core/core/src/BitMatrixIO.h +21 -0
- package/cpp/zxing-core/core/src/BitSource.cpp +77 -0
- package/cpp/zxing-core/core/src/BitSource.h +72 -0
- package/cpp/zxing-core/core/src/ByteArray.h +42 -0
- package/cpp/zxing-core/core/src/CharacterSet.cpp +78 -0
- package/cpp/zxing-core/core/src/CharacterSet.h +58 -0
- package/cpp/zxing-core/core/src/ConcentricFinder.cpp +312 -0
- package/cpp/zxing-core/core/src/ConcentricFinder.h +156 -0
- package/cpp/zxing-core/core/src/Content.cpp +471 -0
- package/cpp/zxing-core/core/src/Content.h +82 -0
- package/cpp/zxing-core/core/src/ContentType.h +19 -0
- package/cpp/zxing-core/core/src/CreateBarcode.cpp +490 -0
- package/cpp/zxing-core/core/src/CreateBarcode.h +132 -0
- package/cpp/zxing-core/core/src/DecoderResult.h +92 -0
- package/cpp/zxing-core/core/src/DetectorResult.h +44 -0
- package/cpp/zxing-core/core/src/ECI.cpp +81 -0
- package/cpp/zxing-core/core/src/ECI.h +78 -0
- package/cpp/zxing-core/core/src/Error.cpp +29 -0
- package/cpp/zxing-core/core/src/Error.h +79 -0
- package/cpp/zxing-core/core/src/Flags.h +165 -0
- package/cpp/zxing-core/core/src/GTIN.cpp +253 -0
- package/cpp/zxing-core/core/src/GTIN.h +58 -0
- package/cpp/zxing-core/core/src/GlobalHistogramBinarizer.cpp +197 -0
- package/cpp/zxing-core/core/src/GlobalHistogramBinarizer.h +34 -0
- package/cpp/zxing-core/core/src/GridSampler.cpp +124 -0
- package/cpp/zxing-core/core/src/GridSampler.h +59 -0
- package/cpp/zxing-core/core/src/HRI.cpp +343 -0
- package/cpp/zxing-core/core/src/HRI.h +16 -0
- package/cpp/zxing-core/core/src/HybridBinarizer.cpp +315 -0
- package/cpp/zxing-core/core/src/HybridBinarizer.h +40 -0
- package/cpp/zxing-core/core/src/ImageView.h +168 -0
- package/cpp/zxing-core/core/src/JSON.cpp +154 -0
- package/cpp/zxing-core/core/src/JSON.h +66 -0
- package/cpp/zxing-core/core/src/LocalGrid.cpp +242 -0
- package/cpp/zxing-core/core/src/LocalGrid.h +91 -0
- package/cpp/zxing-core/core/src/LogMatrix.h +105 -0
- package/cpp/zxing-core/core/src/Matrix.h +125 -0
- package/cpp/zxing-core/core/src/MultiFormatReader.cpp +107 -0
- package/cpp/zxing-core/core/src/MultiFormatReader.h +34 -0
- package/cpp/zxing-core/core/src/MultiFormatWriter.cpp +111 -0
- package/cpp/zxing-core/core/src/MultiFormatWriter.h +62 -0
- package/cpp/zxing-core/core/src/Pattern.h +472 -0
- package/cpp/zxing-core/core/src/PerspectiveTransform.cpp +81 -0
- package/cpp/zxing-core/core/src/PerspectiveTransform.h +47 -0
- package/cpp/zxing-core/core/src/Point.h +185 -0
- package/cpp/zxing-core/core/src/Quadrilateral.h +215 -0
- package/cpp/zxing-core/core/src/Range.h +112 -0
- package/cpp/zxing-core/core/src/ReadBarcode.cpp +335 -0
- package/cpp/zxing-core/core/src/ReadBarcode.h +33 -0
- package/cpp/zxing-core/core/src/Reader.h +32 -0
- package/cpp/zxing-core/core/src/ReaderOptions.h +210 -0
- package/cpp/zxing-core/core/src/ReedSolomon.cpp +100 -0
- package/cpp/zxing-core/core/src/ReedSolomon.h +66 -0
- package/cpp/zxing-core/core/src/RegressionLine.h +161 -0
- package/cpp/zxing-core/core/src/ResultPoint.cpp +20 -0
- package/cpp/zxing-core/core/src/ResultPoint.h +35 -0
- package/cpp/zxing-core/core/src/StdGenerator.h +121 -0
- package/cpp/zxing-core/core/src/StdPrint.h +38 -0
- package/cpp/zxing-core/core/src/StdScope.h +55 -0
- package/cpp/zxing-core/core/src/StructuredAppend.h +19 -0
- package/cpp/zxing-core/core/src/SymbologyIdentifier.h +29 -0
- package/cpp/zxing-core/core/src/TextDecoder.cpp +59 -0
- package/cpp/zxing-core/core/src/TextDecoder.h +23 -0
- package/cpp/zxing-core/core/src/TextEncoder.cpp +75 -0
- package/cpp/zxing-core/core/src/TextEncoder.h +31 -0
- package/cpp/zxing-core/core/src/ThresholdBinarizer.h +58 -0
- package/cpp/zxing-core/core/src/TritMatrix.h +29 -0
- package/cpp/zxing-core/core/src/Utf.cpp +276 -0
- package/cpp/zxing-core/core/src/Utf.h +26 -0
- package/cpp/zxing-core/core/src/WhiteRectDetector.cpp +276 -0
- package/cpp/zxing-core/core/src/WhiteRectDetector.h +36 -0
- package/cpp/zxing-core/core/src/WriteBarcode.cpp +213 -0
- package/cpp/zxing-core/core/src/WriteBarcode.h +72 -0
- package/cpp/zxing-core/core/src/ZXAlgorithms.h +353 -0
- package/cpp/zxing-core/core/src/ZXConfig.h +17 -0
- package/cpp/zxing-core/core/src/ZXTestSupport.h +9 -0
- package/cpp/zxing-core/core/src/ZXVersion.h +14 -0
- package/cpp/zxing-core/core/src/ZXingC.cpp +460 -0
- package/cpp/zxing-core/core/src/ZXingC.h +296 -0
- package/cpp/zxing-core/core/src/ZXingCpp.cpp +18 -0
- package/cpp/zxing-core/core/src/ZXingCpp.h +76 -0
- package/cpp/zxing-core/core/src/ZXingQt.h +606 -0
- package/cpp/zxing-core/core/src/aztec/AZDecoder.cpp +376 -0
- package/cpp/zxing-core/core/src/aztec/AZDecoder.h +20 -0
- package/cpp/zxing-core/core/src/aztec/AZDetector.cpp +508 -0
- package/cpp/zxing-core/core/src/aztec/AZDetector.h +25 -0
- package/cpp/zxing-core/core/src/aztec/AZDetectorResult.h +51 -0
- package/cpp/zxing-core/core/src/aztec/AZEncoder.cpp +318 -0
- package/cpp/zxing-core/core/src/aztec/AZEncoder.h +44 -0
- package/cpp/zxing-core/core/src/aztec/AZEncodingState.h +40 -0
- package/cpp/zxing-core/core/src/aztec/AZHighLevelEncoder.cpp +377 -0
- package/cpp/zxing-core/core/src/aztec/AZHighLevelEncoder.h +36 -0
- package/cpp/zxing-core/core/src/aztec/AZReader.cpp +45 -0
- package/cpp/zxing-core/core/src/aztec/AZReader.h +21 -0
- package/cpp/zxing-core/core/src/aztec/AZToken.cpp +44 -0
- package/cpp/zxing-core/core/src/aztec/AZToken.h +39 -0
- package/cpp/zxing-core/core/src/aztec/AZWriter.cpp +38 -0
- package/cpp/zxing-core/core/src/aztec/AZWriter.h +55 -0
- package/cpp/zxing-core/core/src/datamatrix/DMBitLayout.cpp +194 -0
- package/cpp/zxing-core/core/src/datamatrix/DMBitLayout.h +21 -0
- package/cpp/zxing-core/core/src/datamatrix/DMDataBlock.cpp +63 -0
- package/cpp/zxing-core/core/src/datamatrix/DMDataBlock.h +41 -0
- package/cpp/zxing-core/core/src/datamatrix/DMDecoder.cpp +457 -0
- package/cpp/zxing-core/core/src/datamatrix/DMDecoder.h +19 -0
- package/cpp/zxing-core/core/src/datamatrix/DMDetector.cpp +1230 -0
- package/cpp/zxing-core/core/src/datamatrix/DMDetector.h +23 -0
- package/cpp/zxing-core/core/src/datamatrix/DMECEncoder.cpp +137 -0
- package/cpp/zxing-core/core/src/datamatrix/DMECEncoder.h +26 -0
- package/cpp/zxing-core/core/src/datamatrix/DMEncoderContext.h +128 -0
- package/cpp/zxing-core/core/src/datamatrix/DMHighLevelEncoder.cpp +919 -0
- package/cpp/zxing-core/core/src/datamatrix/DMHighLevelEncoder.h +29 -0
- package/cpp/zxing-core/core/src/datamatrix/DMReader.cpp +40 -0
- package/cpp/zxing-core/core/src/datamatrix/DMReader.h +21 -0
- package/cpp/zxing-core/core/src/datamatrix/DMSymbolInfo.cpp +141 -0
- package/cpp/zxing-core/core/src/datamatrix/DMSymbolInfo.h +78 -0
- package/cpp/zxing-core/core/src/datamatrix/DMSymbolShape.h +17 -0
- package/cpp/zxing-core/core/src/datamatrix/DMVersion.cpp +82 -0
- package/cpp/zxing-core/core/src/datamatrix/DMVersion.h +76 -0
- package/cpp/zxing-core/core/src/datamatrix/DMWriter.cpp +114 -0
- package/cpp/zxing-core/core/src/datamatrix/DMWriter.h +62 -0
- package/cpp/zxing-core/core/src/librscpp/README.md +65 -0
- package/cpp/zxing-core/core/src/librscpp/decode.h +258 -0
- package/cpp/zxing-core/core/src/librscpp/encode.h +124 -0
- package/cpp/zxing-core/core/src/librscpp/field.h +158 -0
- package/cpp/zxing-core/core/src/librscpp/poly.h +194 -0
- package/cpp/zxing-core/core/src/libzint/2of5inter.c +1 -0
- package/cpp/zxing-core/core/src/libzint/2of5inter_based.c +1 -0
- package/cpp/zxing-core/core/src/libzint/aztec.c +1 -0
- package/cpp/zxing-core/core/src/libzint/aztec.h +1 -0
- package/cpp/zxing-core/core/src/libzint/big5.h +1 -0
- package/cpp/zxing-core/core/src/libzint/codabar.c +1 -0
- package/cpp/zxing-core/core/src/libzint/code.c +1 -0
- package/cpp/zxing-core/core/src/libzint/code128.c +1 -0
- package/cpp/zxing-core/core/src/libzint/code128.h +1 -0
- package/cpp/zxing-core/core/src/libzint/common.c +1 -0
- package/cpp/zxing-core/core/src/libzint/common.h +1 -0
- package/cpp/zxing-core/core/src/libzint/dmatrix.c +1 -0
- package/cpp/zxing-core/core/src/libzint/dmatrix.h +1 -0
- package/cpp/zxing-core/core/src/libzint/dxfilmedge.c +1 -0
- package/cpp/zxing-core/core/src/libzint/eci.c +1 -0
- package/cpp/zxing-core/core/src/libzint/eci.h +1 -0
- package/cpp/zxing-core/core/src/libzint/eci_sb.h +1 -0
- package/cpp/zxing-core/core/src/libzint/filemem.c +1 -0
- package/cpp/zxing-core/core/src/libzint/filemem.h +1 -0
- package/cpp/zxing-core/core/src/libzint/fonts/normal_woff2.h +1 -0
- package/cpp/zxing-core/core/src/libzint/fonts/upcean_woff2.h +1 -0
- package/cpp/zxing-core/core/src/libzint/gb18030.h +1 -0
- package/cpp/zxing-core/core/src/libzint/gb2312.h +1 -0
- package/cpp/zxing-core/core/src/libzint/gbk.h +1 -0
- package/cpp/zxing-core/core/src/libzint/general_field.c +1 -0
- package/cpp/zxing-core/core/src/libzint/general_field.h +1 -0
- package/cpp/zxing-core/core/src/libzint/gs1.c +1 -0
- package/cpp/zxing-core/core/src/libzint/gs1.h +1 -0
- package/cpp/zxing-core/core/src/libzint/gs1_lint.h +1 -0
- package/cpp/zxing-core/core/src/libzint/iso3166.h +1 -0
- package/cpp/zxing-core/core/src/libzint/iso4217.h +1 -0
- package/cpp/zxing-core/core/src/libzint/ksx1001.h +1 -0
- package/cpp/zxing-core/core/src/libzint/large.c +1 -0
- package/cpp/zxing-core/core/src/libzint/large.h +1 -0
- package/cpp/zxing-core/core/src/libzint/library.c +1 -0
- package/cpp/zxing-core/core/src/libzint/maxicode.c +1 -0
- package/cpp/zxing-core/core/src/libzint/maxicode.h +1 -0
- package/cpp/zxing-core/core/src/libzint/medical.c +1 -0
- package/cpp/zxing-core/core/src/libzint/output.c +1 -0
- package/cpp/zxing-core/core/src/libzint/output.h +1 -0
- package/cpp/zxing-core/core/src/libzint/pdf417.c +1 -0
- package/cpp/zxing-core/core/src/libzint/pdf417.h +1 -0
- package/cpp/zxing-core/core/src/libzint/pdf417_tabs.h +1 -0
- package/cpp/zxing-core/core/src/libzint/qr.c +1 -0
- package/cpp/zxing-core/core/src/libzint/qr.h +1 -0
- package/cpp/zxing-core/core/src/libzint/raster.c +1 -0
- package/cpp/zxing-core/core/src/libzint/raster_font.h +1 -0
- package/cpp/zxing-core/core/src/libzint/reedsol.c +1 -0
- package/cpp/zxing-core/core/src/libzint/reedsol.h +1 -0
- package/cpp/zxing-core/core/src/libzint/reedsol_logs.h +1 -0
- package/cpp/zxing-core/core/src/libzint/rss.c +1 -0
- package/cpp/zxing-core/core/src/libzint/rss.h +1 -0
- package/cpp/zxing-core/core/src/libzint/sjis.h +1 -0
- package/cpp/zxing-core/core/src/libzint/stubs.c +137 -0
- package/cpp/zxing-core/core/src/libzint/svg.c +1 -0
- package/cpp/zxing-core/core/src/libzint/telepen.c +1 -0
- package/cpp/zxing-core/core/src/libzint/upcean.c +1 -0
- package/cpp/zxing-core/core/src/libzint/vector.c +1 -0
- package/cpp/zxing-core/core/src/libzint/zfiletypes.h +1 -0
- package/cpp/zxing-core/core/src/libzint/zint.h +1 -0
- package/cpp/zxing-core/core/src/libzint/zintconfig.h +1 -0
- package/cpp/zxing-core/core/src/libzueci/README.md +11 -0
- package/cpp/zxing-core/core/src/libzueci/zueci.c +1718 -0
- package/cpp/zxing-core/core/src/libzueci/zueci.h +179 -0
- package/cpp/zxing-core/core/src/libzueci/zueci_big5.h +3884 -0
- package/cpp/zxing-core/core/src/libzueci/zueci_common.h +31 -0
- package/cpp/zxing-core/core/src/libzueci/zueci_gb18030.h +264 -0
- package/cpp/zxing-core/core/src/libzueci/zueci_gb2312.h +2381 -0
- package/cpp/zxing-core/core/src/libzueci/zueci_gbk.h +4047 -0
- package/cpp/zxing-core/core/src/libzueci/zueci_ksx1001.h +2932 -0
- package/cpp/zxing-core/core/src/libzueci/zueci_sb.h +1112 -0
- package/cpp/zxing-core/core/src/libzueci/zueci_sjis.h +2286 -0
- package/cpp/zxing-core/core/src/maxicode/MCBitMatrixParser.cpp +68 -0
- package/cpp/zxing-core/core/src/maxicode/MCBitMatrixParser.h +30 -0
- package/cpp/zxing-core/core/src/maxicode/MCDecoder.cpp +329 -0
- package/cpp/zxing-core/core/src/maxicode/MCDecoder.h +19 -0
- package/cpp/zxing-core/core/src/maxicode/MCReader.cpp +65 -0
- package/cpp/zxing-core/core/src/maxicode/MCReader.h +21 -0
- package/cpp/zxing-core/core/src/oned/ODCodabarReader.cpp +102 -0
- package/cpp/zxing-core/core/src/oned/ODCodabarReader.h +21 -0
- package/cpp/zxing-core/core/src/oned/ODCodabarWriter.cpp +136 -0
- package/cpp/zxing-core/core/src/oned/ODCodabarWriter.h +34 -0
- package/cpp/zxing-core/core/src/oned/ODCode128Patterns.h +130 -0
- package/cpp/zxing-core/core/src/oned/ODCode128Reader.cpp +236 -0
- package/cpp/zxing-core/core/src/oned/ODCode128Reader.h +21 -0
- package/cpp/zxing-core/core/src/oned/ODCode128Writer.cpp +261 -0
- package/cpp/zxing-core/core/src/oned/ODCode128Writer.h +34 -0
- package/cpp/zxing-core/core/src/oned/ODCode39Reader.cpp +213 -0
- package/cpp/zxing-core/core/src/oned/ODCode39Reader.h +26 -0
- package/cpp/zxing-core/core/src/oned/ODCode39Writer.cpp +176 -0
- package/cpp/zxing-core/core/src/oned/ODCode39Writer.h +34 -0
- package/cpp/zxing-core/core/src/oned/ODCode93Patterns.h +80 -0
- package/cpp/zxing-core/core/src/oned/ODCode93Reader.cpp +112 -0
- package/cpp/zxing-core/core/src/oned/ODCode93Reader.h +21 -0
- package/cpp/zxing-core/core/src/oned/ODCode93Writer.cpp +192 -0
- package/cpp/zxing-core/core/src/oned/ODCode93Writer.h +32 -0
- package/cpp/zxing-core/core/src/oned/ODDXFilmEdgeReader.cpp +246 -0
- package/cpp/zxing-core/core/src/oned/ODDXFilmEdgeReader.h +26 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarCommon.cpp +172 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarCommon.h +204 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarExpandedBitDecoder.cpp +253 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarExpandedBitDecoder.h +19 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarExpandedReader.cpp +383 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarExpandedReader.h +25 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarLimitedReader.cpp +163 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarLimitedReader.h +23 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarReader.cpp +240 -0
- package/cpp/zxing-core/core/src/oned/ODDataBarReader.h +25 -0
- package/cpp/zxing-core/core/src/oned/ODEAN13Writer.cpp +62 -0
- package/cpp/zxing-core/core/src/oned/ODEAN13Writer.h +34 -0
- package/cpp/zxing-core/core/src/oned/ODEAN8Writer.cpp +51 -0
- package/cpp/zxing-core/core/src/oned/ODEAN8Writer.h +34 -0
- package/cpp/zxing-core/core/src/oned/ODITFReader.cpp +97 -0
- package/cpp/zxing-core/core/src/oned/ODITFReader.h +33 -0
- package/cpp/zxing-core/core/src/oned/ODITFWriter.cpp +78 -0
- package/cpp/zxing-core/core/src/oned/ODITFWriter.h +34 -0
- package/cpp/zxing-core/core/src/oned/ODMultiUPCEANReader.cpp +323 -0
- package/cpp/zxing-core/core/src/oned/ODMultiUPCEANReader.h +32 -0
- package/cpp/zxing-core/core/src/oned/ODReader.cpp +259 -0
- package/cpp/zxing-core/core/src/oned/ODReader.h +35 -0
- package/cpp/zxing-core/core/src/oned/ODRowReader.h +222 -0
- package/cpp/zxing-core/core/src/oned/ODTelepenReader.cpp +199 -0
- package/cpp/zxing-core/core/src/oned/ODTelepenReader.h +25 -0
- package/cpp/zxing-core/core/src/oned/ODUPCAWriter.cpp +33 -0
- package/cpp/zxing-core/core/src/oned/ODUPCAWriter.h +34 -0
- package/cpp/zxing-core/core/src/oned/ODUPCEANCommon.cpp +80 -0
- package/cpp/zxing-core/core/src/oned/ODUPCEANCommon.h +129 -0
- package/cpp/zxing-core/core/src/oned/ODUPCEWriter.cpp +56 -0
- package/cpp/zxing-core/core/src/oned/ODUPCEWriter.h +34 -0
- package/cpp/zxing-core/core/src/oned/ODWriterHelper.cpp +39 -0
- package/cpp/zxing-core/core/src/oned/ODWriterHelper.h +48 -0
- package/cpp/zxing-core/core/src/pdf417/MicroPDFReader.cpp +796 -0
- package/cpp/zxing-core/core/src/pdf417/MicroPDFReader.h +23 -0
- package/cpp/zxing-core/core/src/pdf417/PDF417.cpp +85 -0
- package/cpp/zxing-core/core/src/pdf417/PDF417.h +81 -0
- package/cpp/zxing-core/core/src/pdf417/PDFBarcodeMetadata.h +53 -0
- package/cpp/zxing-core/core/src/pdf417/PDFBarcodeValue.cpp +48 -0
- package/cpp/zxing-core/core/src/pdf417/PDFBarcodeValue.h +38 -0
- package/cpp/zxing-core/core/src/pdf417/PDFBoundingBox.cpp +116 -0
- package/cpp/zxing-core/core/src/pdf417/PDFBoundingBox.h +75 -0
- package/cpp/zxing-core/core/src/pdf417/PDFCodeword.h +71 -0
- package/cpp/zxing-core/core/src/pdf417/PDFCodewordDecoder.cpp +588 -0
- package/cpp/zxing-core/core/src/pdf417/PDFCodewordDecoder.h +41 -0
- package/cpp/zxing-core/core/src/pdf417/PDFCompaction.h +20 -0
- package/cpp/zxing-core/core/src/pdf417/PDFCustomData.h +32 -0
- package/cpp/zxing-core/core/src/pdf417/PDFDecoder.cpp +725 -0
- package/cpp/zxing-core/core/src/pdf417/PDFDecoder.h +20 -0
- package/cpp/zxing-core/core/src/pdf417/PDFDetectionResult.cpp +247 -0
- package/cpp/zxing-core/core/src/pdf417/PDFDetectionResult.h +74 -0
- package/cpp/zxing-core/core/src/pdf417/PDFDetectionResultColumn.cpp +321 -0
- package/cpp/zxing-core/core/src/pdf417/PDFDetectionResultColumn.h +83 -0
- package/cpp/zxing-core/core/src/pdf417/PDFDetector.cpp +371 -0
- package/cpp/zxing-core/core/src/pdf417/PDFDetector.h +45 -0
- package/cpp/zxing-core/core/src/pdf417/PDFEncoder.cpp +570 -0
- package/cpp/zxing-core/core/src/pdf417/PDFEncoder.h +182 -0
- package/cpp/zxing-core/core/src/pdf417/PDFHighLevelEncoder.cpp +570 -0
- package/cpp/zxing-core/core/src/pdf417/PDFHighLevelEncoder.h +32 -0
- package/cpp/zxing-core/core/src/pdf417/PDFReader.cpp +333 -0
- package/cpp/zxing-core/core/src/pdf417/PDFReader.h +28 -0
- package/cpp/zxing-core/core/src/pdf417/PDFScanningDecoder.cpp +559 -0
- package/cpp/zxing-core/core/src/pdf417/PDFScanningDecoder.h +41 -0
- package/cpp/zxing-core/core/src/pdf417/PDFWriter.cpp +170 -0
- package/cpp/zxing-core/core/src/pdf417/PDFWriter.h +74 -0
- package/cpp/zxing-core/core/src/pdf417/ZXBigInteger.cpp +623 -0
- package/cpp/zxing-core/core/src/pdf417/ZXBigInteger.h +81 -0
- package/cpp/zxing-core/core/src/pdf417/ZXNullable.h +105 -0
- package/cpp/zxing-core/core/src/qrcode/QRBitMatrixParser.cpp +294 -0
- package/cpp/zxing-core/core/src/qrcode/QRBitMatrixParser.h +41 -0
- package/cpp/zxing-core/core/src/qrcode/QRCodecMode.cpp +95 -0
- package/cpp/zxing-core/core/src/qrcode/QRCodecMode.h +59 -0
- package/cpp/zxing-core/core/src/qrcode/QRDataBlock.cpp +93 -0
- package/cpp/zxing-core/core/src/qrcode/QRDataBlock.h +52 -0
- package/cpp/zxing-core/core/src/qrcode/QRDataMask.h +50 -0
- package/cpp/zxing-core/core/src/qrcode/QRDecoder.cpp +359 -0
- package/cpp/zxing-core/core/src/qrcode/QRDecoder.h +19 -0
- package/cpp/zxing-core/core/src/qrcode/QRDetector.cpp +920 -0
- package/cpp/zxing-core/core/src/qrcode/QRDetector.h +45 -0
- package/cpp/zxing-core/core/src/qrcode/QRECB.h +52 -0
- package/cpp/zxing-core/core/src/qrcode/QREncodeResult.h +33 -0
- package/cpp/zxing-core/core/src/qrcode/QREncoder.cpp +568 -0
- package/cpp/zxing-core/core/src/qrcode/QREncoder.h +21 -0
- package/cpp/zxing-core/core/src/qrcode/QRErrorCorrectionLevel.cpp +51 -0
- package/cpp/zxing-core/core/src/qrcode/QRErrorCorrectionLevel.h +39 -0
- package/cpp/zxing-core/core/src/qrcode/QRFormatInformation.cpp +160 -0
- package/cpp/zxing-core/core/src/qrcode/QRFormatInformation.h +61 -0
- package/cpp/zxing-core/core/src/qrcode/QRMaskUtil.cpp +156 -0
- package/cpp/zxing-core/core/src/qrcode/QRMaskUtil.h +15 -0
- package/cpp/zxing-core/core/src/qrcode/QRMatrixUtil.cpp +318 -0
- package/cpp/zxing-core/core/src/qrcode/QRMatrixUtil.h +25 -0
- package/cpp/zxing-core/core/src/qrcode/QRReader.cpp +149 -0
- package/cpp/zxing-core/core/src/qrcode/QRReader.h +21 -0
- package/cpp/zxing-core/core/src/qrcode/QRVersion.cpp +754 -0
- package/cpp/zxing-core/core/src/qrcode/QRVersion.h +127 -0
- package/cpp/zxing-core/core/src/qrcode/QRWriter.cpp +51 -0
- package/cpp/zxing-core/core/src/qrcode/QRWriter.h +74 -0
- package/cpp/zxing-core/core/version.rc.in +34 -0
- package/cpp/zxing-core/core/zxing.pc.in +8 -0
- package/cpp/zxing-core/wrappers/ios/README.md +25 -0
- package/cpp/zxing-core/wrappers/ios/Sources/Wrapper/Version.h +29 -0
- package/cpp/zxing-core/zxing-cpp.podspec +45 -0
- package/lib/factory.d.ts +10 -0
- package/lib/factory.js +12 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +9 -0
- package/lib/specs/Barcode.nitro.d.ts +63 -0
- package/lib/specs/Barcode.nitro.js +1 -0
- package/lib/specs/BarcodeFormat.d.ts +11 -0
- package/lib/specs/BarcodeFormat.js +1 -0
- package/lib/specs/BarcodeScanner.nitro.d.ts +89 -0
- package/lib/specs/BarcodeScanner.nitro.js +1 -0
- package/lib/specs/BarcodeScannerFactory.nitro.d.ts +26 -0
- package/lib/specs/BarcodeScannerFactory.nitro.js +1 -0
- package/lib/specs/BarcodeValueType.d.ts +9 -0
- package/lib/specs/BarcodeValueType.js +1 -0
- package/lib/specs/Point.d.ts +14 -0
- package/lib/specs/Point.js +1 -0
- package/lib/specs/Rect.d.ts +22 -0
- package/lib/specs/Rect.js +1 -0
- package/lib/useBarcodeScanner.d.ts +23 -0
- package/lib/useBarcodeScanner.js +25 -0
- package/nitro.json +20 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/VisionCameraZxing+autolinking.cmake +83 -0
- package/nitrogen/generated/android/VisionCameraZxing+autolinking.gradle +27 -0
- package/nitrogen/generated/android/VisionCameraZxingOnLoad.cpp +49 -0
- package/nitrogen/generated/android/VisionCameraZxingOnLoad.hpp +34 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/zxing/VisionCameraZxingOnLoad.kt +35 -0
- package/nitrogen/generated/ios/VisionCameraZxing+autolinking.rb +62 -0
- package/nitrogen/generated/ios/VisionCameraZxing-Swift-Cxx-Bridge.cpp +17 -0
- package/nitrogen/generated/ios/VisionCameraZxing-Swift-Cxx-Bridge.hpp +27 -0
- package/nitrogen/generated/ios/VisionCameraZxing-Swift-Cxx-Umbrella.hpp +38 -0
- package/nitrogen/generated/ios/VisionCameraZxingAutolinking.mm +35 -0
- package/nitrogen/generated/ios/VisionCameraZxingAutolinking.swift +16 -0
- package/nitrogen/generated/shared/c++/BarcodeFormat.hpp +124 -0
- package/nitrogen/generated/shared/c++/BarcodeScannerOptions.hpp +85 -0
- package/nitrogen/generated/shared/c++/BarcodeValueType.hpp +120 -0
- package/nitrogen/generated/shared/c++/HybridBarcodeScannerSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridBarcodeScannerSpec.hpp +74 -0
- package/nitrogen/generated/shared/c++/HybridBarcodeSpec.cpp +27 -0
- package/nitrogen/generated/shared/c++/HybridBarcodeSpec.hpp +82 -0
- package/nitrogen/generated/shared/c++/HybridZXingBarcodeScannerFactorySpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridZXingBarcodeScannerFactorySpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/Point.hpp +87 -0
- package/nitrogen/generated/shared/c++/Rect.hpp +95 -0
- package/nitrogen/generated/shared/c++/TargetBarcodeFormat.hpp +124 -0
- package/package.json +108 -0
- package/react-native.config.js +16 -0
- package/src/factory.ts +26 -0
- package/src/index.ts +9 -0
- package/src/specs/Barcode.nitro.ts +70 -0
- package/src/specs/BarcodeFormat.ts +31 -0
- package/src/specs/BarcodeScanner.nitro.ts +91 -0
- package/src/specs/BarcodeScannerFactory.nitro.ts +27 -0
- package/src/specs/BarcodeValueType.ts +25 -0
- package/src/specs/Point.ts +14 -0
- package/src/specs/Rect.ts +22 -0
- package/src/useBarcodeScanner.ts +36 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Axel Waggershauser
|
|
3
|
+
*/
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
#include "BitMatrix.h"
|
|
9
|
+
#include "Point.h"
|
|
10
|
+
#include "StdGenerator.h"
|
|
11
|
+
|
|
12
|
+
#include <climits>
|
|
13
|
+
|
|
14
|
+
namespace ZXing {
|
|
15
|
+
|
|
16
|
+
enum class Direction { LEFT = -1, RIGHT = 1 };
|
|
17
|
+
|
|
18
|
+
inline Direction opposite(Direction dir) noexcept
|
|
19
|
+
{
|
|
20
|
+
return dir == Direction::LEFT ? Direction::RIGHT : Direction::LEFT;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @brief The BitMatrixCursor represents a current position inside an image and current direction it can advance towards.
|
|
25
|
+
*
|
|
26
|
+
* The current position and direction is a PointT<T>. So depending on the type it can be used to traverse the image
|
|
27
|
+
* in a Bresenham style (PointF) or in a discrete way (step only horizontal/vertical/diagonal (PointI)).
|
|
28
|
+
*/
|
|
29
|
+
template<typename POINT>
|
|
30
|
+
class BitMatrixCursor
|
|
31
|
+
{
|
|
32
|
+
using this_t = BitMatrixCursor<POINT>;
|
|
33
|
+
|
|
34
|
+
public:
|
|
35
|
+
const BitMatrix* img;
|
|
36
|
+
|
|
37
|
+
POINT p; // current position
|
|
38
|
+
POINT d; // current direction
|
|
39
|
+
|
|
40
|
+
BitMatrixCursor(const BitMatrix& image, POINT p, POINT d) : img(&image), p(p) { setDirection(d); }
|
|
41
|
+
|
|
42
|
+
class Value
|
|
43
|
+
{
|
|
44
|
+
enum { INVALID = -1, WHITE = 0, BLACK = 1 };
|
|
45
|
+
int v = INVALID;
|
|
46
|
+
public:
|
|
47
|
+
Value() = default;
|
|
48
|
+
Value(bool isBlack) : v(isBlack) {}
|
|
49
|
+
bool isValid() const noexcept { return v != INVALID; }
|
|
50
|
+
bool isWhite() const noexcept { return v == WHITE; }
|
|
51
|
+
bool isBlack() const noexcept { return v == BLACK; }
|
|
52
|
+
|
|
53
|
+
operator bool() const noexcept { return isValid(); }
|
|
54
|
+
|
|
55
|
+
bool operator==(Value o) const { return v == o.v; }
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
template <typename T>
|
|
59
|
+
Value testAt(PointT<T> p) const
|
|
60
|
+
{
|
|
61
|
+
return img->isIn(p) ? Value{img->get(p)} : Value{};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
bool blackAt(POINT pos) const noexcept { return testAt(pos).isBlack(); }
|
|
65
|
+
bool whiteAt(POINT pos) const noexcept { return testAt(pos).isWhite(); }
|
|
66
|
+
|
|
67
|
+
bool isIn(POINT p) const noexcept { return img->isIn(p); }
|
|
68
|
+
bool isIn() const noexcept { return isIn(p); }
|
|
69
|
+
bool isBlack() const noexcept { return blackAt(p); }
|
|
70
|
+
bool isWhite() const noexcept { return whiteAt(p); }
|
|
71
|
+
|
|
72
|
+
POINT front() const noexcept { return d; }
|
|
73
|
+
POINT back() const noexcept { return -d; }
|
|
74
|
+
POINT left() const noexcept { return ZXing::left(d); }
|
|
75
|
+
POINT right() const noexcept { return ZXing::right(d); }
|
|
76
|
+
POINT direction(Direction dir) const noexcept { return static_cast<int>(dir) * right(); }
|
|
77
|
+
|
|
78
|
+
void turnBack() noexcept { d = back(); }
|
|
79
|
+
void turnLeft() noexcept { d = left(); }
|
|
80
|
+
void turnRight() noexcept { d = right(); }
|
|
81
|
+
void turn(Direction dir) noexcept { d = direction(dir); }
|
|
82
|
+
|
|
83
|
+
Value edgeAt(POINT d) const noexcept
|
|
84
|
+
{
|
|
85
|
+
Value v = testAt(p);
|
|
86
|
+
return testAt(p + d) != v ? v : Value();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
Value edgeAtFront() const noexcept { return edgeAt(front()); }
|
|
90
|
+
Value edgeAtBack() const noexcept { return edgeAt(back()); }
|
|
91
|
+
Value edgeAtLeft() const noexcept { return edgeAt(left()); }
|
|
92
|
+
Value edgeAtRight() const noexcept { return edgeAt(right()); }
|
|
93
|
+
Value edgeAt(Direction dir) const noexcept { return edgeAt(direction(dir)); }
|
|
94
|
+
|
|
95
|
+
this_t& setDirection(PointF dir) { return d = bresenhamDirection(dir), *this; }
|
|
96
|
+
this_t& setDirection(PointI dir) { return d = dir, *this; }
|
|
97
|
+
|
|
98
|
+
bool step(typename POINT::value_t s = 1)
|
|
99
|
+
{
|
|
100
|
+
p += s * d;
|
|
101
|
+
return isIn(p);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
this_t movedBy(POINT o) const noexcept { return {*img, p + o, d}; }
|
|
105
|
+
this_t turnedBack() const noexcept { return {*img, p, back()}; }
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @brief stepToEdge advances cursor to one step behind the next (or n-th) edge.
|
|
109
|
+
* @param nth number of edges to pass
|
|
110
|
+
* @param range max number of steps to take
|
|
111
|
+
* @param backup whether or not to backup one step so we land in front of the edge
|
|
112
|
+
* @return number of steps taken or 0 if moved outside of range/image
|
|
113
|
+
*/
|
|
114
|
+
int stepToEdge(int nth = 1, int range = 0, bool backup = false)
|
|
115
|
+
{
|
|
116
|
+
int steps = 0;
|
|
117
|
+
auto lv = testAt(p);
|
|
118
|
+
|
|
119
|
+
while (nth && (!range || steps < range) && lv.isValid()) {
|
|
120
|
+
++steps;
|
|
121
|
+
auto v = testAt(p + steps * d);
|
|
122
|
+
if (lv != v) {
|
|
123
|
+
lv = v;
|
|
124
|
+
--nth;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (backup)
|
|
128
|
+
--steps;
|
|
129
|
+
p += steps * d;
|
|
130
|
+
return steps * (nth == 0);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
bool stepAlongEdge(Direction dir, bool skipCorner = false)
|
|
134
|
+
{
|
|
135
|
+
if (!edgeAt(dir))
|
|
136
|
+
turn(dir);
|
|
137
|
+
else if (edgeAtFront()) {
|
|
138
|
+
turn(opposite(dir));
|
|
139
|
+
if (edgeAtFront()) {
|
|
140
|
+
turn(opposite(dir));
|
|
141
|
+
if (edgeAtFront())
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
bool ret = step();
|
|
147
|
+
|
|
148
|
+
if (ret && skipCorner && !edgeAt(dir)) {
|
|
149
|
+
turn(dir);
|
|
150
|
+
ret = step();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return ret;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
int countEdges(int range)
|
|
157
|
+
{
|
|
158
|
+
int res = 0;
|
|
159
|
+
|
|
160
|
+
while (int steps = range ? stepToEdge(1, range) : 0) {
|
|
161
|
+
range -= steps;
|
|
162
|
+
++res;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return res;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
template<typename ARRAY>
|
|
169
|
+
ARRAY readPattern(int max = 0, int min = 0)
|
|
170
|
+
{
|
|
171
|
+
ARRAY res = {};
|
|
172
|
+
for (auto& i : res) {
|
|
173
|
+
i = stepToEdge(1, max);
|
|
174
|
+
if (!i)
|
|
175
|
+
return res;
|
|
176
|
+
if (max)
|
|
177
|
+
max -= i;
|
|
178
|
+
}
|
|
179
|
+
if (min && max) {
|
|
180
|
+
min -= Reduce(res);
|
|
181
|
+
int steps = -1;
|
|
182
|
+
while (min > 0 && max && (steps = stepToEdge(2, max))) {
|
|
183
|
+
max -= steps;
|
|
184
|
+
min -= steps;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return res;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
template<typename ARRAY>
|
|
191
|
+
ARRAY readPatternFromBlack(int maxWhitePrefix, int max = 0, int min = 0)
|
|
192
|
+
{
|
|
193
|
+
if (maxWhitePrefix && isWhite() && !stepToEdge(1, maxWhitePrefix))
|
|
194
|
+
return {};
|
|
195
|
+
return readPattern<ARRAY>(max, min);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
using BitMatrixCursorF = BitMatrixCursor<PointF>;
|
|
200
|
+
using BitMatrixCursorI = BitMatrixCursor<PointI>;
|
|
201
|
+
|
|
202
|
+
class FastEdgeToEdgeCounter
|
|
203
|
+
{
|
|
204
|
+
const uint8_t* p = nullptr;
|
|
205
|
+
int stride = 0;
|
|
206
|
+
int stepsToBorder = 0;
|
|
207
|
+
|
|
208
|
+
public:
|
|
209
|
+
FastEdgeToEdgeCounter(const BitMatrixCursorI& cur)
|
|
210
|
+
{
|
|
211
|
+
stride = cur.d.y * cur.img->width() + cur.d.x;
|
|
212
|
+
p = cur.img->row(cur.p.y).begin() + cur.p.x;
|
|
213
|
+
|
|
214
|
+
int maxStepsX = cur.d.x ? (cur.d.x > 0 ? cur.img->width() - 1 - cur.p.x : cur.p.x) : INT_MAX;
|
|
215
|
+
int maxStepsY = cur.d.y ? (cur.d.y > 0 ? cur.img->height() - 1 - cur.p.y : cur.p.y) : INT_MAX;
|
|
216
|
+
stepsToBorder = std::min(maxStepsX, maxStepsY);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
int stepToNextEdge(int range)
|
|
220
|
+
{
|
|
221
|
+
int maxSteps = std::min(stepsToBorder, range);
|
|
222
|
+
int steps = 0;
|
|
223
|
+
do {
|
|
224
|
+
if (++steps > maxSteps) {
|
|
225
|
+
if (maxSteps == stepsToBorder)
|
|
226
|
+
break;
|
|
227
|
+
else
|
|
228
|
+
return 0;
|
|
229
|
+
}
|
|
230
|
+
} while (p[steps * stride] == p[0]);
|
|
231
|
+
|
|
232
|
+
p += steps * stride;
|
|
233
|
+
stepsToBorder -= steps;
|
|
234
|
+
|
|
235
|
+
return steps;
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
// Generate points in a spiral pattern around the center
|
|
240
|
+
inline std::generator<PointI> Spiral(int radius)
|
|
241
|
+
{
|
|
242
|
+
co_yield{0, 0};
|
|
243
|
+
for (int r = 1; r <= radius; ++r) {
|
|
244
|
+
// clang-format off
|
|
245
|
+
for (int k = 0; k < 2 * r; ++k) co_yield{ r, -(r - 1) + k}; // right -> down
|
|
246
|
+
for (int k = 0; k < 2 * r; ++k) co_yield{ (r - 1) - k, r}; // bottom -> left
|
|
247
|
+
for (int k = 0; k < 2 * r; ++k) co_yield{ -r, (r - 1) - k}; // left -> up
|
|
248
|
+
for (int k = 0; k < 2 * r; ++k) co_yield{-(r - 1) + k, -r}; // top -> right
|
|
249
|
+
// clang-format on
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
} // ZXing
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2017 Huy Cuong Nguyen
|
|
3
|
+
* Copyright 2017 Axel Waggershauser
|
|
4
|
+
*/
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
|
|
7
|
+
#include "BitMatrixIO.h"
|
|
8
|
+
|
|
9
|
+
#include <array>
|
|
10
|
+
#include <fstream>
|
|
11
|
+
#include <sstream>
|
|
12
|
+
|
|
13
|
+
namespace ZXing {
|
|
14
|
+
|
|
15
|
+
std::string ToString(const BitMatrix& matrix, char one, char zero, bool addSpace, bool printAsCString)
|
|
16
|
+
{
|
|
17
|
+
std::string result;
|
|
18
|
+
result.reserve((addSpace ? 2 : 1) * (matrix.width() * matrix.height()) + matrix.height());
|
|
19
|
+
for (int y = 0; y < matrix.height(); ++y) {
|
|
20
|
+
if (printAsCString)
|
|
21
|
+
result += '"';
|
|
22
|
+
for (auto bit : matrix.row(y)) {
|
|
23
|
+
result += bit ? one : zero;
|
|
24
|
+
if (addSpace)
|
|
25
|
+
result += ' ';
|
|
26
|
+
}
|
|
27
|
+
if (printAsCString)
|
|
28
|
+
result += "\\n\"";
|
|
29
|
+
result += '\n';
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
std::string ToString(const BitMatrix& matrix, bool inverted)
|
|
35
|
+
{
|
|
36
|
+
constexpr auto map = std::array{" ", "▀", "▄", "█"};
|
|
37
|
+
std::string res;
|
|
38
|
+
|
|
39
|
+
for (int y = 0; y < matrix.height(); y += 2) {
|
|
40
|
+
for (int x = 0; x < matrix.width(); ++x) {
|
|
41
|
+
int tp = matrix.get(x, y) ^ inverted;
|
|
42
|
+
int bt = (matrix.height() == 1 && tp) || (y + 1 < matrix.height() && (matrix.get(x, y + 1) ^ inverted));
|
|
43
|
+
res += map[tp | (bt << 1)];
|
|
44
|
+
}
|
|
45
|
+
res.push_back('\n');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return res;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
std::string ToSVG(const BitMatrix& matrix)
|
|
52
|
+
{
|
|
53
|
+
// see https://stackoverflow.com/questions/10789059/create-qr-code-in-vector-image/60638350#60638350
|
|
54
|
+
|
|
55
|
+
const int width = matrix.width();
|
|
56
|
+
const int height = matrix.height();
|
|
57
|
+
std::ostringstream out;
|
|
58
|
+
|
|
59
|
+
out << R"(<?xml version="1.0" encoding="UTF-8"?>)" << "\n"
|
|
60
|
+
<< R"(<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 )" << width << ' ' << height << R"(" stroke="none">)"
|
|
61
|
+
<< "\n<path d=\"";
|
|
62
|
+
|
|
63
|
+
for (int y = 0; y < height; ++y)
|
|
64
|
+
for (int x = 0; x < width; ++x)
|
|
65
|
+
if (matrix.get(x, y))
|
|
66
|
+
out << "M" << x << "," << y << "h1v1h-1z";
|
|
67
|
+
|
|
68
|
+
out << "\"/>\n</svg>";
|
|
69
|
+
|
|
70
|
+
return out.str();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
BitMatrix ParseBitMatrix(const std::string& str, char one, bool expectSpace)
|
|
74
|
+
{
|
|
75
|
+
auto lineLength = str.find('\n');
|
|
76
|
+
if (lineLength == std::string::npos)
|
|
77
|
+
return {};
|
|
78
|
+
|
|
79
|
+
int strStride = expectSpace ? 2 : 1;
|
|
80
|
+
int height = narrow_cast<int>(str.length() / (lineLength + 1));
|
|
81
|
+
int width = narrow_cast<int>(lineLength / strStride);
|
|
82
|
+
BitMatrix mat(width, height);
|
|
83
|
+
for (int y = 0; y < height; ++y) {
|
|
84
|
+
size_t offset = y * (lineLength + 1);
|
|
85
|
+
for (int x = 0; x < width; ++x, offset += strStride) {
|
|
86
|
+
if (str[offset] == one)
|
|
87
|
+
mat.set(x, y);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return mat;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
void SaveAsPBM(const BitMatrix& matrix, const std::string& filename, int quietZone)
|
|
94
|
+
{
|
|
95
|
+
auto out = ToMatrix<uint8_t>(Inflate(matrix.copy(), 0, 0, quietZone));
|
|
96
|
+
std::ofstream file(filename);
|
|
97
|
+
file << "P5\n" << out.width() << ' ' << out.height() << "\n255\n";
|
|
98
|
+
file.write(reinterpret_cast<const char*>(out.data()), out.size());
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
} // ZXing
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2017 Huy Cuong Nguyen
|
|
3
|
+
* Copyright 2017 Axel Waggershauser
|
|
4
|
+
*/
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
|
|
7
|
+
#pragma once
|
|
8
|
+
|
|
9
|
+
#include <string>
|
|
10
|
+
|
|
11
|
+
#include "BitMatrix.h"
|
|
12
|
+
|
|
13
|
+
namespace ZXing {
|
|
14
|
+
|
|
15
|
+
std::string ToString(const BitMatrix& matrix, bool inverted = false);
|
|
16
|
+
std::string ToString(const BitMatrix& matrix, char one, char zero = ' ', bool addSpace = true, bool printAsCString = false);
|
|
17
|
+
std::string ToSVG(const BitMatrix& matrix);
|
|
18
|
+
BitMatrix ParseBitMatrix(const std::string& str, char one = 'X', bool expectSpace = true);
|
|
19
|
+
void SaveAsPBM(const BitMatrix& matrix, const std::string& filename, int quietZone = 0);
|
|
20
|
+
|
|
21
|
+
} // ZXing
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2016 Nu-book Inc.
|
|
3
|
+
* Copyright 2016 ZXing authors
|
|
4
|
+
*/
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
|
|
7
|
+
#include "BitSource.h"
|
|
8
|
+
|
|
9
|
+
#include "ByteArray.h"
|
|
10
|
+
#include "ZXAlgorithms.h"
|
|
11
|
+
|
|
12
|
+
#include <stdexcept>
|
|
13
|
+
|
|
14
|
+
namespace ZXing {
|
|
15
|
+
|
|
16
|
+
int
|
|
17
|
+
BitSource::available() const
|
|
18
|
+
{
|
|
19
|
+
return 8 * (Size(_bytes) - _byteOffset) - _bitOffset;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static int ReadBitsImpl(int numBits, const ByteArray& _bytes, int available, int& _byteOffset, int& _bitOffset)
|
|
23
|
+
{
|
|
24
|
+
if (numBits < 1 || numBits > 32 || numBits > available) {
|
|
25
|
+
throw std::out_of_range("BitSource::readBits: out of range");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
int result = 0;
|
|
29
|
+
|
|
30
|
+
// First, read remainder from current byte
|
|
31
|
+
if (_bitOffset > 0) {
|
|
32
|
+
int bitsLeft = 8 - _bitOffset;
|
|
33
|
+
int toRead = numBits < bitsLeft ? numBits : bitsLeft;
|
|
34
|
+
int bitsToNotRead = bitsLeft - toRead;
|
|
35
|
+
int mask = (0xFF >> (8 - toRead)) << bitsToNotRead;
|
|
36
|
+
result = (_bytes[_byteOffset] & mask) >> bitsToNotRead;
|
|
37
|
+
numBits -= toRead;
|
|
38
|
+
_bitOffset += toRead;
|
|
39
|
+
if (_bitOffset == 8) {
|
|
40
|
+
_bitOffset = 0;
|
|
41
|
+
_byteOffset++;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Next read whole bytes
|
|
46
|
+
if (numBits > 0) {
|
|
47
|
+
while (numBits >= 8) {
|
|
48
|
+
result = (result << 8) | _bytes[_byteOffset];
|
|
49
|
+
_byteOffset++;
|
|
50
|
+
numBits -= 8;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Finally read a partial byte
|
|
54
|
+
if (numBits > 0) {
|
|
55
|
+
int bitsToNotRead = 8 - numBits;
|
|
56
|
+
int mask = (0xFF >> bitsToNotRead) << bitsToNotRead;
|
|
57
|
+
result = (result << numBits) | ((_bytes[_byteOffset] & mask) >> bitsToNotRead);
|
|
58
|
+
_bitOffset += numBits;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
int BitSource::readBits(int numBits)
|
|
66
|
+
{
|
|
67
|
+
return ReadBitsImpl(numBits, _bytes, available(), _byteOffset, _bitOffset);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
int BitSource::peekBits(int numBits) const
|
|
71
|
+
{
|
|
72
|
+
int bitOffset = _bitOffset;
|
|
73
|
+
int byteOffset = _byteOffset;
|
|
74
|
+
return ReadBitsImpl(numBits, _bytes, available(), byteOffset, bitOffset);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
} // ZXing
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2016 Nu-book Inc.
|
|
3
|
+
* Copyright 2016 ZXing authors
|
|
4
|
+
*/
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
|
|
7
|
+
#pragma once
|
|
8
|
+
|
|
9
|
+
namespace ZXing {
|
|
10
|
+
|
|
11
|
+
class ByteArray;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* <p>This provides an easy abstraction to read bits at a time from a sequence of bytes, where the
|
|
15
|
+
* number of bits read is not often a multiple of 8.</p>
|
|
16
|
+
*
|
|
17
|
+
* <p>This class is thread-safe but not reentrant -- unless the caller modifies the bytes array
|
|
18
|
+
* it passed in, in which case all bets are off.</p>
|
|
19
|
+
*
|
|
20
|
+
* @author Sean Owen
|
|
21
|
+
*/
|
|
22
|
+
class BitSource
|
|
23
|
+
{
|
|
24
|
+
const ByteArray& _bytes;
|
|
25
|
+
int _byteOffset = 0;
|
|
26
|
+
int _bitOffset = 0;
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
/**
|
|
30
|
+
* @param bytes bytes from which this will read bits. Bits will be read from the first byte first.
|
|
31
|
+
* Bits are read within a byte from most-significant to least-significant bit.
|
|
32
|
+
* IMPORTANT: Bit source DOES NOT copy data byte, thus make sure that the bytes outlive the bit source object.
|
|
33
|
+
*/
|
|
34
|
+
explicit BitSource(const ByteArray& bytes) : _bytes(bytes) {}
|
|
35
|
+
|
|
36
|
+
BitSource(BitSource &) = delete;
|
|
37
|
+
BitSource& operator=(const BitSource &) = delete;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @return index of next bit in current byte which would be read by the next call to {@link #readBits(int)}.
|
|
41
|
+
*/
|
|
42
|
+
int bitOffset() const {
|
|
43
|
+
return _bitOffset;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @return index of next byte in input byte array which would be read by the next call to {@link #readBits(int)}.
|
|
48
|
+
*/
|
|
49
|
+
int byteOffset() const {
|
|
50
|
+
return _byteOffset;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @param numBits number of bits to read
|
|
55
|
+
* @return int representing the bits read. The bits will appear as the least-significant bits of the int
|
|
56
|
+
*/
|
|
57
|
+
int readBits(int numBits);
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @param numBits number of bits to peek at
|
|
61
|
+
* @return int representing the bits peeked at. The bits will appear as the least-significant
|
|
62
|
+
* bits of the int
|
|
63
|
+
*/
|
|
64
|
+
int peekBits(int numBits) const;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @return number of bits that can be read successfully
|
|
68
|
+
*/
|
|
69
|
+
int available() const;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
} // ZXing
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2016 Nu-book Inc.
|
|
3
|
+
* Copyright 2022 Axel Waggershauser
|
|
4
|
+
*/
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
|
|
7
|
+
#pragma once
|
|
8
|
+
|
|
9
|
+
#include "Range.h"
|
|
10
|
+
|
|
11
|
+
#include <cstdint>
|
|
12
|
+
#include <string_view>
|
|
13
|
+
#include <vector>
|
|
14
|
+
|
|
15
|
+
namespace ZXing {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
ByteArray is an extension of std::vector<uint8_t>.
|
|
19
|
+
*/
|
|
20
|
+
class ByteArray : public std::vector<uint8_t>
|
|
21
|
+
{
|
|
22
|
+
public:
|
|
23
|
+
ByteArray() = default;
|
|
24
|
+
ByteArray(std::initializer_list<uint8_t> list) : std::vector<uint8_t>(list) {}
|
|
25
|
+
explicit ByteArray(int len) : std::vector<uint8_t>(len, 0) {}
|
|
26
|
+
explicit ByteArray(std::string_view str) : std::vector<uint8_t>(str.begin(), str.end()) {}
|
|
27
|
+
|
|
28
|
+
void append(ByteView other) { insert(end(), other.begin(), other.end()); }
|
|
29
|
+
void append(std::string_view other) { insert(end(), other.begin(), other.end()); }
|
|
30
|
+
|
|
31
|
+
std::string_view asString(size_t pos = 0, size_t len = std::string_view::npos) const
|
|
32
|
+
{
|
|
33
|
+
return std::string_view(reinterpret_cast<const char*>(data()), size()).substr(pos, len);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
ByteView asView(size_t pos = 0, size_t len = size_t(-1)) const
|
|
37
|
+
{
|
|
38
|
+
return ByteView(*this).subview(pos, len);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
} // ZXing
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2016 Nu-book Inc.
|
|
3
|
+
* Copyright 2016 ZXing authors
|
|
4
|
+
*/
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
|
|
7
|
+
#include "CharacterSet.h"
|
|
8
|
+
|
|
9
|
+
#include "ZXAlgorithms.h"
|
|
10
|
+
|
|
11
|
+
#include <algorithm>
|
|
12
|
+
|
|
13
|
+
namespace ZXing {
|
|
14
|
+
|
|
15
|
+
struct CharacterSetName
|
|
16
|
+
{
|
|
17
|
+
std::string_view name;
|
|
18
|
+
CharacterSet cs;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
static CharacterSetName NAME_TO_CHARSET[] = {
|
|
22
|
+
{"Cp437", CharacterSet::Cp437},
|
|
23
|
+
{"ISO-8859-1", CharacterSet::ISO8859_1},
|
|
24
|
+
{"ISO-8859-2", CharacterSet::ISO8859_2},
|
|
25
|
+
{"ISO-8859-3", CharacterSet::ISO8859_3},
|
|
26
|
+
{"ISO-8859-4", CharacterSet::ISO8859_4},
|
|
27
|
+
{"ISO-8859-5", CharacterSet::ISO8859_5},
|
|
28
|
+
{"ISO-8859-6", CharacterSet::ISO8859_6},
|
|
29
|
+
{"ISO-8859-7", CharacterSet::ISO8859_7},
|
|
30
|
+
{"ISO-8859-8", CharacterSet::ISO8859_8},
|
|
31
|
+
{"ISO-8859-9", CharacterSet::ISO8859_9},
|
|
32
|
+
{"ISO-8859-10", CharacterSet::ISO8859_10},
|
|
33
|
+
{"ISO-8859-11", CharacterSet::ISO8859_11},
|
|
34
|
+
{"ISO-8859-13", CharacterSet::ISO8859_13},
|
|
35
|
+
{"ISO-8859-14", CharacterSet::ISO8859_14},
|
|
36
|
+
{"ISO-8859-15", CharacterSet::ISO8859_15},
|
|
37
|
+
{"ISO-8859-16", CharacterSet::ISO8859_16},
|
|
38
|
+
{"SJIS", CharacterSet::Shift_JIS},
|
|
39
|
+
{"Shift_JIS", CharacterSet::Shift_JIS},
|
|
40
|
+
{"Cp1250", CharacterSet::Cp1250},
|
|
41
|
+
{"windows-1250",CharacterSet::Cp1250},
|
|
42
|
+
{"Cp1251", CharacterSet::Cp1251},
|
|
43
|
+
{"windows-1251",CharacterSet::Cp1251},
|
|
44
|
+
{"Cp1252", CharacterSet::Cp1252},
|
|
45
|
+
{"windows-1252",CharacterSet::Cp1252},
|
|
46
|
+
{"Cp1256", CharacterSet::Cp1256},
|
|
47
|
+
{"windows-1256",CharacterSet::Cp1256},
|
|
48
|
+
{"UTF-16BE", CharacterSet::UTF16BE},
|
|
49
|
+
{"UTF-16LE", CharacterSet::UTF16LE},
|
|
50
|
+
{"UTF-32BE", CharacterSet::UTF32BE},
|
|
51
|
+
{"UTF-32LE", CharacterSet::UTF32LE},
|
|
52
|
+
{"UnicodeBigUnmarked", CharacterSet::UTF16BE},
|
|
53
|
+
{"UnicodeBig", CharacterSet::UTF16BE},
|
|
54
|
+
{"UTF-8", CharacterSet::UTF8},
|
|
55
|
+
{"ASCII", CharacterSet::ASCII},
|
|
56
|
+
{"US-ASCII", CharacterSet::ASCII},
|
|
57
|
+
{"Big5", CharacterSet::Big5},
|
|
58
|
+
{"GB2312", CharacterSet::GB2312},
|
|
59
|
+
{"GB18030", CharacterSet::GB18030},
|
|
60
|
+
{"EUC-CN", CharacterSet::GB18030},
|
|
61
|
+
{"GBK", CharacterSet::GB18030},
|
|
62
|
+
{"EUC-KR", CharacterSet::EUC_KR},
|
|
63
|
+
{"BINARY", CharacterSet::BINARY},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
CharacterSet CharacterSetFromString(std::string_view name)
|
|
67
|
+
{
|
|
68
|
+
auto i = FindIf(NAME_TO_CHARSET, [name](auto& v) { return IsEqualIgnoreCaseAnd(v.name, name, "_- "); });
|
|
69
|
+
return i == std::end(NAME_TO_CHARSET) ? CharacterSet::Unknown : i->cs;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
std::string ToString(CharacterSet cs)
|
|
73
|
+
{
|
|
74
|
+
auto i = FindIf(NAME_TO_CHARSET, [cs](auto& v) { return v.cs == cs; });
|
|
75
|
+
return i == std::end(NAME_TO_CHARSET) ? "" : std::string(i->name);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
} // namespace ZXing
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2016 Nu-book Inc.
|
|
3
|
+
*/
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
#include <string>
|
|
9
|
+
#include <string_view>
|
|
10
|
+
|
|
11
|
+
namespace ZXing {
|
|
12
|
+
|
|
13
|
+
enum class CharacterSet : unsigned char
|
|
14
|
+
{
|
|
15
|
+
Unknown,
|
|
16
|
+
ASCII,
|
|
17
|
+
ISO8859_1,
|
|
18
|
+
ISO8859_2,
|
|
19
|
+
ISO8859_3,
|
|
20
|
+
ISO8859_4,
|
|
21
|
+
ISO8859_5,
|
|
22
|
+
ISO8859_6,
|
|
23
|
+
ISO8859_7,
|
|
24
|
+
ISO8859_8,
|
|
25
|
+
ISO8859_9,
|
|
26
|
+
ISO8859_10,
|
|
27
|
+
ISO8859_11,
|
|
28
|
+
ISO8859_13,
|
|
29
|
+
ISO8859_14,
|
|
30
|
+
ISO8859_15,
|
|
31
|
+
ISO8859_16,
|
|
32
|
+
Cp437,
|
|
33
|
+
Cp1250,
|
|
34
|
+
Cp1251,
|
|
35
|
+
Cp1252,
|
|
36
|
+
Cp1256,
|
|
37
|
+
|
|
38
|
+
Shift_JIS,
|
|
39
|
+
Big5,
|
|
40
|
+
GB2312,
|
|
41
|
+
GB18030,
|
|
42
|
+
EUC_JP,
|
|
43
|
+
EUC_KR,
|
|
44
|
+
UTF16BE,
|
|
45
|
+
UTF8,
|
|
46
|
+
UTF16LE,
|
|
47
|
+
UTF32BE,
|
|
48
|
+
UTF32LE,
|
|
49
|
+
|
|
50
|
+
BINARY,
|
|
51
|
+
|
|
52
|
+
CharsetCount
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
CharacterSet CharacterSetFromString(std::string_view name);
|
|
56
|
+
std::string ToString(CharacterSet cs);
|
|
57
|
+
|
|
58
|
+
} // ZXing
|