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,253 @@
1
+ /*
2
+ * Copyright 2020 Axel Waggershauser
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include "BitMatrix.h"
9
+ #include "Point.h"
10
+ #include "StdGenerator.h"
11
+
12
+ #include <climits>
13
+
14
+ namespace ZXing {
15
+
16
+ enum class Direction { LEFT = -1, RIGHT = 1 };
17
+
18
+ inline Direction opposite(Direction dir) noexcept
19
+ {
20
+ return dir == Direction::LEFT ? Direction::RIGHT : Direction::LEFT;
21
+ }
22
+
23
+ /**
24
+ * @brief The BitMatrixCursor represents a current position inside an image and current direction it can advance towards.
25
+ *
26
+ * The current position and direction is a PointT<T>. So depending on the type it can be used to traverse the image
27
+ * in a Bresenham style (PointF) or in a discrete way (step only horizontal/vertical/diagonal (PointI)).
28
+ */
29
+ template<typename POINT>
30
+ class BitMatrixCursor
31
+ {
32
+ using this_t = BitMatrixCursor<POINT>;
33
+
34
+ public:
35
+ const BitMatrix* img;
36
+
37
+ POINT p; // current position
38
+ POINT d; // current direction
39
+
40
+ BitMatrixCursor(const BitMatrix& image, POINT p, POINT d) : img(&image), p(p) { setDirection(d); }
41
+
42
+ class Value
43
+ {
44
+ enum { INVALID = -1, WHITE = 0, BLACK = 1 };
45
+ int v = INVALID;
46
+ public:
47
+ Value() = default;
48
+ Value(bool isBlack) : v(isBlack) {}
49
+ bool isValid() const noexcept { return v != INVALID; }
50
+ bool isWhite() const noexcept { return v == WHITE; }
51
+ bool isBlack() const noexcept { return v == BLACK; }
52
+
53
+ operator bool() const noexcept { return isValid(); }
54
+
55
+ bool operator==(Value o) const { return v == o.v; }
56
+ };
57
+
58
+ template <typename T>
59
+ Value testAt(PointT<T> p) const
60
+ {
61
+ return img->isIn(p) ? Value{img->get(p)} : Value{};
62
+ }
63
+
64
+ bool blackAt(POINT pos) const noexcept { return testAt(pos).isBlack(); }
65
+ bool whiteAt(POINT pos) const noexcept { return testAt(pos).isWhite(); }
66
+
67
+ bool isIn(POINT p) const noexcept { return img->isIn(p); }
68
+ bool isIn() const noexcept { return isIn(p); }
69
+ bool isBlack() const noexcept { return blackAt(p); }
70
+ bool isWhite() const noexcept { return whiteAt(p); }
71
+
72
+ POINT front() const noexcept { return d; }
73
+ POINT back() const noexcept { return -d; }
74
+ POINT left() const noexcept { return ZXing::left(d); }
75
+ POINT right() const noexcept { return ZXing::right(d); }
76
+ POINT direction(Direction dir) const noexcept { return static_cast<int>(dir) * right(); }
77
+
78
+ void turnBack() noexcept { d = back(); }
79
+ void turnLeft() noexcept { d = left(); }
80
+ void turnRight() noexcept { d = right(); }
81
+ void turn(Direction dir) noexcept { d = direction(dir); }
82
+
83
+ Value edgeAt(POINT d) const noexcept
84
+ {
85
+ Value v = testAt(p);
86
+ return testAt(p + d) != v ? v : Value();
87
+ }
88
+
89
+ Value edgeAtFront() const noexcept { return edgeAt(front()); }
90
+ Value edgeAtBack() const noexcept { return edgeAt(back()); }
91
+ Value edgeAtLeft() const noexcept { return edgeAt(left()); }
92
+ Value edgeAtRight() const noexcept { return edgeAt(right()); }
93
+ Value edgeAt(Direction dir) const noexcept { return edgeAt(direction(dir)); }
94
+
95
+ this_t& setDirection(PointF dir) { return d = bresenhamDirection(dir), *this; }
96
+ this_t& setDirection(PointI dir) { return d = dir, *this; }
97
+
98
+ bool step(typename POINT::value_t s = 1)
99
+ {
100
+ p += s * d;
101
+ return isIn(p);
102
+ }
103
+
104
+ this_t movedBy(POINT o) const noexcept { return {*img, p + o, d}; }
105
+ this_t turnedBack() const noexcept { return {*img, p, back()}; }
106
+
107
+ /**
108
+ * @brief stepToEdge advances cursor to one step behind the next (or n-th) edge.
109
+ * @param nth number of edges to pass
110
+ * @param range max number of steps to take
111
+ * @param backup whether or not to backup one step so we land in front of the edge
112
+ * @return number of steps taken or 0 if moved outside of range/image
113
+ */
114
+ int stepToEdge(int nth = 1, int range = 0, bool backup = false)
115
+ {
116
+ int steps = 0;
117
+ auto lv = testAt(p);
118
+
119
+ while (nth && (!range || steps < range) && lv.isValid()) {
120
+ ++steps;
121
+ auto v = testAt(p + steps * d);
122
+ if (lv != v) {
123
+ lv = v;
124
+ --nth;
125
+ }
126
+ }
127
+ if (backup)
128
+ --steps;
129
+ p += steps * d;
130
+ return steps * (nth == 0);
131
+ }
132
+
133
+ bool stepAlongEdge(Direction dir, bool skipCorner = false)
134
+ {
135
+ if (!edgeAt(dir))
136
+ turn(dir);
137
+ else if (edgeAtFront()) {
138
+ turn(opposite(dir));
139
+ if (edgeAtFront()) {
140
+ turn(opposite(dir));
141
+ if (edgeAtFront())
142
+ return false;
143
+ }
144
+ }
145
+
146
+ bool ret = step();
147
+
148
+ if (ret && skipCorner && !edgeAt(dir)) {
149
+ turn(dir);
150
+ ret = step();
151
+ }
152
+
153
+ return ret;
154
+ }
155
+
156
+ int countEdges(int range)
157
+ {
158
+ int res = 0;
159
+
160
+ while (int steps = range ? stepToEdge(1, range) : 0) {
161
+ range -= steps;
162
+ ++res;
163
+ }
164
+
165
+ return res;
166
+ }
167
+
168
+ template<typename ARRAY>
169
+ ARRAY readPattern(int max = 0, int min = 0)
170
+ {
171
+ ARRAY res = {};
172
+ for (auto& i : res) {
173
+ i = stepToEdge(1, max);
174
+ if (!i)
175
+ return res;
176
+ if (max)
177
+ max -= i;
178
+ }
179
+ if (min && max) {
180
+ min -= Reduce(res);
181
+ int steps = -1;
182
+ while (min > 0 && max && (steps = stepToEdge(2, max))) {
183
+ max -= steps;
184
+ min -= steps;
185
+ }
186
+ }
187
+ return res;
188
+ }
189
+
190
+ template<typename ARRAY>
191
+ ARRAY readPatternFromBlack(int maxWhitePrefix, int max = 0, int min = 0)
192
+ {
193
+ if (maxWhitePrefix && isWhite() && !stepToEdge(1, maxWhitePrefix))
194
+ return {};
195
+ return readPattern<ARRAY>(max, min);
196
+ }
197
+ };
198
+
199
+ using BitMatrixCursorF = BitMatrixCursor<PointF>;
200
+ using BitMatrixCursorI = BitMatrixCursor<PointI>;
201
+
202
+ class FastEdgeToEdgeCounter
203
+ {
204
+ const uint8_t* p = nullptr;
205
+ int stride = 0;
206
+ int stepsToBorder = 0;
207
+
208
+ public:
209
+ FastEdgeToEdgeCounter(const BitMatrixCursorI& cur)
210
+ {
211
+ stride = cur.d.y * cur.img->width() + cur.d.x;
212
+ p = cur.img->row(cur.p.y).begin() + cur.p.x;
213
+
214
+ int maxStepsX = cur.d.x ? (cur.d.x > 0 ? cur.img->width() - 1 - cur.p.x : cur.p.x) : INT_MAX;
215
+ int maxStepsY = cur.d.y ? (cur.d.y > 0 ? cur.img->height() - 1 - cur.p.y : cur.p.y) : INT_MAX;
216
+ stepsToBorder = std::min(maxStepsX, maxStepsY);
217
+ }
218
+
219
+ int stepToNextEdge(int range)
220
+ {
221
+ int maxSteps = std::min(stepsToBorder, range);
222
+ int steps = 0;
223
+ do {
224
+ if (++steps > maxSteps) {
225
+ if (maxSteps == stepsToBorder)
226
+ break;
227
+ else
228
+ return 0;
229
+ }
230
+ } while (p[steps * stride] == p[0]);
231
+
232
+ p += steps * stride;
233
+ stepsToBorder -= steps;
234
+
235
+ return steps;
236
+ }
237
+ };
238
+
239
+ // Generate points in a spiral pattern around the center
240
+ inline std::generator<PointI> Spiral(int radius)
241
+ {
242
+ co_yield{0, 0};
243
+ for (int r = 1; r <= radius; ++r) {
244
+ // clang-format off
245
+ for (int k = 0; k < 2 * r; ++k) co_yield{ r, -(r - 1) + k}; // right -> down
246
+ for (int k = 0; k < 2 * r; ++k) co_yield{ (r - 1) - k, r}; // bottom -> left
247
+ for (int k = 0; k < 2 * r; ++k) co_yield{ -r, (r - 1) - k}; // left -> up
248
+ for (int k = 0; k < 2 * r; ++k) co_yield{-(r - 1) + k, -r}; // top -> right
249
+ // clang-format on
250
+ }
251
+ }
252
+
253
+ } // ZXing
@@ -0,0 +1,101 @@
1
+ /*
2
+ * Copyright 2017 Huy Cuong Nguyen
3
+ * Copyright 2017 Axel Waggershauser
4
+ */
5
+ // SPDX-License-Identifier: Apache-2.0
6
+
7
+ #include "BitMatrixIO.h"
8
+
9
+ #include <array>
10
+ #include <fstream>
11
+ #include <sstream>
12
+
13
+ namespace ZXing {
14
+
15
+ std::string ToString(const BitMatrix& matrix, char one, char zero, bool addSpace, bool printAsCString)
16
+ {
17
+ std::string result;
18
+ result.reserve((addSpace ? 2 : 1) * (matrix.width() * matrix.height()) + matrix.height());
19
+ for (int y = 0; y < matrix.height(); ++y) {
20
+ if (printAsCString)
21
+ result += '"';
22
+ for (auto bit : matrix.row(y)) {
23
+ result += bit ? one : zero;
24
+ if (addSpace)
25
+ result += ' ';
26
+ }
27
+ if (printAsCString)
28
+ result += "\\n\"";
29
+ result += '\n';
30
+ }
31
+ return result;
32
+ }
33
+
34
+ std::string ToString(const BitMatrix& matrix, bool inverted)
35
+ {
36
+ constexpr auto map = std::array{" ", "▀", "▄", "█"};
37
+ std::string res;
38
+
39
+ for (int y = 0; y < matrix.height(); y += 2) {
40
+ for (int x = 0; x < matrix.width(); ++x) {
41
+ int tp = matrix.get(x, y) ^ inverted;
42
+ int bt = (matrix.height() == 1 && tp) || (y + 1 < matrix.height() && (matrix.get(x, y + 1) ^ inverted));
43
+ res += map[tp | (bt << 1)];
44
+ }
45
+ res.push_back('\n');
46
+ }
47
+
48
+ return res;
49
+ }
50
+
51
+ std::string ToSVG(const BitMatrix& matrix)
52
+ {
53
+ // see https://stackoverflow.com/questions/10789059/create-qr-code-in-vector-image/60638350#60638350
54
+
55
+ const int width = matrix.width();
56
+ const int height = matrix.height();
57
+ std::ostringstream out;
58
+
59
+ out << R"(<?xml version="1.0" encoding="UTF-8"?>)" << "\n"
60
+ << R"(<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 )" << width << ' ' << height << R"(" stroke="none">)"
61
+ << "\n<path d=\"";
62
+
63
+ for (int y = 0; y < height; ++y)
64
+ for (int x = 0; x < width; ++x)
65
+ if (matrix.get(x, y))
66
+ out << "M" << x << "," << y << "h1v1h-1z";
67
+
68
+ out << "\"/>\n</svg>";
69
+
70
+ return out.str();
71
+ }
72
+
73
+ BitMatrix ParseBitMatrix(const std::string& str, char one, bool expectSpace)
74
+ {
75
+ auto lineLength = str.find('\n');
76
+ if (lineLength == std::string::npos)
77
+ return {};
78
+
79
+ int strStride = expectSpace ? 2 : 1;
80
+ int height = narrow_cast<int>(str.length() / (lineLength + 1));
81
+ int width = narrow_cast<int>(lineLength / strStride);
82
+ BitMatrix mat(width, height);
83
+ for (int y = 0; y < height; ++y) {
84
+ size_t offset = y * (lineLength + 1);
85
+ for (int x = 0; x < width; ++x, offset += strStride) {
86
+ if (str[offset] == one)
87
+ mat.set(x, y);
88
+ }
89
+ }
90
+ return mat;
91
+ }
92
+
93
+ void SaveAsPBM(const BitMatrix& matrix, const std::string& filename, int quietZone)
94
+ {
95
+ auto out = ToMatrix<uint8_t>(Inflate(matrix.copy(), 0, 0, quietZone));
96
+ std::ofstream file(filename);
97
+ file << "P5\n" << out.width() << ' ' << out.height() << "\n255\n";
98
+ file.write(reinterpret_cast<const char*>(out.data()), out.size());
99
+ }
100
+
101
+ } // ZXing
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Copyright 2017 Huy Cuong Nguyen
3
+ * Copyright 2017 Axel Waggershauser
4
+ */
5
+ // SPDX-License-Identifier: Apache-2.0
6
+
7
+ #pragma once
8
+
9
+ #include <string>
10
+
11
+ #include "BitMatrix.h"
12
+
13
+ namespace ZXing {
14
+
15
+ std::string ToString(const BitMatrix& matrix, bool inverted = false);
16
+ std::string ToString(const BitMatrix& matrix, char one, char zero = ' ', bool addSpace = true, bool printAsCString = false);
17
+ std::string ToSVG(const BitMatrix& matrix);
18
+ BitMatrix ParseBitMatrix(const std::string& str, char one = 'X', bool expectSpace = true);
19
+ void SaveAsPBM(const BitMatrix& matrix, const std::string& filename, int quietZone = 0);
20
+
21
+ } // ZXing
@@ -0,0 +1,77 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ * Copyright 2016 ZXing authors
4
+ */
5
+ // SPDX-License-Identifier: Apache-2.0
6
+
7
+ #include "BitSource.h"
8
+
9
+ #include "ByteArray.h"
10
+ #include "ZXAlgorithms.h"
11
+
12
+ #include <stdexcept>
13
+
14
+ namespace ZXing {
15
+
16
+ int
17
+ BitSource::available() const
18
+ {
19
+ return 8 * (Size(_bytes) - _byteOffset) - _bitOffset;
20
+ }
21
+
22
+ static int ReadBitsImpl(int numBits, const ByteArray& _bytes, int available, int& _byteOffset, int& _bitOffset)
23
+ {
24
+ if (numBits < 1 || numBits > 32 || numBits > available) {
25
+ throw std::out_of_range("BitSource::readBits: out of range");
26
+ }
27
+
28
+ int result = 0;
29
+
30
+ // First, read remainder from current byte
31
+ if (_bitOffset > 0) {
32
+ int bitsLeft = 8 - _bitOffset;
33
+ int toRead = numBits < bitsLeft ? numBits : bitsLeft;
34
+ int bitsToNotRead = bitsLeft - toRead;
35
+ int mask = (0xFF >> (8 - toRead)) << bitsToNotRead;
36
+ result = (_bytes[_byteOffset] & mask) >> bitsToNotRead;
37
+ numBits -= toRead;
38
+ _bitOffset += toRead;
39
+ if (_bitOffset == 8) {
40
+ _bitOffset = 0;
41
+ _byteOffset++;
42
+ }
43
+ }
44
+
45
+ // Next read whole bytes
46
+ if (numBits > 0) {
47
+ while (numBits >= 8) {
48
+ result = (result << 8) | _bytes[_byteOffset];
49
+ _byteOffset++;
50
+ numBits -= 8;
51
+ }
52
+
53
+ // Finally read a partial byte
54
+ if (numBits > 0) {
55
+ int bitsToNotRead = 8 - numBits;
56
+ int mask = (0xFF >> bitsToNotRead) << bitsToNotRead;
57
+ result = (result << numBits) | ((_bytes[_byteOffset] & mask) >> bitsToNotRead);
58
+ _bitOffset += numBits;
59
+ }
60
+ }
61
+
62
+ return result;
63
+ }
64
+
65
+ int BitSource::readBits(int numBits)
66
+ {
67
+ return ReadBitsImpl(numBits, _bytes, available(), _byteOffset, _bitOffset);
68
+ }
69
+
70
+ int BitSource::peekBits(int numBits) const
71
+ {
72
+ int bitOffset = _bitOffset;
73
+ int byteOffset = _byteOffset;
74
+ return ReadBitsImpl(numBits, _bytes, available(), byteOffset, bitOffset);
75
+ }
76
+
77
+ } // ZXing
@@ -0,0 +1,72 @@
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
+ namespace ZXing {
10
+
11
+ class ByteArray;
12
+
13
+ /**
14
+ * <p>This provides an easy abstraction to read bits at a time from a sequence of bytes, where the
15
+ * number of bits read is not often a multiple of 8.</p>
16
+ *
17
+ * <p>This class is thread-safe but not reentrant -- unless the caller modifies the bytes array
18
+ * it passed in, in which case all bets are off.</p>
19
+ *
20
+ * @author Sean Owen
21
+ */
22
+ class BitSource
23
+ {
24
+ const ByteArray& _bytes;
25
+ int _byteOffset = 0;
26
+ int _bitOffset = 0;
27
+
28
+ public:
29
+ /**
30
+ * @param bytes bytes from which this will read bits. Bits will be read from the first byte first.
31
+ * Bits are read within a byte from most-significant to least-significant bit.
32
+ * IMPORTANT: Bit source DOES NOT copy data byte, thus make sure that the bytes outlive the bit source object.
33
+ */
34
+ explicit BitSource(const ByteArray& bytes) : _bytes(bytes) {}
35
+
36
+ BitSource(BitSource &) = delete;
37
+ BitSource& operator=(const BitSource &) = delete;
38
+
39
+ /**
40
+ * @return index of next bit in current byte which would be read by the next call to {@link #readBits(int)}.
41
+ */
42
+ int bitOffset() const {
43
+ return _bitOffset;
44
+ }
45
+
46
+ /**
47
+ * @return index of next byte in input byte array which would be read by the next call to {@link #readBits(int)}.
48
+ */
49
+ int byteOffset() const {
50
+ return _byteOffset;
51
+ }
52
+
53
+ /**
54
+ * @param numBits number of bits to read
55
+ * @return int representing the bits read. The bits will appear as the least-significant bits of the int
56
+ */
57
+ int readBits(int numBits);
58
+
59
+ /**
60
+ * @param numBits number of bits to peek at
61
+ * @return int representing the bits peeked at. The bits will appear as the least-significant
62
+ * bits of the int
63
+ */
64
+ int peekBits(int numBits) const;
65
+
66
+ /**
67
+ * @return number of bits that can be read successfully
68
+ */
69
+ int available() const;
70
+ };
71
+
72
+ } // ZXing
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ * Copyright 2022 Axel Waggershauser
4
+ */
5
+ // SPDX-License-Identifier: Apache-2.0
6
+
7
+ #pragma once
8
+
9
+ #include "Range.h"
10
+
11
+ #include <cstdint>
12
+ #include <string_view>
13
+ #include <vector>
14
+
15
+ namespace ZXing {
16
+
17
+ /**
18
+ ByteArray is an extension of std::vector<uint8_t>.
19
+ */
20
+ class ByteArray : public std::vector<uint8_t>
21
+ {
22
+ public:
23
+ ByteArray() = default;
24
+ ByteArray(std::initializer_list<uint8_t> list) : std::vector<uint8_t>(list) {}
25
+ explicit ByteArray(int len) : std::vector<uint8_t>(len, 0) {}
26
+ explicit ByteArray(std::string_view str) : std::vector<uint8_t>(str.begin(), str.end()) {}
27
+
28
+ void append(ByteView other) { insert(end(), other.begin(), other.end()); }
29
+ void append(std::string_view other) { insert(end(), other.begin(), other.end()); }
30
+
31
+ std::string_view asString(size_t pos = 0, size_t len = std::string_view::npos) const
32
+ {
33
+ return std::string_view(reinterpret_cast<const char*>(data()), size()).substr(pos, len);
34
+ }
35
+
36
+ ByteView asView(size_t pos = 0, size_t len = size_t(-1)) const
37
+ {
38
+ return ByteView(*this).subview(pos, len);
39
+ }
40
+ };
41
+
42
+ } // ZXing
@@ -0,0 +1,78 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ * Copyright 2016 ZXing authors
4
+ */
5
+ // SPDX-License-Identifier: Apache-2.0
6
+
7
+ #include "CharacterSet.h"
8
+
9
+ #include "ZXAlgorithms.h"
10
+
11
+ #include <algorithm>
12
+
13
+ namespace ZXing {
14
+
15
+ struct CharacterSetName
16
+ {
17
+ std::string_view name;
18
+ CharacterSet cs;
19
+ };
20
+
21
+ static CharacterSetName NAME_TO_CHARSET[] = {
22
+ {"Cp437", CharacterSet::Cp437},
23
+ {"ISO-8859-1", CharacterSet::ISO8859_1},
24
+ {"ISO-8859-2", CharacterSet::ISO8859_2},
25
+ {"ISO-8859-3", CharacterSet::ISO8859_3},
26
+ {"ISO-8859-4", CharacterSet::ISO8859_4},
27
+ {"ISO-8859-5", CharacterSet::ISO8859_5},
28
+ {"ISO-8859-6", CharacterSet::ISO8859_6},
29
+ {"ISO-8859-7", CharacterSet::ISO8859_7},
30
+ {"ISO-8859-8", CharacterSet::ISO8859_8},
31
+ {"ISO-8859-9", CharacterSet::ISO8859_9},
32
+ {"ISO-8859-10", CharacterSet::ISO8859_10},
33
+ {"ISO-8859-11", CharacterSet::ISO8859_11},
34
+ {"ISO-8859-13", CharacterSet::ISO8859_13},
35
+ {"ISO-8859-14", CharacterSet::ISO8859_14},
36
+ {"ISO-8859-15", CharacterSet::ISO8859_15},
37
+ {"ISO-8859-16", CharacterSet::ISO8859_16},
38
+ {"SJIS", CharacterSet::Shift_JIS},
39
+ {"Shift_JIS", CharacterSet::Shift_JIS},
40
+ {"Cp1250", CharacterSet::Cp1250},
41
+ {"windows-1250",CharacterSet::Cp1250},
42
+ {"Cp1251", CharacterSet::Cp1251},
43
+ {"windows-1251",CharacterSet::Cp1251},
44
+ {"Cp1252", CharacterSet::Cp1252},
45
+ {"windows-1252",CharacterSet::Cp1252},
46
+ {"Cp1256", CharacterSet::Cp1256},
47
+ {"windows-1256",CharacterSet::Cp1256},
48
+ {"UTF-16BE", CharacterSet::UTF16BE},
49
+ {"UTF-16LE", CharacterSet::UTF16LE},
50
+ {"UTF-32BE", CharacterSet::UTF32BE},
51
+ {"UTF-32LE", CharacterSet::UTF32LE},
52
+ {"UnicodeBigUnmarked", CharacterSet::UTF16BE},
53
+ {"UnicodeBig", CharacterSet::UTF16BE},
54
+ {"UTF-8", CharacterSet::UTF8},
55
+ {"ASCII", CharacterSet::ASCII},
56
+ {"US-ASCII", CharacterSet::ASCII},
57
+ {"Big5", CharacterSet::Big5},
58
+ {"GB2312", CharacterSet::GB2312},
59
+ {"GB18030", CharacterSet::GB18030},
60
+ {"EUC-CN", CharacterSet::GB18030},
61
+ {"GBK", CharacterSet::GB18030},
62
+ {"EUC-KR", CharacterSet::EUC_KR},
63
+ {"BINARY", CharacterSet::BINARY},
64
+ };
65
+
66
+ CharacterSet CharacterSetFromString(std::string_view name)
67
+ {
68
+ auto i = FindIf(NAME_TO_CHARSET, [name](auto& v) { return IsEqualIgnoreCaseAnd(v.name, name, "_- "); });
69
+ return i == std::end(NAME_TO_CHARSET) ? CharacterSet::Unknown : i->cs;
70
+ }
71
+
72
+ std::string ToString(CharacterSet cs)
73
+ {
74
+ auto i = FindIf(NAME_TO_CHARSET, [cs](auto& v) { return v.cs == cs; });
75
+ return i == std::end(NAME_TO_CHARSET) ? "" : std::string(i->name);
76
+ }
77
+
78
+ } // namespace ZXing
@@ -0,0 +1,58 @@
1
+ /*
2
+ * Copyright 2016 Nu-book Inc.
3
+ */
4
+ // SPDX-License-Identifier: Apache-2.0
5
+
6
+ #pragma once
7
+
8
+ #include <string>
9
+ #include <string_view>
10
+
11
+ namespace ZXing {
12
+
13
+ enum class CharacterSet : unsigned char
14
+ {
15
+ Unknown,
16
+ ASCII,
17
+ ISO8859_1,
18
+ ISO8859_2,
19
+ ISO8859_3,
20
+ ISO8859_4,
21
+ ISO8859_5,
22
+ ISO8859_6,
23
+ ISO8859_7,
24
+ ISO8859_8,
25
+ ISO8859_9,
26
+ ISO8859_10,
27
+ ISO8859_11,
28
+ ISO8859_13,
29
+ ISO8859_14,
30
+ ISO8859_15,
31
+ ISO8859_16,
32
+ Cp437,
33
+ Cp1250,
34
+ Cp1251,
35
+ Cp1252,
36
+ Cp1256,
37
+
38
+ Shift_JIS,
39
+ Big5,
40
+ GB2312,
41
+ GB18030,
42
+ EUC_JP,
43
+ EUC_KR,
44
+ UTF16BE,
45
+ UTF8,
46
+ UTF16LE,
47
+ UTF32BE,
48
+ UTF32LE,
49
+
50
+ BINARY,
51
+
52
+ CharsetCount
53
+ };
54
+
55
+ CharacterSet CharacterSetFromString(std::string_view name);
56
+ std::string ToString(CharacterSet cs);
57
+
58
+ } // ZXing