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,754 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ * Copyright 2016 ZXing authors
4
+ * Copyright 2023 Axel Waggershauser
5
+ * Copyright 2023 gitlost
6
+ */
7
+ // SPDX-License-Identifier: Apache-2.0
8
+
9
+ #include "QRVersion.h"
10
+
11
+ #include "BitMatrix.h"
12
+ #include "QRECB.h"
13
+
14
+ #include <bit>
15
+ #include <limits>
16
+
17
+ namespace ZXing::QRCode {
18
+
19
+ /**
20
+ * See ISO 18004:2006 Annex D.
21
+ * Element i represents the raw version bits that specify version i + 7
22
+ */
23
+ static const int VERSION_DECODE_INFO[] = {
24
+ 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6,
25
+ 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78,
26
+ 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683,
27
+ 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB,
28
+ 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250,
29
+ 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B,
30
+ 0x2542E, 0x26A64, 0x27541, 0x28C69
31
+ };
32
+
33
+ const Version* Version::Model2(int number)
34
+ {
35
+ /**
36
+ * See ISO 18004:2006 6.5.1 Table 9
37
+ */
38
+ static const Version allVersions[] = {
39
+ {1, {}, {
40
+ 7, 1, 19, 0, 0,
41
+ 10, 1, 16, 0, 0,
42
+ 13, 1, 13, 0, 0,
43
+ 17, 1, 9 , 0, 0
44
+ }},
45
+ {2, {6, 18}, {
46
+ 10, 1, 34, 0, 0,
47
+ 16, 1, 28, 0, 0,
48
+ 22, 1, 22, 0, 0,
49
+ 28, 1, 16, 0, 0,
50
+ }},
51
+ {3, {6, 22}, {
52
+ 15, 1, 55, 0, 0,
53
+ 26, 1, 44, 0, 0,
54
+ 18, 2, 17, 0, 0,
55
+ 22, 2, 13, 0, 0,
56
+ }},
57
+ {4, {6, 26}, {
58
+ 20, 1, 80, 0, 0,
59
+ 18, 2, 32, 0, 0,
60
+ 26, 2, 24, 0, 0,
61
+ 16, 4, 9 , 0, 0,
62
+ }},
63
+ {5, {6, 30}, {
64
+ 26, 1, 108, 0, 0,
65
+ 24, 2, 43 , 0, 0,
66
+ 18, 2, 15 , 2, 16,
67
+ 22, 2, 11 , 2, 12,
68
+ }},
69
+ {6, {6, 34}, {
70
+ 18, 2, 68, 0, 0,
71
+ 16, 4, 27, 0, 0,
72
+ 24, 4, 19, 0, 0,
73
+ 28, 4, 15, 0, 0,
74
+ }},
75
+ {7, {6, 22, 38}, {
76
+ 20, 2, 78, 0, 0,
77
+ 18, 4, 31, 0, 0,
78
+ 18, 2, 14, 4, 15,
79
+ 26, 4, 13, 1, 14,
80
+ }},
81
+ {8, {6, 24, 42}, {
82
+ 24, 2, 97, 0, 0,
83
+ 22, 2, 38, 2, 39,
84
+ 22, 4, 18, 2, 19,
85
+ 26, 4, 14, 2, 15,
86
+ }},
87
+ {9, {6, 26, 46}, {
88
+ 30, 2, 116, 0, 0,
89
+ 22, 3, 36, 2, 37,
90
+ 20, 4, 16, 4, 17,
91
+ 24, 4, 12, 4, 13,
92
+ }},
93
+ {10, {6, 28, 50}, {
94
+ 18, 2, 68, 2, 69,
95
+ 26, 4, 43, 1, 44,
96
+ 24, 6, 19, 2, 20,
97
+ 28, 6, 15, 2, 16,
98
+ }},
99
+ {11, {6, 30, 54}, {
100
+ 20, 4, 81, 0, 0,
101
+ 30, 1, 50, 4, 51,
102
+ 28, 4, 22, 4, 23,
103
+ 24, 3, 12, 8, 13,
104
+ }},
105
+ {12, {6, 32, 58}, {
106
+ 24, 2, 92, 2, 93,
107
+ 22, 6, 36, 2, 37,
108
+ 26, 4, 20, 6, 21,
109
+ 28, 7, 14, 4, 15,
110
+ }},
111
+ {13, {6, 34, 62}, {
112
+ 26, 4, 107, 0, 0,
113
+ 22, 8, 37, 1, 38,
114
+ 24, 8, 20, 4, 21,
115
+ 22, 12, 11, 4, 12,
116
+ }},
117
+ {14, {6, 26, 46, 66}, {
118
+ 30, 3, 115, 1, 116,
119
+ 24, 4, 40, 5, 41,
120
+ 20, 11, 16, 5, 17,
121
+ 24, 11, 12, 5, 13,
122
+ }},
123
+ {15, {6, 26, 48, 70}, {
124
+ 22, 5, 87, 1, 88,
125
+ 24, 5, 41, 5, 42,
126
+ 30, 5, 24, 7, 25,
127
+ 24, 11, 12, 7, 13,
128
+ }},
129
+ {16, {6, 26, 50, 74}, {
130
+ 24, 5, 98, 1, 99,
131
+ 28, 7, 45, 3, 46,
132
+ 24, 15, 19, 2, 20,
133
+ 30, 3, 15, 13, 16,
134
+ }},
135
+ {17, {6, 30, 54, 78}, {
136
+ 28, 1, 107, 5, 108,
137
+ 28, 10, 46, 1, 47,
138
+ 28, 1, 22, 15, 23,
139
+ 28, 2, 14, 17, 15,
140
+ }},
141
+ {18, {6, 30, 56, 82}, {
142
+ 30, 5, 120, 1, 121,
143
+ 26, 9, 43, 4, 44,
144
+ 28, 17, 22, 1, 23,
145
+ 28, 2, 14, 19, 15,
146
+ }},
147
+ {19, {6, 30, 58, 86}, {
148
+ 28, 3, 113, 4, 114,
149
+ 26, 3, 44, 11, 45,
150
+ 26, 17, 21, 4, 22,
151
+ 26, 9, 13, 16, 14,
152
+ }},
153
+ {20, {6, 34, 62, 90}, {
154
+ 28, 3, 107, 5, 108,
155
+ 26, 3, 41, 13, 42,
156
+ 30, 15, 24, 5, 25,
157
+ 28, 15, 15, 10, 16,
158
+ }},
159
+ {21, {6, 28, 50, 72, 94}, {
160
+ 28, 4, 116, 4, 117,
161
+ 26, 17, 42, 0, 0,
162
+ 28, 17, 22, 6, 23,
163
+ 30, 19, 16, 6, 17,
164
+ }},
165
+ {22, {6, 26, 50, 74, 98}, {
166
+ 28, 2, 111, 7, 112,
167
+ 28, 17, 46, 0, 0,
168
+ 30, 7, 24, 16, 25,
169
+ 24, 34, 13, 0, 0,
170
+ }},
171
+ {23, {6, 30, 54, 78, 102}, {
172
+ 30, 4, 121, 5, 122,
173
+ 28, 4, 47, 14, 48,
174
+ 30, 11, 24, 14, 25,
175
+ 30, 16, 15, 14, 16,
176
+ }},
177
+ {24, {6, 28, 54, 80, 106}, {
178
+ 30, 6, 117, 4, 118,
179
+ 28, 6, 45, 14, 46,
180
+ 30, 11, 24, 16, 25,
181
+ 30, 30, 16, 2, 17,
182
+ }},
183
+ {25, {6, 32, 58, 84, 110}, {
184
+ 26, 8, 106, 4, 107,
185
+ 28, 8, 47, 13, 48,
186
+ 30, 7, 24, 22, 25,
187
+ 30, 22, 15, 13, 16,
188
+ }},
189
+ {26, {6, 30, 58, 86, 114}, {
190
+ 28, 10, 114, 2, 115,
191
+ 28, 19, 46, 4, 47,
192
+ 28, 28, 22, 6, 23,
193
+ 30, 33, 16, 4, 17,
194
+ }},
195
+ {27, {6, 34, 62, 90, 118}, {
196
+ 30, 8, 122, 4, 123,
197
+ 28, 22, 45, 3, 46,
198
+ 30, 8, 23, 26, 24,
199
+ 30, 12, 15, 28, 16,
200
+ }},
201
+ {28, {6, 26, 50, 74, 98, 122}, {
202
+ 30, 3, 117, 10, 118,
203
+ 28, 3, 45, 23, 46,
204
+ 30, 4, 24, 31, 25,
205
+ 30, 11, 15, 31, 16,
206
+ }},
207
+ {29, {6, 30, 54, 78, 102, 126}, {
208
+ 30, 7, 116, 7, 117,
209
+ 28, 21, 45, 7, 46,
210
+ 30, 1, 23, 37, 24,
211
+ 30, 19, 15, 26, 16,
212
+ }},
213
+ {30, {6, 26, 52, 78, 104, 130}, {
214
+ 30, 5, 115, 10, 116,
215
+ 28, 19, 47, 10, 48,
216
+ 30, 15, 24, 25, 25,
217
+ 30, 23, 15, 25, 16,
218
+ }},
219
+ {31, {6, 30, 56, 82, 108, 134}, {
220
+ 30, 13, 115, 3, 116,
221
+ 28, 2, 46, 29, 47,
222
+ 30, 42, 24, 1, 25,
223
+ 30, 23, 15, 28, 16,
224
+ }},
225
+ {32, {6, 34, 60, 86, 112, 138}, {
226
+ 30, 17, 115, 0, 0,
227
+ 28, 10, 46, 23, 47,
228
+ 30, 10, 24, 35, 25,
229
+ 30, 19, 15, 35, 16,
230
+ }},
231
+ {33, {6, 30, 58, 86, 114, 142}, {
232
+ 30, 17, 115, 1, 116,
233
+ 28, 14, 46, 21, 47,
234
+ 30, 29, 24, 19, 25,
235
+ 30, 11, 15, 46, 16,
236
+ }},
237
+ {34, {6, 34, 62, 90, 118, 146}, {
238
+ 30, 13, 115, 6, 116,
239
+ 28, 14, 46, 23, 47,
240
+ 30, 44, 24, 7, 25,
241
+ 30, 59, 16, 1, 17,
242
+ }},
243
+ {35, {6, 30, 54, 78, 102, 126, 150}, {
244
+ 30, 12, 121, 7, 122,
245
+ 28, 12, 47, 26, 48,
246
+ 30, 39, 24, 14, 25,
247
+ 30, 22, 15, 41, 16,
248
+ }},
249
+ {36, {6, 24, 50, 76, 102, 128, 154}, {
250
+ 30, 6, 121, 14, 122,
251
+ 28, 6, 47, 34, 48,
252
+ 30, 46, 24, 10, 25,
253
+ 30, 2, 15, 64, 16,
254
+ }},
255
+ {37, {6, 28, 54, 80, 106, 132, 158}, {
256
+ 30, 17, 122, 4, 123,
257
+ 28, 29, 46, 14, 47,
258
+ 30, 49, 24, 10, 25,
259
+ 30, 24, 15, 46, 16,
260
+ }},
261
+ {38, {6, 32, 58, 84, 110, 136, 162}, {
262
+ 30, 4, 122, 18, 123,
263
+ 28, 13, 46, 32, 47,
264
+ 30, 48, 24, 14, 25,
265
+ 30, 42, 15, 32, 16,
266
+ }},
267
+ {39, {6, 26, 54, 82, 110, 138, 166}, {
268
+ 30, 20, 117, 4, 118,
269
+ 28, 40, 47, 7, 48,
270
+ 30, 43, 24, 22, 25,
271
+ 30, 10, 15, 67, 16,
272
+ }},
273
+ {40, {6, 30, 58, 86, 114, 142, 170}, {
274
+ 30, 19, 118, 6, 119,
275
+ 28, 18, 47, 31, 48,
276
+ 30, 34, 24, 34, 25,
277
+ 30, 20, 15, 61, 16
278
+ }},
279
+ };
280
+
281
+ if (number < 1 || number > 40)
282
+ return nullptr;
283
+ return allVersions + number - 1;
284
+ }
285
+
286
+ const Version* Version::Micro(int number)
287
+ {
288
+ /**
289
+ * See ISO 18004:2006 6.5.1 Table 9
290
+ */
291
+ static const Version allVersions[] = {
292
+ {1, {2, 1, 3, 0, 0}},
293
+ {2, {5, 1, 5, 0, 0, 6, 1, 4, 0, 0}},
294
+ {3, {6, 1, 11, 0, 0, 8, 1, 9, 0, 0}},
295
+ {4, {8, 1, 16, 0, 0, 10, 1, 14, 0, 0, 14, 1, 10, 0, 0}}};
296
+
297
+ if (number < 1 || number > 4)
298
+ return nullptr;
299
+ return allVersions + number - 1;
300
+ }
301
+
302
+ const Version* Version::rMQR(int number)
303
+ {
304
+ /**
305
+ * See ISO/IEC 23941:2022 Annex D, Table D.1 - Column coordinates of centre module of alignment patterns
306
+ * See ISO/IEC 23941:2022 7.5.1, Table 8 - Error correction characteristics for rMQR
307
+ */
308
+ static const Version allVersions[] = {
309
+ // Version number, alignment pattern centres, `ECBlocks`
310
+ { 1, {21}, { // R7x43
311
+ // 4 `ECBlocks`, one for each `ecLevel` - rMQR only uses M & H but using 2 dummies to keep `ecLevel` index same as QR Code
312
+ // Each begins with no. of error correction codewords divided by no. of error correction blocks, followed by 2 `ECBlock`s
313
+ // Each `ECBlock` begins with no. of error correction blocks followed by no. of data codewords per block
314
+ 0, 0, 0, 0, 0, // L (dummy) - also used to differentiate rMQR from Model2 in `Version::Version()`
315
+ 7, 1, 6, 0, 0, // M
316
+ 0, 0, 0, 0, 0, // Q (dummy)
317
+ 10, 1, 3, 0, 0, // H
318
+ }},
319
+ { 2, {19, 39}, { // R7x59
320
+ 0, 0, 0, 0, 0,
321
+ 9, 1, 12, 0, 0,
322
+ 0, 0, 0, 0, 0,
323
+ 14, 1, 7, 0, 0,
324
+ }},
325
+ { 3, {25, 51}, { // R7x77
326
+ 0, 0, 0, 0, 0,
327
+ 12, 1, 20, 0, 0,
328
+ 0, 0, 0, 0, 0,
329
+ 22, 1, 10, 0, 0,
330
+ }},
331
+ { 4, {23, 49, 75}, { // R7x99
332
+ 0, 0, 0, 0, 0,
333
+ 16, 1, 28, 0, 0,
334
+ 0, 0, 0, 0, 0,
335
+ 30, 1, 14, 0, 0,
336
+ }},
337
+ { 5, {27, 55, 83, 111}, { // R7x139
338
+ 0, 0, 0, 0, 0,
339
+ 24, 1, 44, 0, 0,
340
+ 0, 0, 0, 0, 0,
341
+ 22, 2, 12, 0, 0,
342
+ }},
343
+ { 6, {21}, { // R9x43
344
+ 0, 0, 0, 0, 0,
345
+ 9, 1, 12, 0, 0,
346
+ 0, 0, 0, 0, 0,
347
+ 14, 1, 7, 0, 0,
348
+ }},
349
+ { 7, {19, 39}, { // R9x59
350
+ 0, 0, 0, 0, 0,
351
+ 12, 1, 21, 0, 0,
352
+ 0, 0, 0, 0, 0,
353
+ 22, 1, 11, 0, 0,
354
+ }},
355
+ { 8, {25, 51}, { // R9x77
356
+ 0, 0, 0, 0, 0,
357
+ 18, 1, 31, 0, 0,
358
+ 0, 0, 0, 0, 0,
359
+ 16, 1, 8, 1, 9,
360
+ }},
361
+ { 9, {23, 49, 75}, { // R9x99
362
+ 0, 0, 0, 0, 0,
363
+ 24, 1, 42, 0, 0,
364
+ 0, 0, 0, 0, 0,
365
+ 22, 2, 11, 0, 0,
366
+ }},
367
+ {10, {27, 55, 83, 111}, { // R9x139
368
+ 0, 0, 0, 0, 0,
369
+ 18, 1, 31, 1, 32,
370
+ 0, 0, 0, 0, 0,
371
+ 22, 3, 11, 0, 0,
372
+ }},
373
+ {11, {}, { // R11x27
374
+ 0, 0, 0, 0, 0,
375
+ 8, 1, 7, 0, 0,
376
+ 0, 0, 0, 0, 0,
377
+ 10, 1, 5, 0, 0,
378
+ }},
379
+ {12, {21}, { // R11x43
380
+ 0, 0, 0, 0, 0,
381
+ 12, 1, 19, 0, 0,
382
+ 0, 0, 0, 0, 0,
383
+ 20, 1, 11, 0, 0,
384
+ }},
385
+ {13, {19, 39}, { // R11x59
386
+ 0, 0, 0, 0, 0,
387
+ 16, 1, 31, 0, 0,
388
+ 0, 0, 0, 0, 0,
389
+ 16, 1, 7, 1, 8,
390
+ }},
391
+ {14, {25, 51}, { // R11x77
392
+ 0, 0, 0, 0, 0,
393
+ 24, 1, 43, 0, 0,
394
+ 0, 0, 0, 0, 0,
395
+ 22, 1, 11, 1, 12,
396
+ }},
397
+ {15, {23, 49, 75}, { // R11x99
398
+ 0, 0, 0, 0, 0,
399
+ 16, 1, 28, 1, 29,
400
+ 0, 0, 0, 0, 0,
401
+ 30, 1, 14, 1, 15,
402
+ }},
403
+ {16, {27, 55, 83, 111}, { // R11x139
404
+ 0, 0, 0, 0, 0,
405
+ 24, 2, 42, 0, 0,
406
+ 0, 0, 0, 0, 0,
407
+ 30, 3, 14, 0, 0,
408
+ }},
409
+ {17, {}, { // R13x27
410
+ 0, 0, 0, 0, 0,
411
+ 9, 1, 12, 0, 0,
412
+ 0, 0, 0, 0, 0,
413
+ 14, 1, 7, 0, 0,
414
+ }},
415
+ {18, {21}, { // R13x43
416
+ 0, 0, 0, 0, 0,
417
+ 14, 1, 27, 0, 0,
418
+ 0, 0, 0, 0, 0,
419
+ 28, 1, 13, 0, 0,
420
+ }},
421
+ {19, {19, 39}, { // R13x59
422
+ 0, 0, 0, 0, 0,
423
+ 22, 1, 38, 0, 0,
424
+ 0, 0, 0, 0, 0,
425
+ 20, 2, 10, 0, 0,
426
+ }},
427
+ {20, {25, 51}, { // R13x77
428
+ 0, 0, 0, 0, 0,
429
+ 16, 1, 26, 1, 27,
430
+ 0, 0, 0, 0, 0,
431
+ 28, 1, 14, 1, 15,
432
+ }},
433
+ {21, {23, 49, 75}, { // R13x99
434
+ 0, 0, 0, 0, 0,
435
+ 20, 1, 36, 1, 37,
436
+ 0, 0, 0, 0, 0,
437
+ 26, 1, 11, 2, 12,
438
+ }},
439
+ {22, {27, 55, 83, 111}, { // R13x139
440
+ 0, 0, 0, 0, 0,
441
+ 20, 2, 35, 1, 36,
442
+ 0, 0, 0, 0, 0,
443
+ 28, 2, 13, 2, 14,
444
+ }},
445
+ {23, {21}, { // R15x43
446
+ 0, 0, 0, 0, 0,
447
+ 18, 1, 33, 0, 0,
448
+ 0, 0, 0, 0, 0,
449
+ 18, 1, 7, 1, 8,
450
+ }},
451
+ {24, {19, 39}, { // R15x59
452
+ 0, 0, 0, 0, 0,
453
+ 26, 1, 48, 0, 0,
454
+ 0, 0, 0, 0, 0,
455
+ 24, 2, 13, 0, 0,
456
+ }},
457
+ {25, {25, 51}, { // R15x77
458
+ 0, 0, 0, 0, 0,
459
+ 18, 1, 33, 1, 34,
460
+ 0, 0, 0, 0, 0,
461
+ 24, 2, 10, 1, 11,
462
+ }},
463
+ {26, {23, 49, 75}, { // R15x99
464
+ 0, 0, 0, 0, 0,
465
+ 24, 2, 44, 0, 0,
466
+ 0, 0, 0, 0, 0,
467
+ 22, 4, 12, 0, 0,
468
+ }},
469
+ {27, {27, 55, 83, 111}, { // R15x139
470
+ 0, 0, 0, 0, 0,
471
+ 24, 2, 42, 1, 43,
472
+ 0, 0, 0, 0, 0,
473
+ 26, 1, 13, 4, 14,
474
+ }},
475
+ {28, {21}, { // R17x43
476
+ 0, 0, 0, 0, 0,
477
+ 22, 1, 39, 0, 0,
478
+ 0, 0, 0, 0, 0,
479
+ 20, 1, 10, 1, 11,
480
+ }},
481
+ {29, {19, 39}, { // R17x59
482
+ 0, 0, 0, 0, 0,
483
+ 16, 2, 28, 0, 0,
484
+ 0, 0, 0, 0, 0,
485
+ 30, 2, 14, 0, 0,
486
+ }},
487
+ {30, {25, 51}, { // R17x77
488
+ 0, 0, 0, 0, 0,
489
+ 22, 2, 39, 0, 0,
490
+ 0, 0, 0, 0, 0,
491
+ 28, 1, 12, 2, 13,
492
+ }},
493
+ {31, {23, 49, 75}, { // R17x99
494
+ 0, 0, 0, 0, 0,
495
+ 20, 2, 33, 1, 34,
496
+ 0, 0, 0, 0, 0,
497
+ 26, 4, 14, 0, 0,
498
+ }},
499
+ {32, {27, 55, 83, 111}, { // R17x139
500
+ 0, 0, 0, 0, 0,
501
+ 20, 4, 38, 0, 0,
502
+ 0, 0, 0, 0, 0,
503
+ 26, 2, 12, 4, 13,
504
+ }},
505
+ };
506
+
507
+ if (number < 1 || number > Size(allVersions))
508
+ return nullptr;
509
+ return allVersions + number - 1;
510
+ }
511
+
512
+ const Version* Version::Model1(int number)
513
+ {
514
+ /**
515
+ * See ISO 18004:2000 M.4.2 Table M.2
516
+ * See ISO 18004:2000 M.5 Table M.4
517
+ */
518
+ static const Version allVersions[] = {
519
+ {1, {
520
+ 7 , 1, 19, 0, 0,
521
+ 10, 1, 16, 0, 0,
522
+ 13, 1, 13, 0, 0,
523
+ 17, 1, 9 , 0, 0
524
+ }},
525
+ {2, {
526
+ 10, 1, 36, 0, 0,
527
+ 16, 1, 30, 0, 0,
528
+ 22, 1, 24, 0, 0,
529
+ 30, 1, 16, 0, 0,
530
+ }},
531
+ {3, {
532
+ 15, 1, 57, 0, 0,
533
+ 28, 1, 44, 0, 0,
534
+ 36, 1, 36, 0, 0,
535
+ 48, 1, 24, 0, 0,
536
+ }},
537
+ {4, {
538
+ 20, 1, 80, 0, 0,
539
+ 40, 1, 60, 0, 0,
540
+ 50, 1, 50, 0, 0,
541
+ 66, 1, 34, 0, 0,
542
+ }},
543
+ {5, {
544
+ 26, 1, 108, 0, 0,
545
+ 52, 1, 82 , 0, 0,
546
+ 66, 1, 68 , 0, 0,
547
+ 44, 2, 23 , 0, 0,
548
+ }},
549
+ {6, {
550
+ 34, 1, 136, 0, 0,
551
+ 32, 2, 53 , 0, 0,
552
+ 42, 2, 43 , 0, 0,
553
+ 56, 2, 29 , 0, 0,
554
+ }},
555
+ {7, {
556
+ 42, 1, 170, 0, 0,
557
+ 40, 2, 66 , 0, 0,
558
+ 52, 2, 54 , 0, 0,
559
+ 46, 3, 24 , 0, 0,
560
+ }},
561
+ {8, {
562
+ 24, 2, 104, 0, 0,
563
+ 48, 2, 80 , 0, 0,
564
+ 64, 2, 64 , 0, 0,
565
+ 56, 3, 29 , 0, 0,
566
+ }},
567
+ {9, {
568
+ 30, 2, 123, 0, 0,
569
+ 60, 2, 93 , 0, 0,
570
+ 50, 3, 52 , 0, 0,
571
+ 68, 3, 34 , 0, 0,
572
+ }},
573
+ {10, {
574
+ 34, 2, 145, 0, 0,
575
+ 68, 2, 111, 0, 0,
576
+ 58, 3, 61 , 0, 0,
577
+ 58, 4, 31 , 0, 0,
578
+ }},
579
+ {11, {
580
+ 40, 2, 168, 0, 0,
581
+ 40, 4, 64 , 0, 0,
582
+ 52, 4, 52 , 0, 0,
583
+ 54, 5, 29 , 0, 0,
584
+ }},
585
+ {12, {
586
+ 46, 2, 192, 0, 0,
587
+ 46, 4, 73 , 0, 0,
588
+ 58, 4, 61 , 0, 0,
589
+ 62, 5, 33 , 0, 0,
590
+ }},
591
+ {13, {
592
+ 36, 3, 144, 0, 0,
593
+ 52, 4, 83 , 0, 0,
594
+ 66, 4, 69 , 0, 0,
595
+ 58, 6, 32 , 0, 0,
596
+ }},
597
+ {14, {
598
+ 40, 3, 163, 0, 0,
599
+ 60, 4, 92 , 0, 0,
600
+ 60, 5, 62 , 0, 0,
601
+ 66, 6, 35 , 0, 0,
602
+ }},
603
+ };
604
+
605
+ if (number < 1 || number > 14)
606
+ return nullptr;
607
+ return allVersions + number - 1;
608
+ }
609
+
610
+ Version::Version(int versionNumber, std::initializer_list<int> alignmentPatternCenters, const std::array<ECBlocks, 4>& ecBlocks)
611
+ : _versionNumber(versionNumber), _alignmentPatternCenters(alignmentPatternCenters), _ecBlocks(ecBlocks),
612
+ _type(ecBlocks[0].codewordsPerBlock == 0 ? Type::rMQR : Type::Model2)
613
+ {
614
+ _totalCodewords = ecBlocks[1].totalDataCodewords(); // Use 1 (M) as 0 dummy for rMQR
615
+ }
616
+
617
+ Version::Version(int versionNumber, const std::array<ECBlocks, 4>& ecBlocks)
618
+ : _versionNumber(versionNumber),
619
+ _ecBlocks(ecBlocks),
620
+ _type(ecBlocks[0].codewordsPerBlock < 7 || ecBlocks[0].codewordsPerBlock == 8 ? Type::Micro : Type::Model1)
621
+ {
622
+ _totalCodewords = ecBlocks[0].totalDataCodewords();
623
+ }
624
+
625
+ bool Version::HasValidSize(const BitMatrix& bitMatrix, Type type)
626
+ {
627
+ return IsValidSize(PointI{bitMatrix.width(), bitMatrix.height()}, type);
628
+ }
629
+
630
+ int Version::Number(const BitMatrix& bitMatrix)
631
+ {
632
+ return Number(PointI{bitMatrix.width(), bitMatrix.height()});
633
+ }
634
+
635
+ const Version* Version::DecodeVersionInformation(int versionBitsA, int versionBitsB)
636
+ {
637
+ int bestDifference = std::numeric_limits<int>::max();
638
+ int bestVersion = 0;
639
+ int i = 0;
640
+ for (int targetVersion : VERSION_DECODE_INFO) {
641
+ for (unsigned bits : {versionBitsA, versionBitsB}) {
642
+ int bitsDifference = std::popcount(bits ^ targetVersion);
643
+ if (bitsDifference < bestDifference) {
644
+ bestVersion = i + 7;
645
+ bestDifference = bitsDifference;
646
+ }
647
+ }
648
+ if (bestDifference == 0)
649
+ break;
650
+ ++i;
651
+ }
652
+ // We can tolerate up to 3 bits of error since no two version info codewords will
653
+ // differ in less than 8 bits.
654
+ if (bestDifference <= 3)
655
+ return Model2(bestVersion);
656
+
657
+ // If we didn't find a close enough match, fail
658
+ return nullptr;
659
+ }
660
+
661
+ /**
662
+ * See ISO 18004:2006 Annex E
663
+ */
664
+ BitMatrix Version::buildFunctionPattern() const
665
+ {
666
+ if (isRMQR()) {
667
+ PointI size = Version::SymbolSize(versionNumber(), Type::rMQR);
668
+ BitMatrix bitMatrix(size.x, size.y);
669
+
670
+ // Set edge timing patterns
671
+ bitMatrix.setRegion(0, 0, size.x, 1); // Top
672
+ bitMatrix.setRegion(0, size.y - 1, size.x, 1); // Bottom
673
+ bitMatrix.setRegion(0, 1, 1, size.y - 2); // Left
674
+ bitMatrix.setRegion(size.x - 1, 1, 1, size.y - 2); // Right
675
+
676
+ // Set vertical timing and alignment patterns
677
+ size_t max = _alignmentPatternCenters.size(); // Same as vertical timing column
678
+ for (size_t x = 0; x < max; ++x) {
679
+ int cx = _alignmentPatternCenters[x];
680
+ bitMatrix.setRegion(cx - 1, 1, 3, 2); // Top alignment pattern
681
+ bitMatrix.setRegion(cx - 1, size.y - 3, 3, 2); // Bottom alignment pattern
682
+ bitMatrix.setRegion(cx, 3, 1, size.y - 6); // Vertical timing pattern
683
+ }
684
+
685
+ // Top left finder pattern + separator
686
+ bitMatrix.setRegion(1, 1, 8 - 1, 8 - 1 - (size.y == 7)); // R7 finder bottom flush with edge
687
+ // Top left format
688
+ bitMatrix.setRegion(8, 1, 3, 5);
689
+ bitMatrix.setRegion(11, 1, 1, 3);
690
+
691
+ // Bottom right finder subpattern
692
+ bitMatrix.setRegion(size.x - 5, size.y - 5, 5 - 1, 5 - 1);
693
+ // Bottom right format
694
+ bitMatrix.setRegion(size.x - 8, size.y - 6, 3, 5);
695
+ bitMatrix.setRegion(size.x - 5, size.y - 6, 3, 1);
696
+
697
+ // Top right corner finder
698
+ bitMatrix.set(size.x - 2, 1);
699
+ if (size.y > 9) {
700
+ // Bottom left corner finder
701
+ bitMatrix.set(1, size.y - 2);
702
+ }
703
+
704
+ return bitMatrix;
705
+ }
706
+
707
+ int dimension = this->dimension();
708
+ BitMatrix bitMatrix(dimension, dimension);
709
+
710
+ // Top left finder pattern + separator + format
711
+ bitMatrix.setRegion(0, 0, 9, 9);
712
+
713
+ if (!isMicro()) {
714
+ // Top right finder pattern + separator + format
715
+ bitMatrix.setRegion(dimension - 8, 0, 8, 9);
716
+ // Bottom left finder pattern + separator + format
717
+ bitMatrix.setRegion(0, dimension - 8, 9, 8);
718
+
719
+ // Alignment patterns
720
+ size_t max = _alignmentPatternCenters.size();
721
+ for (size_t x = 0; x < max; ++x) {
722
+ int i = _alignmentPatternCenters[x] - 2;
723
+ for (size_t y = 0; y < max; ++y) {
724
+ if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) {
725
+ // No alignment patterns near the three finder patterns
726
+ continue;
727
+ }
728
+ bitMatrix.setRegion(_alignmentPatternCenters[y] - 2, i, 5, 5);
729
+ }
730
+ }
731
+
732
+ // Vertical timing pattern
733
+ bitMatrix.setRegion(6, 9, 1, dimension - 17);
734
+ // Horizontal timing pattern
735
+ bitMatrix.setRegion(9, 6, dimension - 17, 1);
736
+
737
+ if (_versionNumber > 6) {
738
+ // Version info, top right
739
+ bitMatrix.setRegion(dimension - 11, 0, 3, 6);
740
+ // Version info, bottom left
741
+ bitMatrix.setRegion(0, dimension - 11, 6, 3);
742
+ }
743
+ } else {
744
+ // Vertical timing pattern
745
+ bitMatrix.setRegion(9, 0, dimension - 9, 1);
746
+
747
+ // Horizontal timing pattern
748
+ bitMatrix.setRegion(0, 9, 1, dimension - 9);
749
+ }
750
+
751
+ return bitMatrix;
752
+ }
753
+
754
+ } // namespace ZXing::QRCode