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,15 +1,15 @@
1
- package com.dynamsoft.reactnativelib.dce
2
-
3
- import com.dynamsoft.dce.ImageEditorView
4
- import com.facebook.react.uimanager.ThemedReactContext
5
-
6
- class ImageEditorViewManagerImpl {
7
- companion object {
8
- const val TAG = "DynamsoftImageEditorView"
9
- }
10
- fun getName() = TAG
11
- fun createViewInstance(context: ThemedReactContext): ImageEditorView {
12
- return RNImageEditorView(context)
13
- }
14
-
15
- }
1
+ package com.dynamsoft.reactnativelib.dce
2
+
3
+ import com.dynamsoft.dce.ImageEditorView
4
+ import com.facebook.react.uimanager.ThemedReactContext
5
+
6
+ class ImageEditorViewManagerImpl {
7
+ companion object {
8
+ const val TAG = "DynamsoftImageEditorView"
9
+ }
10
+ fun getName() = TAG
11
+ fun createViewInstance(context: ThemedReactContext): ImageEditorView {
12
+ return RNImageEditorView(context)
13
+ }
14
+
15
+ }
@@ -1,110 +1,110 @@
1
- package com.dynamsoft.reactnativelib.dce
2
-
3
- import android.util.Log
4
- import com.dynamsoft.core.basic_structures.ImageData
5
- import com.dynamsoft.dce.DrawingItem
6
- import com.dynamsoft.dce.ImageEditorView
7
- import com.dynamsoft.dce.QuadDrawingItem
8
- import com.dynamsoft.reactnativelib.basicutils.toQuad
9
- import com.dynamsoft.reactnativelib.basicutils.toWritableMap
10
- import com.facebook.react.bridge.Promise
11
- import com.facebook.react.bridge.ReactApplicationContext
12
- import com.facebook.react.bridge.ReactMethod
13
- import com.facebook.react.bridge.ReadableArray
14
- import com.facebook.react.uimanager.UIManagerHelper
15
- import kotlinx.coroutines.CoroutineName
16
- import kotlinx.coroutines.CoroutineScope
17
- import kotlinx.coroutines.Dispatchers
18
- import kotlinx.coroutines.isActive
19
- import kotlinx.coroutines.launch
20
- import kotlinx.coroutines.withContext
21
- import kotlinx.coroutines.withTimeoutOrNull
22
-
23
- class ImageEditorViewModuleImpl(private val reactContext: ReactApplicationContext) {
24
- companion object {
25
- const val NAME = "DynamsoftImageEditorView"
26
- const val TAG = "ImageEditorModuleImpl"
27
- }
28
-
29
- fun getName() = NAME
30
-
31
- @ReactMethod
32
- fun setQuads(viewTag: Int, readableArray: ReadableArray, layerId: Int, promise: Promise) {
33
- CoroutineScope(Dispatchers.Default).launch(CoroutineName("setQuads")) {
34
- val imageEditorView = findImageEditorView(viewTag)
35
- if(imageEditorView == null) {
36
- Log.e(TAG, "setQuads: Can't not find imageEditorView!(viewId = $viewTag)")
37
- promise.resolve(null)
38
- return@launch
39
- }
40
- val drawingItems = ArrayList<DrawingItem<*>>()
41
- for (i in 0 until readableArray.size()) {
42
- readableArray.getMap(i)?.toQuad()?.apply {
43
- drawingItems.add(QuadDrawingItem(this))
44
- }
45
- }
46
- imageEditorView.getDrawingLayer(layerId).drawingItems = drawingItems
47
- promise.resolve(null)
48
- }
49
- }
50
-
51
- @ReactMethod
52
- fun getSelectedQuad(viewTag: Int, promise: Promise) {
53
- CoroutineScope(Dispatchers.Default).launch(CoroutineName("getSelectedQuad")) {
54
- val imageEditorView = findImageEditorView(viewTag)
55
- if(imageEditorView == null) {
56
- Log.e(TAG, "getSelectedQuad: Can't not find imageEditorView!(viewId = $viewTag)")
57
- promise.resolve(null)
58
- return@launch
59
- }
60
- val selectedDrawingItem = imageEditorView.selectedDrawingItem
61
- if (selectedDrawingItem != null) {
62
- promise.resolve((selectedDrawingItem as QuadDrawingItem).quad.toWritableMap())
63
- } else {
64
- promise.resolve(null)
65
- }
66
- }
67
- }
68
-
69
- @ReactMethod(isBlockingSynchronousMethod = true)
70
- fun install(): Boolean {
71
- reactContext.javaScriptContextHolder?.apply {
72
- nativeInstall(get())
73
- }
74
- return true
75
- }
76
-
77
- private suspend fun findImageEditorView(viewId: Int): ImageEditorView? = withTimeoutOrNull(300) {
78
- while (true) {
79
- val view = withContext(Dispatchers.Main) {
80
- try {
81
- UIManagerHelper.getUIManager(reactContext, viewId)?.resolveView(viewId) as? ImageEditorView
82
- } catch (e: Exception) {
83
- null
84
- }
85
- }
86
- if (view != null) {
87
- return@withTimeoutOrNull view
88
- }
89
- if (!isActive) {
90
- break
91
- }
92
- }
93
- return@withTimeoutOrNull null
94
- }
95
-
96
- //@Native
97
- private fun setOriginalImageCalledInJSI(imageData: ImageData, editorViewTag: Int) {
98
- CoroutineScope(Dispatchers.Default).launch(CoroutineName("setOriginalImageCalledInJSI")) {
99
- val imageEditorView = findImageEditorView(editorViewTag)
100
- if(imageEditorView == null) {
101
- Log.e(TAG, "setOriginalImageCalledInJSI: Can't not find imageEditorView!(viewId = $editorViewTag)")
102
- return@launch
103
- }
104
- imageEditorView?.originalImage = imageData
105
- }
106
- }
107
-
108
- private external fun nativeInstall(jsiPtr: Long)
109
-
110
- }
1
+ package com.dynamsoft.reactnativelib.dce
2
+
3
+ import android.util.Log
4
+ import com.dynamsoft.core.basic_structures.ImageData
5
+ import com.dynamsoft.dce.DrawingItem
6
+ import com.dynamsoft.dce.ImageEditorView
7
+ import com.dynamsoft.dce.QuadDrawingItem
8
+ import com.dynamsoft.reactnativelib.basicutils.toQuad
9
+ import com.dynamsoft.reactnativelib.basicutils.toWritableMap
10
+ import com.facebook.react.bridge.Promise
11
+ import com.facebook.react.bridge.ReactApplicationContext
12
+ import com.facebook.react.bridge.ReactMethod
13
+ import com.facebook.react.bridge.ReadableArray
14
+ import com.facebook.react.uimanager.UIManagerHelper
15
+ import kotlinx.coroutines.CoroutineName
16
+ import kotlinx.coroutines.CoroutineScope
17
+ import kotlinx.coroutines.Dispatchers
18
+ import kotlinx.coroutines.isActive
19
+ import kotlinx.coroutines.launch
20
+ import kotlinx.coroutines.withContext
21
+ import kotlinx.coroutines.withTimeoutOrNull
22
+
23
+ class ImageEditorViewModuleImpl(private val reactContext: ReactApplicationContext) {
24
+ companion object {
25
+ const val NAME = "DynamsoftImageEditorView"
26
+ const val TAG = "ImageEditorModuleImpl"
27
+ }
28
+
29
+ fun getName() = NAME
30
+
31
+ @ReactMethod
32
+ fun setQuads(viewTag: Int, readableArray: ReadableArray, layerId: Int, promise: Promise) {
33
+ CoroutineScope(Dispatchers.Default).launch(CoroutineName("setQuads")) {
34
+ val imageEditorView = findImageEditorView(viewTag)
35
+ if(imageEditorView == null) {
36
+ Log.e(TAG, "setQuads: Can't not find imageEditorView!(viewId = $viewTag)")
37
+ promise.resolve(null)
38
+ return@launch
39
+ }
40
+ val drawingItems = ArrayList<DrawingItem<*>>()
41
+ for (i in 0 until readableArray.size()) {
42
+ readableArray.getMap(i)?.toQuad()?.apply {
43
+ drawingItems.add(QuadDrawingItem(this))
44
+ }
45
+ }
46
+ imageEditorView.getDrawingLayer(layerId).drawingItems = drawingItems
47
+ promise.resolve(null)
48
+ }
49
+ }
50
+
51
+ @ReactMethod
52
+ fun getSelectedQuad(viewTag: Int, promise: Promise) {
53
+ CoroutineScope(Dispatchers.Default).launch(CoroutineName("getSelectedQuad")) {
54
+ val imageEditorView = findImageEditorView(viewTag)
55
+ if(imageEditorView == null) {
56
+ Log.e(TAG, "getSelectedQuad: Can't not find imageEditorView!(viewId = $viewTag)")
57
+ promise.resolve(null)
58
+ return@launch
59
+ }
60
+ val selectedDrawingItem = imageEditorView.selectedDrawingItem
61
+ if (selectedDrawingItem != null) {
62
+ promise.resolve((selectedDrawingItem as QuadDrawingItem).quad.toWritableMap())
63
+ } else {
64
+ promise.resolve(null)
65
+ }
66
+ }
67
+ }
68
+
69
+ @ReactMethod(isBlockingSynchronousMethod = true)
70
+ fun install(): Boolean {
71
+ reactContext.javaScriptContextHolder?.apply {
72
+ nativeInstall(get())
73
+ }
74
+ return true
75
+ }
76
+
77
+ private suspend fun findImageEditorView(viewId: Int): ImageEditorView? = withTimeoutOrNull(300) {
78
+ while (true) {
79
+ val view = withContext(Dispatchers.Main) {
80
+ try {
81
+ UIManagerHelper.getUIManager(reactContext, viewId)?.resolveView(viewId) as? ImageEditorView
82
+ } catch (e: Exception) {
83
+ null
84
+ }
85
+ }
86
+ if (view != null) {
87
+ return@withTimeoutOrNull view
88
+ }
89
+ if (!isActive) {
90
+ break
91
+ }
92
+ }
93
+ return@withTimeoutOrNull null
94
+ }
95
+
96
+ //@Native
97
+ private fun setOriginalImageCalledInJSI(imageData: ImageData, editorViewTag: Int) {
98
+ CoroutineScope(Dispatchers.Default).launch(CoroutineName("setOriginalImageCalledInJSI")) {
99
+ val imageEditorView = findImageEditorView(editorViewTag)
100
+ if(imageEditorView == null) {
101
+ Log.e(TAG, "setOriginalImageCalledInJSI: Can't not find imageEditorView!(viewId = $editorViewTag)")
102
+ return@launch
103
+ }
104
+ imageEditorView?.originalImage = imageData
105
+ }
106
+ }
107
+
108
+ private external fun nativeInstall(jsiPtr: Long)
109
+
110
+ }
@@ -1,20 +1,20 @@
1
- package com.dynamsoft.reactnativelib.dce
2
-
3
- import android.content.Context
4
- import com.dynamsoft.dce.CameraView
5
-
6
- class RNCameraView(context: Context) : CameraView(context) {
7
-
8
- override fun requestLayout() {
9
- super.requestLayout()
10
- post(this::manuallyMeasureAndLayout)
11
- }
12
-
13
- private fun manuallyMeasureAndLayout() {
14
- measure(
15
- MeasureSpec.makeMeasureSpec(measuredWidth, MeasureSpec.EXACTLY),
16
- MeasureSpec.makeMeasureSpec(measuredHeight, MeasureSpec.EXACTLY)
17
- )
18
- layout(0, 0, measuredWidth, measuredHeight)
19
- }
20
- }
1
+ package com.dynamsoft.reactnativelib.dce
2
+
3
+ import android.content.Context
4
+ import com.dynamsoft.dce.CameraView
5
+
6
+ class RNCameraView(context: Context) : CameraView(context) {
7
+
8
+ override fun requestLayout() {
9
+ super.requestLayout()
10
+ post(this::manuallyMeasureAndLayout)
11
+ }
12
+
13
+ private fun manuallyMeasureAndLayout() {
14
+ measure(
15
+ MeasureSpec.makeMeasureSpec(measuredWidth, MeasureSpec.EXACTLY),
16
+ MeasureSpec.makeMeasureSpec(measuredHeight, MeasureSpec.EXACTLY)
17
+ )
18
+ layout(0, 0, measuredWidth, measuredHeight)
19
+ }
20
+ }
@@ -1,19 +1,19 @@
1
- package com.dynamsoft.reactnativelib.dce
2
-
3
- import android.content.Context
4
- import com.dynamsoft.dce.ImageEditorView
5
-
6
- class RNImageEditorView(context: Context) : ImageEditorView(context) {
7
- override fun requestLayout() {
8
- super.requestLayout()
9
- post(this::manuallyMeasureAndLayout)
10
- }
11
-
12
- private fun manuallyMeasureAndLayout() {
13
- measure(
14
- MeasureSpec.makeMeasureSpec(measuredWidth, MeasureSpec.EXACTLY),
15
- MeasureSpec.makeMeasureSpec(measuredHeight, MeasureSpec.EXACTLY)
16
- )
17
- layout(0, 0, measuredWidth, measuredHeight)
18
- }
19
- }
1
+ package com.dynamsoft.reactnativelib.dce
2
+
3
+ import android.content.Context
4
+ import com.dynamsoft.dce.ImageEditorView
5
+
6
+ class RNImageEditorView(context: Context) : ImageEditorView(context) {
7
+ override fun requestLayout() {
8
+ super.requestLayout()
9
+ post(this::manuallyMeasureAndLayout)
10
+ }
11
+
12
+ private fun manuallyMeasureAndLayout() {
13
+ measure(
14
+ MeasureSpec.makeMeasureSpec(measuredWidth, MeasureSpec.EXACTLY),
15
+ MeasureSpec.makeMeasureSpec(measuredHeight, MeasureSpec.EXACTLY)
16
+ )
17
+ layout(0, 0, measuredWidth, measuredHeight)
18
+ }
19
+ }
@@ -1,39 +1,39 @@
1
- package com.dynamsoft.reactnativelib.license
2
-
3
- import android.annotation.SuppressLint
4
- import com.dynamsoft.license.LicenseManager
5
- import com.dynamsoft.license.bean.InnerData
6
- import com.facebook.react.bridge.Promise
7
- import com.facebook.react.bridge.ReactApplicationContext
8
- import com.facebook.react.bridge.ReactMethod
9
-
10
- class LicenseModuleImpl(private val reactContext: ReactApplicationContext) {
11
- companion object {
12
- const val NAME = "DynamsoftLicenseModule"
13
- }
14
-
15
- fun getName() = NAME
16
-
17
- @ReactMethod
18
- fun initLicense(license: String?, promise: Promise) {
19
- @SuppressLint("RestrictedApi")
20
- InnerData.remark.edition = "android-react-native"
21
- LicenseManager.initLicense(license) { isSuccessful, error ->
22
- if (isSuccessful) {
23
- promise.resolve(true)
24
- } else {
25
- promise.reject(error?.message?:"InitLicense failed.", error)
26
- }
27
- }
28
- }
29
-
30
- @ReactMethod
31
- fun setDeviceFriendlyName(deviceFriendlyName: String) {
32
- LicenseManager.setDeviceFriendlyName(deviceFriendlyName)
33
- }
34
-
35
- @ReactMethod
36
- fun getDeviceUUID(promise: Promise) {
37
- promise.resolve(LicenseManager.getDeviceUUID())
38
- }
39
- }
1
+ package com.dynamsoft.reactnativelib.license
2
+
3
+ import android.annotation.SuppressLint
4
+ import com.dynamsoft.license.LicenseManager
5
+ import com.dynamsoft.license.bean.InnerData
6
+ import com.facebook.react.bridge.Promise
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import com.facebook.react.bridge.ReactMethod
9
+
10
+ class LicenseModuleImpl(private val reactContext: ReactApplicationContext) {
11
+ companion object {
12
+ const val NAME = "DynamsoftLicenseModule"
13
+ }
14
+
15
+ fun getName() = NAME
16
+
17
+ @ReactMethod
18
+ fun initLicense(license: String?, promise: Promise) {
19
+ @SuppressLint("RestrictedApi")
20
+ InnerData.remark.edition = "android-react-native"
21
+ LicenseManager.initLicense(license) { isSuccessful, error ->
22
+ if (isSuccessful) {
23
+ promise.resolve(true)
24
+ } else {
25
+ promise.reject(error?.message?:"InitLicense failed.", error)
26
+ }
27
+ }
28
+ }
29
+
30
+ @ReactMethod
31
+ fun setDeviceFriendlyName(deviceFriendlyName: String) {
32
+ LicenseManager.setDeviceFriendlyName(deviceFriendlyName)
33
+ }
34
+
35
+ @ReactMethod
36
+ fun getDeviceUUID(promise: Promise) {
37
+ promise.resolve(LicenseManager.getDeviceUUID())
38
+ }
39
+ }
@@ -1,120 +1,120 @@
1
- package com.dynamsoft.reactnativelib.utility
2
-
3
- import android.graphics.Rect
4
- import com.dynamsoft.core.basic_structures.DSRect
5
- import com.dynamsoft.core.basic_structures.EnumImageFileFormat
6
- import com.dynamsoft.core.basic_structures.ImageData
7
- import com.dynamsoft.core.basic_structures.Quadrilateral
8
- import com.dynamsoft.utility.EnumFilterType
9
- import com.dynamsoft.utility.ImageDrawer
10
- import com.dynamsoft.utility.ImageIO
11
- import com.dynamsoft.utility.ImageProcessor
12
- import com.dynamsoft.utility.UtilityException
13
- import com.facebook.react.bridge.ReactApplicationContext
14
-
15
- class ImageManagerModuleImpl(private val reactContext: ReactApplicationContext) {
16
- companion object {
17
- const val NAME = "DynamsoftImageManagerModule"
18
- }
19
-
20
- private val imageIo by lazy { ImageIO() }
21
- private val imageProcessor by lazy { ImageProcessor() }
22
- private val imageDrawer by lazy { ImageDrawer() }
23
-
24
- fun getName() = NAME
25
-
26
- fun install(): Boolean {
27
- reactContext.javaScriptContextHolder?.apply {
28
- nativeInstall(get())
29
- }
30
- return true
31
- }
32
-
33
- fun saveToFileCalledInJsi(imageData: ImageData, filePath: String, overWrite: Boolean) {
34
- imageIo.saveToFile(imageData, filePath, overWrite)
35
- }
36
-
37
- fun readFromFileCalledInJsi(filePath: String): ImageData? {
38
- return try {
39
- imageIo.readFromFile(filePath)
40
- } catch (_: UtilityException) {
41
- null
42
- }
43
- }
44
-
45
- fun readFromMemoryCalledInJsi(buffer: ByteArray): ImageData? {
46
- return try {
47
- imageIo.readFromMemory(buffer)
48
- } catch (_: UtilityException) {
49
- null
50
- }
51
- }
52
-
53
-
54
- fun saveToMemoryCalledInJsi(imageData: ImageData, @EnumImageFileFormat format: Int): ByteArray? {
55
- return try {
56
- imageIo.saveToMemory(imageData, format)
57
- } catch (_: UtilityException) {
58
- null
59
- }
60
- }
61
-
62
- fun drawOnImageCalledInJsi(imageData: ImageData, quads: Array<Quadrilateral>, color: Int, thickness: Int): ImageData {
63
- return imageDrawer.drawOnImage(imageData, quads, color, thickness)
64
- }
65
-
66
- fun cropImageCalledInJsi(imageData: ImageData, dsRect: DSRect): ImageData? {
67
- val rect = if (dsRect.measuredInPercentage) {
68
- Rect(
69
- (dsRect.left * imageData.width).toInt(),
70
- (dsRect.top * imageData.height).toInt(),
71
- (dsRect.right * imageData.width).toInt(),
72
- (dsRect.bottom * imageData.height).toInt()
73
- )
74
- } else {
75
- Rect(dsRect.left.toInt(), dsRect.top.toInt(), dsRect.right.toInt(), dsRect.bottom.toInt())
76
- }
77
- return try {
78
- imageProcessor.cropImage(imageData, rect)
79
- } catch (e: UtilityException) {
80
- null
81
- }
82
- }
83
-
84
- fun cropAndDeskewImageCalledInJsi(imageData: ImageData, quad: Quadrilateral, dstWidth: Int, dstHeight: Int, padding: Int): ImageData? {
85
- return try {
86
- imageProcessor.cropAndDeskewImage(imageData, quad, dstWidth, dstHeight, padding)
87
- } catch (e: UtilityException) {
88
- null
89
- }
90
- }
91
-
92
- fun adjustBrightnessCalledInJsi(imageData: ImageData, brightness: Int) : ImageData {
93
- return imageProcessor.adjustBrightness(imageData, brightness)
94
- }
95
-
96
- fun adjustContrastCalledInJsi(imageData: ImageData, contrast: Int) : ImageData {
97
- return imageProcessor.adjustContrast(imageData, contrast)
98
- }
99
-
100
- fun filterImageCalledInJsi(imageData: ImageData, @EnumFilterType filterType: Int) : ImageData {
101
- return imageProcessor.filterImage(imageData, filterType)
102
- }
103
-
104
- fun convertToGrayCalledInJsi(imageData: ImageData, r: Float, g: Float, b: Float) : ImageData {
105
- return imageProcessor.convertToGray(imageData, r, g, b)
106
- }
107
-
108
- fun convertToBinaryGlobalCalledInJsi(imageData: ImageData, threshold: Int, invert: Boolean): ImageData {
109
- return imageProcessor.convertToBinaryGlobal(imageData, threshold, invert)
110
- }
111
-
112
- fun convertToBinaryLocalCalledInJsi(imageData: ImageData, blockSize: Int, compensation: Int, invert: Boolean): ImageData {
113
- return imageProcessor.convertToBinaryLocal(imageData, blockSize, compensation, invert)
114
- }
115
-
116
-
117
-
118
- private external fun nativeInstall(jsiPtr: Long)
119
-
120
- }
1
+ package com.dynamsoft.reactnativelib.utility
2
+
3
+ import android.graphics.Rect
4
+ import com.dynamsoft.core.basic_structures.DSRect
5
+ import com.dynamsoft.core.basic_structures.EnumImageFileFormat
6
+ import com.dynamsoft.core.basic_structures.ImageData
7
+ import com.dynamsoft.core.basic_structures.Quadrilateral
8
+ import com.dynamsoft.utility.EnumFilterType
9
+ import com.dynamsoft.utility.ImageDrawer
10
+ import com.dynamsoft.utility.ImageIO
11
+ import com.dynamsoft.utility.ImageProcessor
12
+ import com.dynamsoft.utility.UtilityException
13
+ import com.facebook.react.bridge.ReactApplicationContext
14
+
15
+ class ImageManagerModuleImpl(private val reactContext: ReactApplicationContext) {
16
+ companion object {
17
+ const val NAME = "DynamsoftImageManagerModule"
18
+ }
19
+
20
+ private val imageIo by lazy { ImageIO() }
21
+ private val imageProcessor by lazy { ImageProcessor() }
22
+ private val imageDrawer by lazy { ImageDrawer() }
23
+
24
+ fun getName() = NAME
25
+
26
+ fun install(): Boolean {
27
+ reactContext.javaScriptContextHolder?.apply {
28
+ nativeInstall(get())
29
+ }
30
+ return true
31
+ }
32
+
33
+ fun saveToFileCalledInJsi(imageData: ImageData, filePath: String, overWrite: Boolean) {
34
+ imageIo.saveToFile(imageData, filePath, overWrite)
35
+ }
36
+
37
+ fun readFromFileCalledInJsi(filePath: String): ImageData? {
38
+ return try {
39
+ imageIo.readFromFile(filePath)
40
+ } catch (_: UtilityException) {
41
+ null
42
+ }
43
+ }
44
+
45
+ fun readFromMemoryCalledInJsi(buffer: ByteArray): ImageData? {
46
+ return try {
47
+ imageIo.readFromMemory(buffer)
48
+ } catch (_: UtilityException) {
49
+ null
50
+ }
51
+ }
52
+
53
+
54
+ fun saveToMemoryCalledInJsi(imageData: ImageData, @EnumImageFileFormat format: Int): ByteArray? {
55
+ return try {
56
+ imageIo.saveToMemory(imageData, format)
57
+ } catch (_: UtilityException) {
58
+ null
59
+ }
60
+ }
61
+
62
+ fun drawOnImageCalledInJsi(imageData: ImageData, quads: Array<Quadrilateral>, color: Int, thickness: Int): ImageData {
63
+ return imageDrawer.drawOnImage(imageData, quads, color, thickness)
64
+ }
65
+
66
+ fun cropImageCalledInJsi(imageData: ImageData, dsRect: DSRect): ImageData? {
67
+ val rect = if (dsRect.measuredInPercentage) {
68
+ Rect(
69
+ (dsRect.left * imageData.width).toInt(),
70
+ (dsRect.top * imageData.height).toInt(),
71
+ (dsRect.right * imageData.width).toInt(),
72
+ (dsRect.bottom * imageData.height).toInt()
73
+ )
74
+ } else {
75
+ Rect(dsRect.left.toInt(), dsRect.top.toInt(), dsRect.right.toInt(), dsRect.bottom.toInt())
76
+ }
77
+ return try {
78
+ imageProcessor.cropImage(imageData, rect)
79
+ } catch (e: UtilityException) {
80
+ null
81
+ }
82
+ }
83
+
84
+ fun cropAndDeskewImageCalledInJsi(imageData: ImageData, quad: Quadrilateral, dstWidth: Int, dstHeight: Int, padding: Int): ImageData? {
85
+ return try {
86
+ imageProcessor.cropAndDeskewImage(imageData, quad, dstWidth, dstHeight, padding)
87
+ } catch (e: UtilityException) {
88
+ null
89
+ }
90
+ }
91
+
92
+ fun adjustBrightnessCalledInJsi(imageData: ImageData, brightness: Int) : ImageData {
93
+ return imageProcessor.adjustBrightness(imageData, brightness)
94
+ }
95
+
96
+ fun adjustContrastCalledInJsi(imageData: ImageData, contrast: Int) : ImageData {
97
+ return imageProcessor.adjustContrast(imageData, contrast)
98
+ }
99
+
100
+ fun filterImageCalledInJsi(imageData: ImageData, @EnumFilterType filterType: Int) : ImageData {
101
+ return imageProcessor.filterImage(imageData, filterType)
102
+ }
103
+
104
+ fun convertToGrayCalledInJsi(imageData: ImageData, r: Float, g: Float, b: Float) : ImageData {
105
+ return imageProcessor.convertToGray(imageData, r, g, b)
106
+ }
107
+
108
+ fun convertToBinaryGlobalCalledInJsi(imageData: ImageData, threshold: Int, invert: Boolean): ImageData {
109
+ return imageProcessor.convertToBinaryGlobal(imageData, threshold, invert)
110
+ }
111
+
112
+ fun convertToBinaryLocalCalledInJsi(imageData: ImageData, blockSize: Int, compensation: Int, invert: Boolean): ImageData {
113
+ return imageProcessor.convertToBinaryLocal(imageData, blockSize, compensation, invert)
114
+ }
115
+
116
+
117
+
118
+ private external fun nativeInstall(jsiPtr: Long)
119
+
120
+ }