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.
Files changed (423) hide show
  1. package/README.md +34 -0
  2. package/VisionCameraZxing.podspec +48 -0
  3. package/android/CMakeLists.txt +43 -0
  4. package/android/build.gradle +150 -0
  5. package/android/fix-prefab.gradle +51 -0
  6. package/android/gradle.properties +5 -0
  7. package/android/src/main/AndroidManifest.xml +3 -0
  8. package/android/src/main/cpp/cpp-adapter.cpp +7 -0
  9. package/android/src/main/java/com/margelo/nitro/camera/zxing/VisionCameraZxingPackage.kt +21 -0
  10. package/cpp/BarcodeValueTypeClassifier.cpp +70 -0
  11. package/cpp/BarcodeValueTypeClassifier.hpp +14 -0
  12. package/cpp/FrameImageView.cpp +75 -0
  13. package/cpp/FrameImageView.hpp +34 -0
  14. package/cpp/HybridBarcode.cpp +59 -0
  15. package/cpp/HybridBarcode.hpp +26 -0
  16. package/cpp/HybridBarcodeScanner.cpp +121 -0
  17. package/cpp/HybridBarcodeScanner.hpp +26 -0
  18. package/cpp/HybridBarcodeScannerFactory.cpp +11 -0
  19. package/cpp/HybridBarcodeScannerFactory.hpp +14 -0
  20. package/cpp/ImageDownscaler.cpp +34 -0
  21. package/cpp/ImageDownscaler.hpp +21 -0
  22. package/cpp/ZXingDecoder.cpp +189 -0
  23. package/cpp/ZXingDecoder.hpp +72 -0
  24. package/cpp/zxing-core/LICENSE +202 -0
  25. package/cpp/zxing-core/README.md +156 -0
  26. package/cpp/zxing-core/core/CMakeLists.txt +784 -0
  27. package/cpp/zxing-core/core/Version.h.in +28 -0
  28. package/cpp/zxing-core/core/ZXingConfig.cmake.in +9 -0
  29. package/cpp/zxing-core/core/src/Barcode.cpp +255 -0
  30. package/cpp/zxing-core/core/src/Barcode.h +191 -0
  31. package/cpp/zxing-core/core/src/BarcodeData.h +100 -0
  32. package/cpp/zxing-core/core/src/BarcodeFormat.cpp +286 -0
  33. package/cpp/zxing-core/core/src/BarcodeFormat.h +272 -0
  34. package/cpp/zxing-core/core/src/BinaryBitmap.cpp +111 -0
  35. package/cpp/zxing-core/core/src/BinaryBitmap.h +66 -0
  36. package/cpp/zxing-core/core/src/BitArray.cpp +38 -0
  37. package/cpp/zxing-core/core/src/BitArray.h +181 -0
  38. package/cpp/zxing-core/core/src/BitMatrix.cpp +175 -0
  39. package/cpp/zxing-core/core/src/BitMatrix.h +199 -0
  40. package/cpp/zxing-core/core/src/BitMatrixCursor.h +253 -0
  41. package/cpp/zxing-core/core/src/BitMatrixIO.cpp +101 -0
  42. package/cpp/zxing-core/core/src/BitMatrixIO.h +21 -0
  43. package/cpp/zxing-core/core/src/BitSource.cpp +77 -0
  44. package/cpp/zxing-core/core/src/BitSource.h +72 -0
  45. package/cpp/zxing-core/core/src/ByteArray.h +42 -0
  46. package/cpp/zxing-core/core/src/CharacterSet.cpp +78 -0
  47. package/cpp/zxing-core/core/src/CharacterSet.h +58 -0
  48. package/cpp/zxing-core/core/src/ConcentricFinder.cpp +312 -0
  49. package/cpp/zxing-core/core/src/ConcentricFinder.h +156 -0
  50. package/cpp/zxing-core/core/src/Content.cpp +471 -0
  51. package/cpp/zxing-core/core/src/Content.h +82 -0
  52. package/cpp/zxing-core/core/src/ContentType.h +19 -0
  53. package/cpp/zxing-core/core/src/CreateBarcode.cpp +490 -0
  54. package/cpp/zxing-core/core/src/CreateBarcode.h +132 -0
  55. package/cpp/zxing-core/core/src/DecoderResult.h +92 -0
  56. package/cpp/zxing-core/core/src/DetectorResult.h +44 -0
  57. package/cpp/zxing-core/core/src/ECI.cpp +81 -0
  58. package/cpp/zxing-core/core/src/ECI.h +78 -0
  59. package/cpp/zxing-core/core/src/Error.cpp +29 -0
  60. package/cpp/zxing-core/core/src/Error.h +79 -0
  61. package/cpp/zxing-core/core/src/Flags.h +165 -0
  62. package/cpp/zxing-core/core/src/GTIN.cpp +253 -0
  63. package/cpp/zxing-core/core/src/GTIN.h +58 -0
  64. package/cpp/zxing-core/core/src/GlobalHistogramBinarizer.cpp +197 -0
  65. package/cpp/zxing-core/core/src/GlobalHistogramBinarizer.h +34 -0
  66. package/cpp/zxing-core/core/src/GridSampler.cpp +124 -0
  67. package/cpp/zxing-core/core/src/GridSampler.h +59 -0
  68. package/cpp/zxing-core/core/src/HRI.cpp +343 -0
  69. package/cpp/zxing-core/core/src/HRI.h +16 -0
  70. package/cpp/zxing-core/core/src/HybridBinarizer.cpp +315 -0
  71. package/cpp/zxing-core/core/src/HybridBinarizer.h +40 -0
  72. package/cpp/zxing-core/core/src/ImageView.h +168 -0
  73. package/cpp/zxing-core/core/src/JSON.cpp +154 -0
  74. package/cpp/zxing-core/core/src/JSON.h +66 -0
  75. package/cpp/zxing-core/core/src/LocalGrid.cpp +242 -0
  76. package/cpp/zxing-core/core/src/LocalGrid.h +91 -0
  77. package/cpp/zxing-core/core/src/LogMatrix.h +105 -0
  78. package/cpp/zxing-core/core/src/Matrix.h +125 -0
  79. package/cpp/zxing-core/core/src/MultiFormatReader.cpp +107 -0
  80. package/cpp/zxing-core/core/src/MultiFormatReader.h +34 -0
  81. package/cpp/zxing-core/core/src/MultiFormatWriter.cpp +111 -0
  82. package/cpp/zxing-core/core/src/MultiFormatWriter.h +62 -0
  83. package/cpp/zxing-core/core/src/Pattern.h +472 -0
  84. package/cpp/zxing-core/core/src/PerspectiveTransform.cpp +81 -0
  85. package/cpp/zxing-core/core/src/PerspectiveTransform.h +47 -0
  86. package/cpp/zxing-core/core/src/Point.h +185 -0
  87. package/cpp/zxing-core/core/src/Quadrilateral.h +215 -0
  88. package/cpp/zxing-core/core/src/Range.h +112 -0
  89. package/cpp/zxing-core/core/src/ReadBarcode.cpp +335 -0
  90. package/cpp/zxing-core/core/src/ReadBarcode.h +33 -0
  91. package/cpp/zxing-core/core/src/Reader.h +32 -0
  92. package/cpp/zxing-core/core/src/ReaderOptions.h +210 -0
  93. package/cpp/zxing-core/core/src/ReedSolomon.cpp +100 -0
  94. package/cpp/zxing-core/core/src/ReedSolomon.h +66 -0
  95. package/cpp/zxing-core/core/src/RegressionLine.h +161 -0
  96. package/cpp/zxing-core/core/src/ResultPoint.cpp +20 -0
  97. package/cpp/zxing-core/core/src/ResultPoint.h +35 -0
  98. package/cpp/zxing-core/core/src/StdGenerator.h +121 -0
  99. package/cpp/zxing-core/core/src/StdPrint.h +38 -0
  100. package/cpp/zxing-core/core/src/StdScope.h +55 -0
  101. package/cpp/zxing-core/core/src/StructuredAppend.h +19 -0
  102. package/cpp/zxing-core/core/src/SymbologyIdentifier.h +29 -0
  103. package/cpp/zxing-core/core/src/TextDecoder.cpp +59 -0
  104. package/cpp/zxing-core/core/src/TextDecoder.h +23 -0
  105. package/cpp/zxing-core/core/src/TextEncoder.cpp +75 -0
  106. package/cpp/zxing-core/core/src/TextEncoder.h +31 -0
  107. package/cpp/zxing-core/core/src/ThresholdBinarizer.h +58 -0
  108. package/cpp/zxing-core/core/src/TritMatrix.h +29 -0
  109. package/cpp/zxing-core/core/src/Utf.cpp +276 -0
  110. package/cpp/zxing-core/core/src/Utf.h +26 -0
  111. package/cpp/zxing-core/core/src/WhiteRectDetector.cpp +276 -0
  112. package/cpp/zxing-core/core/src/WhiteRectDetector.h +36 -0
  113. package/cpp/zxing-core/core/src/WriteBarcode.cpp +213 -0
  114. package/cpp/zxing-core/core/src/WriteBarcode.h +72 -0
  115. package/cpp/zxing-core/core/src/ZXAlgorithms.h +353 -0
  116. package/cpp/zxing-core/core/src/ZXConfig.h +17 -0
  117. package/cpp/zxing-core/core/src/ZXTestSupport.h +9 -0
  118. package/cpp/zxing-core/core/src/ZXVersion.h +14 -0
  119. package/cpp/zxing-core/core/src/ZXingC.cpp +460 -0
  120. package/cpp/zxing-core/core/src/ZXingC.h +296 -0
  121. package/cpp/zxing-core/core/src/ZXingCpp.cpp +18 -0
  122. package/cpp/zxing-core/core/src/ZXingCpp.h +76 -0
  123. package/cpp/zxing-core/core/src/ZXingQt.h +606 -0
  124. package/cpp/zxing-core/core/src/aztec/AZDecoder.cpp +376 -0
  125. package/cpp/zxing-core/core/src/aztec/AZDecoder.h +20 -0
  126. package/cpp/zxing-core/core/src/aztec/AZDetector.cpp +508 -0
  127. package/cpp/zxing-core/core/src/aztec/AZDetector.h +25 -0
  128. package/cpp/zxing-core/core/src/aztec/AZDetectorResult.h +51 -0
  129. package/cpp/zxing-core/core/src/aztec/AZEncoder.cpp +318 -0
  130. package/cpp/zxing-core/core/src/aztec/AZEncoder.h +44 -0
  131. package/cpp/zxing-core/core/src/aztec/AZEncodingState.h +40 -0
  132. package/cpp/zxing-core/core/src/aztec/AZHighLevelEncoder.cpp +377 -0
  133. package/cpp/zxing-core/core/src/aztec/AZHighLevelEncoder.h +36 -0
  134. package/cpp/zxing-core/core/src/aztec/AZReader.cpp +45 -0
  135. package/cpp/zxing-core/core/src/aztec/AZReader.h +21 -0
  136. package/cpp/zxing-core/core/src/aztec/AZToken.cpp +44 -0
  137. package/cpp/zxing-core/core/src/aztec/AZToken.h +39 -0
  138. package/cpp/zxing-core/core/src/aztec/AZWriter.cpp +38 -0
  139. package/cpp/zxing-core/core/src/aztec/AZWriter.h +55 -0
  140. package/cpp/zxing-core/core/src/datamatrix/DMBitLayout.cpp +194 -0
  141. package/cpp/zxing-core/core/src/datamatrix/DMBitLayout.h +21 -0
  142. package/cpp/zxing-core/core/src/datamatrix/DMDataBlock.cpp +63 -0
  143. package/cpp/zxing-core/core/src/datamatrix/DMDataBlock.h +41 -0
  144. package/cpp/zxing-core/core/src/datamatrix/DMDecoder.cpp +457 -0
  145. package/cpp/zxing-core/core/src/datamatrix/DMDecoder.h +19 -0
  146. package/cpp/zxing-core/core/src/datamatrix/DMDetector.cpp +1230 -0
  147. package/cpp/zxing-core/core/src/datamatrix/DMDetector.h +23 -0
  148. package/cpp/zxing-core/core/src/datamatrix/DMECEncoder.cpp +137 -0
  149. package/cpp/zxing-core/core/src/datamatrix/DMECEncoder.h +26 -0
  150. package/cpp/zxing-core/core/src/datamatrix/DMEncoderContext.h +128 -0
  151. package/cpp/zxing-core/core/src/datamatrix/DMHighLevelEncoder.cpp +919 -0
  152. package/cpp/zxing-core/core/src/datamatrix/DMHighLevelEncoder.h +29 -0
  153. package/cpp/zxing-core/core/src/datamatrix/DMReader.cpp +40 -0
  154. package/cpp/zxing-core/core/src/datamatrix/DMReader.h +21 -0
  155. package/cpp/zxing-core/core/src/datamatrix/DMSymbolInfo.cpp +141 -0
  156. package/cpp/zxing-core/core/src/datamatrix/DMSymbolInfo.h +78 -0
  157. package/cpp/zxing-core/core/src/datamatrix/DMSymbolShape.h +17 -0
  158. package/cpp/zxing-core/core/src/datamatrix/DMVersion.cpp +82 -0
  159. package/cpp/zxing-core/core/src/datamatrix/DMVersion.h +76 -0
  160. package/cpp/zxing-core/core/src/datamatrix/DMWriter.cpp +114 -0
  161. package/cpp/zxing-core/core/src/datamatrix/DMWriter.h +62 -0
  162. package/cpp/zxing-core/core/src/librscpp/README.md +65 -0
  163. package/cpp/zxing-core/core/src/librscpp/decode.h +258 -0
  164. package/cpp/zxing-core/core/src/librscpp/encode.h +124 -0
  165. package/cpp/zxing-core/core/src/librscpp/field.h +158 -0
  166. package/cpp/zxing-core/core/src/librscpp/poly.h +194 -0
  167. package/cpp/zxing-core/core/src/libzint/2of5inter.c +1 -0
  168. package/cpp/zxing-core/core/src/libzint/2of5inter_based.c +1 -0
  169. package/cpp/zxing-core/core/src/libzint/aztec.c +1 -0
  170. package/cpp/zxing-core/core/src/libzint/aztec.h +1 -0
  171. package/cpp/zxing-core/core/src/libzint/big5.h +1 -0
  172. package/cpp/zxing-core/core/src/libzint/codabar.c +1 -0
  173. package/cpp/zxing-core/core/src/libzint/code.c +1 -0
  174. package/cpp/zxing-core/core/src/libzint/code128.c +1 -0
  175. package/cpp/zxing-core/core/src/libzint/code128.h +1 -0
  176. package/cpp/zxing-core/core/src/libzint/common.c +1 -0
  177. package/cpp/zxing-core/core/src/libzint/common.h +1 -0
  178. package/cpp/zxing-core/core/src/libzint/dmatrix.c +1 -0
  179. package/cpp/zxing-core/core/src/libzint/dmatrix.h +1 -0
  180. package/cpp/zxing-core/core/src/libzint/dxfilmedge.c +1 -0
  181. package/cpp/zxing-core/core/src/libzint/eci.c +1 -0
  182. package/cpp/zxing-core/core/src/libzint/eci.h +1 -0
  183. package/cpp/zxing-core/core/src/libzint/eci_sb.h +1 -0
  184. package/cpp/zxing-core/core/src/libzint/filemem.c +1 -0
  185. package/cpp/zxing-core/core/src/libzint/filemem.h +1 -0
  186. package/cpp/zxing-core/core/src/libzint/fonts/normal_woff2.h +1 -0
  187. package/cpp/zxing-core/core/src/libzint/fonts/upcean_woff2.h +1 -0
  188. package/cpp/zxing-core/core/src/libzint/gb18030.h +1 -0
  189. package/cpp/zxing-core/core/src/libzint/gb2312.h +1 -0
  190. package/cpp/zxing-core/core/src/libzint/gbk.h +1 -0
  191. package/cpp/zxing-core/core/src/libzint/general_field.c +1 -0
  192. package/cpp/zxing-core/core/src/libzint/general_field.h +1 -0
  193. package/cpp/zxing-core/core/src/libzint/gs1.c +1 -0
  194. package/cpp/zxing-core/core/src/libzint/gs1.h +1 -0
  195. package/cpp/zxing-core/core/src/libzint/gs1_lint.h +1 -0
  196. package/cpp/zxing-core/core/src/libzint/iso3166.h +1 -0
  197. package/cpp/zxing-core/core/src/libzint/iso4217.h +1 -0
  198. package/cpp/zxing-core/core/src/libzint/ksx1001.h +1 -0
  199. package/cpp/zxing-core/core/src/libzint/large.c +1 -0
  200. package/cpp/zxing-core/core/src/libzint/large.h +1 -0
  201. package/cpp/zxing-core/core/src/libzint/library.c +1 -0
  202. package/cpp/zxing-core/core/src/libzint/maxicode.c +1 -0
  203. package/cpp/zxing-core/core/src/libzint/maxicode.h +1 -0
  204. package/cpp/zxing-core/core/src/libzint/medical.c +1 -0
  205. package/cpp/zxing-core/core/src/libzint/output.c +1 -0
  206. package/cpp/zxing-core/core/src/libzint/output.h +1 -0
  207. package/cpp/zxing-core/core/src/libzint/pdf417.c +1 -0
  208. package/cpp/zxing-core/core/src/libzint/pdf417.h +1 -0
  209. package/cpp/zxing-core/core/src/libzint/pdf417_tabs.h +1 -0
  210. package/cpp/zxing-core/core/src/libzint/qr.c +1 -0
  211. package/cpp/zxing-core/core/src/libzint/qr.h +1 -0
  212. package/cpp/zxing-core/core/src/libzint/raster.c +1 -0
  213. package/cpp/zxing-core/core/src/libzint/raster_font.h +1 -0
  214. package/cpp/zxing-core/core/src/libzint/reedsol.c +1 -0
  215. package/cpp/zxing-core/core/src/libzint/reedsol.h +1 -0
  216. package/cpp/zxing-core/core/src/libzint/reedsol_logs.h +1 -0
  217. package/cpp/zxing-core/core/src/libzint/rss.c +1 -0
  218. package/cpp/zxing-core/core/src/libzint/rss.h +1 -0
  219. package/cpp/zxing-core/core/src/libzint/sjis.h +1 -0
  220. package/cpp/zxing-core/core/src/libzint/stubs.c +137 -0
  221. package/cpp/zxing-core/core/src/libzint/svg.c +1 -0
  222. package/cpp/zxing-core/core/src/libzint/telepen.c +1 -0
  223. package/cpp/zxing-core/core/src/libzint/upcean.c +1 -0
  224. package/cpp/zxing-core/core/src/libzint/vector.c +1 -0
  225. package/cpp/zxing-core/core/src/libzint/zfiletypes.h +1 -0
  226. package/cpp/zxing-core/core/src/libzint/zint.h +1 -0
  227. package/cpp/zxing-core/core/src/libzint/zintconfig.h +1 -0
  228. package/cpp/zxing-core/core/src/libzueci/README.md +11 -0
  229. package/cpp/zxing-core/core/src/libzueci/zueci.c +1718 -0
  230. package/cpp/zxing-core/core/src/libzueci/zueci.h +179 -0
  231. package/cpp/zxing-core/core/src/libzueci/zueci_big5.h +3884 -0
  232. package/cpp/zxing-core/core/src/libzueci/zueci_common.h +31 -0
  233. package/cpp/zxing-core/core/src/libzueci/zueci_gb18030.h +264 -0
  234. package/cpp/zxing-core/core/src/libzueci/zueci_gb2312.h +2381 -0
  235. package/cpp/zxing-core/core/src/libzueci/zueci_gbk.h +4047 -0
  236. package/cpp/zxing-core/core/src/libzueci/zueci_ksx1001.h +2932 -0
  237. package/cpp/zxing-core/core/src/libzueci/zueci_sb.h +1112 -0
  238. package/cpp/zxing-core/core/src/libzueci/zueci_sjis.h +2286 -0
  239. package/cpp/zxing-core/core/src/maxicode/MCBitMatrixParser.cpp +68 -0
  240. package/cpp/zxing-core/core/src/maxicode/MCBitMatrixParser.h +30 -0
  241. package/cpp/zxing-core/core/src/maxicode/MCDecoder.cpp +329 -0
  242. package/cpp/zxing-core/core/src/maxicode/MCDecoder.h +19 -0
  243. package/cpp/zxing-core/core/src/maxicode/MCReader.cpp +65 -0
  244. package/cpp/zxing-core/core/src/maxicode/MCReader.h +21 -0
  245. package/cpp/zxing-core/core/src/oned/ODCodabarReader.cpp +102 -0
  246. package/cpp/zxing-core/core/src/oned/ODCodabarReader.h +21 -0
  247. package/cpp/zxing-core/core/src/oned/ODCodabarWriter.cpp +136 -0
  248. package/cpp/zxing-core/core/src/oned/ODCodabarWriter.h +34 -0
  249. package/cpp/zxing-core/core/src/oned/ODCode128Patterns.h +130 -0
  250. package/cpp/zxing-core/core/src/oned/ODCode128Reader.cpp +236 -0
  251. package/cpp/zxing-core/core/src/oned/ODCode128Reader.h +21 -0
  252. package/cpp/zxing-core/core/src/oned/ODCode128Writer.cpp +261 -0
  253. package/cpp/zxing-core/core/src/oned/ODCode128Writer.h +34 -0
  254. package/cpp/zxing-core/core/src/oned/ODCode39Reader.cpp +213 -0
  255. package/cpp/zxing-core/core/src/oned/ODCode39Reader.h +26 -0
  256. package/cpp/zxing-core/core/src/oned/ODCode39Writer.cpp +176 -0
  257. package/cpp/zxing-core/core/src/oned/ODCode39Writer.h +34 -0
  258. package/cpp/zxing-core/core/src/oned/ODCode93Patterns.h +80 -0
  259. package/cpp/zxing-core/core/src/oned/ODCode93Reader.cpp +112 -0
  260. package/cpp/zxing-core/core/src/oned/ODCode93Reader.h +21 -0
  261. package/cpp/zxing-core/core/src/oned/ODCode93Writer.cpp +192 -0
  262. package/cpp/zxing-core/core/src/oned/ODCode93Writer.h +32 -0
  263. package/cpp/zxing-core/core/src/oned/ODDXFilmEdgeReader.cpp +246 -0
  264. package/cpp/zxing-core/core/src/oned/ODDXFilmEdgeReader.h +26 -0
  265. package/cpp/zxing-core/core/src/oned/ODDataBarCommon.cpp +172 -0
  266. package/cpp/zxing-core/core/src/oned/ODDataBarCommon.h +204 -0
  267. package/cpp/zxing-core/core/src/oned/ODDataBarExpandedBitDecoder.cpp +253 -0
  268. package/cpp/zxing-core/core/src/oned/ODDataBarExpandedBitDecoder.h +19 -0
  269. package/cpp/zxing-core/core/src/oned/ODDataBarExpandedReader.cpp +383 -0
  270. package/cpp/zxing-core/core/src/oned/ODDataBarExpandedReader.h +25 -0
  271. package/cpp/zxing-core/core/src/oned/ODDataBarLimitedReader.cpp +163 -0
  272. package/cpp/zxing-core/core/src/oned/ODDataBarLimitedReader.h +23 -0
  273. package/cpp/zxing-core/core/src/oned/ODDataBarReader.cpp +240 -0
  274. package/cpp/zxing-core/core/src/oned/ODDataBarReader.h +25 -0
  275. package/cpp/zxing-core/core/src/oned/ODEAN13Writer.cpp +62 -0
  276. package/cpp/zxing-core/core/src/oned/ODEAN13Writer.h +34 -0
  277. package/cpp/zxing-core/core/src/oned/ODEAN8Writer.cpp +51 -0
  278. package/cpp/zxing-core/core/src/oned/ODEAN8Writer.h +34 -0
  279. package/cpp/zxing-core/core/src/oned/ODITFReader.cpp +97 -0
  280. package/cpp/zxing-core/core/src/oned/ODITFReader.h +33 -0
  281. package/cpp/zxing-core/core/src/oned/ODITFWriter.cpp +78 -0
  282. package/cpp/zxing-core/core/src/oned/ODITFWriter.h +34 -0
  283. package/cpp/zxing-core/core/src/oned/ODMultiUPCEANReader.cpp +323 -0
  284. package/cpp/zxing-core/core/src/oned/ODMultiUPCEANReader.h +32 -0
  285. package/cpp/zxing-core/core/src/oned/ODReader.cpp +259 -0
  286. package/cpp/zxing-core/core/src/oned/ODReader.h +35 -0
  287. package/cpp/zxing-core/core/src/oned/ODRowReader.h +222 -0
  288. package/cpp/zxing-core/core/src/oned/ODTelepenReader.cpp +199 -0
  289. package/cpp/zxing-core/core/src/oned/ODTelepenReader.h +25 -0
  290. package/cpp/zxing-core/core/src/oned/ODUPCAWriter.cpp +33 -0
  291. package/cpp/zxing-core/core/src/oned/ODUPCAWriter.h +34 -0
  292. package/cpp/zxing-core/core/src/oned/ODUPCEANCommon.cpp +80 -0
  293. package/cpp/zxing-core/core/src/oned/ODUPCEANCommon.h +129 -0
  294. package/cpp/zxing-core/core/src/oned/ODUPCEWriter.cpp +56 -0
  295. package/cpp/zxing-core/core/src/oned/ODUPCEWriter.h +34 -0
  296. package/cpp/zxing-core/core/src/oned/ODWriterHelper.cpp +39 -0
  297. package/cpp/zxing-core/core/src/oned/ODWriterHelper.h +48 -0
  298. package/cpp/zxing-core/core/src/pdf417/MicroPDFReader.cpp +796 -0
  299. package/cpp/zxing-core/core/src/pdf417/MicroPDFReader.h +23 -0
  300. package/cpp/zxing-core/core/src/pdf417/PDF417.cpp +85 -0
  301. package/cpp/zxing-core/core/src/pdf417/PDF417.h +81 -0
  302. package/cpp/zxing-core/core/src/pdf417/PDFBarcodeMetadata.h +53 -0
  303. package/cpp/zxing-core/core/src/pdf417/PDFBarcodeValue.cpp +48 -0
  304. package/cpp/zxing-core/core/src/pdf417/PDFBarcodeValue.h +38 -0
  305. package/cpp/zxing-core/core/src/pdf417/PDFBoundingBox.cpp +116 -0
  306. package/cpp/zxing-core/core/src/pdf417/PDFBoundingBox.h +75 -0
  307. package/cpp/zxing-core/core/src/pdf417/PDFCodeword.h +71 -0
  308. package/cpp/zxing-core/core/src/pdf417/PDFCodewordDecoder.cpp +588 -0
  309. package/cpp/zxing-core/core/src/pdf417/PDFCodewordDecoder.h +41 -0
  310. package/cpp/zxing-core/core/src/pdf417/PDFCompaction.h +20 -0
  311. package/cpp/zxing-core/core/src/pdf417/PDFCustomData.h +32 -0
  312. package/cpp/zxing-core/core/src/pdf417/PDFDecoder.cpp +725 -0
  313. package/cpp/zxing-core/core/src/pdf417/PDFDecoder.h +20 -0
  314. package/cpp/zxing-core/core/src/pdf417/PDFDetectionResult.cpp +247 -0
  315. package/cpp/zxing-core/core/src/pdf417/PDFDetectionResult.h +74 -0
  316. package/cpp/zxing-core/core/src/pdf417/PDFDetectionResultColumn.cpp +321 -0
  317. package/cpp/zxing-core/core/src/pdf417/PDFDetectionResultColumn.h +83 -0
  318. package/cpp/zxing-core/core/src/pdf417/PDFDetector.cpp +371 -0
  319. package/cpp/zxing-core/core/src/pdf417/PDFDetector.h +45 -0
  320. package/cpp/zxing-core/core/src/pdf417/PDFEncoder.cpp +570 -0
  321. package/cpp/zxing-core/core/src/pdf417/PDFEncoder.h +182 -0
  322. package/cpp/zxing-core/core/src/pdf417/PDFHighLevelEncoder.cpp +570 -0
  323. package/cpp/zxing-core/core/src/pdf417/PDFHighLevelEncoder.h +32 -0
  324. package/cpp/zxing-core/core/src/pdf417/PDFReader.cpp +333 -0
  325. package/cpp/zxing-core/core/src/pdf417/PDFReader.h +28 -0
  326. package/cpp/zxing-core/core/src/pdf417/PDFScanningDecoder.cpp +559 -0
  327. package/cpp/zxing-core/core/src/pdf417/PDFScanningDecoder.h +41 -0
  328. package/cpp/zxing-core/core/src/pdf417/PDFWriter.cpp +170 -0
  329. package/cpp/zxing-core/core/src/pdf417/PDFWriter.h +74 -0
  330. package/cpp/zxing-core/core/src/pdf417/ZXBigInteger.cpp +623 -0
  331. package/cpp/zxing-core/core/src/pdf417/ZXBigInteger.h +81 -0
  332. package/cpp/zxing-core/core/src/pdf417/ZXNullable.h +105 -0
  333. package/cpp/zxing-core/core/src/qrcode/QRBitMatrixParser.cpp +294 -0
  334. package/cpp/zxing-core/core/src/qrcode/QRBitMatrixParser.h +41 -0
  335. package/cpp/zxing-core/core/src/qrcode/QRCodecMode.cpp +95 -0
  336. package/cpp/zxing-core/core/src/qrcode/QRCodecMode.h +59 -0
  337. package/cpp/zxing-core/core/src/qrcode/QRDataBlock.cpp +93 -0
  338. package/cpp/zxing-core/core/src/qrcode/QRDataBlock.h +52 -0
  339. package/cpp/zxing-core/core/src/qrcode/QRDataMask.h +50 -0
  340. package/cpp/zxing-core/core/src/qrcode/QRDecoder.cpp +359 -0
  341. package/cpp/zxing-core/core/src/qrcode/QRDecoder.h +19 -0
  342. package/cpp/zxing-core/core/src/qrcode/QRDetector.cpp +920 -0
  343. package/cpp/zxing-core/core/src/qrcode/QRDetector.h +45 -0
  344. package/cpp/zxing-core/core/src/qrcode/QRECB.h +52 -0
  345. package/cpp/zxing-core/core/src/qrcode/QREncodeResult.h +33 -0
  346. package/cpp/zxing-core/core/src/qrcode/QREncoder.cpp +568 -0
  347. package/cpp/zxing-core/core/src/qrcode/QREncoder.h +21 -0
  348. package/cpp/zxing-core/core/src/qrcode/QRErrorCorrectionLevel.cpp +51 -0
  349. package/cpp/zxing-core/core/src/qrcode/QRErrorCorrectionLevel.h +39 -0
  350. package/cpp/zxing-core/core/src/qrcode/QRFormatInformation.cpp +160 -0
  351. package/cpp/zxing-core/core/src/qrcode/QRFormatInformation.h +61 -0
  352. package/cpp/zxing-core/core/src/qrcode/QRMaskUtil.cpp +156 -0
  353. package/cpp/zxing-core/core/src/qrcode/QRMaskUtil.h +15 -0
  354. package/cpp/zxing-core/core/src/qrcode/QRMatrixUtil.cpp +318 -0
  355. package/cpp/zxing-core/core/src/qrcode/QRMatrixUtil.h +25 -0
  356. package/cpp/zxing-core/core/src/qrcode/QRReader.cpp +149 -0
  357. package/cpp/zxing-core/core/src/qrcode/QRReader.h +21 -0
  358. package/cpp/zxing-core/core/src/qrcode/QRVersion.cpp +754 -0
  359. package/cpp/zxing-core/core/src/qrcode/QRVersion.h +127 -0
  360. package/cpp/zxing-core/core/src/qrcode/QRWriter.cpp +51 -0
  361. package/cpp/zxing-core/core/src/qrcode/QRWriter.h +74 -0
  362. package/cpp/zxing-core/core/version.rc.in +34 -0
  363. package/cpp/zxing-core/core/zxing.pc.in +8 -0
  364. package/cpp/zxing-core/wrappers/ios/README.md +25 -0
  365. package/cpp/zxing-core/wrappers/ios/Sources/Wrapper/Version.h +29 -0
  366. package/cpp/zxing-core/zxing-cpp.podspec +45 -0
  367. package/lib/factory.d.ts +10 -0
  368. package/lib/factory.js +12 -0
  369. package/lib/index.d.ts +9 -0
  370. package/lib/index.js +9 -0
  371. package/lib/specs/Barcode.nitro.d.ts +63 -0
  372. package/lib/specs/Barcode.nitro.js +1 -0
  373. package/lib/specs/BarcodeFormat.d.ts +11 -0
  374. package/lib/specs/BarcodeFormat.js +1 -0
  375. package/lib/specs/BarcodeScanner.nitro.d.ts +89 -0
  376. package/lib/specs/BarcodeScanner.nitro.js +1 -0
  377. package/lib/specs/BarcodeScannerFactory.nitro.d.ts +26 -0
  378. package/lib/specs/BarcodeScannerFactory.nitro.js +1 -0
  379. package/lib/specs/BarcodeValueType.d.ts +9 -0
  380. package/lib/specs/BarcodeValueType.js +1 -0
  381. package/lib/specs/Point.d.ts +14 -0
  382. package/lib/specs/Point.js +1 -0
  383. package/lib/specs/Rect.d.ts +22 -0
  384. package/lib/specs/Rect.js +1 -0
  385. package/lib/useBarcodeScanner.d.ts +23 -0
  386. package/lib/useBarcodeScanner.js +25 -0
  387. package/nitro.json +20 -0
  388. package/nitrogen/generated/.gitattributes +1 -0
  389. package/nitrogen/generated/android/VisionCameraZxing+autolinking.cmake +83 -0
  390. package/nitrogen/generated/android/VisionCameraZxing+autolinking.gradle +27 -0
  391. package/nitrogen/generated/android/VisionCameraZxingOnLoad.cpp +49 -0
  392. package/nitrogen/generated/android/VisionCameraZxingOnLoad.hpp +34 -0
  393. package/nitrogen/generated/android/kotlin/com/margelo/nitro/camera/zxing/VisionCameraZxingOnLoad.kt +35 -0
  394. package/nitrogen/generated/ios/VisionCameraZxing+autolinking.rb +62 -0
  395. package/nitrogen/generated/ios/VisionCameraZxing-Swift-Cxx-Bridge.cpp +17 -0
  396. package/nitrogen/generated/ios/VisionCameraZxing-Swift-Cxx-Bridge.hpp +27 -0
  397. package/nitrogen/generated/ios/VisionCameraZxing-Swift-Cxx-Umbrella.hpp +38 -0
  398. package/nitrogen/generated/ios/VisionCameraZxingAutolinking.mm +35 -0
  399. package/nitrogen/generated/ios/VisionCameraZxingAutolinking.swift +16 -0
  400. package/nitrogen/generated/shared/c++/BarcodeFormat.hpp +124 -0
  401. package/nitrogen/generated/shared/c++/BarcodeScannerOptions.hpp +85 -0
  402. package/nitrogen/generated/shared/c++/BarcodeValueType.hpp +120 -0
  403. package/nitrogen/generated/shared/c++/HybridBarcodeScannerSpec.cpp +23 -0
  404. package/nitrogen/generated/shared/c++/HybridBarcodeScannerSpec.hpp +74 -0
  405. package/nitrogen/generated/shared/c++/HybridBarcodeSpec.cpp +27 -0
  406. package/nitrogen/generated/shared/c++/HybridBarcodeSpec.hpp +82 -0
  407. package/nitrogen/generated/shared/c++/HybridZXingBarcodeScannerFactorySpec.cpp +21 -0
  408. package/nitrogen/generated/shared/c++/HybridZXingBarcodeScannerFactorySpec.hpp +67 -0
  409. package/nitrogen/generated/shared/c++/Point.hpp +87 -0
  410. package/nitrogen/generated/shared/c++/Rect.hpp +95 -0
  411. package/nitrogen/generated/shared/c++/TargetBarcodeFormat.hpp +124 -0
  412. package/package.json +108 -0
  413. package/react-native.config.js +16 -0
  414. package/src/factory.ts +26 -0
  415. package/src/index.ts +9 -0
  416. package/src/specs/Barcode.nitro.ts +70 -0
  417. package/src/specs/BarcodeFormat.ts +31 -0
  418. package/src/specs/BarcodeScanner.nitro.ts +91 -0
  419. package/src/specs/BarcodeScannerFactory.nitro.ts +27 -0
  420. package/src/specs/BarcodeValueType.ts +25 -0
  421. package/src/specs/Point.ts +14 -0
  422. package/src/specs/Rect.ts +22 -0
  423. package/src/useBarcodeScanner.ts +36 -0
@@ -0,0 +1,100 @@
1
+ // Copyright 2026 Axel Waggershauser
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ #include "ReedSolomon.h"
5
+ #include "Version.h"
6
+ #include "ZXAlgorithms.h"
7
+
8
+ #include "librscpp/encode.h"
9
+ #include "librscpp/decode.h"
10
+
11
+ #include <algorithm>
12
+ #include <type_traits>
13
+ #include <stdexcept>
14
+ #include <utility>
15
+
16
+ namespace ZXing {
17
+
18
+ namespace rs = librscpp;
19
+
20
+ using GF2nI = rs::GF2n<>;
21
+
22
+ const GF2nI& GetGF2n(RSField field)
23
+ {
24
+ static GF2nI gf2n_4_1(0x0013, 1); // x^4 + x + 1
25
+ static GF2nI gf2n_6_1(0x0043, 1); // x^6 + x + 1
26
+ static GF2nI gf2n_8_5_3_2(0x012D, 1); // x^8 + x^5 + x^3 + x^2 + 1 : DataMatrix
27
+ static GF2nI gf2n_8_4_3_2(0x011D, 0); // x^8 + x^4 + x^3 + x^2 + 1 : QRCode
28
+ static GF2nI gf2n_10_3(0x0409, 1); // x^10 + x^3 + 1
29
+ static GF2nI gf2n_12_6_5_3(0x1069, 1); // x^12 + x^6 + x^5 + x^3 + 1
30
+
31
+ switch (field) {
32
+ case RSField::Aztec4: return gf2n_4_1;
33
+ case RSField::Aztec6: return gf2n_6_1;
34
+ case RSField::Aztec8: return gf2n_8_5_3_2;
35
+ case RSField::Aztec10: return gf2n_10_3;
36
+ case RSField::Aztec12: return gf2n_12_6_5_3;
37
+ case RSField::DataMatrix: return gf2n_8_5_3_2;
38
+ case RSField::MaxiCode: return gf2n_6_1;
39
+ case RSField::QRCode: return gf2n_8_4_3_2;
40
+ default: throw std::invalid_argument("Unsupported RSField");
41
+ }
42
+ }
43
+
44
+ const rs::GFp<>& GetGFPDF417()
45
+ {
46
+ static rs::GFp<> gf929_3(929, 3, 1);
47
+ return gf929_3;
48
+ }
49
+
50
+ // See ISO/IEC 15415:2024 7.5.9
51
+ static std::optional<double> UEC(std::optional<int> usedECC, int numECC)
52
+ {
53
+ return usedECC ? std::optional(std::clamp(1.0 - static_cast<double>(*usedECC) / numECC, 0.0, 1.0)) : std::nullopt;
54
+ }
55
+
56
+ #ifdef ZXING_READERS
57
+ std::optional<double> ReedSolomonDecode(RSField field, std::span<uint8_t> codeword, int numECC, std::span<const int> erasures)
58
+ {
59
+ return UEC(rs::decode(GetGF2n(field), codeword, numECC, erasures), numECC);
60
+ }
61
+
62
+ std::optional<double> ReedSolomonDecode(RSField field, std::span<int> codeword, int numECC, std::span<const int> erasures)
63
+ {
64
+ // The number of erasures may at most be numECC - 2 because leaving less than 2 parity symbols for error correction would make it
65
+ // impossible to correct or even detect any errors. See also ISO/IEC 24728-2006 5.7.2
66
+ if (Size(erasures) > numECC - 2)
67
+ return {};
68
+
69
+ #if ZXING_ENABLE_PDF417
70
+ if (field == RSField::PDF417)
71
+ return UEC(rs::decode(GetGFPDF417(), codeword, numECC, erasures), numECC);
72
+ else
73
+ #endif
74
+ return UEC(rs::decode(GetGF2n(field), codeword, numECC, erasures), numECC);
75
+ }
76
+ #endif
77
+
78
+ #ifdef ZXING_WRITERS
79
+ void ReedSolomonEncode(RSField field, std::span<const uint8_t> data, std::span<uint8_t> parity)
80
+ {
81
+ rs::encode(GetGF2n(field), data, parity);
82
+ }
83
+
84
+ void ReedSolomonEncode(RSField field, std::span<uint8_t> codeword, int numECC)
85
+ {
86
+ rs::encode_inplace(GetGF2n(field), codeword, numECC);
87
+ }
88
+
89
+ void ReedSolomonEncode(RSField field, std::span<int> codeword, int numECC)
90
+ {
91
+ #if ZXING_ENABLE_PDF417
92
+ if (field == RSField::PDF417)
93
+ return rs::encode_inplace(GetGFPDF417(), codeword, numECC);
94
+ else
95
+ #endif
96
+ rs::encode_inplace(GetGF2n(field), codeword, numECC);
97
+ }
98
+ #endif
99
+
100
+ } // namespace ZXing
@@ -0,0 +1,66 @@
1
+ // Copyright 2026 Axel Waggershauser
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ #pragma once
5
+
6
+ #include <cstdint>
7
+ #include <optional>
8
+ #include <span>
9
+ #include <stdexcept>
10
+ #include <string>
11
+
12
+ namespace ZXing {
13
+
14
+ enum class RSField
15
+ {
16
+ Aztec4,
17
+ Aztec6,
18
+ Aztec8,
19
+ Aztec10,
20
+ Aztec12,
21
+ DataMatrix,
22
+ MaxiCode,
23
+ PDF417,
24
+ QRCode
25
+ };
26
+
27
+ inline RSField GF2nAztec(int wordSize)
28
+ {
29
+ switch (wordSize) {
30
+ case 4: return RSField::Aztec4;
31
+ case 6: return RSField::Aztec6;
32
+ case 8: return RSField::Aztec8;
33
+ case 10: return RSField::Aztec10;
34
+ case 12: return RSField::Aztec12;
35
+ default: throw std::invalid_argument("Unsupported word size " + std::to_string(wordSize));
36
+ }
37
+ }
38
+
39
+ /**
40
+ * @brief ReedSolomonDecode fixes errors in a codeword containing both data and parity symbols.
41
+ *
42
+ * @param codeword data and error-correction/parity symbols; corrected in place on success
43
+ * @param numECC number of error-correction/parity symbols
44
+ * @param erasures positions of known erasures in the codeword
45
+ * @return optional unused error correction in the range [0, 1] if codeword errors could successfully be fixed (or there have not been
46
+ * any), std::nullopt otherwise
47
+ */
48
+ std::optional<double> ReedSolomonDecode(RSField field, std::span<int> codeword, int numECC, std::span<const int> erasures = {});
49
+
50
+ std::optional<double> ReedSolomonDecode(RSField field, std::span<uint8_t> codeword, int numECC,
51
+ std::span<const int> erasures = {});
52
+
53
+ /**
54
+ * @brief ReedSolomonEncode generates error correction symbols for the given data symbols.
55
+ *
56
+ * @param field The Galois field to use for encoding.
57
+ * @param data The input data symbols.
58
+ * @param parity The output buffer for the generated error correction symbols.
59
+ */
60
+ void ReedSolomonEncode(RSField field, std::span<const uint8_t> data, std::span<uint8_t> parity);
61
+
62
+ /// @brief ReedSolomonEncode replaces the last numECC symbols in codeword with parity symbols
63
+ void ReedSolomonEncode(RSField field, std::span<uint8_t> codeword, int numECC);
64
+ void ReedSolomonEncode(RSField field, std::span<int> codeword, int numECC);
65
+
66
+ } // ZXing
@@ -0,0 +1,161 @@
1
+ /*
2
+ * Copyright 2020 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include "Point.h"
9
+ #include "ZXAlgorithms.h"
10
+
11
+ #include <algorithm>
12
+ #include <cmath>
13
+ #include <vector>
14
+
15
+ #ifdef PRINT_DEBUG
16
+ #include <cstdio>
17
+ #endif
18
+
19
+ namespace ZXing {
20
+
21
+ class RegressionLine
22
+ {
23
+ protected:
24
+ std::vector<PointF> _points;
25
+ PointF _directionInward;
26
+ PointF::value_t a = NAN, b = NAN, c = NAN;
27
+
28
+ friend PointF intersect(const RegressionLine& l1, const RegressionLine& l2);
29
+
30
+ template<typename T> bool evaluate(const PointT<T>* begin, const PointT<T>* end)
31
+ {
32
+ auto mean = Reduce(begin, end, PointF()) / std::distance(begin, end);
33
+ PointF::value_t sumXX = 0, sumYY = 0, sumXY = 0;
34
+ for (auto p = begin; p != end; ++p) {
35
+ auto d = *p - mean;
36
+ sumXX += d.x * d.x;
37
+ sumYY += d.y * d.y;
38
+ sumXY += d.x * d.y;
39
+ }
40
+ if (sumYY >= sumXX) {
41
+ auto l = std::sqrt(sumYY * sumYY + sumXY * sumXY);
42
+ a = +sumYY / l;
43
+ b = -sumXY / l;
44
+ } else {
45
+ auto l = std::sqrt(sumXX * sumXX + sumXY * sumXY);
46
+ a = +sumXY / l;
47
+ b = -sumXX / l;
48
+ }
49
+ if (dot(_directionInward, normal()) < 0) {
50
+ a = -a;
51
+ b = -b;
52
+ }
53
+ c = dot(normal(), mean); // (a*mean.x + b*mean.y);
54
+ return dot(_directionInward, normal()) > 0.5f; // angle between original and new direction is at most 60 degree
55
+ }
56
+
57
+ template <typename T> bool evaluate(const std::vector<PointT<T>>& points) { return evaluate(&points.front(), &points.back() + 1); }
58
+
59
+ template <typename T> static auto distance(PointT<T> a, PointT<T> b) { return ZXing::distance(a, b); }
60
+
61
+ public:
62
+ RegressionLine() { _points.reserve(16); } // arbitrary but plausible start size (tiny performance improvement)
63
+
64
+ template<typename T> RegressionLine(PointT<T> a, PointT<T> b)
65
+ {
66
+ evaluate(std::vector{a, b});
67
+ }
68
+
69
+ template<typename T> RegressionLine(const PointT<T>* b, const PointT<T>* e)
70
+ {
71
+ evaluate(b, e);
72
+ }
73
+
74
+ const auto& points() const { return _points; }
75
+ int length() const { return _points.size() >= 2 ? int(distance(_points.front(), _points.back())) : 0; }
76
+ bool isValid() const { return !std::isnan(a); }
77
+ PointF normal() const { return isValid() ? PointF(a, b) : _directionInward; }
78
+ auto signedDistance(PointF p) const { return dot(normal(), p) - c; }
79
+ template <typename T> auto distance(PointT<T> p) const { return std::abs(signedDistance(PointF(p))); }
80
+ PointF project(PointF p) const { return p - signedDistance(p) * normal(); }
81
+ PointF centroid() const { return Reduce(_points) / _points.size(); }
82
+
83
+ void reset()
84
+ {
85
+ _points.clear();
86
+ _directionInward = {};
87
+ a = b = c = NAN;
88
+ }
89
+
90
+ void add(PointF p) {
91
+ assert(_directionInward != PointF());
92
+ _points.push_back(p);
93
+ if (_points.size() == 1)
94
+ c = dot(normal(), p);
95
+ }
96
+
97
+ void pop_back() { _points.pop_back(); }
98
+ void pop_front()
99
+ {
100
+ std::rotate(_points.begin(), _points.begin() + 1, _points.end());
101
+ _points.pop_back();
102
+ }
103
+
104
+ void setDirectionInward(PointF d) { _directionInward = normalized(d); }
105
+
106
+ bool evaluate(double maxSignedDist = -1, bool updatePoints = false)
107
+ {
108
+ bool ret = evaluate(_points);
109
+ if (maxSignedDist > 0) {
110
+ auto points = _points;
111
+ while (true) {
112
+ auto old_points_size = points.size();
113
+ // remove points that are further 'inside' than maxSignedDist or further 'outside' than 2 x maxSignedDist
114
+ std::erase_if(points, [this, maxSignedDist](auto p) {
115
+ auto sd = this->signedDistance(p);
116
+ return sd > maxSignedDist || sd < -2 * maxSignedDist;
117
+ });
118
+ // if we threw away too many points, something is off with the line to begin with
119
+ if (points.size() < old_points_size / 2 || points.size() < 2)
120
+ return false;
121
+ if (old_points_size == points.size())
122
+ break;
123
+ #ifdef PRINT_DEBUG
124
+ printf("removed %zu points -> %zu remaining\n", old_points_size - points.size(), points.size());
125
+ fflush(stdout);
126
+ #endif
127
+ ret = evaluate(points);
128
+ }
129
+
130
+ if (updatePoints)
131
+ _points = std::move(points);
132
+ }
133
+ return ret;
134
+ }
135
+
136
+ bool isHighRes() const
137
+ {
138
+ PointF min = _points.front(), max = _points.front();
139
+ for (auto p : _points) {
140
+ UpdateMinMax(min.x, max.x, p.x);
141
+ UpdateMinMax(min.y, max.y, p.y);
142
+ }
143
+ auto diff = max - min;
144
+ auto len = maxAbsComponent(diff);
145
+ auto steps = std::min(std::abs(diff.x), std::abs(diff.y));
146
+ // due to aliasing we get bad extrapolations if the line is short and too close to vertical/horizontal
147
+ return steps > 2 || len > 50;
148
+ }
149
+ };
150
+
151
+ inline PointF intersect(const RegressionLine& l1, const RegressionLine& l2)
152
+ {
153
+ assert(l1.isValid() && l2.isValid());
154
+ auto d = l1.a * l2.b - l1.b * l2.a;
155
+ auto x = (l1.c * l2.b - l1.b * l2.c) / d;
156
+ auto y = (l1.a * l2.c - l1.c * l2.a) / d;
157
+ return {x, y};
158
+ }
159
+
160
+ } // ZXing
161
+
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ * Copyright 2016 ZXing authors
4
+ */
5
+ // SPDX-License-Identifier: Apache-2.0
6
+
7
+ #include "ResultPoint.h"
8
+
9
+ #include <cmath>
10
+
11
+ namespace ZXing {
12
+
13
+ float ResultPoint::Distance(int aX, int aY, int bX, int bY)
14
+ {
15
+ auto dx = static_cast<float>(aX - bX);
16
+ auto dy = static_cast<float>(aY - bY);
17
+ return std::sqrt(dx * dx + dy * dy);
18
+ }
19
+
20
+ } // ZXing
@@ -0,0 +1,35 @@
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
+ #include "Point.h"
10
+
11
+ namespace ZXing {
12
+
13
+ /**
14
+ * <p>Encapsulates a point of interest in an image containing a barcode. Typically, this
15
+ * would be the location of a finder pattern or the corner of the barcode, for example.</p>
16
+ *
17
+ * @author Sean Owen
18
+ */
19
+ class ResultPoint : public PointF
20
+ {
21
+ public:
22
+ ResultPoint() = default;
23
+ ResultPoint(float x, float y) : PointF(x, y) {}
24
+ ResultPoint(int x, int y) : PointF(x, y) {}
25
+ template <typename T> ResultPoint(PointT<T> p) : PointF(p) {}
26
+
27
+ float x() const { return static_cast<float>(PointF::x); }
28
+ float y() const { return static_cast<float>(PointF::y); }
29
+
30
+ void set(float x, float y) { *this = PointF(x, y); }
31
+
32
+ static float Distance(int aX, int aY, int bX, int bY);
33
+ };
34
+
35
+ } // ZXing
@@ -0,0 +1,121 @@
1
+ /*
2
+ * Copyright 2026 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include <version>
9
+
10
+ #if defined(__cpp_lib_generator)
11
+
12
+ #include <generator>
13
+
14
+ #else
15
+
16
+ #include <concepts>
17
+ #include <coroutine>
18
+ #include <optional>
19
+ #include <utility>
20
+ #include <iterator>
21
+
22
+ namespace std {
23
+
24
+ template <std::movable T>
25
+ class generator
26
+ {
27
+ public:
28
+ struct promise_type
29
+ {
30
+ std::optional<T> value_;
31
+
32
+ generator get_return_object() noexcept { return generator{handle_type::from_promise(*this)}; }
33
+
34
+ static std::suspend_always initial_suspend() noexcept { return {}; }
35
+ static std::suspend_always final_suspend() noexcept { return {}; }
36
+
37
+ std::suspend_always yield_value(T&& value) noexcept
38
+ {
39
+ value_ = std::move(value);
40
+ return {};
41
+ }
42
+
43
+ static void return_void() noexcept {}
44
+ // Disallow co_await in generator coroutines.
45
+ void await_transform() = delete;
46
+ [[noreturn]] static void unhandled_exception() { throw; }
47
+ };
48
+
49
+ using handle_type = std::coroutine_handle<promise_type>;
50
+
51
+ generator() noexcept = default;
52
+ explicit generator(handle_type h) noexcept : h_(h) {}
53
+ ~generator()
54
+ {
55
+ if (h_)
56
+ h_.destroy();
57
+ }
58
+
59
+ generator(generator&& other) noexcept : h_(other.h_) { other.h_ = nullptr; }
60
+
61
+ generator& operator=(generator&& other) noexcept
62
+ {
63
+ if (this != &other) {
64
+ if (h_)
65
+ h_.destroy();
66
+ h_ = other.h_;
67
+ other.h_ = nullptr;
68
+ }
69
+ return *this;
70
+ }
71
+
72
+ generator(const generator&) = delete;
73
+ generator& operator=(const generator&) = delete;
74
+
75
+ class iterator
76
+ {
77
+ public:
78
+ void operator++() { h_.resume(); }
79
+ T&& operator*() const noexcept { return std::move(*h_.promise().value_); }
80
+ bool operator==(std::default_sentinel_t) const noexcept { return !h_ || h_.done(); }
81
+
82
+ explicit iterator(handle_type h) : h_(h) {}
83
+
84
+ private:
85
+ handle_type h_ = nullptr;
86
+ };
87
+
88
+ iterator begin()
89
+ {
90
+ if (h_)
91
+ h_.resume();
92
+ return iterator{h_};
93
+ }
94
+
95
+ std::default_sentinel_t end() noexcept { return {}; }
96
+
97
+ private:
98
+ handle_type h_;
99
+ };
100
+
101
+ } // namespace std
102
+
103
+ #endif // __cpp_lib_generator
104
+
105
+ /*
106
+ usage example:
107
+
108
+ template <std::integral T>
109
+ std::generator<T> range(T first, const T last)
110
+ {
111
+ while (first < last)
112
+ co_yield first++;
113
+ }
114
+
115
+ int main()
116
+ {
117
+ for (const char i : range(65, 91))
118
+ std::print("{} ", i);
119
+ std::println("");
120
+ }
121
+ */
@@ -0,0 +1,38 @@
1
+ /*
2
+ * Copyright 2026 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include <version>
9
+
10
+ #if defined(__cpp_lib_print) && __cpp_lib_print >= 202207L
11
+
12
+ #include <print>
13
+
14
+ #else
15
+
16
+ #include <format>
17
+ #include <cstdio>
18
+ #include <utility>
19
+
20
+ namespace std {
21
+
22
+ template <class... Args>
23
+ inline void print(std::format_string<Args...> fmt, Args&&... args)
24
+ {
25
+ auto s = std::format(fmt, std::forward<Args>(args)...);
26
+ std::fwrite(s.data(), 1, s.size(), stdout);
27
+ }
28
+
29
+ template <class... Args>
30
+ inline void println(std::format_string<Args...> fmt, Args&&... args)
31
+ {
32
+ std::print(fmt, std::forward<Args>(args)...);
33
+ std::fputc('\n', stdout);
34
+ }
35
+
36
+ } // namespace std
37
+
38
+ #endif
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright 2026 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ // idea from <experimental/scope> (library fundamentals TS v3)
9
+
10
+ #include <type_traits>
11
+ #include <utility>
12
+
13
+ namespace std {
14
+
15
+ template <class F>
16
+ class scope_exit
17
+ {
18
+ public:
19
+ explicit scope_exit(F&& f) noexcept(std::is_nothrow_move_constructible_v<F>) : func_(std::forward<F>(f)), active_(true) {}
20
+
21
+ scope_exit(scope_exit&& other) noexcept(std::is_nothrow_move_constructible_v<F>)
22
+ : func_(std::move(other.func_)), active_(std::exchange(other.active_, false))
23
+ {}
24
+
25
+ scope_exit(const scope_exit&) = delete;
26
+ scope_exit& operator=(const scope_exit&) = delete;
27
+ scope_exit& operator=(scope_exit&&) = delete;
28
+
29
+ ~scope_exit() noexcept(noexcept(std::declval<F&>()()))
30
+ {
31
+ if (active_)
32
+ func_();
33
+ }
34
+
35
+ void release() noexcept { active_ = false; }
36
+
37
+ private:
38
+ F func_;
39
+ bool active_;
40
+ };
41
+
42
+ template <class F>
43
+ scope_exit(F) -> scope_exit<F>;
44
+
45
+ } // namespace std
46
+
47
+ /**
48
+ * The SCOPE_EXIT macro is eliminating the need to give the object a name.
49
+ * Example usage:
50
+ * SCOPE_EXIT([]{ printf("exiting scope"); });
51
+ */
52
+
53
+ #define SCOPE_EXIT_CAT2(x, y) x##y
54
+ #define SCOPE_EXIT_CAT(x, y) SCOPE_EXIT_CAT2(x, y)
55
+ #define SCOPE_EXIT const auto SCOPE_EXIT_CAT(scopeExit_, __COUNTER__) = std::scope_exit
@@ -0,0 +1,19 @@
1
+ /*
2
+ * Copyright 2021 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include <string>
9
+
10
+ namespace ZXing {
11
+
12
+ struct StructuredAppendInfo
13
+ {
14
+ int index = -1;
15
+ int count = -1;
16
+ std::string id;
17
+ };
18
+
19
+ } // ZXing
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright 2026 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include "ZXAlgorithms.h"
9
+
10
+ #include <string>
11
+
12
+ namespace ZXing {
13
+
14
+ enum class AIFlag : char { None, GS1, AIM };
15
+
16
+ struct SymbologyIdentifier
17
+ {
18
+ char code = 0, modifier = 0;
19
+ signed char eciModifierOffset = 0;
20
+ AIFlag aiFlag = AIFlag::None;
21
+
22
+ std::string toString(bool hasECI = false) const
23
+ {
24
+ int modVal = (modifier >= 'A' ? modifier - 'A' + 10 : modifier - '0') + eciModifierOffset * hasECI;
25
+ return code ? StrCat(']', code, static_cast<char>((modVal >= 10 ? 'A' - 10 : '0') + modVal)) : std::string();
26
+ }
27
+ };
28
+
29
+ } // ZXing
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ * Copyright 2022 gitlost
4
+ * Copyright 2025 Axel Waggershauser
5
+ */
6
+ // SPDX-License-Identifier: Apache-2.0
7
+
8
+ #include "TextDecoder.h"
9
+
10
+ #include "ZXAlgorithms.h"
11
+ #include "libzueci/zueci.h"
12
+
13
+ #include <cassert>
14
+ #include <stdexcept>
15
+ #include <cstdio>
16
+
17
+ namespace ZXing {
18
+
19
+ std::string BytesToUtf8(ByteView bytes, ECI eci)
20
+ {
21
+ #if 0
22
+ (void)eci;
23
+ return std::string(bytes.begin(), bytes.end());
24
+ #else
25
+ constexpr unsigned int replacement = 0xFFFD;
26
+ constexpr unsigned int flags = ZUECI_FLAG_SB_STRAIGHT_THRU | ZUECI_FLAG_SJIS_STRAIGHT_THRU;
27
+ int utf8_len;
28
+
29
+ if (eci == ECI::Unknown)
30
+ eci = ECI::Binary;
31
+
32
+ int error_number = zueci_dest_len_utf8(ToInt(eci), bytes.data(), Size(bytes), replacement, flags, &utf8_len);
33
+ if (error_number >= ZUECI_ERROR) {
34
+ #ifdef PRINT_DEBUG
35
+ fprintf(stderr, "zueci_dest_len_utf8 error: %d\n", error_number);
36
+ #endif
37
+ // throw FormatError("Invalid UTF-8 data");
38
+ return {};
39
+ }
40
+
41
+ std::string utf8(utf8_len, 0);
42
+
43
+ error_number = zueci_eci_to_utf8(ToInt(eci), bytes.data(), Size(bytes), replacement, flags,
44
+ reinterpret_cast<uint8_t*>(utf8.data()), &utf8_len);
45
+ if (error_number >= ZUECI_ERROR) {
46
+ #ifdef PRINT_DEBUG
47
+ fprintf(stderr, "zueci_eci_to_utf8 error: %d\n", error_number);
48
+ #endif
49
+ // throw FormatError("Invalid UTF-8 data");
50
+ return {};
51
+ }
52
+
53
+ assert(Size(utf8) == utf8_len);
54
+
55
+ return utf8;
56
+ #endif
57
+ }
58
+
59
+ } // ZXing