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
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # react-native-nitro-zxing
2
+
3
+ A [VisionCamera](https://github.com/mrousavy/react-native-vision-camera) v5 barcode scanner powered by [zxing-cpp](https://github.com/zxing-cpp/zxing-cpp), implemented as pure C++ Nitro HybridObjects. Frames are decoded straight from the camera's pixel buffer (Y plane, zero-copy) - no ML Kit, no base64, no temporary files.
4
+
5
+ ```sh
6
+ npm install react-native-nitro-zxing react-native-nitro-image
7
+ ```
8
+
9
+ Requires VisionCamera Core, Nitro Modules and Nitro Image. For frame processors also install `react-native-vision-camera-worklets` and `react-native-worklets`.
10
+
11
+ ```ts
12
+ import { useBarcodeScanner } from 'react-native-nitro-zxing'
13
+
14
+ const scanner = useBarcodeScanner({ barcodeFormats: ['all-formats'] })
15
+ const frameOutput = useFrameOutput({
16
+ pixelFormat: 'yuv',
17
+ onFrame(frame) {
18
+ 'worklet'
19
+ const barcodes = scanner.scanCodes(frame)
20
+ frame.dispose()
21
+ console.log(barcodes.map((b) => `${b.format}: ${b.displayValue}`))
22
+ },
23
+ })
24
+ ```
25
+
26
+ Still images: `await scanner.scanCodesInImageAsync(image)` with a Nitro `Image`.
27
+
28
+ ## Building from source
29
+
30
+ zxing-cpp is vendored as a git submodule at `cpp/zxing-core`. When cloning the repository run `git submodule update --init`; the npm package already contains the sources.
31
+
32
+ ## Coordinates
33
+
34
+ `Barcode.cornerPoints` / `boundingBox` are in the upright (rotated by `Frame.orientation`) frame coordinate system, matching `react-native-vision-camera-barcode-scanner`.
@@ -0,0 +1,48 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "VisionCameraZxing"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+
13
+ s.platforms = { :ios => min_ios_version_supported, :visionos => 1.0 }
14
+ s.source = { :git => "https://github.com/margelo/react-native-vision-camera-zxing.git", :tag => "v#{s.version}" }
15
+
16
+ s.source_files = [
17
+ # Autolinking/Registration (Objective-C++)
18
+ "ios/**/*.{m,mm}",
19
+ # Implementation (C++ objects)
20
+ "cpp/*.{hpp,cpp}",
21
+ # zxing-cpp readers (git submodule)
22
+ "cpp/zxing-core/core/src/**/*.{h,c,cpp}",
23
+ ]
24
+ s.exclude_files = [
25
+ "cpp/zxing-core/core/src/libzint/**",
26
+ "cpp/zxing-core/core/src/ZXingC.cpp",
27
+ ]
28
+ s.private_header_files = [
29
+ "cpp/*.hpp",
30
+ "cpp/zxing-core/core/src/**/*.h",
31
+ ]
32
+ s.compiler_flags = "-DZXING_INTERNAL -Wno-comma"
33
+ s.pod_target_xcconfig = {
34
+ "HEADER_SEARCH_PATHS" => '"$(PODS_TARGET_SRCROOT)/cpp/zxing-core/core/src" "$(PODS_TARGET_SRCROOT)/cpp/zxing-core/wrappers/ios/Sources/Wrapper"',
35
+ # Header maps resolve by basename across all pods (e.g. React's Point.h or another
36
+ # barcode pod's BarcodeFormat.hpp would shadow ours); use the search paths above instead.
37
+ "USE_HEADERMAP" => "NO",
38
+ }
39
+
40
+ load 'nitrogen/generated/ios/VisionCameraZxing+autolinking.rb'
41
+ add_nitrogen_files(s)
42
+
43
+ s.dependency 'VisionCamera'
44
+ s.dependency 'NitroImage'
45
+ s.dependency 'React-jsi'
46
+ s.dependency 'React-callinvoker'
47
+ install_modules_dependencies(s)
48
+ end
@@ -0,0 +1,43 @@
1
+ project(VisionCameraZxing)
2
+ cmake_minimum_required(VERSION 3.16.0)
3
+
4
+ set (PACKAGE_NAME VisionCameraZxing)
5
+ set (CMAKE_VERBOSE_MAKEFILE ON)
6
+ set (CMAKE_CXX_STANDARD 20)
7
+
8
+ # zxing-cpp readers only, as a static archive linked into our shared library
9
+ set (ZXING_READERS ON)
10
+ set (ZXING_WRITERS OFF)
11
+ set (BUILD_SHARED_LIBS OFF)
12
+ add_subdirectory(${CMAKE_SOURCE_DIR}/../cpp/zxing-core/core ${CMAKE_BINARY_DIR}/zxing-core EXCLUDE_FROM_ALL)
13
+
14
+ file(GLOB SHARED_CPP_SOURCES CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/../cpp/*.cpp")
15
+
16
+ # Define C++ library and add all sources
17
+ add_library(${PACKAGE_NAME} SHARED
18
+ src/main/cpp/cpp-adapter.cpp
19
+ ${SHARED_CPP_SOURCES}
20
+ )
21
+
22
+ # Add Nitrogen specs :)
23
+ include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/VisionCameraZxing+autolinking.cmake)
24
+
25
+ # Set up local includes
26
+ include_directories(
27
+ "src/main/cpp"
28
+ "../cpp"
29
+ )
30
+
31
+ find_library(LOG_LIB log)
32
+ find_package(react-native-vision-camera REQUIRED) # <-- for the HybridFrameSpec
33
+ find_package(react-native-nitro-image REQUIRED) # <-- for the HybridImageSpec
34
+
35
+ # Link all libraries together
36
+ target_link_libraries(
37
+ ${PACKAGE_NAME}
38
+ ${LOG_LIB}
39
+ android # <-- Android core
40
+ ZXing::ZXing
41
+ react-native-vision-camera::VisionCamera
42
+ react-native-nitro-image::NitroImage
43
+ )
@@ -0,0 +1,150 @@
1
+ buildscript {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ }
6
+
7
+ dependencies {
8
+ classpath "com.android.tools.build:gradle:9.2.1"
9
+ }
10
+ }
11
+
12
+
13
+ def reactNativeArchitectures() {
14
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
15
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
16
+ }
17
+
18
+ def isNewArchitectureEnabled() {
19
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
20
+ }
21
+
22
+ apply plugin: "com.android.library"
23
+ apply plugin: 'org.jetbrains.kotlin.android'
24
+ apply from: '../nitrogen/generated/android/VisionCameraZxing+autolinking.gradle'
25
+ apply from: "./fix-prefab.gradle"
26
+
27
+ if (isNewArchitectureEnabled()) {
28
+ apply plugin: "com.facebook.react"
29
+ }
30
+
31
+ def getExtOrDefault(name) {
32
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["VisionCameraZxing_" + name]
33
+ }
34
+
35
+ def getExtOrIntegerDefault(name) {
36
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["VisionCameraZxing_" + name]).toInteger()
37
+ }
38
+
39
+ android {
40
+ namespace "com.margelo.nitro.camera.zxing"
41
+
42
+ ndkVersion getExtOrDefault("ndkVersion")
43
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
44
+
45
+ defaultConfig {
46
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
47
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
48
+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
49
+
50
+ externalNativeBuild {
51
+ cmake {
52
+ cppFlags "-frtti -fexceptions -Wall -Wextra -fstack-protector-all"
53
+ arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
54
+ abiFilters (*reactNativeArchitectures())
55
+
56
+ buildTypes {
57
+ debug {
58
+ cppFlags "-O1 -g"
59
+ }
60
+ release {
61
+ cppFlags "-O2"
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ externalNativeBuild {
69
+ cmake {
70
+ path "CMakeLists.txt"
71
+ }
72
+ }
73
+
74
+ packagingOptions {
75
+ excludes = [
76
+ "META-INF",
77
+ "META-INF/**",
78
+ "**/libc++_shared.so",
79
+ "**/libNitroModules.so",
80
+ "**/libfbjni.so",
81
+ "**/libjsi.so",
82
+ "**/libfolly_json.so",
83
+ "**/libfolly_runtime.so",
84
+ "**/libglog.so",
85
+ "**/libhermes.so",
86
+ "**/libhermes-executor-debug.so",
87
+ "**/libhermes_executor.so",
88
+ "**/libreactnative.so",
89
+ "**/libreactnativejni.so",
90
+ "**/libturbomodulejsijni.so",
91
+ "**/libreact_nativemodule_core.so",
92
+ "**/libjscexecutor.so"
93
+ ]
94
+ }
95
+
96
+ buildFeatures {
97
+ buildConfig true
98
+ prefab true
99
+ }
100
+
101
+ buildTypes {
102
+ release {
103
+ minifyEnabled false
104
+ }
105
+ }
106
+
107
+ lintOptions {
108
+ disable "GradleCompatible"
109
+ }
110
+
111
+ compileOptions {
112
+ sourceCompatibility JavaVersion.VERSION_1_8
113
+ targetCompatibility JavaVersion.VERSION_1_8
114
+ }
115
+
116
+ sourceSets {
117
+ main {
118
+ if (isNewArchitectureEnabled()) {
119
+ java.srcDirs += [
120
+ // React Codegen files
121
+ "${project.buildDir}/generated/source/codegen/java"
122
+ ]
123
+ }
124
+ }
125
+ }
126
+ }
127
+
128
+ repositories {
129
+ mavenCentral()
130
+ google()
131
+ }
132
+
133
+
134
+ dependencies {
135
+ // For < 0.71, this will be from the local maven repo
136
+ // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
137
+ //noinspection GradleDynamicVersion
138
+ implementation "com.facebook.react:react-native:+"
139
+
140
+
141
+
142
+ // Add a dependency on NitroModules
143
+ implementation project(":react-native-nitro-modules")
144
+
145
+ // Add a dependency on VisionCamera (for HybridFrameSpec and HybridCameraOutputSpec)
146
+ implementation project(":react-native-vision-camera")
147
+
148
+ // Add a dependency on NitroImage (for HybridImageSpec)
149
+ implementation project(":react-native-nitro-image")
150
+ }
@@ -0,0 +1,51 @@
1
+ tasks.configureEach { task ->
2
+ // Make sure that we generate our prefab publication file only after having built the native library
3
+ // so that not a header publication file, but a full configuration publication will be generated, which
4
+ // will include the .so file
5
+
6
+ def prefabConfigurePattern = ~/^prefab(.+)ConfigurePackage$/
7
+ def matcher = task.name =~ prefabConfigurePattern
8
+ if (matcher.matches()) {
9
+ def variantName = matcher[0][1]
10
+ task.outputs.upToDateWhen { false }
11
+ task.dependsOn("externalNativeBuild${variantName}")
12
+ }
13
+ }
14
+
15
+ afterEvaluate {
16
+ def abis = reactNativeArchitectures()
17
+ rootProject.allprojects.each { proj ->
18
+ if (proj === rootProject) return
19
+
20
+ def dependsOnThisLib = proj.configurations.findAll { it.canBeResolved }.any { config ->
21
+ config.dependencies.any { dep ->
22
+ dep.group == project.group && dep.name == project.name
23
+ }
24
+ }
25
+ if (!dependsOnThisLib && proj != project) return
26
+
27
+ if (!proj.plugins.hasPlugin('com.android.application') && !proj.plugins.hasPlugin('com.android.library')) {
28
+ return
29
+ }
30
+
31
+ def variants = proj.android.hasProperty('applicationVariants') ? proj.android.applicationVariants : proj.android.libraryVariants
32
+ // Touch the prefab_config.json files to ensure that in ExternalNativeJsonGenerator.kt we will re-trigger the prefab CLI to
33
+ // generate a libnameConfig.cmake file that will contain our native library (.so).
34
+ // See this condition: https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/ExternalNativeJsonGenerator.kt;l=207-219?q=createPrefabBuildSystemGlue
35
+ variants.all { variant ->
36
+ def variantName = variant.name
37
+ abis.each { abi ->
38
+ def searchDir = new File(proj.projectDir, ".cxx/${variantName}")
39
+ if (!searchDir.exists()) return
40
+ def matches = []
41
+ searchDir.eachDir { randomDir ->
42
+ def prefabFile = new File(randomDir, "${abi}/prefab_config.json")
43
+ if (prefabFile.exists()) matches << prefabFile
44
+ }
45
+ matches.each { prefabConfig ->
46
+ prefabConfig.setLastModified(System.currentTimeMillis())
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,5 @@
1
+ VisionCameraZxing_kotlinVersion=2.2.21
2
+ VisionCameraZxing_minSdkVersion=23
3
+ VisionCameraZxing_targetSdkVersion=36
4
+ VisionCameraZxing_compileSdkVersion=36
5
+ VisionCameraZxing_ndkVersion=29.0.14206865
@@ -0,0 +1,3 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ <uses-feature android:name="android.hardware.camera" android:required="false" />
3
+ </manifest>
@@ -0,0 +1,7 @@
1
+ #include "VisionCameraZxingOnLoad.hpp"
2
+ #include <fbjni/fbjni.h>
3
+ #include <jni.h>
4
+
5
+ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
6
+ return facebook::jni::initialize(vm, []() { margelo::nitro::camera::zxing::registerAllNatives(); });
7
+ }
@@ -0,0 +1,21 @@
1
+ package com.margelo.nitro.camera.zxing
2
+
3
+ import com.facebook.react.BaseReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.model.ReactModuleInfoProvider
7
+
8
+ class VisionCameraZxingPackage : BaseReactPackage() {
9
+ override fun getModule(
10
+ name: String,
11
+ reactContext: ReactApplicationContext,
12
+ ): NativeModule? = null
13
+
14
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider = ReactModuleInfoProvider { HashMap() }
15
+
16
+ companion object {
17
+ init {
18
+ VisionCameraZxingOnLoad.initializeNative()
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,70 @@
1
+ #include "BarcodeValueTypeClassifier.hpp"
2
+
3
+ #include <cctype>
4
+
5
+ namespace margelo::nitro::camera::zxing {
6
+
7
+ namespace {
8
+
9
+ bool startsWithIgnoreCase(std::string_view text, std::string_view prefix) {
10
+ if (text.size() < prefix.size()) {
11
+ return false;
12
+ }
13
+ for (size_t i = 0; i < prefix.size(); i++) {
14
+ const int textChar = std::tolower(static_cast<unsigned char>(text[i]));
15
+ const int prefixChar = std::tolower(static_cast<unsigned char>(prefix[i]));
16
+ if (textChar != prefixChar) {
17
+ return false;
18
+ }
19
+ }
20
+ return true;
21
+ }
22
+
23
+ bool isRetailFormat(BarcodeFormat format) {
24
+ return format == BarcodeFormat::EAN_13 || format == BarcodeFormat::EAN_8 || format == BarcodeFormat::UPC_A || format == BarcodeFormat::UPC_E;
25
+ }
26
+
27
+ } // namespace
28
+
29
+ // ponytail: prefix heuristic mirroring ML Kit's value types, no vCard/WiFi/vEvent parsing.
30
+ BarcodeValueType classifyValueType(std::string_view text, BarcodeFormat format, ZXing::ContentType contentType) {
31
+ if (contentType == ZXing::ContentType::Binary) {
32
+ return BarcodeValueType::UNKNOWN;
33
+ }
34
+ if (startsWithIgnoreCase(text, "http://") || startsWithIgnoreCase(text, "https://")) {
35
+ return BarcodeValueType::URL;
36
+ }
37
+ if (startsWithIgnoreCase(text, "mailto:") || startsWithIgnoreCase(text, "MATMSG:")) {
38
+ return BarcodeValueType::EMAIL;
39
+ }
40
+ if (startsWithIgnoreCase(text, "tel:")) {
41
+ return BarcodeValueType::PHONE;
42
+ }
43
+ if (startsWithIgnoreCase(text, "smsto:") || startsWithIgnoreCase(text, "sms:")) {
44
+ return BarcodeValueType::SMS;
45
+ }
46
+ if (startsWithIgnoreCase(text, "geo:")) {
47
+ return BarcodeValueType::GEO;
48
+ }
49
+ if (startsWithIgnoreCase(text, "WIFI:")) {
50
+ return BarcodeValueType::WIFI;
51
+ }
52
+ if (startsWithIgnoreCase(text, "BEGIN:VCARD") || startsWithIgnoreCase(text, "MECARD:")) {
53
+ return BarcodeValueType::CONTACT_INFO;
54
+ }
55
+ if (startsWithIgnoreCase(text, "BEGIN:VEVENT") || startsWithIgnoreCase(text, "BEGIN:VCALENDAR")) {
56
+ return BarcodeValueType::CALENDAR_EVENT;
57
+ }
58
+ if (format == BarcodeFormat::PDF_417 && text.starts_with("@\n")) {
59
+ return BarcodeValueType::DRIVER_LICENSE;
60
+ }
61
+ if (format == BarcodeFormat::EAN_13 && (text.starts_with("978") || text.starts_with("979"))) {
62
+ return BarcodeValueType::ISBN;
63
+ }
64
+ if (isRetailFormat(format)) {
65
+ return BarcodeValueType::PRODUCT;
66
+ }
67
+ return BarcodeValueType::TEXT;
68
+ }
69
+
70
+ } // namespace margelo::nitro::camera::zxing
@@ -0,0 +1,14 @@
1
+ #pragma once
2
+
3
+ #include "BarcodeFormat.hpp"
4
+ #include "BarcodeValueType.hpp"
5
+
6
+ #include "ContentType.h"
7
+
8
+ #include <string_view>
9
+
10
+ namespace margelo::nitro::camera::zxing {
11
+
12
+ BarcodeValueType classifyValueType(std::string_view plainText, BarcodeFormat format, ZXing::ContentType contentType);
13
+
14
+ } // namespace margelo::nitro::camera::zxing
@@ -0,0 +1,75 @@
1
+ #include "FrameImageView.hpp"
2
+
3
+ #include <stdexcept>
4
+ #include <string>
5
+
6
+ namespace margelo::nitro::camera::zxing {
7
+
8
+ namespace {
9
+
10
+ // Clockwise rotation that makes the buffer upright: `orientation` describes how the content is
11
+ // currently rotated (VisionCamera maps CameraX's rotationDegrees=90 to LEFT), so we rotate back.
12
+ int rotationDegrees(camera::CameraOrientation orientation) {
13
+ switch (orientation) {
14
+ case camera::CameraOrientation::UP:
15
+ return 0;
16
+ case camera::CameraOrientation::LEFT:
17
+ return 90;
18
+ case camera::CameraOrientation::DOWN:
19
+ return 180;
20
+ case camera::CameraOrientation::RIGHT:
21
+ return 270;
22
+ }
23
+ return 0;
24
+ }
25
+
26
+ } // namespace
27
+
28
+ FrameImageView::FrameImageView(const std::shared_ptr<camera::HybridFrameSpec>& frame) : _frame(frame) {
29
+ if (frame == nullptr || !frame->getIsValid()) {
30
+ throw std::runtime_error("The given Frame is invalid or has already been disposed!");
31
+ }
32
+ const int width = static_cast<int>(frame->getWidth());
33
+ const int height = static_cast<int>(frame->getHeight());
34
+ const camera::PixelFormat pixelFormat = frame->getPixelFormat();
35
+
36
+ switch (pixelFormat) {
37
+ case camera::PixelFormat::YUV_420_8_BIT_VIDEO:
38
+ case camera::PixelFormat::YUV_420_8_BIT_FULL: {
39
+ // Luminance is plane 0 - read it in place, no conversion needed.
40
+ _planes = frame->getPlanes();
41
+ if (_planes.empty()) {
42
+ throw std::runtime_error("The given YUV Frame has no planes!");
43
+ }
44
+ _buffer = _planes[0]->getPixelBuffer();
45
+ const int rowStride = static_cast<int>(_planes[0]->getBytesPerRow());
46
+ const uint8_t* data = _buffer->data();
47
+ _view = ZXing::ImageView(data, width, height, ZXing::ImageFormat::Lum, rowStride);
48
+ break;
49
+ }
50
+ case camera::PixelFormat::RGB_BGRA_8_BIT:
51
+ case camera::PixelFormat::RGB_RGBA_8_BIT:
52
+ case camera::PixelFormat::RGB_RGB_8_BIT: {
53
+ _buffer = frame->getPixelBuffer();
54
+ const int rowStride = static_cast<int>(frame->getBytesPerRow());
55
+ ZXing::ImageFormat format = ZXing::ImageFormat::RGB;
56
+ if (pixelFormat == camera::PixelFormat::RGB_BGRA_8_BIT) {
57
+ format = ZXing::ImageFormat::BGRA;
58
+ } else if (pixelFormat == camera::PixelFormat::RGB_RGBA_8_BIT) {
59
+ format = ZXing::ImageFormat::RGBA;
60
+ }
61
+ const uint8_t* data = _buffer->data();
62
+ _view = ZXing::ImageView(data, width, height, format, rowStride);
63
+ break;
64
+ }
65
+ default:
66
+ throw std::runtime_error("Unsupported Frame pixelFormat (" + std::to_string(static_cast<int>(pixelFormat)) +
67
+ ")! Use a Frame Output with pixelFormat 'yuv' or 'rgb'.");
68
+ }
69
+
70
+ // ponytail: isMirrored is ignored - zxing decodes mirrored symbols and the ML Kit reference ignores it on Android too.
71
+ const int rotation = rotationDegrees(frame->getOrientation());
72
+ _view = _view.rotated(rotation);
73
+ }
74
+
75
+ } // namespace margelo::nitro::camera::zxing
@@ -0,0 +1,34 @@
1
+ #pragma once
2
+
3
+ #include "ImageView.h"
4
+
5
+ #include <NitroModules/ArrayBuffer.hpp>
6
+ #include <VisionCamera/HybridFramePlaneSpec.hpp>
7
+ #include <VisionCamera/HybridFrameSpec.hpp>
8
+
9
+ #include <memory>
10
+ #include <vector>
11
+
12
+ namespace margelo::nitro::camera::zxing {
13
+
14
+ /**
15
+ * Wraps a VisionCamera `Frame` as a zero-copy `ZXing::ImageView`, rotated upright by the Frame's orientation.
16
+ * Keeps the Frame, its planes and the pixel `ArrayBuffer` alive for as long as this object lives.
17
+ * All calls into the Frame happen in the constructor, so the Frame must still be valid when it runs.
18
+ */
19
+ class FrameImageView final {
20
+ public:
21
+ explicit FrameImageView(const std::shared_ptr<camera::HybridFrameSpec>& frame);
22
+
23
+ const ZXing::ImageView& imageView() const noexcept {
24
+ return _view;
25
+ }
26
+
27
+ private:
28
+ std::shared_ptr<camera::HybridFrameSpec> _frame;
29
+ std::vector<std::shared_ptr<camera::HybridFramePlaneSpec>> _planes;
30
+ std::shared_ptr<ArrayBuffer> _buffer;
31
+ ZXing::ImageView _view;
32
+ };
33
+
34
+ } // namespace margelo::nitro::camera::zxing
@@ -0,0 +1,59 @@
1
+ #include "HybridBarcode.hpp"
2
+
3
+ #include <algorithm>
4
+
5
+ namespace margelo::nitro::camera::zxing {
6
+
7
+ BarcodeFormat HybridBarcode::getFormat() {
8
+ return _barcode.format;
9
+ }
10
+
11
+ Rect HybridBarcode::getBoundingBox() {
12
+ const auto& corners = _barcode.corners;
13
+ auto [minX, maxX] = std::minmax({corners[0].x, corners[1].x, corners[2].x, corners[3].x});
14
+ auto [minY, maxY] = std::minmax({corners[0].y, corners[1].y, corners[2].y, corners[3].y});
15
+ return Rect(minX, maxX, minY, maxY);
16
+ }
17
+
18
+ std::vector<Point> HybridBarcode::getCornerPoints() {
19
+ std::vector<Point> points;
20
+ points.reserve(_barcode.corners.size());
21
+ for (const ZXing::PointI& corner : _barcode.corners) {
22
+ points.emplace_back(corner.x, corner.y);
23
+ }
24
+ return points;
25
+ }
26
+
27
+ std::optional<std::string> HybridBarcode::getDisplayValue() {
28
+ if (_barcode.displayValue.empty()) {
29
+ return std::nullopt;
30
+ }
31
+ return _barcode.displayValue;
32
+ }
33
+
34
+ std::optional<std::shared_ptr<ArrayBuffer>> HybridBarcode::getRawBytes() {
35
+ if (_barcode.rawBytes.empty()) {
36
+ return std::nullopt;
37
+ }
38
+ if (_rawBytes == nullptr) {
39
+ _rawBytes = ArrayBuffer::copy(_barcode.rawBytes);
40
+ }
41
+ return _rawBytes;
42
+ }
43
+
44
+ std::optional<std::string> HybridBarcode::getRawValue() {
45
+ if (_barcode.rawValue.empty()) {
46
+ return std::nullopt;
47
+ }
48
+ return _barcode.rawValue;
49
+ }
50
+
51
+ BarcodeValueType HybridBarcode::getValueType() {
52
+ return _barcode.valueType;
53
+ }
54
+
55
+ size_t HybridBarcode::getExternalMemorySize() noexcept {
56
+ return _barcode.rawBytes.size() + _barcode.rawValue.size() + _barcode.displayValue.size();
57
+ }
58
+
59
+ } // namespace margelo::nitro::camera::zxing
@@ -0,0 +1,26 @@
1
+ #pragma once
2
+
3
+ #include "HybridBarcodeSpec.hpp"
4
+ #include "ZXingDecoder.hpp"
5
+
6
+ namespace margelo::nitro::camera::zxing {
7
+
8
+ class HybridBarcode final : public HybridBarcodeSpec {
9
+ public:
10
+ explicit HybridBarcode(DecodedBarcode barcode) : HybridObject(TAG), _barcode(std::move(barcode)) {}
11
+
12
+ BarcodeFormat getFormat() override;
13
+ Rect getBoundingBox() override;
14
+ std::vector<Point> getCornerPoints() override;
15
+ std::optional<std::string> getDisplayValue() override;
16
+ std::optional<std::shared_ptr<ArrayBuffer>> getRawBytes() override;
17
+ std::optional<std::string> getRawValue() override;
18
+ BarcodeValueType getValueType() override;
19
+ size_t getExternalMemorySize() noexcept override;
20
+
21
+ private:
22
+ DecodedBarcode _barcode;
23
+ std::shared_ptr<ArrayBuffer> _rawBytes;
24
+ };
25
+
26
+ } // namespace margelo::nitro::camera::zxing