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,353 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2017 Axel Waggershauser
|
|
3
|
+
*/
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
#include "Error.h"
|
|
9
|
+
|
|
10
|
+
#include <algorithm>
|
|
11
|
+
#include <cassert>
|
|
12
|
+
#include <charconv>
|
|
13
|
+
#include <concepts>
|
|
14
|
+
#include <cstring>
|
|
15
|
+
#include <initializer_list>
|
|
16
|
+
#include <iterator>
|
|
17
|
+
#include <numeric>
|
|
18
|
+
#include <ranges>
|
|
19
|
+
#include <string>
|
|
20
|
+
#include <stdexcept>
|
|
21
|
+
#include <utility>
|
|
22
|
+
#include <vector>
|
|
23
|
+
|
|
24
|
+
namespace ZXing {
|
|
25
|
+
|
|
26
|
+
template <class T, class U>
|
|
27
|
+
constexpr T narrow_cast(U&& u) noexcept {
|
|
28
|
+
return static_cast<T>(std::forward<U>(u));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
inline constexpr auto& Find = std::ranges::find;
|
|
32
|
+
inline constexpr auto& FindIf = std::ranges::find_if;
|
|
33
|
+
|
|
34
|
+
template <typename Container, typename Value> requires std::ranges::input_range<const Container>
|
|
35
|
+
auto Contains(const Container& c, const Value& v) {
|
|
36
|
+
return std::ranges::find(c, v) != std::ranges::end(c);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
template <typename ListType, typename Value>
|
|
40
|
+
auto Contains(const std::initializer_list<ListType>& c, const Value& v) {
|
|
41
|
+
return std::ranges::find(c, v) != std::ranges::end(c);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
inline bool Contains(const char* str, char c) {
|
|
45
|
+
return str && strchr(str, c) != nullptr;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
inline bool Contains(std::string_view str, std::string_view substr) {
|
|
49
|
+
return str.find(substr) != std::string_view::npos;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
template <template <typename...> typename C, typename... Ts>
|
|
53
|
+
auto FirstOrDefault(C<Ts...>&& container)
|
|
54
|
+
{
|
|
55
|
+
return container.empty() ? typename C<Ts...>::value_type() : std::move(container.front());
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
template <typename Iterator, typename Value = typename std::iterator_traits<Iterator>::value_type, typename Op = std::plus<Value>>
|
|
59
|
+
constexpr Value Reduce(Iterator b, Iterator e, Value v = Value{}, Op op = {}) {
|
|
60
|
+
// std::reduce() first sounded like a better implementation because it is not implemented as a strict left-fold
|
|
61
|
+
// operation, meaning the order of the op-application is not specified. This sounded like an optimization opportunity
|
|
62
|
+
// but it turns out that for this use case it actually does not make a difference (falsepositives runtime). And
|
|
63
|
+
// when tested with a large std::vector<uint16_t> and proper autovectorization (e.g. clang++ -O2) it turns out that
|
|
64
|
+
// std::accumulate can be twice as fast as std::reduce.
|
|
65
|
+
return std::accumulate(b, e, v, op);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
template <typename Container, typename Value = typename Container::value_type, typename Op = std::plus<Value>>
|
|
69
|
+
constexpr Value Reduce(const Container& c, Value v = Value{}, Op op = {}) {
|
|
70
|
+
return Reduce(std::begin(c), std::end(c), v, op);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// see C++20 ssize
|
|
74
|
+
template <class Container>
|
|
75
|
+
constexpr auto Size(const Container& c) -> decltype(c.size(), int()) {
|
|
76
|
+
return narrow_cast<int>(c.size());
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
template <class T, std::size_t N>
|
|
80
|
+
constexpr int Size(T const (&)[N]) noexcept {
|
|
81
|
+
return narrow_cast<int>(N);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
inline constexpr int Size(const char* s) noexcept {
|
|
85
|
+
return narrow_cast<int>(std::char_traits<char>::length(s));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
inline constexpr int Size(char) noexcept { return 1; }
|
|
89
|
+
|
|
90
|
+
template <typename... Args>
|
|
91
|
+
std::string StrCat(Args&&... args)
|
|
92
|
+
{
|
|
93
|
+
std::string res;
|
|
94
|
+
res.reserve((Size(args) + ...));
|
|
95
|
+
(res += ... += args);
|
|
96
|
+
return res;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
template <typename Container, typename Value>
|
|
100
|
+
int IndexOf(const Container& c, const Value& v) {
|
|
101
|
+
auto i = Find(c, v);
|
|
102
|
+
return i == std::end(c) ? -1 : narrow_cast<int>(std::distance(std::begin(c), i));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
inline int IndexOf(const char* str, char c) {
|
|
106
|
+
auto s = strchr(str, c);
|
|
107
|
+
return s != nullptr ? narrow_cast<int>(s - str) : -1;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
template <typename Container, typename Value, class UnaryOp>
|
|
111
|
+
Value TransformReduce(const Container& c, Value s, UnaryOp op) {
|
|
112
|
+
for (const auto& v : c)
|
|
113
|
+
s += op(v);
|
|
114
|
+
return s;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
template <std::integral T>
|
|
118
|
+
constexpr bool IsUpper(T v) noexcept
|
|
119
|
+
{
|
|
120
|
+
return 'A' <= v && v <= 'Z';
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
template <std::integral T>
|
|
124
|
+
constexpr bool IsLower(T v) noexcept
|
|
125
|
+
{
|
|
126
|
+
return 'a' <= v && v <= 'z';
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
template <std::integral T>
|
|
130
|
+
constexpr bool IsAlpha(T v) noexcept
|
|
131
|
+
{
|
|
132
|
+
return IsUpper(v) || IsLower(v);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
template <std::integral T>
|
|
136
|
+
constexpr bool IsDigit(T v) noexcept
|
|
137
|
+
{
|
|
138
|
+
return '0' <= v && v <= '9';
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
template <std::integral T>
|
|
142
|
+
constexpr bool IsSpace(T v) noexcept
|
|
143
|
+
{
|
|
144
|
+
// Matches the standard ASCII whitespace characters:
|
|
145
|
+
// ' ', '\t', '\n', '\v', '\f', '\r'
|
|
146
|
+
return v == ' ' || ('\t' <= v && v <= '\r');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
template <typename T = char>
|
|
150
|
+
T ToDigit(int i)
|
|
151
|
+
{
|
|
152
|
+
if (i < 0 || i > 9)
|
|
153
|
+
throw FormatError("Invalid digit value");
|
|
154
|
+
return static_cast<T>('0' + i);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
template <std::integral T>
|
|
158
|
+
std::string ToString(T val, int len)
|
|
159
|
+
{
|
|
160
|
+
std::string result(len--, '0');
|
|
161
|
+
if (val < 0)
|
|
162
|
+
throw FormatError("Invalid value");
|
|
163
|
+
for (; len >= 0 && val != 0; --len, val /= 10)
|
|
164
|
+
result[len] = '0' + val % 10;
|
|
165
|
+
if (val)
|
|
166
|
+
throw FormatError("Invalid value");
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
template <typename C> requires (sizeof(typename C::value_type) == 1)
|
|
171
|
+
std::string ToHex(const C& c)
|
|
172
|
+
{
|
|
173
|
+
static constexpr char hex[] = "0123456789ABCDEF";
|
|
174
|
+
|
|
175
|
+
const auto data = reinterpret_cast<const uint8_t*>(c.data());
|
|
176
|
+
const auto size = Size(c);
|
|
177
|
+
if (size == 0)
|
|
178
|
+
return {};
|
|
179
|
+
|
|
180
|
+
std::string res(size * 3 - 1, ' ');
|
|
181
|
+
|
|
182
|
+
for (int i = 0; i < size; ++i) {
|
|
183
|
+
res[i * 3 + 0] = hex[data[i] >> 4];
|
|
184
|
+
res[i * 3 + 1] = hex[data[i] & 0x0F];
|
|
185
|
+
if (i + 1 < size)
|
|
186
|
+
res[i * 3 + 2] = ' ';
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return res;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
template <typename T>
|
|
193
|
+
std::vector<T> ToVector(T&& v)
|
|
194
|
+
{
|
|
195
|
+
// simply constructing a vector via initializer_list does not work with move-only types
|
|
196
|
+
std::vector<T> res;
|
|
197
|
+
res.emplace_back(std::forward<T>(v));
|
|
198
|
+
return res;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
template <std::integral T>
|
|
202
|
+
constexpr inline auto ToUnsigned(T v) noexcept
|
|
203
|
+
{
|
|
204
|
+
return static_cast<std::make_unsigned_t<T>>(v);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
template <class T>
|
|
208
|
+
constexpr std::string_view TypeName()
|
|
209
|
+
{
|
|
210
|
+
#ifdef __clang__
|
|
211
|
+
std::string_view p = __PRETTY_FUNCTION__;
|
|
212
|
+
return p.substr(40, p.size() - 40 - 1);
|
|
213
|
+
#elif defined(__GNUC__)
|
|
214
|
+
std::string_view p = __PRETTY_FUNCTION__;
|
|
215
|
+
return p.substr(55, p.find(';', 55) - 55);
|
|
216
|
+
#elif defined(_MSC_VER)
|
|
217
|
+
std::string_view p = __FUNCSIG__;
|
|
218
|
+
return p.substr(90, p.size() - 90 - 7);
|
|
219
|
+
#endif
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
template <typename T> requires std::is_arithmetic_v<T>
|
|
223
|
+
inline T FromString(std::string_view sv)
|
|
224
|
+
{
|
|
225
|
+
T val = {};
|
|
226
|
+
auto [ptr, ec] = std::from_chars(sv.data(), sv.data() + sv.size(), val);
|
|
227
|
+
if (ec != std::errc() || ptr != sv.data() + sv.size())
|
|
228
|
+
throw std::invalid_argument(StrCat("failed to parse '", TypeName<T>(), "' from '", sv, "'"));
|
|
229
|
+
|
|
230
|
+
return val;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Trim whitespace from both ends
|
|
234
|
+
inline std::string_view TrimWS(std::string_view sv, const char* ws = " \t\n\r")
|
|
235
|
+
{
|
|
236
|
+
while (sv.size() && Contains(ws, sv.back()))
|
|
237
|
+
sv.remove_suffix(1);
|
|
238
|
+
while (sv.size() && Contains(ws, sv.front()))
|
|
239
|
+
sv.remove_prefix(1);
|
|
240
|
+
return sv.empty() ? std::string_view() : sv;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Split string into tokens based on delimiters and call callback for each token
|
|
244
|
+
template <typename FUNC>
|
|
245
|
+
inline void ForEachToken(std::string_view str, std::string_view delimiters, FUNC&& callback)
|
|
246
|
+
{
|
|
247
|
+
std::size_t pos = 0;
|
|
248
|
+
while (pos < str.size()) {
|
|
249
|
+
auto const next_pos = str.find_first_of(delimiters, pos);
|
|
250
|
+
callback(str.substr(pos, next_pos - pos));
|
|
251
|
+
pos = next_pos == std::string_view::npos ? str.size() : next_pos + 1;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
inline bool IsEqualIgnoreCase(std::string_view a, std::string_view b)
|
|
256
|
+
{
|
|
257
|
+
return std::ranges::equal(a, b, [](uint8_t a, uint8_t b) { return std::tolower(a) == std::tolower(b); });
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Compare two strings ignoring case and specified whitespace characters
|
|
261
|
+
inline bool IsEqualIgnoreCaseAnd(std::string_view a, std::string_view b, const char* ws)
|
|
262
|
+
{
|
|
263
|
+
auto i = a.begin(), j = b.begin();
|
|
264
|
+
while (i != a.end() && j != b.end()) {
|
|
265
|
+
if (Contains(ws, *i))
|
|
266
|
+
++i;
|
|
267
|
+
else if (Contains(ws, *j))
|
|
268
|
+
++j;
|
|
269
|
+
else if (std::tolower(static_cast<uint8_t>(*i)) != std::tolower(static_cast<uint8_t>(*j)))
|
|
270
|
+
return false;
|
|
271
|
+
else
|
|
272
|
+
++i, ++j;
|
|
273
|
+
}
|
|
274
|
+
return i == a.end() && j == b.end();
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
template <typename T>
|
|
278
|
+
void UpdateMin(T& min, T val)
|
|
279
|
+
{
|
|
280
|
+
min = std::min(min, val);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
template <typename T>
|
|
284
|
+
void UpdateMax(T& max, T val)
|
|
285
|
+
{
|
|
286
|
+
max = std::max(max, val);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
template <typename T>
|
|
290
|
+
void UpdateMinMax(T& min, T& max, T val)
|
|
291
|
+
{
|
|
292
|
+
min = std::min(min, val);
|
|
293
|
+
max = std::max(max, val);
|
|
294
|
+
|
|
295
|
+
// Note: the above code is not equivalent to
|
|
296
|
+
// if (val < min) min = val;
|
|
297
|
+
// else if (val > max) max = val;
|
|
298
|
+
// It is basically the same but without the 'else'. For the 'else'-variant to work,
|
|
299
|
+
// both min and max have to be initialized with a value that is part of the sequence.
|
|
300
|
+
// Also it turns out clang and gcc can vectorize the code above but not the code below.
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
inline uint32_t ReverseBits32(uint32_t v)
|
|
304
|
+
{
|
|
305
|
+
v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
|
|
306
|
+
// swap consecutive pairs
|
|
307
|
+
v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
|
|
308
|
+
// swap nibbles ...
|
|
309
|
+
v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
|
|
310
|
+
// swap bytes
|
|
311
|
+
v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
|
|
312
|
+
// swap 2-byte long pairs
|
|
313
|
+
v = (v >> 16) | (v << 16);
|
|
314
|
+
return v;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
template<typename T, typename = std::enable_if_t<std::is_integral_v<T>>>
|
|
318
|
+
constexpr T& AppendBits(T& val, T bits, int count)
|
|
319
|
+
{
|
|
320
|
+
assert(count >= 0 && count <= int(sizeof(T) * 8) && (bits & ~((T(1) << count) - 1)) == 0);
|
|
321
|
+
return (val <<= count) |= bits;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
template<typename T, typename = std::enable_if_t<std::is_integral_v<T>>>
|
|
325
|
+
constexpr T& AppendBit(T& val, bool bit)
|
|
326
|
+
{
|
|
327
|
+
return AppendBits(val, static_cast<T>(bit), 1);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// use to avoid "load of misaligned address" when using a simple type cast
|
|
331
|
+
template <typename T, typename = std::enable_if_t<std::is_integral_v<T>>>
|
|
332
|
+
T LoadU(const void* ptr)
|
|
333
|
+
{
|
|
334
|
+
T res;
|
|
335
|
+
memcpy(&res, ptr, sizeof(T));
|
|
336
|
+
return res;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
} // ZXing
|
|
340
|
+
|
|
341
|
+
#ifndef __cpp_lib_to_underlying
|
|
342
|
+
|
|
343
|
+
namespace std {
|
|
344
|
+
|
|
345
|
+
template <typename E, typename = std::enable_if_t<std::is_enum_v<E>>>
|
|
346
|
+
constexpr std::underlying_type_t<E> to_underlying(E e) noexcept
|
|
347
|
+
{
|
|
348
|
+
return static_cast<std::underlying_type_t<E>>(e);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
} // namespace std
|
|
352
|
+
|
|
353
|
+
#endif // __cpp_lib_to_underlying
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2018 Axel Waggershauser
|
|
3
|
+
*/
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
// Thread local or static memory may be used to reduce the number of (re-)allocations of temporary variables
|
|
9
|
+
// in e.g. the HistogramBinarizer. The default is thread_local, which is the best option for performance and safety in most cases. If
|
|
10
|
+
// your platform doesn't support thread_local, you can switch to static, but be aware that this makes the code not thread safe.
|
|
11
|
+
// For Windows in Visual Studio 2019 on Intel 64-bit using thread_local causes a dependency to VCRUNTIME140_1.dll, so you need 2019
|
|
12
|
+
// runtime DLLs instead of only 2015 version.
|
|
13
|
+
#define ZX_THREAD_LOCAL thread_local // '' (nothing), 'thread_local' or 'static'
|
|
14
|
+
|
|
15
|
+
// The Galois Field abstractions used in Reed-Solomon error correction code use more memory than required to improve performance (20% - 100%).
|
|
16
|
+
// If RAM is scarce, you can define LIBRSCPP_SAVE_MEMORY to reduce memory usage. The effect is a few kB big.
|
|
17
|
+
// #define LIBRSCPP_SAVE_MEMORY
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Axel Waggershauser
|
|
3
|
+
*/
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
#include "Version.h"
|
|
9
|
+
|
|
10
|
+
#if defined(_MSC_VER)
|
|
11
|
+
#pragma message("<ZXing/ZXingVersion.h> is deprecated, include ZXing/Version.h instead")
|
|
12
|
+
#else
|
|
13
|
+
#warning "<ZXing/ZXingVersion.h> is deprecated, include ZXing/Version.h instead"
|
|
14
|
+
#endif
|