dynamsoft-capture-vision-react-native 3.4.1200 → 3.4.3000

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 (222) hide show
  1. package/LICENSE +5 -5
  2. package/README.md +62 -66
  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/dysJniLibs/debug/arm64-v8a/librn_dys.so +0 -0
  32. package/android/src/main/dysJniLibs/debug/armeabi-v7a/librn_dys.so +0 -0
  33. package/android/src/main/dysJniLibs/debug/x86/librn_dys.so +0 -0
  34. package/android/src/main/dysJniLibs/debug/x86_64/librn_dys.so +0 -0
  35. package/android/src/main/dysJniLibs/release/arm64-v8a/librn_dys.so +0 -0
  36. package/android/src/main/dysJniLibs/release/armeabi-v7a/librn_dys.so +0 -0
  37. package/android/src/main/dysJniLibs/release/x86/librn_dys.so +0 -0
  38. package/android/src/main/dysJniLibs/release/x86_64/librn_dys.so +0 -0
  39. package/android/src/main/dysJniLibsFor81/debug/arm64-v8a/librn_dys.so +0 -0
  40. package/android/src/main/dysJniLibsFor81/debug/armeabi-v7a/librn_dys.so +0 -0
  41. package/android/src/main/dysJniLibsFor81/debug/x86/librn_dys.so +0 -0
  42. package/android/src/main/dysJniLibsFor81/debug/x86_64/librn_dys.so +0 -0
  43. package/android/src/main/dysJniLibsFor81/release/arm64-v8a/librn_dys.so +0 -0
  44. package/android/src/main/dysJniLibsFor81/release/armeabi-v7a/librn_dys.so +0 -0
  45. package/android/src/main/dysJniLibsFor81/release/x86/librn_dys.so +0 -0
  46. package/android/src/main/dysJniLibsFor81/release/x86_64/librn_dys.so +0 -0
  47. package/android/src/main/dysJniLibsFor82/debug/arm64-v8a/librn_dys.so +0 -0
  48. package/android/src/main/dysJniLibsFor82/debug/armeabi-v7a/librn_dys.so +0 -0
  49. package/android/src/main/dysJniLibsFor82/debug/x86/librn_dys.so +0 -0
  50. package/android/src/main/dysJniLibsFor82/debug/x86_64/librn_dys.so +0 -0
  51. package/android/src/main/dysJniLibsFor82/release/arm64-v8a/librn_dys.so +0 -0
  52. package/android/src/main/dysJniLibsFor82/release/armeabi-v7a/librn_dys.so +0 -0
  53. package/android/src/main/dysJniLibsFor82/release/x86/librn_dys.so +0 -0
  54. package/android/src/main/dysJniLibsFor82/release/x86_64/librn_dys.so +0 -0
  55. package/android/src/main/dysJniLibsFor86/debug/arm64-v8a/librn_dys.so +3 -0
  56. package/android/src/main/dysJniLibsFor86/debug/armeabi-v7a/librn_dys.so +3 -0
  57. package/android/src/main/dysJniLibsFor86/debug/x86/librn_dys.so +3 -0
  58. package/android/src/main/dysJniLibsFor86/debug/x86_64/librn_dys.so +3 -0
  59. package/android/src/main/dysJniLibsFor86/release/arm64-v8a/librn_dys.so +3 -0
  60. package/android/src/main/dysJniLibsFor86/release/armeabi-v7a/librn_dys.so +3 -0
  61. package/android/src/main/dysJniLibsFor86/release/x86/librn_dys.so +3 -0
  62. package/android/src/main/dysJniLibsFor86/release/x86_64/librn_dys.so +3 -0
  63. package/android/src/main/java/com/dynamsoft/reactnativelib/CVRModule.kt +137 -137
  64. package/android/src/main/java/com/dynamsoft/reactnativelib/CameraViewManager.kt +62 -62
  65. package/android/src/main/java/com/dynamsoft/reactnativelib/DCEModule.kt +125 -125
  66. package/android/src/main/java/com/dynamsoft/reactnativelib/DynamsoftBaseModule.kt +8 -8
  67. package/android/src/main/java/com/dynamsoft/reactnativelib/ISAModule.kt +73 -73
  68. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageEditorViewManager.kt +14 -14
  69. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageEditorViewModule.kt +35 -35
  70. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageManagerModule.kt +15 -15
  71. package/android/src/main/java/com/dynamsoft/reactnativelib/LicenseModule.kt +29 -29
  72. package/android/src/main/java/com/dynamsoft/reactnativelib/MultiCrossFilterModule.kt +83 -83
  73. package/android/src/main/java/com/dynamsoft/reactnativelib/ReactNativeDcvPackage.kt +32 -32
  74. package/android/src/main/java/com/dynamsoft/reactnativelib/VersionsModule.kt +41 -41
  75. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/Basic.kt +44 -44
  76. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForCore.kt +50 -50
  77. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForCvr.kt +129 -129
  78. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDBR.kt +157 -157
  79. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDCE.kt +110 -110
  80. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDCP.kt +49 -49
  81. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDDN.kt +85 -85
  82. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDLR.kt +72 -72
  83. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ImageUtil.kt +58 -58
  84. package/android/src/main/java/com/dynamsoft/reactnativelib/core/ImageSourceAdapterModuleImpl.kt +120 -120
  85. package/android/src/main/java/com/dynamsoft/reactnativelib/cvr/CaptureVisionRouterModuleImpl.kt +306 -306
  86. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraEnhancerModuleImpl.kt +247 -247
  87. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraLifeCycleOwner.java +14 -14
  88. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraViewManagerImpl.kt +77 -77
  89. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewManagerImpl.kt +15 -15
  90. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewModuleImpl.kt +110 -110
  91. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/RNCameraView.kt +20 -20
  92. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/RNImageEditorView.kt +19 -19
  93. package/android/src/main/java/com/dynamsoft/reactnativelib/license/LicenseModuleImpl.kt +39 -39
  94. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/ImageManagerModuleImpl.kt +120 -120
  95. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/MultiCrossFilterModuleImpl.kt +111 -111
  96. package/app.plugin.js +21 -21
  97. package/dynamsoft-capture-vision-react-native.podspec +24 -24
  98. package/ios/CPP/DSImageData+HostObject.h +18 -18
  99. package/ios/CPP/DSImageData+HostObject.mm +38 -38
  100. package/ios/CPP/ImageDataHostObject.cpp +87 -87
  101. package/ios/CPP/ImageDataHostObject.hpp +35 -35
  102. package/ios/CPP/MutableRawBuffer.cpp +23 -23
  103. package/ios/CPP/MutableRawBuffer.hpp +23 -23
  104. package/ios/CPP/RNDynamsoft+JSI.h +22 -22
  105. package/ios/CPP/RNDynamsoft+JSI.mm +303 -303
  106. package/ios/CPP/RNDynamsoft+Json.h +93 -93
  107. package/ios/CPP/RNDynamsoft+Json.m +733 -733
  108. package/ios/CPP/YeetJSIUtils.h +56 -56
  109. package/ios/CPP/YeetJSIUtils.mm +208 -208
  110. package/ios/RNDynamsoftCameraView.h +31 -31
  111. package/ios/RNDynamsoftCameraView.m +108 -108
  112. package/ios/RNDynamsoftCameraViewManager.h +14 -14
  113. package/ios/RNDynamsoftCameraViewManager.m +195 -195
  114. package/ios/RNDynamsoftCaptureVisionRouter.h +18 -18
  115. package/ios/RNDynamsoftCaptureVisionRouter.mm +532 -532
  116. package/ios/RNDynamsoftImageEditorView.h +17 -17
  117. package/ios/RNDynamsoftImageEditorView.m +25 -25
  118. package/ios/RNDynamsoftImageEditorViewManager.h +14 -14
  119. package/ios/RNDynamsoftImageEditorViewManager.mm +183 -183
  120. package/ios/RNDynamsoftImageManager.h +14 -14
  121. package/ios/RNDynamsoftImageManager.mm +369 -369
  122. package/ios/RNDynamsoftImageSourceAdapter.h +19 -19
  123. package/ios/RNDynamsoftImageSourceAdapter.mm +255 -255
  124. package/ios/RNDynamsoftLicense.h +14 -14
  125. package/ios/RNDynamsoftLicense.m +62 -62
  126. package/ios/RNDynamsoftMultiCrossFilter.h +14 -14
  127. package/ios/RNDynamsoftMultiCrossFilter.m +145 -145
  128. package/ios/RNDynamsoftVersions.h +13 -13
  129. package/ios/RNDynamsoftVersions.m +27 -27
  130. package/package.json +48 -48
  131. package/src/NativeDynamsoftVersionsModule.tsx +20 -20
  132. package/src/VersionsModule.tsx +7 -7
  133. package/src/core/CapturedResultBase.tsx +18 -18
  134. package/src/core/CapturedResultItem.tsx +23 -23
  135. package/src/core/CoreModule.tsx +9 -9
  136. package/src/core/DSRect.tsx +29 -29
  137. package/src/core/EnumCaptureResultItemType.tsx +52 -52
  138. package/src/core/EnumColourChannelUsageType.tsx +26 -26
  139. package/src/core/EnumCrossVerificationStatus.tsx +46 -46
  140. package/src/core/EnumGrayscaleEnhancementMode.tsx +46 -46
  141. package/src/core/EnumGrayscaleTransformationMode.tsx +35 -35
  142. package/src/core/EnumImageFileFormat.tsx +6 -6
  143. package/src/core/EnumPixelFormat.tsx +53 -53
  144. package/src/core/ImageData.tsx +87 -87
  145. package/src/core/ImageSourceAdapter.tsx +160 -160
  146. package/src/core/NativeDynamsoftImageSourceAdapterModule.tsx +29 -29
  147. package/src/core/Point.tsx +13 -13
  148. package/src/core/Quadrilateral.tsx +12 -12
  149. package/src/core/index.tsx +18 -18
  150. package/src/cvr/CaptureVisionRouter.tsx +683 -683
  151. package/src/cvr/CaptureVisionRouterModule.tsx +9 -9
  152. package/src/cvr/CapturedResult.tsx +123 -123
  153. package/src/cvr/CapturedResultFilter.tsx +13 -13
  154. package/src/cvr/CapturedResultReceiver.tsx +71 -71
  155. package/src/cvr/EnumPresetTemplate.tsx +81 -81
  156. package/src/cvr/NativeDynamsoftCaptureVisionRouterModule.tsx +25 -25
  157. package/src/cvr/SimplifiedCaptureVisionSettings.tsx +61 -61
  158. package/src/cvr/index.tsx +11 -11
  159. package/src/dbr/BarcodeDetails.tsx +51 -51
  160. package/src/dbr/BarcodeReaderModule.tsx +9 -9
  161. package/src/dbr/BarcodeResultItem.tsx +65 -65
  162. package/src/dbr/DecodedBarcodesResult.tsx +14 -14
  163. package/src/dbr/ECISegment.tsx +23 -23
  164. package/src/dbr/EnumBarcodeFormat.tsx +112 -112
  165. package/src/dbr/EnumDeblurMode.tsx +29 -29
  166. package/src/dbr/EnumLocalizationMode.tsx +27 -27
  167. package/src/dbr/EnumQRCodeErrorCorrectionLevel.tsx +6 -6
  168. package/src/dbr/SimplifiedBarcodeReaderSettings.tsx +80 -80
  169. package/src/dbr/index.tsx +9 -9
  170. package/src/dce/CameraEnhancer.tsx +254 -254
  171. package/src/dce/CameraEnhancerModule.tsx +9 -9
  172. package/src/dce/CameraView.tsx +100 -100
  173. package/src/dce/DynamsoftCameraViewNativeComponent.ts +96 -96
  174. package/src/dce/DynamsoftImageEditorViewNativeComponent.ts +9 -9
  175. package/src/dce/EnumCameraPosition.tsx +25 -25
  176. package/src/dce/EnumDrawingLayerId.tsx +17 -17
  177. package/src/dce/EnumEnhancedFeatures.tsx +24 -24
  178. package/src/dce/EnumFocusMode.tsx +6 -6
  179. package/src/dce/EnumResolution.tsx +8 -8
  180. package/src/dce/EnumTorchState.tsx +10 -10
  181. package/src/dce/FeedBack.tsx +28 -28
  182. package/src/dce/ImageEditorView.tsx +131 -131
  183. package/src/dce/NativeDynamsoftCameraViewModule.tsx +47 -47
  184. package/src/dce/NativeDynamsoftImageEditorViewModule.ts +9 -9
  185. package/src/dce/index.tsx +13 -13
  186. package/src/dcp/CodeParserDedicatorModule.tsx +9 -9
  187. package/src/dcp/CodeParserModule.tsx +9 -9
  188. package/src/dcp/EnumMappingStatus.tsx +14 -14
  189. package/src/dcp/EnumValidationStatus.tsx +14 -14
  190. package/src/dcp/ParsedResult.tsx +14 -14
  191. package/src/dcp/ParsedResultItem.tsx +50 -50
  192. package/src/dcp/index.tsx +8 -8
  193. package/src/ddn/DeskewedImageResultItem.tsx +40 -40
  194. package/src/ddn/DetectedQuadResultItem.tsx +31 -31
  195. package/src/ddn/DocumentNormalizerModule.tsx +9 -9
  196. package/src/ddn/EnhancedImageResultItem.tsx +20 -20
  197. package/src/ddn/EnumImageColourMode.tsx +14 -14
  198. package/src/ddn/ProcessedDocumentResult.tsx +27 -27
  199. package/src/ddn/SimplifiedDocumentNormalizerSettings.tsx +65 -65
  200. package/src/ddn/index.tsx +11 -11
  201. package/src/dip/ImageProcessingModule.tsx +9 -9
  202. package/src/dip/index.tsx +1 -1
  203. package/src/dlr/CharacterResult.tsx +28 -28
  204. package/src/dlr/LabelRecognizerModule.tsx +9 -9
  205. package/src/dlr/RecognizedTextLinesResult.tsx +19 -19
  206. package/src/dlr/SimplifiedLabelRecognizerSettings.tsx +33 -33
  207. package/src/dlr/TextLineResultItem.tsx +41 -41
  208. package/src/dlr/index.tsx +8 -8
  209. package/src/index.tsx +13 -13
  210. package/src/license/LicenseManager.tsx +49 -49
  211. package/src/license/LicenseModule.tsx +9 -9
  212. package/src/license/NativeDynamsoftLicenseModule.tsx +7 -7
  213. package/src/license/index.tsx +7 -7
  214. package/src/utility/CrossVerificationCriteria.tsx +11 -11
  215. package/src/utility/EnumFilterType.tsx +5 -5
  216. package/src/utility/ImageManager.tsx +348 -348
  217. package/src/utility/MultiFrameResultCrossFilter.tsx +183 -183
  218. package/src/utility/NativeDynamsoftImageManagerModule.tsx +7 -7
  219. package/src/utility/NativeDynamsoftMultiCrossFilterModule.tsx +18 -18
  220. package/src/utility/UtilityModule.tsx +9 -9
  221. package/src/utility/index.tsx +4 -4
  222. package/android/.gitignore +0 -4
@@ -1,110 +1,110 @@
1
- package com.dynamsoft.reactnativelib.basicutils
2
-
3
- import android.content.Context
4
- import android.graphics.Point
5
- import android.graphics.Rect
6
- import android.graphics.drawable.Drawable
7
- import androidx.appcompat.content.res.AppCompatResources
8
- import com.dynamsoft.core.basic_structures.DSRect
9
- import com.dynamsoft.dce.CameraView
10
- import com.facebook.react.bridge.Arguments
11
- import com.facebook.react.bridge.ReadableMap
12
- import com.facebook.react.bridge.ReadableType
13
- import com.facebook.react.bridge.WritableMap
14
-
15
-
16
- fun ReadableMap.toRect() = Rect().apply {
17
- left = if (hasKey("x")) getInt("x") else left
18
- top = if (hasKey("y")) getInt("y") else top
19
- right = (if (hasKey("width")) getInt("width") else 0) + left
20
- bottom = (if (hasKey("height")) getInt("height") else 0) + top
21
- }
22
-
23
- fun ReadableMap.toScanRegion() = DSRect().apply {
24
- top = if (hasKey("top")) getDouble("top").toFloat() else top
25
- bottom = if (hasKey("bottom")) getDouble("bottom").toFloat() else bottom
26
- left = if (hasKey("left")) getDouble("left").toFloat() else left
27
- right = if (hasKey("right")) getDouble("right").toFloat() else right
28
- if (hasKey("measuredInPercentage")) {
29
- when (getType("measuredInPercentage")) {
30
- ReadableType.Number -> measuredInPercentage = getInt("measuredInPercentage") != 0
31
- ReadableType.Boolean -> measuredInPercentage = getBoolean("measuredInPercentage")
32
- else -> {/*keep*/
33
- }
34
- }
35
- }
36
- }
37
-
38
- fun DSRect.toWritableMap(): WritableMap = Arguments.createMap().apply {
39
- putDouble("top", this@toWritableMap.top.toDouble())
40
- putDouble("bottom", this@toWritableMap.bottom.toDouble())
41
- putDouble("left", this@toWritableMap.left.toDouble())
42
- putDouble("right", this@toWritableMap.right.toDouble())
43
- putBoolean("measuredInPercentage", this@toWritableMap.measuredInPercentage)
44
- }
45
-
46
- fun ReadableMap.toTorchButtonState(): CameraViewButtonState {
47
- val rect = if (hasKey("location")) getMap("location")!!.toRect() else Rect(25,100,70,145)
48
- val visible = if (hasKey("visible")) getBoolean("visible") else null
49
- val torchOnImageBase64 = if (hasKey("torchOnImageBase64")) getString("torchOnImageBase64") else null
50
- val torchOffImageBase64 = if (hasKey("torchOffImageBase64")) getString("torchOffImageBase64") else null
51
- return CameraViewButtonState(rect, visible, torchOnImageBase64, torchOffImageBase64)
52
- }
53
-
54
- fun ReadableMap.toCameraToggleButtonState(): CameraViewButtonState {
55
- val rect = if (hasKey("location")) getMap("location")!!.toRect() else Rect(25,100,70,145)
56
- val visible = if (hasKey("visible")) getBoolean("visible") else false
57
- val cameraImageBase64 = if (hasKey("cameraToggleImageBase64")) getString("cameraToggleImageBase64") else null
58
- return CameraViewButtonState(rect, visible, cameraBase64 = cameraImageBase64)
59
- }
60
-
61
- fun CameraView.setTorchButtonState(torchButtonState: CameraViewButtonState) {
62
- setTorchButton(
63
- torchButtonState.getLeftTopPoint(), torchButtonState.getWidth(), torchButtonState.getHeight(),
64
- torchButtonState.getTouchOnDrawable(context), torchButtonState.getTouchOffDrawable(context)
65
- )
66
- torchButtonState.visible?.apply {
67
- torchButtonVisible = this
68
- }
69
- }
70
-
71
- fun CameraView.setCameraToggleButtonState(cameraToggleButtonState: CameraViewButtonState) {
72
- setCameraToggleButton(
73
- cameraToggleButtonState.getLeftTopPoint(), cameraToggleButtonState.getWidth(), cameraToggleButtonState.getHeight(),
74
- cameraToggleButtonState.getCameraToggleDrawable(context)
75
- )
76
- }
77
-
78
- class CameraViewButtonState(
79
- val location: Rect,
80
- val visible: Boolean? = null,
81
- val touchOnBase64: String? = null,
82
- val touchOffBase64: String? = null,
83
- val cameraBase64: String? = null,
84
- ) {
85
- fun getLeftTopPoint() = Point(location.left, location.top)
86
- fun getWidth() = location.width()
87
- fun getHeight() = location.height()
88
-
89
- fun getTouchOnDrawable(context: Context): Drawable {
90
- return base64ToDrawable(touchOnBase64, context.resources!!) ?: AppCompatResources.getDrawable(
91
- context,
92
- com.dynamsoft.R.drawable.icon_flash_on
93
- )!!
94
- }
95
-
96
- fun getTouchOffDrawable(context: Context): Drawable {
97
- return base64ToDrawable(touchOffBase64, context.resources!!) ?: AppCompatResources.getDrawable(
98
- context,
99
- com.dynamsoft.R.drawable.icon_flash_off
100
- )!!
101
- }
102
-
103
- fun getCameraToggleDrawable(context: Context): Drawable {
104
- return base64ToDrawable(cameraBase64, context.resources!!) ?: AppCompatResources.getDrawable(context, com.dynamsoft.R.drawable.icon_turn_camera)!!
105
- }
106
-
107
- override fun toString(): String {
108
- return "CameraViewButtonState(location=$location, visible=$visible, touchOnBase64=$touchOnBase64, touchOffBase64=$touchOffBase64)"
109
- }
110
- }
1
+ package com.dynamsoft.reactnativelib.basicutils
2
+
3
+ import android.content.Context
4
+ import android.graphics.Point
5
+ import android.graphics.Rect
6
+ import android.graphics.drawable.Drawable
7
+ import androidx.appcompat.content.res.AppCompatResources
8
+ import com.dynamsoft.core.basic_structures.DSRect
9
+ import com.dynamsoft.dce.CameraView
10
+ import com.facebook.react.bridge.Arguments
11
+ import com.facebook.react.bridge.ReadableMap
12
+ import com.facebook.react.bridge.ReadableType
13
+ import com.facebook.react.bridge.WritableMap
14
+
15
+
16
+ fun ReadableMap.toRect() = Rect().apply {
17
+ left = if (hasKey("x")) getInt("x") else left
18
+ top = if (hasKey("y")) getInt("y") else top
19
+ right = (if (hasKey("width")) getInt("width") else 0) + left
20
+ bottom = (if (hasKey("height")) getInt("height") else 0) + top
21
+ }
22
+
23
+ fun ReadableMap.toScanRegion() = DSRect().apply {
24
+ top = if (hasKey("top")) getDouble("top").toFloat() else top
25
+ bottom = if (hasKey("bottom")) getDouble("bottom").toFloat() else bottom
26
+ left = if (hasKey("left")) getDouble("left").toFloat() else left
27
+ right = if (hasKey("right")) getDouble("right").toFloat() else right
28
+ if (hasKey("measuredInPercentage")) {
29
+ when (getType("measuredInPercentage")) {
30
+ ReadableType.Number -> measuredInPercentage = getInt("measuredInPercentage") != 0
31
+ ReadableType.Boolean -> measuredInPercentage = getBoolean("measuredInPercentage")
32
+ else -> {/*keep*/
33
+ }
34
+ }
35
+ }
36
+ }
37
+
38
+ fun DSRect.toWritableMap(): WritableMap = Arguments.createMap().apply {
39
+ putDouble("top", this@toWritableMap.top.toDouble())
40
+ putDouble("bottom", this@toWritableMap.bottom.toDouble())
41
+ putDouble("left", this@toWritableMap.left.toDouble())
42
+ putDouble("right", this@toWritableMap.right.toDouble())
43
+ putBoolean("measuredInPercentage", this@toWritableMap.measuredInPercentage)
44
+ }
45
+
46
+ fun ReadableMap.toTorchButtonState(): CameraViewButtonState {
47
+ val rect = if (hasKey("location")) getMap("location")!!.toRect() else Rect(25,100,70,145)
48
+ val visible = if (hasKey("visible")) getBoolean("visible") else null
49
+ val torchOnImageBase64 = if (hasKey("torchOnImageBase64")) getString("torchOnImageBase64") else null
50
+ val torchOffImageBase64 = if (hasKey("torchOffImageBase64")) getString("torchOffImageBase64") else null
51
+ return CameraViewButtonState(rect, visible, torchOnImageBase64, torchOffImageBase64)
52
+ }
53
+
54
+ fun ReadableMap.toCameraToggleButtonState(): CameraViewButtonState {
55
+ val rect = if (hasKey("location")) getMap("location")!!.toRect() else Rect(25,100,70,145)
56
+ val visible = if (hasKey("visible")) getBoolean("visible") else false
57
+ val cameraImageBase64 = if (hasKey("cameraToggleImageBase64")) getString("cameraToggleImageBase64") else null
58
+ return CameraViewButtonState(rect, visible, cameraBase64 = cameraImageBase64)
59
+ }
60
+
61
+ fun CameraView.setTorchButtonState(torchButtonState: CameraViewButtonState) {
62
+ setTorchButton(
63
+ torchButtonState.getLeftTopPoint(), torchButtonState.getWidth(), torchButtonState.getHeight(),
64
+ torchButtonState.getTouchOnDrawable(context), torchButtonState.getTouchOffDrawable(context)
65
+ )
66
+ torchButtonState.visible?.apply {
67
+ torchButtonVisible = this
68
+ }
69
+ }
70
+
71
+ fun CameraView.setCameraToggleButtonState(cameraToggleButtonState: CameraViewButtonState) {
72
+ setCameraToggleButton(
73
+ cameraToggleButtonState.getLeftTopPoint(), cameraToggleButtonState.getWidth(), cameraToggleButtonState.getHeight(),
74
+ cameraToggleButtonState.getCameraToggleDrawable(context)
75
+ )
76
+ }
77
+
78
+ class CameraViewButtonState(
79
+ val location: Rect,
80
+ val visible: Boolean? = null,
81
+ val touchOnBase64: String? = null,
82
+ val touchOffBase64: String? = null,
83
+ val cameraBase64: String? = null,
84
+ ) {
85
+ fun getLeftTopPoint() = Point(location.left, location.top)
86
+ fun getWidth() = location.width()
87
+ fun getHeight() = location.height()
88
+
89
+ fun getTouchOnDrawable(context: Context): Drawable {
90
+ return base64ToDrawable(touchOnBase64, context.resources!!) ?: AppCompatResources.getDrawable(
91
+ context,
92
+ com.dynamsoft.R.drawable.icon_flash_on
93
+ )!!
94
+ }
95
+
96
+ fun getTouchOffDrawable(context: Context): Drawable {
97
+ return base64ToDrawable(touchOffBase64, context.resources!!) ?: AppCompatResources.getDrawable(
98
+ context,
99
+ com.dynamsoft.R.drawable.icon_flash_off
100
+ )!!
101
+ }
102
+
103
+ fun getCameraToggleDrawable(context: Context): Drawable {
104
+ return base64ToDrawable(cameraBase64, context.resources!!) ?: AppCompatResources.getDrawable(context, com.dynamsoft.R.drawable.icon_turn_camera)!!
105
+ }
106
+
107
+ override fun toString(): String {
108
+ return "CameraViewButtonState(location=$location, visible=$visible, touchOnBase64=$touchOnBase64, touchOffBase64=$touchOffBase64)"
109
+ }
110
+ }
@@ -1,50 +1,50 @@
1
- package com.dynamsoft.reactnativelib.basicutils
2
-
3
- import com.dynamsoft.core.basic_structures.CapturedResultItem
4
- import com.dynamsoft.dcp.ParsedResult
5
- import com.dynamsoft.dcp.ParsedResultItem
6
- import com.facebook.react.bridge.Arguments
7
- import com.facebook.react.bridge.WritableArray
8
- import com.facebook.react.bridge.WritableMap
9
-
10
-
11
- /*
12
- *
13
- * export interface itemField {
14
- * value?: string,
15
- * mappingStatus?: EnumMappingStatus | number,
16
- * validationStatus?: EnumValidationStatus | number
17
- * }
18
- *
19
- * export interface ParsedResultItem {
20
- * codeType: string
21
- * jsonString: string
22
- * parsedFields?: Map<String, itemField>
23
- * }
24
- * */
25
- fun ParsedResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
26
- merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
27
- putString("codeType", codeType)
28
- putString("jsonString", jsonString)
29
- val fieldsMap = Arguments.createMap()
30
- parsedFields.entries.forEach {
31
- val fieldMap = Arguments.createMap().apply {
32
- putString("value", it.value)
33
- putInt("mappingStatus", getFieldMappingStatus(it.key))
34
- putInt("validationStatus", getFieldValidationStatus(it.key))
35
- }
36
- fieldsMap.putMap(it.key, fieldMap)
37
- }
38
- putMap("parsedFields", fieldsMap)
39
- }
40
-
41
- fun Array<out ParsedResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
42
- forEach { pushMap(it.toWritableMap()) }
43
- }
44
-
45
- fun ParsedResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
46
- putInt("errorCode", errorCode)
47
- putString("originalImageHashId", originalImageHashId)
48
- putString("errorMessage", errorMessage)
49
- putArray("items", items.toWritableArray())
1
+ package com.dynamsoft.reactnativelib.basicutils
2
+
3
+ import com.dynamsoft.core.basic_structures.CapturedResultItem
4
+ import com.dynamsoft.dcp.ParsedResult
5
+ import com.dynamsoft.dcp.ParsedResultItem
6
+ import com.facebook.react.bridge.Arguments
7
+ import com.facebook.react.bridge.WritableArray
8
+ import com.facebook.react.bridge.WritableMap
9
+
10
+
11
+ /*
12
+ *
13
+ * export interface itemField {
14
+ * value?: string,
15
+ * mappingStatus?: EnumMappingStatus | number,
16
+ * validationStatus?: EnumValidationStatus | number
17
+ * }
18
+ *
19
+ * export interface ParsedResultItem {
20
+ * codeType: string
21
+ * jsonString: string
22
+ * parsedFields?: Map<String, itemField>
23
+ * }
24
+ * */
25
+ fun ParsedResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
26
+ merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
27
+ putString("codeType", codeType)
28
+ putString("jsonString", jsonString)
29
+ val fieldsMap = Arguments.createMap()
30
+ parsedFields.entries.forEach {
31
+ val fieldMap = Arguments.createMap().apply {
32
+ putString("value", it.value)
33
+ putInt("mappingStatus", getFieldMappingStatus(it.key))
34
+ putInt("validationStatus", getFieldValidationStatus(it.key))
35
+ }
36
+ fieldsMap.putMap(it.key, fieldMap)
37
+ }
38
+ putMap("parsedFields", fieldsMap)
39
+ }
40
+
41
+ fun Array<out ParsedResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
42
+ forEach { pushMap(it.toWritableMap()) }
43
+ }
44
+
45
+ fun ParsedResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
46
+ putInt("errorCode", errorCode)
47
+ putString("originalImageHashId", originalImageHashId)
48
+ putString("errorMessage", errorMessage)
49
+ putArray("items", items.toWritableArray())
50
50
  }
@@ -1,86 +1,86 @@
1
- package com.dynamsoft.reactnativelib.basicutils
2
-
3
- import com.dynamsoft.core.basic_structures.CapturedResultItem
4
- import com.dynamsoft.ddn.DeskewedImageResultItem
5
- import com.dynamsoft.ddn.DetectedQuadResultItem
6
- import com.dynamsoft.ddn.EnhancedImageResultItem
7
- import com.dynamsoft.ddn.ProcessedDocumentResult
8
- import com.dynamsoft.ddn.SimplifiedDocumentNormalizerSettings
9
- import com.facebook.react.bridge.Arguments
10
- import com.facebook.react.bridge.ReadableMap
11
- import com.facebook.react.bridge.WritableArray
12
- import com.facebook.react.bridge.WritableMap
13
-
14
-
15
- fun ProcessedDocumentResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
16
- merge(this@toWritableMap.toSharedWritableMap())
17
- putArray("deskewedImageResultItems", deskewedImageResultItems.toWritableArray())
18
- putArray("detectedQuadResultItems", detectedQuadResultItems.toWritableArray())
19
- putArray("enhancedImageResultItems", enhancedImageResultItems.toWritableArray())
20
- }
21
-
22
- fun DetectedQuadResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
23
- merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
24
- putMap("location", location.toWritableMap())
25
- putInt("confidenceAsDocumentBoundary", confidenceAsDocumentBoundary)
26
- putInt("crossVerificationStatus", crossVerificationStatus)
27
- }
28
-
29
-
30
- fun Array<out DetectedQuadResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
31
- forEach { pushMap(it.toWritableMap()) }
32
- }
33
-
34
-
35
- fun DeskewedImageResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
36
- merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
37
- putMap("sourceDeskewQuad", sourceDeskewQuad.toWritableMap())
38
- putInt("crossVerificationStatus", crossVerificationStatus)
39
- putArray("originalToLocalMatrix", FloatArray(9).apply { originalToLocalMatrix.getValues(this) }.toWritableArray())
40
- }
41
-
42
- fun Array<out DeskewedImageResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
43
- forEach { pushMap(it.toWritableMap()) }
44
- }
45
-
46
- fun EnhancedImageResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
47
- merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
48
- putArray("originalToLocalMatrix", FloatArray(9).apply { originalToLocalMatrix.getValues(this) }.toWritableArray())
49
- }
50
-
51
- fun Array<out EnhancedImageResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
52
- forEach { pushMap(it.toWritableMap()) }
53
- }
54
-
55
-
56
-
57
- fun SimplifiedDocumentNormalizerSettings.toWritableMap(): WritableMap = Arguments.createMap().apply {
58
- putArray("grayscaleTransformationModes", grayscaleTransformationModes.toWritableArray())
59
- putArray("grayscaleEnhancementModes", grayscaleEnhancementModes.toWritableArray())
60
- putArray("pageSize", pageSize.toWritableArray())
61
- putInt("colourMode", colourMode)
62
- putInt("brightness", brightness)
63
- putInt("contrast", contrast)
64
- putInt("maxThreadsInOneTask", maxThreadsInOneTask)
65
- putInt("scaleDownThreshold", scaleDownThreshold)
66
- putInt("minQuadrilateralAreaRatio", minQuadrilateralAreaRatio)
67
- putInt("expectedDocumentsCount", expectedDocumentsCount)
68
- }
69
-
70
- fun SimplifiedDocumentNormalizerSettings.updateFromReadableMap(newSettings: ReadableMap) {
71
- colourMode = if (newSettings.hasKey("colourMode")) newSettings.getInt("colourMode") else colourMode
72
- brightness = if (newSettings.hasKey("brightness")) newSettings.getInt("brightness") else brightness
73
- contrast = if (newSettings.hasKey("contrast")) newSettings.getInt("contrast") else contrast
74
- maxThreadsInOneTask = if (newSettings.hasKey("maxThreadsInOneTask")) newSettings.getInt("maxThreadsInOneTask") else maxThreadsInOneTask
75
- scaleDownThreshold = if (newSettings.hasKey("scaleDownThreshold")) newSettings.getInt("scaleDownThreshold") else scaleDownThreshold
76
- pageSize = if (newSettings.hasKey("pageSize")) newSettings.getArray("pageSize")?.toIntArray() else pageSize
77
-
78
- grayscaleTransformationModes = if (newSettings.hasKey("grayscaleTransformationModes"))
79
- newSettings.getArray("grayscaleTransformationModes")?.toIntArray() else grayscaleTransformationModes
80
-
81
- grayscaleEnhancementModes = if (newSettings.hasKey("grayscaleEnhancementModes"))
82
- newSettings.getArray("grayscaleEnhancementModes")?.toIntArray() else grayscaleEnhancementModes
83
-
84
- minQuadrilateralAreaRatio = if (newSettings.hasKey("minQuadrilateralAreaRatio")) newSettings.getInt("minQuadrilateralAreaRatio") else minQuadrilateralAreaRatio
85
- expectedDocumentsCount = if (newSettings.hasKey("expectedDocumentsCount")) newSettings.getInt("expectedDocumentsCount") else expectedDocumentsCount
1
+ package com.dynamsoft.reactnativelib.basicutils
2
+
3
+ import com.dynamsoft.core.basic_structures.CapturedResultItem
4
+ import com.dynamsoft.ddn.DeskewedImageResultItem
5
+ import com.dynamsoft.ddn.DetectedQuadResultItem
6
+ import com.dynamsoft.ddn.EnhancedImageResultItem
7
+ import com.dynamsoft.ddn.ProcessedDocumentResult
8
+ import com.dynamsoft.ddn.SimplifiedDocumentNormalizerSettings
9
+ import com.facebook.react.bridge.Arguments
10
+ import com.facebook.react.bridge.ReadableMap
11
+ import com.facebook.react.bridge.WritableArray
12
+ import com.facebook.react.bridge.WritableMap
13
+
14
+
15
+ fun ProcessedDocumentResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
16
+ merge(this@toWritableMap.toSharedWritableMap())
17
+ putArray("deskewedImageResultItems", deskewedImageResultItems.toWritableArray())
18
+ putArray("detectedQuadResultItems", detectedQuadResultItems.toWritableArray())
19
+ putArray("enhancedImageResultItems", enhancedImageResultItems.toWritableArray())
20
+ }
21
+
22
+ fun DetectedQuadResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
23
+ merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
24
+ putMap("location", location.toWritableMap())
25
+ putInt("confidenceAsDocumentBoundary", confidenceAsDocumentBoundary)
26
+ putInt("crossVerificationStatus", crossVerificationStatus)
27
+ }
28
+
29
+
30
+ fun Array<out DetectedQuadResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
31
+ forEach { pushMap(it.toWritableMap()) }
32
+ }
33
+
34
+
35
+ fun DeskewedImageResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
36
+ merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
37
+ putMap("sourceDeskewQuad", sourceDeskewQuad.toWritableMap())
38
+ putInt("crossVerificationStatus", crossVerificationStatus)
39
+ putArray("originalToLocalMatrix", FloatArray(9).apply { originalToLocalMatrix.getValues(this) }.toWritableArray())
40
+ }
41
+
42
+ fun Array<out DeskewedImageResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
43
+ forEach { pushMap(it.toWritableMap()) }
44
+ }
45
+
46
+ fun EnhancedImageResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
47
+ merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
48
+ putArray("originalToLocalMatrix", FloatArray(9).apply { originalToLocalMatrix.getValues(this) }.toWritableArray())
49
+ }
50
+
51
+ fun Array<out EnhancedImageResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
52
+ forEach { pushMap(it.toWritableMap()) }
53
+ }
54
+
55
+
56
+
57
+ fun SimplifiedDocumentNormalizerSettings.toWritableMap(): WritableMap = Arguments.createMap().apply {
58
+ putArray("grayscaleTransformationModes", grayscaleTransformationModes.toWritableArray())
59
+ putArray("grayscaleEnhancementModes", grayscaleEnhancementModes.toWritableArray())
60
+ putArray("pageSize", pageSize.toWritableArray())
61
+ putInt("colourMode", colourMode)
62
+ putInt("brightness", brightness)
63
+ putInt("contrast", contrast)
64
+ putInt("maxThreadsInOneTask", maxThreadsInOneTask)
65
+ putInt("scaleDownThreshold", scaleDownThreshold)
66
+ putInt("minQuadrilateralAreaRatio", minQuadrilateralAreaRatio)
67
+ putInt("expectedDocumentsCount", expectedDocumentsCount)
68
+ }
69
+
70
+ fun SimplifiedDocumentNormalizerSettings.updateFromReadableMap(newSettings: ReadableMap) {
71
+ colourMode = if (newSettings.hasKey("colourMode")) newSettings.getInt("colourMode") else colourMode
72
+ brightness = if (newSettings.hasKey("brightness")) newSettings.getInt("brightness") else brightness
73
+ contrast = if (newSettings.hasKey("contrast")) newSettings.getInt("contrast") else contrast
74
+ maxThreadsInOneTask = if (newSettings.hasKey("maxThreadsInOneTask")) newSettings.getInt("maxThreadsInOneTask") else maxThreadsInOneTask
75
+ scaleDownThreshold = if (newSettings.hasKey("scaleDownThreshold")) newSettings.getInt("scaleDownThreshold") else scaleDownThreshold
76
+ pageSize = if (newSettings.hasKey("pageSize")) newSettings.getArray("pageSize")?.toIntArray() else pageSize
77
+
78
+ grayscaleTransformationModes = if (newSettings.hasKey("grayscaleTransformationModes"))
79
+ newSettings.getArray("grayscaleTransformationModes")?.toIntArray() else grayscaleTransformationModes
80
+
81
+ grayscaleEnhancementModes = if (newSettings.hasKey("grayscaleEnhancementModes"))
82
+ newSettings.getArray("grayscaleEnhancementModes")?.toIntArray() else grayscaleEnhancementModes
83
+
84
+ minQuadrilateralAreaRatio = if (newSettings.hasKey("minQuadrilateralAreaRatio")) newSettings.getInt("minQuadrilateralAreaRatio") else minQuadrilateralAreaRatio
85
+ expectedDocumentsCount = if (newSettings.hasKey("expectedDocumentsCount")) newSettings.getInt("expectedDocumentsCount") else expectedDocumentsCount
86
86
  }
@@ -1,72 +1,72 @@
1
- package com.dynamsoft.reactnativelib.basicutils
2
-
3
- import com.dynamsoft.core.basic_structures.CapturedResultItem
4
- import com.dynamsoft.dlr.CharacterResult
5
- import com.dynamsoft.dlr.RecognizedTextLinesResult
6
- import com.dynamsoft.dlr.SimplifiedLabelRecognizerSettings
7
- import com.dynamsoft.dlr.TextLineResultItem
8
- import com.facebook.react.bridge.Arguments
9
- import com.facebook.react.bridge.ReadableMap
10
- import com.facebook.react.bridge.WritableArray
11
- import com.facebook.react.bridge.WritableMap
12
-
13
- fun Array<CharacterResult>.toWitableArray() :WritableArray = Arguments.createArray().apply {
14
- forEach { pushMap(it.toWritableMap()) }
15
- }
16
-
17
- fun CharacterResult.toWritableMap() : WritableMap = Arguments.createMap().apply {
18
- putString("characterH",characterH.toString())
19
- putString("characterM",characterM.toString())
20
- putString("characterL",characterL.toString())
21
- putInt("characterHConfidence",characterHConfidence)
22
- putInt("characterMConfidence",characterMConfidence)
23
- putInt("characterLConfidence",characterLConfidence)
24
- putMap("location", location.toWritableMap())
25
- }
26
-
27
- fun TextLineResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
28
- merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
29
- putMap("location", location.toWritableMap())
30
- putArray("characterResults", characterResults.toWitableArray())
31
- putString("text", text)
32
- putString("rawText", rawText)
33
- putString("specificationName", specificationName)
34
- putInt("confidence", confidence)
35
- }
36
-
37
- fun Array<out TextLineResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
38
- forEach { pushMap(it.toWritableMap()) }
39
- }
40
-
41
- fun RecognizedTextLinesResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
42
- putInt("errorCode", errorCode)
43
- putString("originalImageHashId", originalImageHashId)
44
- putString("errorMessage", errorMessage)
45
- putArray("items", items.toWritableArray())
46
- putArray("rotationTransformMatrix",FloatArray(9).apply { rotationTransformMatrix.getValues(this) }.toWritableArray())
47
- }
48
-
49
- fun SimplifiedLabelRecognizerSettings.toWritableMap(): WritableMap = Arguments.createMap().apply {
50
- putArray("grayscaleTransformationModes", grayscaleTransformationModes.toWritableArray())
51
- putArray("grayscaleEnhancementModes", grayscaleEnhancementModes.toWritableArray())
52
- putString("characterModelName", characterModelName)
53
- putString("lineStringRegExPattern", lineStringRegExPattern)
54
- putInt("scaleDownThreshold", scaleDownThreshold)
55
- putInt("maxThreadsInOneTask", maxThreadsInOneTask)
56
- }
57
-
58
- fun SimplifiedLabelRecognizerSettings.updateFromReadableMap(newSettings: ReadableMap) {
59
- characterModelName = if (newSettings.hasKey("characterModelName")) newSettings.getString("characterModelName") else characterModelName
60
- lineStringRegExPattern =
61
- if (newSettings.hasKey("lineStringRegExPattern")) newSettings.getString("lineStringRegExPattern") else lineStringRegExPattern
62
-
63
- scaleDownThreshold = if (newSettings.hasKey("scaleDownThreshold")) newSettings.getInt("scaleDownThreshold") else scaleDownThreshold
64
-
65
- grayscaleTransformationModes = if (newSettings.hasKey("grayscaleTransformationModes"))
66
- newSettings.getArray("grayscaleTransformationModes")?.toIntArray() else grayscaleTransformationModes
67
-
68
- grayscaleEnhancementModes = if (newSettings.hasKey("grayscaleEnhancementModes"))
69
- newSettings.getArray("grayscaleEnhancementModes")?.toIntArray() else grayscaleEnhancementModes
70
-
71
- maxThreadsInOneTask = if (newSettings.hasKey("maxThreadsInOneTask")) newSettings.getInt("maxThreadsInOneTask") else maxThreadsInOneTask
72
- }
1
+ package com.dynamsoft.reactnativelib.basicutils
2
+
3
+ import com.dynamsoft.core.basic_structures.CapturedResultItem
4
+ import com.dynamsoft.dlr.CharacterResult
5
+ import com.dynamsoft.dlr.RecognizedTextLinesResult
6
+ import com.dynamsoft.dlr.SimplifiedLabelRecognizerSettings
7
+ import com.dynamsoft.dlr.TextLineResultItem
8
+ import com.facebook.react.bridge.Arguments
9
+ import com.facebook.react.bridge.ReadableMap
10
+ import com.facebook.react.bridge.WritableArray
11
+ import com.facebook.react.bridge.WritableMap
12
+
13
+ fun Array<CharacterResult>.toWitableArray() :WritableArray = Arguments.createArray().apply {
14
+ forEach { pushMap(it.toWritableMap()) }
15
+ }
16
+
17
+ fun CharacterResult.toWritableMap() : WritableMap = Arguments.createMap().apply {
18
+ putString("characterH",characterH.toString())
19
+ putString("characterM",characterM.toString())
20
+ putString("characterL",characterL.toString())
21
+ putInt("characterHConfidence",characterHConfidence)
22
+ putInt("characterMConfidence",characterMConfidence)
23
+ putInt("characterLConfidence",characterLConfidence)
24
+ putMap("location", location.toWritableMap())
25
+ }
26
+
27
+ fun TextLineResultItem.toWritableMap(): WritableMap = Arguments.createMap().apply {
28
+ merge((this@toWritableMap as CapturedResultItem).toSharedWritableMap())
29
+ putMap("location", location.toWritableMap())
30
+ putArray("characterResults", characterResults.toWitableArray())
31
+ putString("text", text)
32
+ putString("rawText", rawText)
33
+ putString("specificationName", specificationName)
34
+ putInt("confidence", confidence)
35
+ }
36
+
37
+ fun Array<out TextLineResultItem>.toWritableArray(): WritableArray = Arguments.createArray().apply {
38
+ forEach { pushMap(it.toWritableMap()) }
39
+ }
40
+
41
+ fun RecognizedTextLinesResult.toWritableMap(): WritableMap = Arguments.createMap().apply {
42
+ putInt("errorCode", errorCode)
43
+ putString("originalImageHashId", originalImageHashId)
44
+ putString("errorMessage", errorMessage)
45
+ putArray("items", items.toWritableArray())
46
+ putArray("rotationTransformMatrix",FloatArray(9).apply { rotationTransformMatrix.getValues(this) }.toWritableArray())
47
+ }
48
+
49
+ fun SimplifiedLabelRecognizerSettings.toWritableMap(): WritableMap = Arguments.createMap().apply {
50
+ putArray("grayscaleTransformationModes", grayscaleTransformationModes.toWritableArray())
51
+ putArray("grayscaleEnhancementModes", grayscaleEnhancementModes.toWritableArray())
52
+ putString("characterModelName", characterModelName)
53
+ putString("lineStringRegExPattern", lineStringRegExPattern)
54
+ putInt("scaleDownThreshold", scaleDownThreshold)
55
+ putInt("maxThreadsInOneTask", maxThreadsInOneTask)
56
+ }
57
+
58
+ fun SimplifiedLabelRecognizerSettings.updateFromReadableMap(newSettings: ReadableMap) {
59
+ characterModelName = if (newSettings.hasKey("characterModelName")) newSettings.getString("characterModelName") else characterModelName
60
+ lineStringRegExPattern =
61
+ if (newSettings.hasKey("lineStringRegExPattern")) newSettings.getString("lineStringRegExPattern") else lineStringRegExPattern
62
+
63
+ scaleDownThreshold = if (newSettings.hasKey("scaleDownThreshold")) newSettings.getInt("scaleDownThreshold") else scaleDownThreshold
64
+
65
+ grayscaleTransformationModes = if (newSettings.hasKey("grayscaleTransformationModes"))
66
+ newSettings.getArray("grayscaleTransformationModes")?.toIntArray() else grayscaleTransformationModes
67
+
68
+ grayscaleEnhancementModes = if (newSettings.hasKey("grayscaleEnhancementModes"))
69
+ newSettings.getArray("grayscaleEnhancementModes")?.toIntArray() else grayscaleEnhancementModes
70
+
71
+ maxThreadsInOneTask = if (newSettings.hasKey("maxThreadsInOneTask")) newSettings.getInt("maxThreadsInOneTask") else maxThreadsInOneTask
72
+ }