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,92 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ * Copyright 2016 ZXing authors
4
+ */
5
+ // SPDX-License-Identifier: Apache-2.0
6
+
7
+ #pragma once
8
+
9
+ #include "Content.h"
10
+ #include "Error.h"
11
+ #include "JSON.h"
12
+ #include "StructuredAppend.h"
13
+
14
+ #include <memory>
15
+ #include <string>
16
+ #include <utility>
17
+
18
+ namespace ZXing {
19
+
20
+ struct CustomData
21
+ {
22
+ virtual ~CustomData() = default;
23
+ };
24
+
25
+ class DecoderResult
26
+ {
27
+ Content _content;
28
+ std::string _ecLevel;
29
+ int _lineCount = 0;
30
+ int _versionNumber = 0;
31
+ StructuredAppendInfo _structuredAppend;
32
+ bool _isMirrored = false;
33
+ bool _readerInit = false;
34
+ Error _error;
35
+ std::string _json;
36
+ std::shared_ptr<CustomData> _customData;
37
+
38
+ public:
39
+ DecoderResult() = default;
40
+ DecoderResult(Error error) : _error(std::move(error)) {}
41
+ DecoderResult(Content&& bytes) : _content(std::move(bytes)) {}
42
+
43
+ DecoderResult(DecoderResult&&) noexcept = default;
44
+ DecoderResult& operator=(DecoderResult&&) noexcept = default;
45
+
46
+ DecoderResult(const DecoderResult&) = delete;
47
+ DecoderResult& operator=(const DecoderResult&) = delete;
48
+
49
+ bool isValid(bool includeErrors = false) const
50
+ {
51
+ return (!_content.bytes.empty() && !_error) || (includeErrors && !!_error);
52
+ }
53
+
54
+ const Content& content() const & { return _content; }
55
+ Content&& content() && { return std::move(_content); }
56
+
57
+ // to keep the unit tests happy for now:
58
+ std::wstring text() const { return _content.utfW(); }
59
+ std::string symbologyIdentifier() const { return _content.symbology.toString(false); }
60
+
61
+ // Simple macro to set up getter/setter methods that save lots of boilerplate.
62
+ // It sets up a standard 'const & () const', 2 setters for setting lvalues via
63
+ // copy and 2 for setting rvalues via move. They are provided each to work
64
+ // either on lvalues (normal 'void (...)') or on rvalues (returning '*this' as
65
+ // rvalue). The latter can be used to optionally initialize a temporary in a
66
+ // return statement, e.g.
67
+ // return DecoderResult(bytes, text).setEcLevel(level);
68
+ #define ZX_PROPERTY(TYPE, GETTER, SETTER) \
69
+ const TYPE& GETTER() const & { return _##GETTER; } \
70
+ TYPE&& GETTER() && { return std::move(_##GETTER); } \
71
+ void SETTER(const TYPE& v) & { _##GETTER = v; } \
72
+ void SETTER(TYPE&& v) & { _##GETTER = std::move(v); } \
73
+ DecoderResult&& SETTER(const TYPE& v) && { _##GETTER = v; return std::move(*this); } \
74
+ DecoderResult&& SETTER(TYPE&& v) && { _##GETTER = std::move(v); return std::move(*this); }
75
+
76
+ ZX_PROPERTY(std::string, ecLevel, setEcLevel)
77
+ ZX_PROPERTY(int, lineCount, setLineCount)
78
+ ZX_PROPERTY(int, versionNumber, setVersionNumber)
79
+ ZX_PROPERTY(StructuredAppendInfo, structuredAppend, setStructuredAppend)
80
+ ZX_PROPERTY(Error, error, setError)
81
+ ZX_PROPERTY(bool, isMirrored, setIsMirrored)
82
+ ZX_PROPERTY(bool, readerInit, setReaderInit)
83
+ ZX_PROPERTY(std::string, json, setJson)
84
+ ZX_PROPERTY(std::shared_ptr<CustomData>, customData, setCustomData)
85
+ #undef ZX_PROPERTY
86
+
87
+ template<typename T>
88
+ DecoderResult&& addExtra(std::string_view key, T val, T ignore = {}) { _json += JsonProp(key, val, ignore); return std::move(*this); }
89
+
90
+ };
91
+
92
+ } // ZXing
@@ -0,0 +1,44 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ * Copyright 2016 ZXing authors
4
+ */
5
+ // SPDX-License-Identifier: Apache-2.0
6
+
7
+ #pragma once
8
+
9
+ #include "BitMatrix.h"
10
+ #include "Quadrilateral.h"
11
+
12
+ #include <utility>
13
+
14
+ namespace ZXing {
15
+
16
+ /**
17
+ * Encapsulates the result of detecting a barcode in an image. This includes the raw
18
+ * matrix of black/white pixels corresponding to the barcode and the position of the code
19
+ * in the input image.
20
+ */
21
+ class DetectorResult
22
+ {
23
+ BitMatrix _bits;
24
+ QuadrilateralI _position;
25
+
26
+ public:
27
+ DetectorResult() = default;
28
+ DetectorResult(DetectorResult&&) noexcept = default;
29
+ DetectorResult& operator=(DetectorResult&&) noexcept = default;
30
+
31
+ DetectorResult(const DetectorResult&) = delete;
32
+ DetectorResult& operator=(const DetectorResult&) = delete;
33
+
34
+ DetectorResult(BitMatrix&& bits, QuadrilateralI&& position) : _bits(std::move(bits)), _position(std::move(position)) {}
35
+
36
+ const BitMatrix& bits() const & { return _bits; }
37
+ BitMatrix&& bits() && { return std::move(_bits); }
38
+ const QuadrilateralI& position() const & { return _position; }
39
+ QuadrilateralI&& position() && { return std::move(_position); }
40
+
41
+ bool isValid() const { return !_bits.empty(); }
42
+ };
43
+
44
+ } // ZXing
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Copyright 2022 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #include "ECI.h"
7
+
8
+ #include "ZXAlgorithms.h"
9
+
10
+ #include <map>
11
+
12
+ namespace ZXing {
13
+
14
+ static const std::map<ECI, CharacterSet> ECI_TO_CHARSET = {
15
+ {ECI(0), CharacterSet::Cp437}, // Obsolete
16
+ {ECI(1), CharacterSet::ISO8859_1}, // Obsolete
17
+ {ECI::Cp437, CharacterSet::Cp437}, // Obsolete but still used by PDF417 Macro fields (ISO/IEC 15438:2015 Annex H.2.3)
18
+ {ECI::ISO8859_1, CharacterSet::ISO8859_1},
19
+ {ECI::ISO8859_2, CharacterSet::ISO8859_2},
20
+ {ECI::ISO8859_3, CharacterSet::ISO8859_3},
21
+ {ECI::ISO8859_4, CharacterSet::ISO8859_4},
22
+ {ECI::ISO8859_5, CharacterSet::ISO8859_5},
23
+ {ECI::ISO8859_6, CharacterSet::ISO8859_6},
24
+ {ECI::ISO8859_7, CharacterSet::ISO8859_7},
25
+ {ECI::ISO8859_8, CharacterSet::ISO8859_8},
26
+ {ECI::ISO8859_9, CharacterSet::ISO8859_9},
27
+ {ECI::ISO8859_10, CharacterSet::ISO8859_10},
28
+ {ECI::ISO8859_11, CharacterSet::ISO8859_11},
29
+ {ECI::ISO8859_13, CharacterSet::ISO8859_13},
30
+ {ECI::ISO8859_14, CharacterSet::ISO8859_14},
31
+ {ECI::ISO8859_15, CharacterSet::ISO8859_15},
32
+ {ECI::ISO8859_16, CharacterSet::ISO8859_16},
33
+ {ECI::Shift_JIS, CharacterSet::Shift_JIS},
34
+ {ECI::Cp1250, CharacterSet::Cp1250},
35
+ {ECI::Cp1251, CharacterSet::Cp1251},
36
+ {ECI::Cp1252, CharacterSet::Cp1252},
37
+ {ECI::Cp1256, CharacterSet::Cp1256},
38
+ {ECI::UTF8, CharacterSet::UTF8},
39
+ {ECI::UTF16BE, CharacterSet::UTF16BE},
40
+ {ECI::UTF16LE, CharacterSet::UTF16LE},
41
+ {ECI::UTF32BE, CharacterSet::UTF32BE},
42
+ {ECI::UTF32LE, CharacterSet::UTF32LE},
43
+ {ECI::ASCII, CharacterSet::ASCII},
44
+ {ECI::Big5, CharacterSet::Big5},
45
+ {ECI::GB18030, CharacterSet::GB18030},
46
+ {ECI::GB2312, CharacterSet::GB2312},
47
+ {ECI::EUC_KR, CharacterSet::EUC_KR},
48
+ {ECI::ISO646_Inv, CharacterSet::ASCII},
49
+ {ECI::Binary, CharacterSet::BINARY},
50
+ };
51
+
52
+ std::string ToString(ECI eci)
53
+ {
54
+ return '\\' + ToString(ToInt(eci), 6);
55
+ }
56
+
57
+ CharacterSet ToCharacterSet(ECI eci)
58
+ {
59
+ if (auto it = ECI_TO_CHARSET.find(eci); it != ECI_TO_CHARSET.end())
60
+ return it->second;
61
+
62
+ return CharacterSet::Unknown;
63
+ }
64
+
65
+ ECI ToECI(CharacterSet cs)
66
+ {
67
+ // Special case ISO8859_1 to avoid obsolete ECI 1
68
+ if (cs == CharacterSet::ISO8859_1)
69
+ return ECI::ISO8859_1;
70
+ // Special case Cp437 to avoid obsolete ECI 0 for slightly less obsolete ECI 2
71
+ if (cs == CharacterSet::Cp437)
72
+ return ECI::Cp437;
73
+
74
+ for (auto& [key, value] : ECI_TO_CHARSET)
75
+ if (value == cs)
76
+ return key;
77
+
78
+ return ECI::Unknown;
79
+ }
80
+
81
+ } // namespace ZXing
@@ -0,0 +1,78 @@
1
+ /*
2
+ * Copyright 2022 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include "CharacterSet.h"
9
+
10
+ #include <string>
11
+
12
+ namespace ZXing {
13
+
14
+ enum class ECI : int
15
+ {
16
+ Unknown = -1,
17
+ Cp437 = 2, // obsolete
18
+ ISO8859_1 = 3,
19
+ ISO8859_2 = 4,
20
+ ISO8859_3 = 5,
21
+ ISO8859_4 = 6,
22
+ ISO8859_5 = 7,
23
+ ISO8859_6 = 8,
24
+ ISO8859_7 = 9,
25
+ ISO8859_8 = 10,
26
+ ISO8859_9 = 11,
27
+ ISO8859_10 = 12,
28
+ ISO8859_11 = 13,
29
+ ISO8859_13 = 15,
30
+ ISO8859_14 = 16,
31
+ ISO8859_15 = 17,
32
+ ISO8859_16 = 18,
33
+ Shift_JIS = 20,
34
+ Cp1250 = 21,
35
+ Cp1251 = 22,
36
+ Cp1252 = 23,
37
+ Cp1256 = 24,
38
+ UTF16BE = 25,
39
+ UTF8 = 26,
40
+ ASCII = 27,
41
+ Big5 = 28,
42
+ GB2312 = 29,
43
+ EUC_KR = 30,
44
+ GB18030 = 32,
45
+ UTF16LE = 33,
46
+ UTF32BE = 34,
47
+ UTF32LE = 35,
48
+ ISO646_Inv = 170,
49
+ Binary = 899
50
+ };
51
+
52
+ inline constexpr int ToInt(ECI eci)
53
+ {
54
+ return static_cast<int>(eci);
55
+ }
56
+
57
+ inline constexpr bool IsText(ECI eci)
58
+ {
59
+ return ToInt(eci) >= 0 && ToInt(eci) <= 170;
60
+ }
61
+
62
+ inline constexpr bool CanProcess(ECI eci)
63
+ {
64
+ // see https://github.com/zxing-cpp/zxing-cpp/commit/d8587545434d533c4e568181e1c12ef04a8e42d9#r74864359
65
+ return ToInt(eci) <= 899;
66
+ }
67
+
68
+ /**
69
+ * @brief ToString converts the numerical ECI value to a 7 character string as used in the ECI protocol
70
+ * @return e.g. "\000020"
71
+ */
72
+ std::string ToString(ECI eci);
73
+
74
+ CharacterSet ToCharacterSet(ECI eci);
75
+
76
+ ECI ToECI(CharacterSet cs);
77
+
78
+ } // namespace ZXing
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright 2022 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #include "Error.h"
7
+
8
+ namespace ZXing {
9
+
10
+ std::string Error::location() const
11
+ {
12
+ if (!_file)
13
+ return {};
14
+ std::string file(_file);
15
+ return file.substr(file.find_last_of("/\\") + 1) + ":" + std::to_string(_line);
16
+ }
17
+
18
+ std::string ToString(const Error& e)
19
+ {
20
+ const char* name[] = {"", "FormatError", "ChecksumError", "Unsupported"};
21
+ std::string ret = name[static_cast<int>(e.type())];
22
+ if (!e.msg().empty())
23
+ ret += " (" + e.msg() + ")";
24
+ if (auto location = e.location(); !location.empty())
25
+ ret += " @ " + e.location();
26
+ return ret;
27
+ }
28
+
29
+ }
@@ -0,0 +1,79 @@
1
+ /*
2
+ * Copyright 2022 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include <string>
9
+ #include <cstdint>
10
+
11
+ namespace ZXing {
12
+
13
+ /**
14
+ * @brief The Error class is a value type for the error() member of Barcode
15
+ *
16
+ * The use-case of this class is to communicate whether or not a particular Barcode
17
+ * symbol is in error. It is (primarily) not meant to be thrown as an exception and
18
+ * therefore not derived from std::exception. The library code may throw (and catch!)
19
+ * objects of this class as a convenient means of flow control (c++23's std::expected
20
+ * will allow to replace those use-cases with something similarly convenient). In
21
+ * those situations, the author is advised to make sure any thrown Error object is
22
+ * caught before leaking into user/wrapper code, i.e. the functions of the public
23
+ * API should be considered `noexcept` with respect to this class.
24
+ */
25
+
26
+ class Error
27
+ {
28
+ public:
29
+ enum class Type : uint8_t
30
+ {
31
+ None, ///< No error
32
+ Format, ///< Format error (i.e. the decoded data is not valid for the detected symbology)
33
+ Checksum, ///< Checksum error (i.e. the decoded data does not pass the checksum validation)
34
+ Unsupported ///< Unsupported error (i.e. a particular feature detected is not supported by zxing-cpp)
35
+ };
36
+ Type type() const noexcept { return _type; }
37
+ const std::string& msg() const noexcept { return _msg; }
38
+ explicit operator bool() const noexcept { return _type != Type::None; }
39
+
40
+ /// The source code location where the error was detected (if available)
41
+ std::string location() const;
42
+
43
+ Error() = default;
44
+ Error(Type type, std::string msg = {}) : _msg(std::move(msg)), _type(type) {}
45
+ Error(const char* file, short line, Type type, std::string msg = {}) : _msg(std::move(msg)), _file(file), _line(line), _type(type) {}
46
+
47
+ static constexpr auto Format = Type::Format;
48
+ static constexpr auto Checksum = Type::Checksum;
49
+ static constexpr auto Unsupported = Type::Unsupported;
50
+
51
+ inline bool operator==(const Error& o) const noexcept
52
+ {
53
+ return _type == o._type && _msg == o._msg && _file == o._file && _line == o._line;
54
+ }
55
+ inline bool operator!=(const Error& o) const noexcept { return !(*this == o); }
56
+
57
+ protected:
58
+ /// @cond INTERNAL
59
+ std::string _msg;
60
+ const char* _file = nullptr;
61
+ short _line = -1;
62
+ Type _type = Type::None;
63
+ /// @endcond
64
+ };
65
+
66
+ /// @cond INTERNAL
67
+ inline bool operator==(const Error& e, Error::Type t) noexcept { return e.type() == t; }
68
+ inline bool operator!=(const Error& e, Error::Type t) noexcept { return !(e == t); }
69
+ inline bool operator==(Error::Type t, const Error& e) noexcept { return e.type() == t; }
70
+ inline bool operator!=(Error::Type t, const Error& e) noexcept { return !(t == e); }
71
+
72
+ #define FormatError(...) Error(__FILE__, __LINE__, Error::Format, std::string(__VA_ARGS__))
73
+ #define ChecksumError(...) Error(__FILE__, __LINE__, Error::Checksum, std::string(__VA_ARGS__))
74
+ #define UnsupportedError(...) Error(__FILE__, __LINE__, Error::Unsupported, std::string(__VA_ARGS__))
75
+ /// @endcond
76
+
77
+ std::string ToString(const Error& e);
78
+
79
+ }
@@ -0,0 +1,165 @@
1
+ /*
2
+ * Copyright 2020 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include <cstddef>
9
+ #include <iterator>
10
+ #include <limits>
11
+ #include <type_traits>
12
+
13
+ #include <version>
14
+ #ifdef __cpp_lib_bitops
15
+ #include <bit>
16
+ #else
17
+ namespace std {
18
+ template <class T, typename = std::enable_if_t<std::is_unsigned_v<T>>>
19
+ constexpr int popcount(T x) noexcept
20
+ {
21
+ int n = 0;
22
+ for (; x; ++n)
23
+ x &= x - 1; // clear lowest bit
24
+ return n;
25
+ }
26
+
27
+ template <class T, typename = std::enable_if_t<std::is_unsigned_v<T>>>
28
+ constexpr int countr_zero(T x) noexcept
29
+ {
30
+ if (x == 0)
31
+ return std::numeric_limits<T>::digits;
32
+
33
+ int n = 0;
34
+ while ((x & T(1)) == 0) {
35
+ x >>= 1;
36
+ ++n;
37
+ }
38
+ return n;
39
+ }
40
+
41
+ template <class T, typename = std::enable_if_t<std::is_unsigned_v<T>>>
42
+ constexpr int countl_zero(T x) noexcept
43
+ {
44
+ if (x == 0)
45
+ return std::numeric_limits<T>::digits;
46
+
47
+ int n = 0;
48
+ for (int i = std::numeric_limits<T>::digits; i-- && !(x & (T(1) << i)); ++n)
49
+ ;
50
+ return n;
51
+ }
52
+ } // namespace std
53
+ #endif
54
+
55
+ namespace ZXing {
56
+
57
+ template<typename Enum>
58
+ class Flags
59
+ {
60
+ static_assert(std::is_enum<Enum>::value, "Flags is only usable on enumeration types.");
61
+
62
+ using Int = std::make_unsigned_t<typename std::underlying_type<Enum>::type>;
63
+ Int i = 0;
64
+
65
+ constexpr inline Flags(Int other) : i(other) {}
66
+
67
+ constexpr static inline auto highestBitSet(Int x) noexcept
68
+ {
69
+ return std::numeric_limits<Int>::digits - 1 - std::countl_zero(x);
70
+ }
71
+
72
+ public:
73
+ using enum_type = Enum;
74
+
75
+ constexpr inline Flags() noexcept = default;
76
+ constexpr inline Flags(Enum flag) noexcept : i(Int(flag)) {}
77
+
78
+ // constexpr inline Flags(std::initializer_list<Enum> flags) noexcept
79
+ // : i(initializer_list_helper(flags.begin(), flags.end()))
80
+ // {}
81
+
82
+ class iterator
83
+ {
84
+ friend class Flags;
85
+ const Int _flags = 0;
86
+ int _pos = 0;
87
+ iterator(Int i, int p) : _flags(i), _pos(p) {}
88
+ public:
89
+ using iterator_category = std::input_iterator_tag;
90
+ using value_type = Enum;
91
+ using difference_type = std::ptrdiff_t;
92
+ using pointer = Enum*;
93
+ using reference = Enum&;
94
+
95
+ Enum operator*() const noexcept { return Enum(Int(1) << _pos); }
96
+
97
+ iterator& operator++() noexcept
98
+ {
99
+ while (++_pos < highestBitSet(_flags) && !((Int(1) << _pos) & _flags))
100
+ ;
101
+ return *this;
102
+ }
103
+
104
+ bool operator==(const iterator& rhs) const noexcept { return _pos == rhs._pos; }
105
+ bool operator!=(const iterator& rhs) const noexcept { return !(*this == rhs); }
106
+ };
107
+
108
+ iterator begin() const noexcept { return {i, std::countr_zero(i)}; }
109
+ iterator end() const noexcept { return {i, highestBitSet(i) + 1}; }
110
+
111
+ bool empty() const noexcept { return i == 0; }
112
+ int count() const noexcept { return std::popcount(i); }
113
+
114
+ constexpr inline bool operator==(Flags other) const noexcept { return i == other.i; }
115
+
116
+ inline Flags& operator&=(Flags mask) noexcept { return i &= mask.i, *this; }
117
+ inline Flags& operator&=(Enum mask) noexcept { return i &= Int(mask), *this; }
118
+ inline Flags& operator|=(Flags other) noexcept { return i |= other.i, *this; }
119
+ inline Flags& operator|=(Enum other) noexcept { return i |= Int(other), *this; }
120
+ // inline Flags &operator^=(Flags other) noexcept { return i ^= other.i, *this; }
121
+ // inline Flags &operator^=(Enum other) noexcept { return i ^= Int(other), *this; }
122
+
123
+ constexpr inline Flags operator&(Flags other) const noexcept { return i & other.i; }
124
+ constexpr inline Flags operator&(Enum other) const noexcept { return i & Int(other); }
125
+ constexpr inline Flags operator|(Flags other) const noexcept { return i | other.i; }
126
+ constexpr inline Flags operator|(Enum other) const noexcept { return i | Int(other); }
127
+ // constexpr inline Flags operator^(Flags other) const noexcept { return i ^ other.i; }
128
+ // constexpr inline Flags operator^(Enum other) const noexcept { return i ^ Int(other); }
129
+ // constexpr inline Flags operator~() const noexcept { return ~i; }
130
+
131
+ // constexpr inline operator Int() const noexcept { return i; }
132
+ // constexpr inline bool operator!() const noexcept { return !i; }
133
+ // constexpr inline Int asInt() const noexcept { return i; }
134
+
135
+ constexpr inline bool testFlag(Enum flag) const noexcept
136
+ {
137
+ return (i & Int(flag)) == Int(flag) && (Int(flag) != 0 || i == Int(flag));
138
+ }
139
+ constexpr inline bool testFlags(Flags mask) const noexcept { return i & mask.i; }
140
+ inline Flags& setFlag(Enum flag, bool on = true) noexcept
141
+ {
142
+ return on ? (*this |= flag) : (*this &= ~Int(flag));
143
+ }
144
+ inline void clear() noexcept { i = 0; }
145
+
146
+ constexpr static Flags all() noexcept { return ~(Int(~0) << highestBitSet(Int(Enum::_max))); }
147
+
148
+ private:
149
+ // constexpr static inline Int
150
+ // initializer_list_helper(typename std::initializer_list<Enum>::const_iterator it,
151
+ // typename std::initializer_list<Enum>::const_iterator end) noexcept
152
+ // {
153
+ // return (it == end ? Int(0) : (Int(*it) | initializer_list_helper(it + 1, end)));
154
+ // }
155
+ };
156
+
157
+ #define ZX_DECLARE_FLAGS(FLAGS, ENUM) \
158
+ using FLAGS = Flags<ENUM>; \
159
+ constexpr inline FLAGS operator|(FLAGS::enum_type e1, FLAGS::enum_type e2) noexcept { return FLAGS(e1) | e2; } \
160
+ constexpr inline FLAGS operator|(FLAGS::enum_type e, FLAGS f) noexcept { return f | e; } \
161
+ constexpr inline bool operator==(FLAGS::enum_type e, FLAGS f) noexcept { return FLAGS(e) == f; } \
162
+ constexpr inline bool operator==(FLAGS f, FLAGS::enum_type e) noexcept { return FLAGS(e) == f; }
163
+
164
+ } // ZXing
165
+