dynamsoft-capture-vision-react-native 3.4.1300 → 3.4.3010

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 (198) hide show
  1. package/LICENSE +4 -4
  2. package/README.md +62 -62
  3. package/android/README.md +14 -14
  4. package/android/build.gradle +167 -163
  5. package/android/gradle.properties +20 -20
  6. package/android/settings.gradle +5 -5
  7. package/android/src/main/AndroidManifest.xml +6 -6
  8. package/android/src/main/AndroidManifest_noPackage.xml +5 -5
  9. package/android/src/main/cpp/CMakeLists.txt +21 -21
  10. package/android/src/main/cpp/ImgHO.cpp +94 -94
  11. package/android/src/main/cpp/ImgHO.h +34 -34
  12. package/android/src/main/cpp/JsiCore.cpp +296 -296
  13. package/android/src/main/cpp/JsiCore.h +51 -51
  14. package/android/src/main/cpp/JsiCvr.cpp +332 -332
  15. package/android/src/main/cpp/JsiCvr.h +54 -54
  16. package/android/src/main/cpp/JsiDbr.cpp +283 -283
  17. package/android/src/main/cpp/JsiDbr.h +26 -26
  18. package/android/src/main/cpp/JsiDce.cpp +59 -59
  19. package/android/src/main/cpp/JsiDce.h +17 -17
  20. package/android/src/main/cpp/JsiDcp.cpp +51 -51
  21. package/android/src/main/cpp/JsiDcp.h +31 -31
  22. package/android/src/main/cpp/JsiDdn.cpp +50 -50
  23. package/android/src/main/cpp/JsiDdn.h +28 -28
  24. package/android/src/main/cpp/JsiDlr.cpp +60 -60
  25. package/android/src/main/cpp/JsiDlr.h +26 -26
  26. package/android/src/main/cpp/JsiUtility.cpp +604 -604
  27. package/android/src/main/cpp/JsiUtility.h +26 -26
  28. package/android/src/main/cpp/RawBuffer.cpp +23 -23
  29. package/android/src/main/cpp/RawBuffer.h +24 -24
  30. package/android/src/main/cpp/android_log.h +14 -14
  31. package/android/src/main/dysJniLibsFor86/debug/arm64-v8a/librn_dys.so +0 -0
  32. package/android/src/main/dysJniLibsFor86/debug/armeabi-v7a/librn_dys.so +0 -0
  33. package/android/src/main/dysJniLibsFor86/debug/x86/librn_dys.so +0 -0
  34. package/android/src/main/dysJniLibsFor86/debug/x86_64/librn_dys.so +0 -0
  35. package/android/src/main/dysJniLibsFor86/release/arm64-v8a/librn_dys.so +0 -0
  36. package/android/src/main/dysJniLibsFor86/release/armeabi-v7a/librn_dys.so +0 -0
  37. package/android/src/main/dysJniLibsFor86/release/x86/librn_dys.so +0 -0
  38. package/android/src/main/dysJniLibsFor86/release/x86_64/librn_dys.so +0 -0
  39. package/android/src/main/java/com/dynamsoft/reactnativelib/CVRModule.kt +137 -137
  40. package/android/src/main/java/com/dynamsoft/reactnativelib/CameraViewManager.kt +62 -62
  41. package/android/src/main/java/com/dynamsoft/reactnativelib/DCEModule.kt +125 -125
  42. package/android/src/main/java/com/dynamsoft/reactnativelib/DynamsoftBaseModule.kt +8 -8
  43. package/android/src/main/java/com/dynamsoft/reactnativelib/ISAModule.kt +73 -73
  44. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageEditorViewManager.kt +14 -14
  45. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageEditorViewModule.kt +35 -35
  46. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageManagerModule.kt +15 -15
  47. package/android/src/main/java/com/dynamsoft/reactnativelib/LicenseModule.kt +29 -29
  48. package/android/src/main/java/com/dynamsoft/reactnativelib/MultiCrossFilterModule.kt +83 -83
  49. package/android/src/main/java/com/dynamsoft/reactnativelib/ReactNativeDcvPackage.kt +32 -32
  50. package/android/src/main/java/com/dynamsoft/reactnativelib/VersionsModule.kt +41 -41
  51. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/Basic.kt +44 -44
  52. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForCore.kt +50 -50
  53. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForCvr.kt +129 -129
  54. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDBR.kt +157 -157
  55. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDCE.kt +110 -110
  56. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDCP.kt +49 -49
  57. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDDN.kt +85 -85
  58. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDLR.kt +72 -72
  59. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ImageUtil.kt +58 -58
  60. package/android/src/main/java/com/dynamsoft/reactnativelib/core/ImageSourceAdapterModuleImpl.kt +120 -120
  61. package/android/src/main/java/com/dynamsoft/reactnativelib/cvr/CaptureVisionRouterModuleImpl.kt +306 -306
  62. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraEnhancerModuleImpl.kt +247 -247
  63. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraLifeCycleOwner.java +14 -14
  64. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraViewManagerImpl.kt +77 -77
  65. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewManagerImpl.kt +15 -15
  66. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewModuleImpl.kt +110 -110
  67. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/RNCameraView.kt +20 -20
  68. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/RNImageEditorView.kt +19 -19
  69. package/android/src/main/java/com/dynamsoft/reactnativelib/license/LicenseModuleImpl.kt +39 -39
  70. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/ImageManagerModuleImpl.kt +120 -120
  71. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/MultiCrossFilterModuleImpl.kt +111 -111
  72. package/app.plugin.js +21 -21
  73. package/dynamsoft-capture-vision-react-native.podspec +24 -24
  74. package/ios/CPP/DSImageData+HostObject.h +18 -18
  75. package/ios/CPP/DSImageData+HostObject.mm +38 -38
  76. package/ios/CPP/ImageDataHostObject.cpp +87 -87
  77. package/ios/CPP/ImageDataHostObject.hpp +35 -35
  78. package/ios/CPP/MutableRawBuffer.cpp +23 -23
  79. package/ios/CPP/MutableRawBuffer.hpp +23 -23
  80. package/ios/CPP/RNDynamsoft+JSI.h +22 -22
  81. package/ios/CPP/RNDynamsoft+JSI.mm +303 -303
  82. package/ios/CPP/RNDynamsoft+Json.h +93 -93
  83. package/ios/CPP/RNDynamsoft+Json.m +733 -733
  84. package/ios/CPP/YeetJSIUtils.h +56 -56
  85. package/ios/CPP/YeetJSIUtils.mm +208 -208
  86. package/ios/RNDynamsoftCameraView.h +31 -31
  87. package/ios/RNDynamsoftCameraView.m +108 -108
  88. package/ios/RNDynamsoftCameraViewManager.h +14 -14
  89. package/ios/RNDynamsoftCameraViewManager.m +195 -195
  90. package/ios/RNDynamsoftCaptureVisionRouter.h +18 -18
  91. package/ios/RNDynamsoftCaptureVisionRouter.mm +532 -532
  92. package/ios/RNDynamsoftImageEditorView.h +17 -17
  93. package/ios/RNDynamsoftImageEditorView.m +25 -25
  94. package/ios/RNDynamsoftImageEditorViewManager.h +14 -14
  95. package/ios/RNDynamsoftImageEditorViewManager.mm +183 -183
  96. package/ios/RNDynamsoftImageManager.h +14 -14
  97. package/ios/RNDynamsoftImageManager.mm +369 -369
  98. package/ios/RNDynamsoftImageSourceAdapter.h +19 -19
  99. package/ios/RNDynamsoftImageSourceAdapter.mm +255 -255
  100. package/ios/RNDynamsoftLicense.h +14 -14
  101. package/ios/RNDynamsoftLicense.m +62 -62
  102. package/ios/RNDynamsoftMultiCrossFilter.h +14 -14
  103. package/ios/RNDynamsoftMultiCrossFilter.m +145 -145
  104. package/ios/RNDynamsoftVersions.h +13 -13
  105. package/ios/RNDynamsoftVersions.m +27 -27
  106. package/package.json +48 -48
  107. package/src/NativeDynamsoftVersionsModule.tsx +20 -20
  108. package/src/VersionsModule.tsx +7 -7
  109. package/src/core/CapturedResultBase.tsx +18 -18
  110. package/src/core/CapturedResultItem.tsx +23 -23
  111. package/src/core/CoreModule.tsx +9 -9
  112. package/src/core/DSRect.tsx +29 -29
  113. package/src/core/EnumCaptureResultItemType.tsx +52 -52
  114. package/src/core/EnumColourChannelUsageType.tsx +26 -26
  115. package/src/core/EnumCrossVerificationStatus.tsx +46 -46
  116. package/src/core/EnumGrayscaleEnhancementMode.tsx +46 -46
  117. package/src/core/EnumGrayscaleTransformationMode.tsx +35 -35
  118. package/src/core/EnumImageFileFormat.tsx +6 -6
  119. package/src/core/EnumPixelFormat.tsx +53 -53
  120. package/src/core/ImageData.tsx +87 -87
  121. package/src/core/ImageSourceAdapter.tsx +160 -160
  122. package/src/core/NativeDynamsoftImageSourceAdapterModule.tsx +29 -29
  123. package/src/core/Point.tsx +13 -13
  124. package/src/core/Quadrilateral.tsx +12 -12
  125. package/src/core/index.tsx +18 -18
  126. package/src/cvr/CaptureVisionRouter.tsx +683 -683
  127. package/src/cvr/CaptureVisionRouterModule.tsx +9 -9
  128. package/src/cvr/CapturedResult.tsx +123 -123
  129. package/src/cvr/CapturedResultFilter.tsx +13 -13
  130. package/src/cvr/CapturedResultReceiver.tsx +71 -71
  131. package/src/cvr/EnumPresetTemplate.tsx +81 -81
  132. package/src/cvr/NativeDynamsoftCaptureVisionRouterModule.tsx +25 -25
  133. package/src/cvr/SimplifiedCaptureVisionSettings.tsx +61 -61
  134. package/src/cvr/index.tsx +11 -11
  135. package/src/dbr/BarcodeDetails.tsx +51 -51
  136. package/src/dbr/BarcodeReaderModule.tsx +9 -9
  137. package/src/dbr/BarcodeResultItem.tsx +65 -65
  138. package/src/dbr/DecodedBarcodesResult.tsx +14 -14
  139. package/src/dbr/ECISegment.tsx +23 -23
  140. package/src/dbr/EnumBarcodeFormat.tsx +112 -112
  141. package/src/dbr/EnumDeblurMode.tsx +29 -29
  142. package/src/dbr/EnumLocalizationMode.tsx +27 -27
  143. package/src/dbr/EnumQRCodeErrorCorrectionLevel.tsx +6 -6
  144. package/src/dbr/SimplifiedBarcodeReaderSettings.tsx +80 -80
  145. package/src/dbr/index.tsx +9 -9
  146. package/src/dce/CameraEnhancer.tsx +254 -254
  147. package/src/dce/CameraEnhancerModule.tsx +9 -9
  148. package/src/dce/CameraView.tsx +100 -100
  149. package/src/dce/DynamsoftCameraViewNativeComponent.ts +96 -96
  150. package/src/dce/DynamsoftImageEditorViewNativeComponent.ts +9 -9
  151. package/src/dce/EnumCameraPosition.tsx +25 -25
  152. package/src/dce/EnumDrawingLayerId.tsx +17 -17
  153. package/src/dce/EnumEnhancedFeatures.tsx +24 -24
  154. package/src/dce/EnumFocusMode.tsx +6 -6
  155. package/src/dce/EnumResolution.tsx +8 -8
  156. package/src/dce/EnumTorchState.tsx +10 -10
  157. package/src/dce/FeedBack.tsx +28 -28
  158. package/src/dce/ImageEditorView.tsx +131 -131
  159. package/src/dce/NativeDynamsoftCameraViewModule.tsx +47 -47
  160. package/src/dce/NativeDynamsoftImageEditorViewModule.ts +9 -9
  161. package/src/dce/index.tsx +13 -13
  162. package/src/dcp/CodeParserDedicatorModule.tsx +9 -9
  163. package/src/dcp/CodeParserModule.tsx +9 -9
  164. package/src/dcp/EnumMappingStatus.tsx +14 -14
  165. package/src/dcp/EnumValidationStatus.tsx +14 -14
  166. package/src/dcp/ParsedResult.tsx +14 -14
  167. package/src/dcp/ParsedResultItem.tsx +50 -50
  168. package/src/dcp/index.tsx +8 -8
  169. package/src/ddn/DeskewedImageResultItem.tsx +40 -40
  170. package/src/ddn/DetectedQuadResultItem.tsx +31 -31
  171. package/src/ddn/DocumentNormalizerModule.tsx +9 -9
  172. package/src/ddn/EnhancedImageResultItem.tsx +20 -20
  173. package/src/ddn/EnumImageColourMode.tsx +14 -14
  174. package/src/ddn/ProcessedDocumentResult.tsx +27 -27
  175. package/src/ddn/SimplifiedDocumentNormalizerSettings.tsx +65 -65
  176. package/src/ddn/index.tsx +11 -11
  177. package/src/dip/ImageProcessingModule.tsx +9 -9
  178. package/src/dip/index.tsx +1 -1
  179. package/src/dlr/CharacterResult.tsx +28 -28
  180. package/src/dlr/LabelRecognizerModule.tsx +9 -9
  181. package/src/dlr/RecognizedTextLinesResult.tsx +19 -19
  182. package/src/dlr/SimplifiedLabelRecognizerSettings.tsx +33 -33
  183. package/src/dlr/TextLineResultItem.tsx +41 -41
  184. package/src/dlr/index.tsx +8 -8
  185. package/src/index.tsx +13 -13
  186. package/src/license/LicenseManager.tsx +49 -49
  187. package/src/license/LicenseModule.tsx +9 -9
  188. package/src/license/NativeDynamsoftLicenseModule.tsx +7 -7
  189. package/src/license/index.tsx +7 -7
  190. package/src/utility/CrossVerificationCriteria.tsx +11 -11
  191. package/src/utility/EnumFilterType.tsx +5 -5
  192. package/src/utility/ImageManager.tsx +348 -348
  193. package/src/utility/MultiFrameResultCrossFilter.tsx +183 -183
  194. package/src/utility/NativeDynamsoftImageManagerModule.tsx +7 -7
  195. package/src/utility/NativeDynamsoftMultiCrossFilterModule.tsx +18 -18
  196. package/src/utility/UtilityModule.tsx +9 -9
  197. package/src/utility/index.tsx +4 -4
  198. package/android/.gitignore +0 -4
@@ -1,129 +1,129 @@
1
- package com.dynamsoft.reactnativelib.basicutils
2
-
3
- import android.util.Log
4
- import com.dynamsoft.core.basic_structures.CapturedResultItem
5
- import com.dynamsoft.core.basic_structures.CompletionListener
6
- import com.dynamsoft.core.basic_structures.EnumCapturedResultItemType
7
- import com.dynamsoft.cvr.CaptureVisionRouter
8
- import com.dynamsoft.cvr.CapturedResult
9
- import com.dynamsoft.cvr.SimplifiedCaptureVisionSettings
10
- import com.dynamsoft.dbr.BarcodeResultItem
11
- import com.dynamsoft.dcp.ParsedResultItem
12
- import com.dynamsoft.ddn.DeskewedImageResultItem
13
- import com.dynamsoft.ddn.DetectedQuadResultItem
14
- import com.dynamsoft.ddn.EnhancedImageResultItem
15
- import com.dynamsoft.dlr.TextLineResultItem
16
- import com.facebook.react.bridge.Arguments
17
- import com.facebook.react.bridge.ReadableMap
18
- import com.facebook.react.bridge.WritableArray
19
- import com.facebook.react.bridge.WritableMap
20
-
21
- fun CaptureVisionRouter.startCapturingWithCallback(template: String, logTag: String) {
22
- startCapturing(template, object : CompletionListener {
23
- override fun onSuccess() {
24
- Log.i(logTag, "onSuccess: startCapturing($template)")
25
- }
26
-
27
- override fun onFailure(errorCode: Int, errorString: String?) {
28
- Log.e(logTag, "onFailure: startCapturing($template). ErrorCode: $errorCode. ErrorString: $errorString")
29
- }
30
- })
31
- }
32
-
33
- private fun Array<out CapturedResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
34
- forEach {
35
- when (it.type) {
36
- EnumCapturedResultItemType.CRIT_BARCODE -> {
37
- pushMap((it as BarcodeResultItem).toWritableMap())
38
- }
39
- EnumCapturedResultItemType.CRIT_TEXT_LINE -> {
40
- pushMap((it as TextLineResultItem).toWritableMap())
41
- }
42
- EnumCapturedResultItemType.CRIT_DETECTED_QUAD -> {
43
- pushMap((it as DetectedQuadResultItem).toWritableMap())
44
- }
45
- EnumCapturedResultItemType.CRIT_DESKEWED_IMAGE -> {
46
- pushMap((it as DeskewedImageResultItem).toWritableMap())
47
- }
48
- EnumCapturedResultItemType.CRIT_ENHANCED_IMAGE -> {
49
- pushMap((it as EnhancedImageResultItem).toWritableMap())
50
- }
51
- EnumCapturedResultItemType.CRIT_PARSED_RESULT -> {
52
- pushMap((it as ParsedResultItem).toWritableMap())
53
- }
54
- }
55
- }
56
- }
57
-
58
- fun CapturedResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
59
- putInt("errorCode", errorCode)
60
- putString("errorMessage", errorMessage)
61
- putString("originalImageHashId",originalImageHashId)
62
- putArray("items", items.toWritableArray())
63
- putArray("rotationTransformMatrix",FloatArray(9).apply { rotationTransformMatrix.getValues(this) }.toWritableArray())
64
- }
65
-
66
- fun SimplifiedCaptureVisionSettings.toWritableMap() = Arguments.createMap().apply {
67
- putMap("roi", roi.toWritableMap())
68
- putBoolean("roiMeasuredInPercentage", roiMeasuredInPercentage)
69
- putInt("maxParallelTasks", maxParallelTasks)
70
- putInt("timeout", timeout)
71
- putInt("minImageCaptureInterval", minImageCaptureInterval)
72
- try {
73
- Class.forName("com.dynamsoft.dbr.SimplifiedBarcodeReaderSettings")
74
- putMap("barcodeSettings", barcodeSettings?.toWritableMap())
75
- } catch (e: ClassNotFoundException) {
76
- /* no-op */
77
- }
78
-
79
- try {
80
- Class.forName("com.dynamsoft.dlr.SimplifiedLabelRecognizerSettings")
81
- putMap("labelSettings", labelSettings?.toWritableMap())
82
- } catch (e: ClassNotFoundException) {
83
- /* no-op */
84
- }
85
-
86
- try {
87
- Class.forName("com.dynamsoft.ddn.SimplifiedDocumentNormalizerSettings")
88
- putMap("documentSettings", documentSettings?.toWritableMap())
89
- } catch (e: ClassNotFoundException) {
90
- /* no-op */
91
- }
92
- }
93
-
94
- fun SimplifiedCaptureVisionSettings.updateFromReadableMap(newSettings: ReadableMap) {
95
- roi = if (newSettings.hasKey("roi")) newSettings.getMap("roi")!!.toQuad() else roi
96
- roiMeasuredInPercentage =
97
- if (newSettings.hasKey("roiMeasuredInPercentage")) newSettings.getBoolean("roiMeasuredInPercentage") else roiMeasuredInPercentage
98
- maxParallelTasks = if (newSettings.hasKey("maxParallelTasks")) newSettings.getInt("maxParallelTasks") else maxParallelTasks
99
- timeout = if (newSettings.hasKey("timeout")) newSettings.getInt("timeout") else timeout
100
- minImageCaptureInterval =
101
- if (newSettings.hasKey("minImageCaptureInterval")) newSettings.getInt("minImageCaptureInterval") else minImageCaptureInterval
102
- try {
103
- Class.forName("com.dynamsoft.dbr.SimplifiedBarcodeReaderSettings")
104
- newSettings.getMap("barcodeSettings")?.let {
105
- barcodeSettings?.updateFromReadableMap(it)
106
- }
107
- } catch (e: ClassNotFoundException) {
108
- //keep
109
- }
110
- try {
111
- Class.forName("com.dynamsoft.dlr.SimplifiedLabelRecognizerSettings")
112
- newSettings.getMap("labelSettings")?.let {
113
- labelSettings?.updateFromReadableMap(it)
114
- }
115
- } catch (e: ClassNotFoundException) {
116
- //keep
117
- }
118
-
119
-
120
- try {
121
- Class.forName("com.dynamsoft.ddn.SimplifiedDocumentNormalizerSettings")
122
- newSettings.getMap("documentSettings")?.let {
123
- documentSettings?.updateFromReadableMap(it)
124
- }
125
- } catch (e: ClassNotFoundException) {
126
- Log.e("TAG", "updateFromReadableMap: No DDN")
127
- /* no-op */
128
- }
129
- }
1
+ package com.dynamsoft.reactnativelib.basicutils
2
+
3
+ import android.util.Log
4
+ import com.dynamsoft.core.basic_structures.CapturedResultItem
5
+ import com.dynamsoft.core.basic_structures.CompletionListener
6
+ import com.dynamsoft.core.basic_structures.EnumCapturedResultItemType
7
+ import com.dynamsoft.cvr.CaptureVisionRouter
8
+ import com.dynamsoft.cvr.CapturedResult
9
+ import com.dynamsoft.cvr.SimplifiedCaptureVisionSettings
10
+ import com.dynamsoft.dbr.BarcodeResultItem
11
+ import com.dynamsoft.dcp.ParsedResultItem
12
+ import com.dynamsoft.ddn.DeskewedImageResultItem
13
+ import com.dynamsoft.ddn.DetectedQuadResultItem
14
+ import com.dynamsoft.ddn.EnhancedImageResultItem
15
+ import com.dynamsoft.dlr.TextLineResultItem
16
+ import com.facebook.react.bridge.Arguments
17
+ import com.facebook.react.bridge.ReadableMap
18
+ import com.facebook.react.bridge.WritableArray
19
+ import com.facebook.react.bridge.WritableMap
20
+
21
+ fun CaptureVisionRouter.startCapturingWithCallback(template: String, logTag: String) {
22
+ startCapturing(template, object : CompletionListener {
23
+ override fun onSuccess() {
24
+ Log.i(logTag, "onSuccess: startCapturing($template)")
25
+ }
26
+
27
+ override fun onFailure(errorCode: Int, errorString: String?) {
28
+ Log.e(logTag, "onFailure: startCapturing($template). ErrorCode: $errorCode. ErrorString: $errorString")
29
+ }
30
+ })
31
+ }
32
+
33
+ private fun Array<out CapturedResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
34
+ forEach {
35
+ when (it.type) {
36
+ EnumCapturedResultItemType.CRIT_BARCODE -> {
37
+ pushMap((it as BarcodeResultItem).toWritableMap())
38
+ }
39
+ EnumCapturedResultItemType.CRIT_TEXT_LINE -> {
40
+ pushMap((it as TextLineResultItem).toWritableMap())
41
+ }
42
+ EnumCapturedResultItemType.CRIT_DETECTED_QUAD -> {
43
+ pushMap((it as DetectedQuadResultItem).toWritableMap())
44
+ }
45
+ EnumCapturedResultItemType.CRIT_DESKEWED_IMAGE -> {
46
+ pushMap((it as DeskewedImageResultItem).toWritableMap())
47
+ }
48
+ EnumCapturedResultItemType.CRIT_ENHANCED_IMAGE -> {
49
+ pushMap((it as EnhancedImageResultItem).toWritableMap())
50
+ }
51
+ EnumCapturedResultItemType.CRIT_PARSED_RESULT -> {
52
+ pushMap((it as ParsedResultItem).toWritableMap())
53
+ }
54
+ }
55
+ }
56
+ }
57
+
58
+ fun CapturedResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
59
+ putInt("errorCode", errorCode)
60
+ putString("errorMessage", errorMessage)
61
+ putString("originalImageHashId",originalImageHashId)
62
+ putArray("items", items.toWritableArray())
63
+ putArray("rotationTransformMatrix",FloatArray(9).apply { rotationTransformMatrix.getValues(this) }.toWritableArray())
64
+ }
65
+
66
+ fun SimplifiedCaptureVisionSettings.toWritableMap() = Arguments.createMap().apply {
67
+ putMap("roi", roi.toWritableMap())
68
+ putBoolean("roiMeasuredInPercentage", roiMeasuredInPercentage)
69
+ putInt("maxParallelTasks", maxParallelTasks)
70
+ putInt("timeout", timeout)
71
+ putInt("minImageCaptureInterval", minImageCaptureInterval)
72
+ try {
73
+ Class.forName("com.dynamsoft.dbr.SimplifiedBarcodeReaderSettings")
74
+ putMap("barcodeSettings", barcodeSettings?.toWritableMap())
75
+ } catch (e: ClassNotFoundException) {
76
+ /* no-op */
77
+ }
78
+
79
+ try {
80
+ Class.forName("com.dynamsoft.dlr.SimplifiedLabelRecognizerSettings")
81
+ putMap("labelSettings", labelSettings?.toWritableMap())
82
+ } catch (e: ClassNotFoundException) {
83
+ /* no-op */
84
+ }
85
+
86
+ try {
87
+ Class.forName("com.dynamsoft.ddn.SimplifiedDocumentNormalizerSettings")
88
+ putMap("documentSettings", documentSettings?.toWritableMap())
89
+ } catch (e: ClassNotFoundException) {
90
+ /* no-op */
91
+ }
92
+ }
93
+
94
+ fun SimplifiedCaptureVisionSettings.updateFromReadableMap(newSettings: ReadableMap) {
95
+ roi = if (newSettings.hasKey("roi")) newSettings.getMap("roi")!!.toQuad() else roi
96
+ roiMeasuredInPercentage =
97
+ if (newSettings.hasKey("roiMeasuredInPercentage")) newSettings.getBoolean("roiMeasuredInPercentage") else roiMeasuredInPercentage
98
+ maxParallelTasks = if (newSettings.hasKey("maxParallelTasks")) newSettings.getInt("maxParallelTasks") else maxParallelTasks
99
+ timeout = if (newSettings.hasKey("timeout")) newSettings.getInt("timeout") else timeout
100
+ minImageCaptureInterval =
101
+ if (newSettings.hasKey("minImageCaptureInterval")) newSettings.getInt("minImageCaptureInterval") else minImageCaptureInterval
102
+ try {
103
+ Class.forName("com.dynamsoft.dbr.SimplifiedBarcodeReaderSettings")
104
+ newSettings.getMap("barcodeSettings")?.let {
105
+ barcodeSettings?.updateFromReadableMap(it)
106
+ }
107
+ } catch (e: ClassNotFoundException) {
108
+ //keep
109
+ }
110
+ try {
111
+ Class.forName("com.dynamsoft.dlr.SimplifiedLabelRecognizerSettings")
112
+ newSettings.getMap("labelSettings")?.let {
113
+ labelSettings?.updateFromReadableMap(it)
114
+ }
115
+ } catch (e: ClassNotFoundException) {
116
+ //keep
117
+ }
118
+
119
+
120
+ try {
121
+ Class.forName("com.dynamsoft.ddn.SimplifiedDocumentNormalizerSettings")
122
+ newSettings.getMap("documentSettings")?.let {
123
+ documentSettings?.updateFromReadableMap(it)
124
+ }
125
+ } catch (e: ClassNotFoundException) {
126
+ Log.e("TAG", "updateFromReadableMap: No DDN")
127
+ /* no-op */
128
+ }
129
+ }
@@ -1,157 +1,157 @@
1
- package com.dynamsoft.reactnativelib.basicutils
2
-
3
-
4
- import android.util.Base64
5
- import com.dynamsoft.core.basic_structures.CapturedResultItem
6
- import com.dynamsoft.dbr.AztecDetails
7
- import com.dynamsoft.dbr.BarcodeDetails
8
- import com.dynamsoft.dbr.BarcodeResultItem
9
- import com.dynamsoft.dbr.DataMatrixDetails
10
- import com.dynamsoft.dbr.DecodedBarcodesResult
11
- import com.dynamsoft.dbr.ECISegment
12
- import com.dynamsoft.dbr.OneDCodeDetails
13
- import com.dynamsoft.dbr.PDF417Details
14
- import com.dynamsoft.dbr.QRCodeDetails
15
- import com.dynamsoft.dbr.SimplifiedBarcodeReaderSettings
16
- import com.facebook.react.bridge.Arguments
17
- import com.facebook.react.bridge.ReadableMap
18
- import com.facebook.react.bridge.WritableArray
19
- import com.facebook.react.bridge.WritableMap
20
-
21
- fun BarcodeResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
22
- merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
23
- // putInt("format0_31", format.toInt())
24
- // putInt("format32_63", (format shr (32)).toInt())
25
- putString("_formatNumberString", format.toULong().toString())
26
- putString("formatString", formatString)
27
- putString("text", text)
28
- putString("bytes", Base64.encodeToString(bytes ?: byteArrayOf(), Base64.NO_WRAP))
29
- putMap("location", location.toWritableMap())
30
- putInt("confidence", confidence)
31
- putInt("angle", angle)
32
- putInt("moduleSize", moduleSize)
33
- putBoolean("isMirrored", isMirrored)
34
- putBoolean("isDPM", isDPM)
35
- when (details) {
36
- is QRCodeDetails -> putMap("qrCodeDetails", details.toWritableMap())
37
- is AztecDetails -> putMap("aztecDetails", details.toWritableMap())
38
- is OneDCodeDetails -> putMap("oneDCodeDetails", details.toWritableMap())
39
- is DataMatrixDetails -> putMap("dataMatrixDetails", details.toWritableMap())
40
- is PDF417Details -> putMap("pdf417Details", details.toWritableMap())
41
- else -> Unit
42
- }
43
- putArray("eciSegments", eciSegments?.toWritableArray())
44
- }
45
-
46
- fun Array<out BarcodeResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
47
- forEach { pushMap(it.toWritableMap()) }
48
- }
49
-
50
- fun DecodedBarcodesResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
51
- merge(this@toWritableMap.toSharedWritableMap())
52
- putArray("items", items.toWritableArray())
53
- }
54
-
55
- fun SimplifiedBarcodeReaderSettings.toWritableMap(): WritableMap = Arguments.createMap().apply {
56
- // putInt("barcodeFormatIds0_31", barcodeFormatIds.toInt())
57
- // putInt("barcodeFormatIds32_63", barcodeFormatIds.shr(32).toInt())
58
- putString("_barcodeFormatIdsNumberString", barcodeFormatIds.toULong().toString())
59
- putInt("expectedBarcodesCount", expectedBarcodesCount)
60
- putInt("minResultConfidence", minResultConfidence)
61
- putInt("minBarcodeTextLength", minBarcodeTextLength)
62
- putString("barcodeTextRegExPattern", barcodeTextRegExPattern)
63
- putInt("maxThreadsInOneTask", maxThreadsInOneTask)
64
- putArray("localizationModes", localizationModes.toWritableArray())
65
- putArray("deblurModes", deblurModes.toWritableArray())
66
- putArray("grayscaleTransformationModes", grayscaleTransformationModes.toWritableArray())
67
- putArray("grayscaleEnhancementModes", grayscaleEnhancementModes.toWritableArray())
68
- putInt("scaleDownThreshold", scaleDownThreshold)
69
- }
70
-
71
- fun SimplifiedBarcodeReaderSettings.updateFromReadableMap(newSettings: ReadableMap) {
72
- if (newSettings.hasKey("_barcodeFormatIdsNumberString"))
73
- barcodeFormatIds = (newSettings.getString("_barcodeFormatIdsNumberString") ?: "0").toULong().toLong()
74
- // barcodeFormatIds = barcodeFormatIds0_31.toLong() or barcodeFormatIds32_63.toLong().shl(32)
75
- // val barcodeFormatIds0_31 = if (newSettings.hasKey("barcodeFormatIds0_31")) newSettings.getInt("barcodeFormatIds0_31") else 0
76
- // val barcodeFormatIds32_63 = if (newSettings.hasKey("barcodeFormatIds32_63")) newSettings.getInt("barcodeFormatIds32_63") else 0
77
- if (newSettings.hasKey("expectedBarcodesCount")) expectedBarcodesCount = newSettings.getInt("expectedBarcodesCount")
78
- if (newSettings.hasKey("minResultConfidence")) minResultConfidence = newSettings.getInt("minResultConfidence")
79
- if (newSettings.hasKey("minBarcodeTextLength")) minBarcodeTextLength = newSettings.getInt("minBarcodeTextLength")
80
- if (newSettings.hasKey("barcodeTextRegExPattern"))
81
- barcodeTextRegExPattern = newSettings.getString("barcodeTextRegExPattern")
82
- if (newSettings.hasKey("localizationModes"))
83
- localizationModes = newSettings.getArray("localizationModes")?.toIntArray()
84
- if (newSettings.hasKey("deblurModes"))
85
- deblurModes = newSettings.getArray("deblurModes")?.toIntArray()
86
- if (newSettings.hasKey("grayscaleTransformationModes"))
87
- grayscaleTransformationModes = newSettings.getArray("grayscaleTransformationModes")?.toIntArray()
88
- if (newSettings.hasKey("grayscaleEnhancementModes"))
89
- grayscaleEnhancementModes = newSettings.getArray("grayscaleEnhancementModes")?.toIntArray()
90
- if (newSettings.hasKey("scaleDownThreshold")) scaleDownThreshold = newSettings.getInt("scaleDownThreshold")
91
- maxThreadsInOneTask = if (newSettings.hasKey("maxThreadsInOneTask")) newSettings.getInt("maxThreadsInOneTask") else maxThreadsInOneTask
92
- }
93
-
94
- fun BarcodeDetails.toWritableMap(): WritableMap = Arguments.createMap().apply {
95
- when (this) {
96
- is QRCodeDetails -> {
97
- putInt("columns", columns)
98
- putInt("errorCorrectionLevel", errorCorrectionLevel)
99
- putInt("version", version)
100
- putInt("model", model)
101
- putInt("mode", mode)
102
- putInt("page", page)
103
- putInt("totalPage", totalPage)
104
- putInt("parityData", parityData.toInt())
105
- putInt("dataMaskPattern", dataMaskPattern)
106
- putArray("codewords", Arguments.fromArray(codewords))
107
- }
108
-
109
- is AztecDetails -> {
110
- putInt("rows", rows)
111
- putInt("columns", columns)
112
- putInt("layerNumber", layerNumber)
113
- }
114
-
115
- is OneDCodeDetails -> {
116
- putArray("startCharsBytes", Arguments.fromArray(startCharsBytes))
117
- putArray("stopCharsBytes", Arguments.fromArray(stopCharsBytes))
118
- putArray("checkDigitBytes", Arguments.fromArray(checkDigitBytes))
119
- putDouble("startPatternRange_lower", startPatternRange.lower.toDouble())
120
- putDouble("middlePatternRange_lower", middlePatternRange.lower.toDouble())
121
- putDouble("endPatternRange_lower", endPatternRange.lower.toDouble())
122
- putDouble("startPatternRange_upper", startPatternRange.upper.toDouble())
123
- putDouble("middlePatternRange_upper", middlePatternRange.upper.toDouble())
124
- putDouble("endPatternRange_upper", endPatternRange.upper.toDouble())
125
- }
126
-
127
- is DataMatrixDetails -> {
128
- putInt("rows", rows)
129
- putInt("columns", columns)
130
- putInt("dataRegionRows", dataRegionRows)
131
- putInt("dataRegionColumns", dataRegionColumns)
132
- putInt("dataRegionNumber", dataRegionNumber)
133
- }
134
-
135
- is PDF417Details -> {
136
- putInt("rows", rows)
137
- putInt("columns", columns)
138
- putInt("errorCorrectionLevel", errorCorrectionLevel)
139
- putBoolean("hasLeftRowIndicator", hasLeftRowIndicator())
140
- putBoolean("hasRightRowIndicator", hasRightRowIndicator())
141
- putArray("codewords", Arguments.fromArray(codewords))
142
- }
143
-
144
- else -> Unit
145
- }
146
- }
147
-
148
- fun Array<out ECISegment>.toWritableArray(): WritableArray = Arguments.createArray().apply {
149
- forEach { pushMap(it.toWritableMap()) }
150
- }
151
-
152
- fun ECISegment.toWritableMap(): WritableMap = Arguments.createMap().apply {
153
- putInt("eciValue", eciValue)
154
- putString("charsetEncoding", charsetEncoding)
155
- putInt("startIndex", startIndex)
156
- putInt("length", length)
157
- }
1
+ package com.dynamsoft.reactnativelib.basicutils
2
+
3
+
4
+ import android.util.Base64
5
+ import com.dynamsoft.core.basic_structures.CapturedResultItem
6
+ import com.dynamsoft.dbr.AztecDetails
7
+ import com.dynamsoft.dbr.BarcodeDetails
8
+ import com.dynamsoft.dbr.BarcodeResultItem
9
+ import com.dynamsoft.dbr.DataMatrixDetails
10
+ import com.dynamsoft.dbr.DecodedBarcodesResult
11
+ import com.dynamsoft.dbr.ECISegment
12
+ import com.dynamsoft.dbr.OneDCodeDetails
13
+ import com.dynamsoft.dbr.PDF417Details
14
+ import com.dynamsoft.dbr.QRCodeDetails
15
+ import com.dynamsoft.dbr.SimplifiedBarcodeReaderSettings
16
+ import com.facebook.react.bridge.Arguments
17
+ import com.facebook.react.bridge.ReadableMap
18
+ import com.facebook.react.bridge.WritableArray
19
+ import com.facebook.react.bridge.WritableMap
20
+
21
+ fun BarcodeResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
22
+ merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
23
+ // putInt("format0_31", format.toInt())
24
+ // putInt("format32_63", (format shr (32)).toInt())
25
+ putString("_formatNumberString", format.toULong().toString())
26
+ putString("formatString", formatString)
27
+ putString("text", text)
28
+ putString("bytes", Base64.encodeToString(bytes ?: byteArrayOf(), Base64.NO_WRAP))
29
+ putMap("location", location.toWritableMap())
30
+ putInt("confidence", confidence)
31
+ putInt("angle", angle)
32
+ putInt("moduleSize", moduleSize)
33
+ putBoolean("isMirrored", isMirrored)
34
+ putBoolean("isDPM", isDPM)
35
+ when (details) {
36
+ is QRCodeDetails -> putMap("qrCodeDetails", details.toWritableMap())
37
+ is AztecDetails -> putMap("aztecDetails", details.toWritableMap())
38
+ is OneDCodeDetails -> putMap("oneDCodeDetails", details.toWritableMap())
39
+ is DataMatrixDetails -> putMap("dataMatrixDetails", details.toWritableMap())
40
+ is PDF417Details -> putMap("pdf417Details", details.toWritableMap())
41
+ else -> Unit
42
+ }
43
+ putArray("eciSegments", eciSegments?.toWritableArray())
44
+ }
45
+
46
+ fun Array<out BarcodeResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
47
+ forEach { pushMap(it.toWritableMap()) }
48
+ }
49
+
50
+ fun DecodedBarcodesResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
51
+ merge(this@toWritableMap.toSharedWritableMap())
52
+ putArray("items", items.toWritableArray())
53
+ }
54
+
55
+ fun SimplifiedBarcodeReaderSettings.toWritableMap(): WritableMap = Arguments.createMap().apply {
56
+ // putInt("barcodeFormatIds0_31", barcodeFormatIds.toInt())
57
+ // putInt("barcodeFormatIds32_63", barcodeFormatIds.shr(32).toInt())
58
+ putString("_barcodeFormatIdsNumberString", barcodeFormatIds.toULong().toString())
59
+ putInt("expectedBarcodesCount", expectedBarcodesCount)
60
+ putInt("minResultConfidence", minResultConfidence)
61
+ putInt("minBarcodeTextLength", minBarcodeTextLength)
62
+ putString("barcodeTextRegExPattern", barcodeTextRegExPattern)
63
+ putInt("maxThreadsInOneTask", maxThreadsInOneTask)
64
+ putArray("localizationModes", localizationModes.toWritableArray())
65
+ putArray("deblurModes", deblurModes.toWritableArray())
66
+ putArray("grayscaleTransformationModes", grayscaleTransformationModes.toWritableArray())
67
+ putArray("grayscaleEnhancementModes", grayscaleEnhancementModes.toWritableArray())
68
+ putInt("scaleDownThreshold", scaleDownThreshold)
69
+ }
70
+
71
+ fun SimplifiedBarcodeReaderSettings.updateFromReadableMap(newSettings: ReadableMap) {
72
+ if (newSettings.hasKey("_barcodeFormatIdsNumberString"))
73
+ barcodeFormatIds = (newSettings.getString("_barcodeFormatIdsNumberString") ?: "0").toULong().toLong()
74
+ // barcodeFormatIds = barcodeFormatIds0_31.toLong() or barcodeFormatIds32_63.toLong().shl(32)
75
+ // val barcodeFormatIds0_31 = if (newSettings.hasKey("barcodeFormatIds0_31")) newSettings.getInt("barcodeFormatIds0_31") else 0
76
+ // val barcodeFormatIds32_63 = if (newSettings.hasKey("barcodeFormatIds32_63")) newSettings.getInt("barcodeFormatIds32_63") else 0
77
+ if (newSettings.hasKey("expectedBarcodesCount")) expectedBarcodesCount = newSettings.getInt("expectedBarcodesCount")
78
+ if (newSettings.hasKey("minResultConfidence")) minResultConfidence = newSettings.getInt("minResultConfidence")
79
+ if (newSettings.hasKey("minBarcodeTextLength")) minBarcodeTextLength = newSettings.getInt("minBarcodeTextLength")
80
+ if (newSettings.hasKey("barcodeTextRegExPattern"))
81
+ barcodeTextRegExPattern = newSettings.getString("barcodeTextRegExPattern")
82
+ if (newSettings.hasKey("localizationModes"))
83
+ localizationModes = newSettings.getArray("localizationModes")?.toIntArray()
84
+ if (newSettings.hasKey("deblurModes"))
85
+ deblurModes = newSettings.getArray("deblurModes")?.toIntArray()
86
+ if (newSettings.hasKey("grayscaleTransformationModes"))
87
+ grayscaleTransformationModes = newSettings.getArray("grayscaleTransformationModes")?.toIntArray()
88
+ if (newSettings.hasKey("grayscaleEnhancementModes"))
89
+ grayscaleEnhancementModes = newSettings.getArray("grayscaleEnhancementModes")?.toIntArray()
90
+ if (newSettings.hasKey("scaleDownThreshold")) scaleDownThreshold = newSettings.getInt("scaleDownThreshold")
91
+ maxThreadsInOneTask = if (newSettings.hasKey("maxThreadsInOneTask")) newSettings.getInt("maxThreadsInOneTask") else maxThreadsInOneTask
92
+ }
93
+
94
+ fun BarcodeDetails.toWritableMap(): WritableMap = Arguments.createMap().apply {
95
+ when (this) {
96
+ is QRCodeDetails -> {
97
+ putInt("columns", columns)
98
+ putInt("errorCorrectionLevel", errorCorrectionLevel)
99
+ putInt("version", version)
100
+ putInt("model", model)
101
+ putInt("mode", mode)
102
+ putInt("page", page)
103
+ putInt("totalPage", totalPage)
104
+ putInt("parityData", parityData.toInt())
105
+ putInt("dataMaskPattern", dataMaskPattern)
106
+ putArray("codewords", Arguments.fromArray(codewords))
107
+ }
108
+
109
+ is AztecDetails -> {
110
+ putInt("rows", rows)
111
+ putInt("columns", columns)
112
+ putInt("layerNumber", layerNumber)
113
+ }
114
+
115
+ is OneDCodeDetails -> {
116
+ putArray("startCharsBytes", Arguments.fromArray(startCharsBytes))
117
+ putArray("stopCharsBytes", Arguments.fromArray(stopCharsBytes))
118
+ putArray("checkDigitBytes", Arguments.fromArray(checkDigitBytes))
119
+ putDouble("startPatternRange_lower", startPatternRange.lower.toDouble())
120
+ putDouble("middlePatternRange_lower", middlePatternRange.lower.toDouble())
121
+ putDouble("endPatternRange_lower", endPatternRange.lower.toDouble())
122
+ putDouble("startPatternRange_upper", startPatternRange.upper.toDouble())
123
+ putDouble("middlePatternRange_upper", middlePatternRange.upper.toDouble())
124
+ putDouble("endPatternRange_upper", endPatternRange.upper.toDouble())
125
+ }
126
+
127
+ is DataMatrixDetails -> {
128
+ putInt("rows", rows)
129
+ putInt("columns", columns)
130
+ putInt("dataRegionRows", dataRegionRows)
131
+ putInt("dataRegionColumns", dataRegionColumns)
132
+ putInt("dataRegionNumber", dataRegionNumber)
133
+ }
134
+
135
+ is PDF417Details -> {
136
+ putInt("rows", rows)
137
+ putInt("columns", columns)
138
+ putInt("errorCorrectionLevel", errorCorrectionLevel)
139
+ putBoolean("hasLeftRowIndicator", hasLeftRowIndicator())
140
+ putBoolean("hasRightRowIndicator", hasRightRowIndicator())
141
+ putArray("codewords", Arguments.fromArray(codewords))
142
+ }
143
+
144
+ else -> Unit
145
+ }
146
+ }
147
+
148
+ fun Array<out ECISegment>.toWritableArray(): WritableArray = Arguments.createArray().apply {
149
+ forEach { pushMap(it.toWritableMap()) }
150
+ }
151
+
152
+ fun ECISegment.toWritableMap(): WritableMap = Arguments.createMap().apply {
153
+ putInt("eciValue", eciValue)
154
+ putString("charsetEncoding", charsetEncoding)
155
+ putInt("startIndex", startIndex)
156
+ putInt("length", length)
157
+ }