dynamsoft-capture-vision-react-native 3.4.1300 → 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 +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/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,17 +1,17 @@
1
- /*
2
- * Copyright © Dynamsoft Corporation. All rights reserved.
3
- */
4
-
5
- #import <UIKit/UIKit.h>
6
-
7
- NS_ASSUME_NONNULL_BEGIN
8
-
9
- @class DSImageEditorView;
10
-
11
- @interface RNDynamsoftImageEditorView : UIView
12
-
13
- @property (nonatomic, strong) DSImageEditorView *editorView;
14
-
15
- @end
16
-
17
- NS_ASSUME_NONNULL_END
1
+ /*
2
+ * Copyright © Dynamsoft Corporation. All rights reserved.
3
+ */
4
+
5
+ #import <UIKit/UIKit.h>
6
+
7
+ NS_ASSUME_NONNULL_BEGIN
8
+
9
+ @class DSImageEditorView;
10
+
11
+ @interface RNDynamsoftImageEditorView : UIView
12
+
13
+ @property (nonatomic, strong) DSImageEditorView *editorView;
14
+
15
+ @end
16
+
17
+ NS_ASSUME_NONNULL_END
@@ -1,25 +1,25 @@
1
- /*
2
- * Copyright © Dynamsoft Corporation. All rights reserved.
3
- */
4
-
5
- #import "RNDynamsoftImageEditorView.h"
6
- #import <DynamsoftCaptureVisionBundle/DynamsoftCaptureVisionBundle.h>
7
-
8
- @implementation RNDynamsoftImageEditorView
9
-
10
- - (instancetype)init
11
- {
12
- self = [super init];
13
- if (self) {
14
- _editorView = [[DSImageEditorView alloc] init];
15
- [self addSubview:_editorView];
16
- }
17
- return self;
18
- }
19
-
20
- - (void)layoutSubviews {
21
- [super layoutSubviews];
22
- self.editorView.frame = self.bounds;
23
- }
24
-
25
- @end
1
+ /*
2
+ * Copyright © Dynamsoft Corporation. All rights reserved.
3
+ */
4
+
5
+ #import "RNDynamsoftImageEditorView.h"
6
+ #import <DynamsoftCaptureVisionBundle/DynamsoftCaptureVisionBundle.h>
7
+
8
+ @implementation RNDynamsoftImageEditorView
9
+
10
+ - (instancetype)init
11
+ {
12
+ self = [super init];
13
+ if (self) {
14
+ _editorView = [[DSImageEditorView alloc] init];
15
+ [self addSubview:_editorView];
16
+ }
17
+ return self;
18
+ }
19
+
20
+ - (void)layoutSubviews {
21
+ [super layoutSubviews];
22
+ self.editorView.frame = self.bounds;
23
+ }
24
+
25
+ @end
@@ -1,14 +1,14 @@
1
- /*
2
- * Copyright © Dynamsoft Corporation. All rights reserved.
3
- */
4
-
5
- #import <React/RCTViewManager.h>
6
- #import <React/RCTBridgeModule.h>
7
-
8
- NS_ASSUME_NONNULL_BEGIN
9
-
10
- @interface RNDynamsoftImageEditorViewManager : RCTViewManager
11
-
12
- @end
13
-
14
- NS_ASSUME_NONNULL_END
1
+ /*
2
+ * Copyright © Dynamsoft Corporation. All rights reserved.
3
+ */
4
+
5
+ #import <React/RCTViewManager.h>
6
+ #import <React/RCTBridgeModule.h>
7
+
8
+ NS_ASSUME_NONNULL_BEGIN
9
+
10
+ @interface RNDynamsoftImageEditorViewManager : RCTViewManager
11
+
12
+ @end
13
+
14
+ NS_ASSUME_NONNULL_END
@@ -1,183 +1,183 @@
1
- /*
2
- * Copyright © Dynamsoft Corporation. All rights reserved.
3
- */
4
-
5
- #import "RNDynamsoftImageEditorViewManager.h"
6
- #import "RNDynamsoftImageEditorView.h"
7
- #import <DynamsoftCaptureVisionBundle/DynamsoftCaptureVisionBundle.h>
8
- #import <React/RCTBridge+Private.h>
9
- #import "DSImageData+HostObject.h"
10
- #import <React/RCTUIManager.h>
11
- #import "RNDynamsoft+Json.h"
12
-
13
- using namespace facebook::jsi;
14
- using namespace facebook;
15
- using namespace std;
16
-
17
- @implementation RNDynamsoftImageEditorViewManager
18
-
19
- RCT_EXPORT_MODULE(DynamsoftImageEditorView)
20
-
21
- - (UIView *)view {
22
- return [[RNDynamsoftImageEditorView alloc] init];
23
- }
24
-
25
- RCT_EXPORT_METHOD(setQuads:(nonnull NSNumber *)tag quadArray:(NSArray *)array layerId:(NSInteger)layerId) {
26
- [self trySetQuadsWithTag:tag quadArray:array layerId:layerId attempt:1];
27
- }
28
-
29
- - (void)trySetQuadsWithTag:(nonnull NSNumber *)tag quadArray:(NSArray *)array layerId:(NSInteger)layerId attempt:(NSInteger)attempt {
30
- const NSInteger maxAttempts = 10;
31
- const NSTimeInterval retryDelay = 0.1; // 100ms
32
-
33
- [self.bridge.uiManager addUIBlock:
34
- ^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
35
- id view = viewRegistry[tag];
36
- if (!view || ![view isKindOfClass:[RNDynamsoftImageEditorView class]]) {
37
- if (attempt < maxAttempts) {
38
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(retryDelay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
39
- [self trySetQuadsWithTag:tag quadArray:array layerId:layerId attempt:attempt + 1];
40
- });
41
- } else {
42
- RCTLogError(@"Cannot find RNDynamsoftImageEditorView with tag #%@ after %ld attempts", tag, (long)attempt);
43
- }
44
- } else {
45
- if (array && array.count > 0) {
46
- NSMutableArray<DSQuadDrawingItem *> *items = [NSMutableArray array];
47
- for (id dic in array) {
48
- if ([dic isKindOfClass:[NSDictionary class]]) {
49
- DSQuadrilateral *quad = [DSQuadrilateral quadrilateralWithDictionary:dic];
50
- [items addObject:[[DSQuadDrawingItem alloc] initWithQuadrilateral:quad]];
51
- }
52
- }
53
- DSDrawingLayer *layer = [((RNDynamsoftImageEditorView *)view).editorView getDrawingLayer:layerId];
54
- layer.drawingItems = items;
55
- }
56
- }
57
- }];
58
- }
59
-
60
- RCT_EXPORT_METHOD(getSelectedQuad:(nonnull NSNumber *)tag
61
- resolver:(RCTPromiseResolveBlock)resolve
62
- rejecter:(RCTPromiseRejectBlock)reject)
63
- {
64
- [self.bridge.uiManager addUIBlock:
65
- ^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
66
- id view = viewRegistry[tag];
67
- if (!view || ![view isKindOfClass:[RNDynamsoftImageEditorView class]]) {
68
- RCTLogError(@"Cannot find RNDynamsoftImageEditorView with tag #%@", tag);
69
- resolve(nil);
70
- } else {
71
- DSDrawingItem *item = [((RNDynamsoftImageEditorView *)view).editorView getSelectedDrawingItem];
72
- if (item && item.mediaType == DSDrawingItemMediaTypeQuadrilateral) {
73
- DSQuadDrawingItem *quadItem = (DSQuadDrawingItem *)item;
74
- if (quadItem) {
75
- resolve([quadItem.quad toJson]);
76
- } else {
77
- resolve(nil);
78
- }
79
- }
80
- }
81
- }];
82
- }
83
-
84
- - (void)trySetImageDataWithTag:(nonnull NSNumber *)tag data:(DSImageData *)data attempt:(NSInteger)attempt {
85
- const NSInteger maxAttempts = 10;
86
- const NSTimeInterval retryDelay = 0.1; // 100ms
87
-
88
- [self.bridge.uiManager addUIBlock:
89
- ^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
90
- id view = viewRegistry[tag];
91
- if (!view || ![view isKindOfClass:[RNDynamsoftImageEditorView class]]) {
92
- if (attempt < maxAttempts) {
93
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(retryDelay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
94
- [self trySetImageDataWithTag:tag data:data attempt:1];
95
- });
96
- } else {
97
- RCTLogError(@"Cannot find RNDynamsoftImageEditorView with tag #%@ after %ld attempts", tag, (long)attempt);
98
- }
99
- } else {
100
- ((RNDynamsoftImageEditorView *)view).editorView.imageData = data;
101
- }
102
- }];
103
- }
104
-
105
- #pragma mark - Global JSI
106
- // --- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) ---
107
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install)
108
- {
109
- RCTBridge *bridge = self.bridge;
110
-
111
- if ([bridge respondsToSelector:NSSelectorFromString(@"parentBridge")]) {
112
- bridge = [bridge valueForKey:@"parentBridge"];
113
- }
114
-
115
- RCTCxxBridge *cxxBridge = (RCTCxxBridge *)bridge;
116
- if (cxxBridge == nil || cxxBridge.runtime == nil) {
117
- return @false;
118
- }
119
-
120
- auto jsiRuntime = (jsi::Runtime*) cxxBridge.runtime;
121
- if (jsiRuntime == nil) {
122
- return @false;
123
- }
124
-
125
- install(*(facebook::jsi::Runtime *)cxxBridge.runtime, self);
126
- return @true;
127
- }
128
-
129
- // --- Helper Function (Assumed to be accessible, copied here for completeness) ---
130
- static void installHostFunction(
131
- jsi::Runtime &jsiRuntime,
132
- const char* name,
133
- unsigned int argCount,
134
- HostFunctionType hostFunction) {
135
-
136
- auto func = Function::createFromHostFunction(
137
- jsiRuntime,
138
- PropNameID::forAscii(jsiRuntime, name),
139
- argCount,
140
- std::move(hostFunction)
141
- );
142
- jsiRuntime.global().setProperty(jsiRuntime, name, std::move(func));
143
- }
144
-
145
- // --- JSI Installation Logic ---
146
- static void install(jsi::Runtime &jsiRuntime, RNDynamsoftImageEditorViewManager *rnEditorViewManager) {
147
-
148
- // 1. editorView_setOriginalImage(viewTag, imageDataHostObject)
149
- installHostFunction(jsiRuntime, "editorView_setOriginalImage", 2,
150
- [rnEditorViewManager](Runtime &runtime, const Value &thisValue, const Value *arguments, size_t count) -> Value {
151
-
152
- // 🔍 Argument Validation & Type Check (Optimized)
153
- if (count != 2 || !arguments[0].isNumber() || !arguments[1].isObject()) {
154
- // Should potentially throw an exception for incorrect usage,
155
- // but returning Value(false) keeps it consistent with original code style.
156
- return Value(false);
157
- }
158
-
159
- // Extract View Tag (JS number)
160
- double tag = arguments[0].getNumber();
161
- NSNumber *viewTag = @(tag); // Convert to NSNumber for Objective-C method
162
-
163
- // Extract Image Data Host Object (Requires runtime for getObject)
164
- Object obj = arguments[1].getObject(runtime);
165
-
166
- // Check if it's the specific Host Object type (Requires runtime for isHostObject)
167
- if (obj.isHostObject<ImageDataHostObject>(runtime)) {
168
- // Safely convert Host Object to DSImageData
169
- ImageDataHostObject hostObject = ImageDataHostObject::getHOFromObject(runtime, obj);
170
- DSImageData *data = [DSImageData imageDataFromHostObject:hostObject];
171
-
172
- // Call the Objective-C View Manager method
173
- [rnEditorViewManager trySetImageDataWithTag:viewTag data:data attempt:1];
174
-
175
- return Value(true);
176
- }
177
-
178
- return Value(false);
179
- }
180
- );
181
- }
182
-
183
- @end
1
+ /*
2
+ * Copyright © Dynamsoft Corporation. All rights reserved.
3
+ */
4
+
5
+ #import "RNDynamsoftImageEditorViewManager.h"
6
+ #import "RNDynamsoftImageEditorView.h"
7
+ #import <DynamsoftCaptureVisionBundle/DynamsoftCaptureVisionBundle.h>
8
+ #import <React/RCTBridge+Private.h>
9
+ #import "DSImageData+HostObject.h"
10
+ #import <React/RCTUIManager.h>
11
+ #import "RNDynamsoft+Json.h"
12
+
13
+ using namespace facebook::jsi;
14
+ using namespace facebook;
15
+ using namespace std;
16
+
17
+ @implementation RNDynamsoftImageEditorViewManager
18
+
19
+ RCT_EXPORT_MODULE(DynamsoftImageEditorView)
20
+
21
+ - (UIView *)view {
22
+ return [[RNDynamsoftImageEditorView alloc] init];
23
+ }
24
+
25
+ RCT_EXPORT_METHOD(setQuads:(nonnull NSNumber *)tag quadArray:(NSArray *)array layerId:(NSInteger)layerId) {
26
+ [self trySetQuadsWithTag:tag quadArray:array layerId:layerId attempt:1];
27
+ }
28
+
29
+ - (void)trySetQuadsWithTag:(nonnull NSNumber *)tag quadArray:(NSArray *)array layerId:(NSInteger)layerId attempt:(NSInteger)attempt {
30
+ const NSInteger maxAttempts = 10;
31
+ const NSTimeInterval retryDelay = 0.1; // 100ms
32
+
33
+ [self.bridge.uiManager addUIBlock:
34
+ ^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
35
+ id view = viewRegistry[tag];
36
+ if (!view || ![view isKindOfClass:[RNDynamsoftImageEditorView class]]) {
37
+ if (attempt < maxAttempts) {
38
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(retryDelay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
39
+ [self trySetQuadsWithTag:tag quadArray:array layerId:layerId attempt:attempt + 1];
40
+ });
41
+ } else {
42
+ RCTLogError(@"Cannot find RNDynamsoftImageEditorView with tag #%@ after %ld attempts", tag, (long)attempt);
43
+ }
44
+ } else {
45
+ if (array && array.count > 0) {
46
+ NSMutableArray<DSQuadDrawingItem *> *items = [NSMutableArray array];
47
+ for (id dic in array) {
48
+ if ([dic isKindOfClass:[NSDictionary class]]) {
49
+ DSQuadrilateral *quad = [DSQuadrilateral quadrilateralWithDictionary:dic];
50
+ [items addObject:[[DSQuadDrawingItem alloc] initWithQuadrilateral:quad]];
51
+ }
52
+ }
53
+ DSDrawingLayer *layer = [((RNDynamsoftImageEditorView *)view).editorView getDrawingLayer:layerId];
54
+ layer.drawingItems = items;
55
+ }
56
+ }
57
+ }];
58
+ }
59
+
60
+ RCT_EXPORT_METHOD(getSelectedQuad:(nonnull NSNumber *)tag
61
+ resolver:(RCTPromiseResolveBlock)resolve
62
+ rejecter:(RCTPromiseRejectBlock)reject)
63
+ {
64
+ [self.bridge.uiManager addUIBlock:
65
+ ^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
66
+ id view = viewRegistry[tag];
67
+ if (!view || ![view isKindOfClass:[RNDynamsoftImageEditorView class]]) {
68
+ RCTLogError(@"Cannot find RNDynamsoftImageEditorView with tag #%@", tag);
69
+ resolve(nil);
70
+ } else {
71
+ DSDrawingItem *item = [((RNDynamsoftImageEditorView *)view).editorView getSelectedDrawingItem];
72
+ if (item && item.mediaType == DSDrawingItemMediaTypeQuadrilateral) {
73
+ DSQuadDrawingItem *quadItem = (DSQuadDrawingItem *)item;
74
+ if (quadItem) {
75
+ resolve([quadItem.quad toJson]);
76
+ } else {
77
+ resolve(nil);
78
+ }
79
+ }
80
+ }
81
+ }];
82
+ }
83
+
84
+ - (void)trySetImageDataWithTag:(nonnull NSNumber *)tag data:(DSImageData *)data attempt:(NSInteger)attempt {
85
+ const NSInteger maxAttempts = 10;
86
+ const NSTimeInterval retryDelay = 0.1; // 100ms
87
+
88
+ [self.bridge.uiManager addUIBlock:
89
+ ^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
90
+ id view = viewRegistry[tag];
91
+ if (!view || ![view isKindOfClass:[RNDynamsoftImageEditorView class]]) {
92
+ if (attempt < maxAttempts) {
93
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(retryDelay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
94
+ [self trySetImageDataWithTag:tag data:data attempt:1];
95
+ });
96
+ } else {
97
+ RCTLogError(@"Cannot find RNDynamsoftImageEditorView with tag #%@ after %ld attempts", tag, (long)attempt);
98
+ }
99
+ } else {
100
+ ((RNDynamsoftImageEditorView *)view).editorView.imageData = data;
101
+ }
102
+ }];
103
+ }
104
+
105
+ #pragma mark - Global JSI
106
+ // --- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) ---
107
+ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install)
108
+ {
109
+ RCTBridge *bridge = self.bridge;
110
+
111
+ if ([bridge respondsToSelector:NSSelectorFromString(@"parentBridge")]) {
112
+ bridge = [bridge valueForKey:@"parentBridge"];
113
+ }
114
+
115
+ RCTCxxBridge *cxxBridge = (RCTCxxBridge *)bridge;
116
+ if (cxxBridge == nil || cxxBridge.runtime == nil) {
117
+ return @false;
118
+ }
119
+
120
+ auto jsiRuntime = (jsi::Runtime*) cxxBridge.runtime;
121
+ if (jsiRuntime == nil) {
122
+ return @false;
123
+ }
124
+
125
+ install(*(facebook::jsi::Runtime *)cxxBridge.runtime, self);
126
+ return @true;
127
+ }
128
+
129
+ // --- Helper Function (Assumed to be accessible, copied here for completeness) ---
130
+ static void installHostFunction(
131
+ jsi::Runtime &jsiRuntime,
132
+ const char* name,
133
+ unsigned int argCount,
134
+ HostFunctionType hostFunction) {
135
+
136
+ auto func = Function::createFromHostFunction(
137
+ jsiRuntime,
138
+ PropNameID::forAscii(jsiRuntime, name),
139
+ argCount,
140
+ std::move(hostFunction)
141
+ );
142
+ jsiRuntime.global().setProperty(jsiRuntime, name, std::move(func));
143
+ }
144
+
145
+ // --- JSI Installation Logic ---
146
+ static void install(jsi::Runtime &jsiRuntime, RNDynamsoftImageEditorViewManager *rnEditorViewManager) {
147
+
148
+ // 1. editorView_setOriginalImage(viewTag, imageDataHostObject)
149
+ installHostFunction(jsiRuntime, "editorView_setOriginalImage", 2,
150
+ [rnEditorViewManager](Runtime &runtime, const Value &thisValue, const Value *arguments, size_t count) -> Value {
151
+
152
+ // 🔍 Argument Validation & Type Check (Optimized)
153
+ if (count != 2 || !arguments[0].isNumber() || !arguments[1].isObject()) {
154
+ // Should potentially throw an exception for incorrect usage,
155
+ // but returning Value(false) keeps it consistent with original code style.
156
+ return Value(false);
157
+ }
158
+
159
+ // Extract View Tag (JS number)
160
+ double tag = arguments[0].getNumber();
161
+ NSNumber *viewTag = @(tag); // Convert to NSNumber for Objective-C method
162
+
163
+ // Extract Image Data Host Object (Requires runtime for getObject)
164
+ Object obj = arguments[1].getObject(runtime);
165
+
166
+ // Check if it's the specific Host Object type (Requires runtime for isHostObject)
167
+ if (obj.isHostObject<ImageDataHostObject>(runtime)) {
168
+ // Safely convert Host Object to DSImageData
169
+ ImageDataHostObject hostObject = ImageDataHostObject::getHOFromObject(runtime, obj);
170
+ DSImageData *data = [DSImageData imageDataFromHostObject:hostObject];
171
+
172
+ // Call the Objective-C View Manager method
173
+ [rnEditorViewManager trySetImageDataWithTag:viewTag data:data attempt:1];
174
+
175
+ return Value(true);
176
+ }
177
+
178
+ return Value(false);
179
+ }
180
+ );
181
+ }
182
+
183
+ @end
@@ -1,14 +1,14 @@
1
- /*
2
- * Copyright © Dynamsoft Corporation. All rights reserved.
3
- */
4
-
5
- #import <React/RCTBridgeModule.h>
6
- #import <React/RCTEventEmitter.h>
7
-
8
- NS_ASSUME_NONNULL_BEGIN
9
-
10
- @interface RNDynamsoftImageManager : RCTEventEmitter <RCTBridgeModule>
11
-
12
- @end
13
-
14
- NS_ASSUME_NONNULL_END
1
+ /*
2
+ * Copyright © Dynamsoft Corporation. All rights reserved.
3
+ */
4
+
5
+ #import <React/RCTBridgeModule.h>
6
+ #import <React/RCTEventEmitter.h>
7
+
8
+ NS_ASSUME_NONNULL_BEGIN
9
+
10
+ @interface RNDynamsoftImageManager : RCTEventEmitter <RCTBridgeModule>
11
+
12
+ @end
13
+
14
+ NS_ASSUME_NONNULL_END