dynamsoft-capture-vision-react-native 2.6.1016 → 3.0.5100

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 (138) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +7 -9
  3. package/android/build.gradle +73 -42
  4. package/android/src/main/cpp/CMakeLists.txt +22 -0
  5. package/android/src/main/cpp/ImgHO.cpp +95 -0
  6. package/android/src/main/cpp/ImgHO.h +34 -0
  7. package/android/src/main/cpp/JsiCore.cpp +284 -0
  8. package/android/src/main/cpp/JsiCore.h +51 -0
  9. package/android/src/main/cpp/JsiCvr.cpp +327 -0
  10. package/android/src/main/cpp/JsiCvr.h +54 -0
  11. package/android/src/main/cpp/JsiDbr.cpp +38 -0
  12. package/android/src/main/cpp/JsiDbr.h +26 -0
  13. package/android/src/main/cpp/JsiDce.cpp +59 -0
  14. package/android/src/main/cpp/JsiDce.h +17 -0
  15. package/android/src/main/cpp/JsiDcp.cpp +51 -0
  16. package/android/src/main/cpp/JsiDcp.h +31 -0
  17. package/android/src/main/cpp/JsiDdn.cpp +50 -0
  18. package/android/src/main/cpp/JsiDdn.h +28 -0
  19. package/android/src/main/cpp/JsiDlr.cpp +51 -0
  20. package/android/src/main/cpp/JsiDlr.h +26 -0
  21. package/android/src/main/cpp/JsiUtility.cpp +196 -0
  22. package/android/src/main/cpp/JsiUtility.h +16 -0
  23. package/android/src/main/cpp/RawBuffer.cpp +24 -0
  24. package/android/src/main/cpp/RawBuffer.h +24 -0
  25. package/android/src/main/cpp/android_log.h +14 -0
  26. package/android/src/main/dysJniLibs/debug/arm64-v8a/librn_dys.so +0 -0
  27. package/android/src/main/dysJniLibs/debug/armeabi-v7a/librn_dys.so +0 -0
  28. package/android/src/main/dysJniLibs/debug/x86/librn_dys.so +0 -0
  29. package/android/src/main/dysJniLibs/debug/x86_64/librn_dys.so +0 -0
  30. package/android/src/main/dysJniLibs/release/arm64-v8a/librn_dys.so +0 -0
  31. package/android/src/main/dysJniLibs/release/armeabi-v7a/librn_dys.so +0 -0
  32. package/android/src/main/dysJniLibs/release/x86/librn_dys.so +0 -0
  33. package/android/src/main/dysJniLibs/release/x86_64/librn_dys.so +0 -0
  34. package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/CVRModule.kt +4 -4
  35. package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/DCEModule.kt +10 -0
  36. package/android/src/main/java/com/dynamsoft/reactnativelib/ReactNativeDcvPackage.kt +13 -85
  37. package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/VersionsModule.kt +2 -2
  38. package/android/src/main/java/com/dynamsoft/reactnativelib/cvr/CaptureVisionRouterModuleImpl.kt +25 -25
  39. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraEnhancerModuleImpl.kt +23 -2
  40. package/android/src/main/java/com/dynamsoft/reactnativelib/license/LicenseModuleImpl.kt +1 -1
  41. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/ImageManagerModuleImpl.kt +19 -4
  42. package/android/src/main/java/com/dynamsoft/reactnativelib/utils/ForCore.kt +14 -0
  43. package/android/src/main/java/com/dynamsoft/reactnativelib/utils/ForCvr.kt +12 -7
  44. package/android/src/main/java/com/dynamsoft/reactnativelib/utils/ForDBR.kt +1 -7
  45. package/android/src/main/java/com/dynamsoft/reactnativelib/utils/ForDCE.kt +2 -2
  46. package/android/src/main/java/com/dynamsoft/reactnativelib/utils/ForDDN.kt +27 -19
  47. package/dynamsoft-capture-vision-react-native.podspec +9 -7
  48. package/ios/CPP/DSImageData+HostObject.h +1 -1
  49. package/ios/CPP/RNDynamsoft+JSI.h +2 -2
  50. package/ios/CPP/RNDynamsoft+JSI.mm +18 -10
  51. package/ios/CPP/RNDynamsoft+Json.h +2 -13
  52. package/ios/CPP/RNDynamsoft+Json.m +48 -39
  53. package/ios/CPP/YeetJSIUtils.h +3 -1
  54. package/ios/CPP/YeetJSIUtils.mm +5 -0
  55. package/ios/RNDynamsoftCameraView.m +1 -1
  56. package/ios/RNDynamsoftCameraViewManager.m +23 -8
  57. package/ios/RNDynamsoftCaptureVisionRouter.mm +76 -45
  58. package/ios/RNDynamsoftImageEditorView.m +1 -1
  59. package/ios/RNDynamsoftImageEditorViewManager.mm +36 -13
  60. package/ios/RNDynamsoftImageManager.mm +33 -4
  61. package/ios/RNDynamsoftImageSourceAdapter.mm +1 -1
  62. package/ios/RNDynamsoftLicense.m +1 -1
  63. package/ios/RNDynamsoftMultiCrossFilter.m +9 -9
  64. package/ios/RNDynamsoftVersions.m +1 -13
  65. package/package.json +3 -11
  66. package/src/core/CapturedResultBase.tsx +18 -0
  67. package/src/core/EnumCaptureResultItemType.tsx +12 -6
  68. package/src/core/EnumCrossVerificationStatus.tsx +6 -6
  69. package/src/core/ImageData.tsx +1 -1
  70. package/src/core/index.tsx +1 -0
  71. package/src/cvr/CaptureVisionRouter.tsx +47 -51
  72. package/src/cvr/CapturedResult.tsx +24 -46
  73. package/src/cvr/CapturedResultReceiver.tsx +12 -19
  74. package/src/cvr/NativeDynamsoftCaptureVisionRouterModule.tsx +2 -2
  75. package/src/cvr/SimplifiedCaptureVisionSettings.tsx +4 -4
  76. package/src/dbr/DecodedBarcodesResult.tsx +3 -17
  77. package/src/dce/CameraEnhancer.tsx +9 -0
  78. package/src/dce/DynamsoftCameraViewNativeComponent.ts +2 -2
  79. package/src/dce/EnumResolution.tsx +7 -0
  80. package/src/dce/NativeDynamsoftCameraViewModule.tsx +4 -0
  81. package/src/dce/index.tsx +1 -0
  82. package/src/dcp/ParsedResult.tsx +3 -14
  83. package/src/ddn/DeskewedImageResultItem.tsx +40 -0
  84. package/src/ddn/DetectedQuadResultItem.tsx +3 -1
  85. package/src/ddn/EnhancedImageResultItem.tsx +20 -0
  86. package/src/ddn/ProcessedDocumentResult.tsx +27 -0
  87. package/src/ddn/SimplifiedDocumentNormalizerSettings.tsx +18 -3
  88. package/src/ddn/index.tsx +3 -3
  89. package/src/dlr/RecognizedTextLinesResult.tsx +2 -16
  90. package/src/index.tsx +0 -1
  91. package/src/utility/ImageManager.tsx +66 -45
  92. package/android/src/main/java/com/dynamsoft/reactnativelib/rtu/BarcodeScannerModuleImpl.kt +0 -80
  93. package/android/src/main/java/com/dynamsoft/reactnativelib/rtu/MRZScannerModuleImpl.kt +0 -77
  94. package/android/src/main/java/com/dynamsoft/reactnativelib/rtu/ScannerInterface.kt +0 -47
  95. package/android/src/main/jniLibs/arm64-v8a/librn_dys.so +0 -0
  96. package/android/src/main/jniLibs/armeabi-v7a/librn_dys.so +0 -0
  97. package/android/src/main/jniLibs/x86/librn_dys.so +0 -0
  98. package/android/src/main/jniLibs/x86_64/librn_dys.so +0 -0
  99. package/android/src/newarch/com/dynamsoft/reactnativelib/BarcodeScannerModule.kt +0 -22
  100. package/android/src/newarch/com/dynamsoft/reactnativelib/CVRModule.kt +0 -91
  101. package/android/src/newarch/com/dynamsoft/reactnativelib/CameraViewManager.kt +0 -52
  102. package/android/src/newarch/com/dynamsoft/reactnativelib/DCEModule.kt +0 -91
  103. package/android/src/newarch/com/dynamsoft/reactnativelib/ISAModule.kt +0 -60
  104. package/android/src/newarch/com/dynamsoft/reactnativelib/ImageEditorViewManager.kt +0 -16
  105. package/android/src/newarch/com/dynamsoft/reactnativelib/ImageEditorViewModule.kt +0 -24
  106. package/android/src/newarch/com/dynamsoft/reactnativelib/ImageManagerModule.kt +0 -12
  107. package/android/src/newarch/com/dynamsoft/reactnativelib/LicenseModule.kt +0 -14
  108. package/android/src/newarch/com/dynamsoft/reactnativelib/MRZScannerModule.kt +0 -22
  109. package/android/src/newarch/com/dynamsoft/reactnativelib/MultiCrossFilterModule.kt +0 -58
  110. package/android/src/newarch/com/dynamsoft/reactnativelib/VersionsModule.kt +0 -41
  111. package/android/src/oldarch/com/dynamsoft/reactnativelib/BarcodeScannerModule.kt +0 -24
  112. package/android/src/oldarch/com/dynamsoft/reactnativelib/MRZScannerModule.kt +0 -24
  113. package/ios/RNDynamsoftBarcodeScanner.h +0 -14
  114. package/ios/RNDynamsoftBarcodeScanner.m +0 -169
  115. package/ios/RNDynamsoftMRZScanner.h +0 -14
  116. package/ios/RNDynamsoftMRZScanner.m +0 -140
  117. package/src/ddn/DetectedQuadsResult.tsx +0 -31
  118. package/src/ddn/NormalizedImageResultItem.tsx +0 -32
  119. package/src/ddn/NormalizedImagesResult.tsx +0 -27
  120. package/src/rtu/BarcodeScanConfig.tsx +0 -104
  121. package/src/rtu/BarcodeScanResult.tsx +0 -31
  122. package/src/rtu/BarcodeScanner.tsx +0 -112
  123. package/src/rtu/EnumResultState.tsx +0 -21
  124. package/src/rtu/MRZScanConfig.tsx +0 -67
  125. package/src/rtu/MRZScanResult.tsx +0 -84
  126. package/src/rtu/MRZScanner.tsx +0 -90
  127. package/src/rtu/NativeDynamsoftBarcodeScannerModule.tsx +0 -6
  128. package/src/rtu/NativeDynamsoftMRZScannerModule.tsx +0 -6
  129. package/src/rtu/index.tsx +0 -7
  130. /package/android/src/main/{withNamespace/AndroidManifest.xml → AndroidManifest.xml} +0 -0
  131. /package/android/src/main/{withoutNamespace/AndroidManifest.xml → AndroidManifest_noPackage.xml} +0 -0
  132. /package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/CameraViewManager.kt +0 -0
  133. /package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/ISAModule.kt +0 -0
  134. /package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/ImageEditorViewManager.kt +0 -0
  135. /package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/ImageEditorViewModule.kt +0 -0
  136. /package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/ImageManagerModule.kt +0 -0
  137. /package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/LicenseModule.kt +0 -0
  138. /package/android/src/{oldarch → main/java}/com/dynamsoft/reactnativelib/MultiCrossFilterModule.kt +0 -0
@@ -0,0 +1,50 @@
1
+ //
2
+ // Created by Allen on 24/08/28.
3
+ //
4
+
5
+ #include "JsiDdn.h"
6
+
7
+ namespace jsiConversion::ddn {
8
+ void jDetectedQuadResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem) {
9
+ env->PushLocalFrame(4);
10
+ jclass clsItem = env->FindClass("com/dynamsoft/ddn/DetectedQuadResultItem");
11
+ jmethodID me_getLocation =env->GetMethodID(clsItem, "getLocation", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
12
+ jmethodID me_getConfidenceAsDocumentBoundary =env->GetMethodID(clsItem, "getConfidenceAsDocumentBoundary", "()I");
13
+ jmethodID me_getCrossVerificationStatus = env->GetMethodID(clsItem, "getCrossVerificationStatus", "()I");
14
+ Object jsQuad(rt);
15
+ jsiConversion::core::jQuadToJsObject(rt, env, env->CallObjectMethod(jItem, me_getLocation), jsQuad);
16
+ jsItem.setProperty(rt, "location", jsQuad);
17
+ jsItem.setProperty(rt, "ConfidenceAsDocumentBoundary", env->CallIntMethod(jItem, me_getConfidenceAsDocumentBoundary));
18
+ jsItem.setProperty(rt, "crossVerificationStatus", env->CallIntMethod(jItem, me_getCrossVerificationStatus));
19
+ env->PopLocalFrame(nullptr);
20
+ }
21
+ void jDeskewedImageResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem) {
22
+ env->PushLocalFrame(4);
23
+ jclass clsItem = env->FindClass("com/dynamsoft/ddn/DeskewedImageResultItem");
24
+ jmethodID me_getSourceDeskewQuad = env->GetMethodID(clsItem, "getSourceDeskewQuad", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
25
+ jmethodID me_getImageData = env->GetMethodID(clsItem, "getImageData", "()Lcom/dynamsoft/core/basic_structures/ImageData;");
26
+ jmethodID me_getCrossVerificationStatus = env->GetMethodID(clsItem, "getCrossVerificationStatus", "()I");
27
+ Object jsQuad(rt);
28
+ jsiConversion::core::jQuadToJsObject(rt, env, env->CallObjectMethod(jItem, me_getSourceDeskewQuad), jsQuad);
29
+ jsItem.setProperty(rt, "sourceDeskewQuad", jsQuad);
30
+ jobject jImageData = env->CallObjectMethod(jItem, me_getImageData);
31
+ ImageDataHostObject imgHostObject;
32
+ jsiConversion::core::getHOFromJImageData(env, jImageData, imgHostObject);
33
+ auto jsImageData = Object::createFromHostObject(rt, std::make_shared<ImageDataHostObject>(imgHostObject));
34
+ jsItem.setProperty(rt, "imageData", std::move(jsImageData));
35
+ jsItem.setProperty(rt, "crossVerificationStatus", env->CallIntMethod(jItem, me_getCrossVerificationStatus));
36
+ env->PopLocalFrame(nullptr);
37
+ }
38
+
39
+ void jEnhancedImageResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem) {
40
+ env->PushLocalFrame(4);
41
+ jclass clsItem = env->FindClass("com/dynamsoft/ddn/EnhancedImageResultItem");
42
+ jmethodID me_getImageData = env->GetMethodID(clsItem, "getImageData", "()Lcom/dynamsoft/core/basic_structures/ImageData;");
43
+ jobject jImageData = env->CallObjectMethod(jItem, me_getImageData);
44
+ ImageDataHostObject imgHostObject;
45
+ jsiConversion::core::getHOFromJImageData(env, jImageData, imgHostObject);
46
+ auto jsImageData = Object::createFromHostObject(rt, std::make_shared<ImageDataHostObject>(imgHostObject));
47
+ jsItem.setProperty(rt, "imageData", std::move(jsImageData));
48
+ env->PopLocalFrame(nullptr);
49
+ }
50
+ }//namespace jsiConversion::ddn
@@ -0,0 +1,28 @@
1
+ //
2
+ // Created by Allen on 24/08/28.
3
+ //
4
+
5
+ #ifndef REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_DDN_JSIDDN_H_
6
+ #define REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_DDN_JSIDDN_H_
7
+
8
+ #include "jni.h"
9
+ #include "jsi/jsi.h"
10
+ #include "JsiCore.h"
11
+
12
+ #define SET_STRING_PROPERTY_BY_METHOD(jClass, jObj, jsObj, propertyName, methodName) \
13
+ jmethodID methodName =env->GetMethodID(jClass, #methodName, "()Ljava/lang/String;"); \
14
+ jstring j##propertyName = (jstring) env->CallObjectMethod(jObj, methodName); \
15
+ const char* p##propertyName = j##propertyName?env->GetStringUTFChars(j##propertyName, nullptr):""; \
16
+ jsObj.setProperty(rt, #propertyName, std::move(p##propertyName)); \
17
+ if(j##propertyName) env->ReleaseStringUTFChars(j##propertyName, p##propertyName); \
18
+
19
+ using namespace std;
20
+ using namespace facebook::jsi;
21
+
22
+ namespace jsiConversion::ddn {
23
+ void jDetectedQuadResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem);
24
+ void jDeskewedImageResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem);
25
+ void jEnhancedImageResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem);
26
+ }
27
+
28
+ #endif //REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_DDN_JSIDDN_H_
@@ -0,0 +1,51 @@
1
+ //
2
+ // Created by Allen on 24/08/28.
3
+ //
4
+
5
+ #include "JsiDlr.h"
6
+
7
+ namespace jsiConversion::dlr {
8
+ void jTextLineResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem) {
9
+ env->PushLocalFrame(8);
10
+ jclass clsItem = env->FindClass("com/dynamsoft/dlr/TextLineResultItem");
11
+ jmethodID getLocation = env->GetMethodID(clsItem, "getLocation", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
12
+ Object jsQuad(rt);
13
+ jsiConversion::core::jQuadToJsObject(rt, env, env->CallObjectMethod(jItem, getLocation), jsQuad);
14
+ jsItem.setProperty(rt, "location", jsQuad);
15
+
16
+ jmethodID getConfidence = env->GetMethodID(clsItem, "getConfidence", "()I");
17
+ jsItem.setProperty(rt, "confidence", env->CallIntMethod(jItem, getConfidence));
18
+
19
+ SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, text, getText)
20
+ SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, specificationName, getSpecificationName)
21
+
22
+ jmethodID getCharacterResults = env->GetMethodID(clsItem, "getCharacterResults", "()[Lcom/dynamsoft/dlr/CharacterResult;");
23
+ auto jCharacterResults = (jobjectArray) env->CallObjectMethod(jItem, getCharacterResults);
24
+ int count = jCharacterResults ? env->GetArrayLength(jCharacterResults) : 0;
25
+ Array jsCharacterResultArray = Array(rt, count);
26
+ for (int i = 0; i < count; ++i) {
27
+ Object jsCharacterResult(rt);
28
+ auto jCharRes = env->GetObjectArrayElement(jCharacterResults, i);
29
+ jCharacterResultToJsObject(rt, env, jCharRes, jsCharacterResult);
30
+ env->DeleteLocalRef(jCharRes);
31
+ jsCharacterResultArray.setValueAtIndex(rt, i, jsCharacterResult);
32
+ }
33
+ env->PopLocalFrame(nullptr);
34
+ }
35
+ void jCharacterResultToJsObject(Runtime &rt, JNIEnv *env, jobject jCharRes, Object &jsCharRes) {
36
+ jclass clsResult = env->FindClass("com/dynamsoft/dlr/CharacterResult");
37
+ jfieldID characterH = env->GetFieldID(clsResult, "characterH", "C");
38
+ jfieldID characterM = env->GetFieldID(clsResult, "characterM", "C");
39
+ jfieldID characterL = env->GetFieldID(clsResult, "characterL", "C");
40
+ jsCharRes.setProperty(rt, "characterH", std::to_string(env->GetCharField(jCharRes, characterH)));
41
+ jsCharRes.setProperty(rt, "characterM", std::to_string(env->GetCharField(jCharRes, characterM)));
42
+ jsCharRes.setProperty(rt, "characterL", std::to_string(env->GetCharField(jCharRes, characterL)));
43
+
44
+ jfieldID characterHConfidence = env->GetFieldID(clsResult, "characterHConfidence", "I");
45
+ jfieldID characterMConfidence = env->GetFieldID(clsResult, "characterMConfidence", "I");
46
+ jfieldID characterLConfidence = env->GetFieldID(clsResult, "characterLConfidence", "I");
47
+ jsCharRes.setProperty(rt, "characterHConfidence", env->GetIntField(jCharRes, characterHConfidence));
48
+ jsCharRes.setProperty(rt, "characterMConfidence", env->GetIntField(jCharRes, characterMConfidence));
49
+ jsCharRes.setProperty(rt, "characterLConfidence", env->GetIntField(jCharRes, characterLConfidence));
50
+ }
51
+ }//namespace jsiConversion::dlr
@@ -0,0 +1,26 @@
1
+ //
2
+ // Created by Allen on 24/08/28.
3
+ //
4
+
5
+ #ifndef REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_DLR_JSIDLR_H_
6
+ #define REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_DLR_JSIDLR_H_
7
+
8
+ #include "jni.h"
9
+ #include "jsi/jsi.h"
10
+ #include "JsiCore.h"
11
+
12
+ #define SET_STRING_PROPERTY_BY_METHOD(jClass, jObj, jsObj, propertyName, methodName) \
13
+ jmethodID methodName =env->GetMethodID(jClass, #methodName, "()Ljava/lang/String;"); \
14
+ jstring j##propertyName = (jstring) env->CallObjectMethod(jObj, methodName); \
15
+ const char* p##propertyName = j##propertyName?env->GetStringUTFChars(j##propertyName, nullptr):""; \
16
+ jsObj.setProperty(rt, #propertyName, std::move(p##propertyName)); \
17
+ if(j##propertyName) env->ReleaseStringUTFChars(j##propertyName, p##propertyName); \
18
+
19
+ using namespace std;
20
+ using namespace facebook::jsi;
21
+
22
+ namespace jsiConversion::dlr {
23
+ void jTextLineResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem);
24
+ void jCharacterResultToJsObject(Runtime &rt, JNIEnv *env, jobject jCharRes, Object &jsCharRes);
25
+ }
26
+ #endif //REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_DLR_JSIDLR_H_
@@ -0,0 +1,196 @@
1
+ //
2
+ // Created by Allen on 24/09/23.
3
+ //
4
+
5
+ #include "JsiUtility.h"
6
+ jobject jImageManagerModule = nullptr;
7
+ jclass jclzQuad = nullptr;
8
+ jclass jclzPoint = nullptr;
9
+
10
+ jobject jsPointToJobject(Runtime &rt, JNIEnv *env, Object jsPoint) {
11
+ if(jsPoint.hasProperty(rt,"x") && jsPoint.hasProperty(rt,"y")) {
12
+ int x = jsPoint.getProperty(rt,"x").asNumber();
13
+ int y = jsPoint.getProperty(rt,"y").asNumber();
14
+ jmethodID init = env->GetMethodID(jclzPoint, "<init>", "(II)V");
15
+ jobject jPoint = env->NewObject(jclzPoint, init, x, y);
16
+ return jPoint;
17
+ }
18
+ return nullptr;
19
+ }
20
+
21
+ jobject jsQuadToJobject(Runtime &rt, JNIEnv *env, Object &jsQuad) {
22
+ if(jsQuad.hasProperty(rt,"points")) {
23
+ auto jsPoints = jsQuad.getProperty(rt,"points").asObject(rt).asArray(rt);
24
+ int count = jsPoints.length(rt);
25
+ auto jPoints = env->NewObjectArray(count, jclzPoint, nullptr);
26
+ for (int i = 0; i < count; ++i) {
27
+ auto jPoint = jsPointToJobject(rt, env, jsPoints.getValueAtIndex(rt, i).asObject(rt));
28
+ env->SetObjectArrayElement(jPoints, i, jPoint);
29
+ env->DeleteLocalRef(jPoint);
30
+ }
31
+ auto initQuad = env->GetMethodID(jclzQuad, "<init>", "()V");
32
+ auto fieldId_points = env->GetFieldID(jclzQuad, "points", "[Landroid/graphics/Point;");
33
+ auto jQuad = env->NewObject(jclzQuad, initQuad);
34
+ env->SetObjectField(jQuad, fieldId_points, jPoints);
35
+ return jQuad;
36
+ }
37
+ return nullptr;
38
+ }
39
+
40
+ jobjectArray jsQuadArrayToJobjectArray(Runtime &rt, JNIEnv *env, Array &jsQuads) {
41
+ int count = jsQuads.length(rt);
42
+ jobjectArray jQuads = env->NewObjectArray(count, jclzQuad, nullptr);
43
+ for (int i = 0; i < count; ++i) {
44
+ auto jsQuad = jsQuads.getValueAtIndex(rt, i).asObject(rt);
45
+ auto jQuad = jsQuadToJobject(rt, env, jsQuad);
46
+ env->SetObjectArrayElement(jQuads, i, jQuad);
47
+ env->DeleteLocalRef(jQuad);
48
+ }
49
+ return jQuads;
50
+ }
51
+
52
+ void saveImageDataHOToFile(Runtime &rt, ImageDataHostObject &imageDataHO, string filePath, bool overWrite) {
53
+ JNIEnv *env;
54
+ bool needDetach = false;
55
+ int state = gJvm->GetEnv((void **) &env, JNI_VERSION_1_6);
56
+ if (state == JNI_EDETACHED || env == nullptr) {
57
+ gJvm->AttachCurrentThread(&env, nullptr);
58
+ needDetach = true;
59
+ }
60
+ jclass clz = env->GetObjectClass(jImageManagerModule);
61
+ jmethodID methodId = env->GetMethodID(clz, "saveToFileCalledInJsi", "(Lcom/dynamsoft/core/basic_structures/ImageData;Ljava/lang/String;Z)V");
62
+ auto jImageData = jsiConversion::core::getJImageDataFromHO(env, imageDataHO);
63
+ env->CallVoidMethod(jImageManagerModule, methodId, jImageData, env->NewStringUTF(filePath.c_str()), overWrite);
64
+ env->DeleteLocalRef(clz);
65
+ env->DeleteLocalRef(jImageData);
66
+ if (needDetach) {
67
+ gJvm->DetachCurrentThread();
68
+ }
69
+ }
70
+
71
+ ImageDataHostObject drawOnImage(Runtime &rt, ImageDataHostObject &imageDataHO, Array &jsQuads, int color, int thickness) {
72
+ JNIEnv *env;
73
+ bool needDetach = false;
74
+ int state = gJvm->GetEnv((void **) &env, JNI_VERSION_1_6);
75
+ if (state == JNI_EDETACHED || env == nullptr) {
76
+ gJvm->AttachCurrentThread(&env, nullptr);
77
+ needDetach = true;
78
+ }
79
+ jclass clz = env->GetObjectClass(jImageManagerModule);
80
+ jmethodID methodId = env->GetMethodID(clz, "drawOnImageCalledInJsi",
81
+ "(Lcom/dynamsoft/core/basic_structures/ImageData;[Lcom/dynamsoft/core/basic_structures/Quadrilateral;II)Lcom/dynamsoft/core/basic_structures/ImageData;");
82
+ auto jImageData = jsiConversion::core::getJImageDataFromHO(env, imageDataHO);
83
+ auto jQuads = jsQuadArrayToJobjectArray(rt, env, jsQuads);
84
+ auto jImageDataAfterDraw = env->CallObjectMethod(jImageManagerModule, methodId, jImageData, jQuads, color, thickness);
85
+ ImageDataHostObject imageHOAfterDraw;
86
+ jsiConversion::core::getHOFromJImageData(env, jImageDataAfterDraw, imageHOAfterDraw);
87
+ env->DeleteLocalRef(jQuads);
88
+ env->DeleteLocalRef(jImageDataAfterDraw);
89
+ env->DeleteLocalRef(clz);
90
+ env->DeleteLocalRef(jImageData);
91
+ if (needDetach) {
92
+ gJvm->DetachCurrentThread();
93
+ }
94
+ return imageHOAfterDraw;
95
+ }
96
+
97
+ ImageDataHostObject cropImage(Runtime &rt, ImageDataHostObject &imageDataHO, Object &jsQuad) {
98
+ JNIEnv *env;
99
+ bool needDetach = false;
100
+ int state = gJvm->GetEnv((void **) &env, JNI_VERSION_1_6);
101
+ if (state == JNI_EDETACHED || env == nullptr) {
102
+ gJvm->AttachCurrentThread(&env, nullptr);
103
+ needDetach = true;
104
+ }
105
+ jclass clz = env->GetObjectClass(jImageManagerModule);
106
+ jmethodID methodId = env->GetMethodID(clz, "cropImageCalledInJsi",
107
+ "(Lcom/dynamsoft/core/basic_structures/ImageData;Lcom/dynamsoft/core/basic_structures/Quadrilateral;)Lcom/dynamsoft/core/basic_structures/ImageData;");
108
+ auto jImageData = jsiConversion::core::getJImageDataFromHO(env, imageDataHO);
109
+ auto jQuad = jsQuadToJobject(rt, env, jsQuad);
110
+ auto jImageDataAfterCrop = env->CallObjectMethod(jImageManagerModule, methodId, jImageData, jQuad);
111
+ ImageDataHostObject imageHOAfterCrop;
112
+ jsiConversion::core::getHOFromJImageData(env, jImageDataAfterCrop, imageHOAfterCrop);
113
+ env->DeleteLocalRef(jQuad);
114
+ env->DeleteLocalRef(jImageDataAfterCrop);
115
+ env->DeleteLocalRef(clz);
116
+ env->DeleteLocalRef(jImageData);
117
+ if (needDetach) {
118
+ gJvm->DetachCurrentThread();
119
+ }
120
+ return imageHOAfterCrop;
121
+ }
122
+
123
+
124
+ #define JSI_FUNC [](Runtime &runtime, const Value &thisValue, const Value *arguments, size_t count) -> Value
125
+
126
+ namespace jsi_install::utility {
127
+ void install_imageManager_saveToFile(Runtime &jsiRuntime) {
128
+ auto nameID = PropNameID::forAscii(jsiRuntime, "imageManager_saveToFile");
129
+ if(!jsiRuntime.global().hasProperty(jsiRuntime, nameID)) {
130
+ auto saveToFileFcn = Function::createFromHostFunction(jsiRuntime, nameID, 3, JSI_FUNC {
131
+ auto imageDataObj = arguments[0].asObject(runtime);
132
+ auto imageDataHostObject = ImageDataHostObject::getHOFromObject(runtime, std::move(imageDataObj));
133
+ auto filePath = arguments[1].asString(runtime).utf8(runtime);
134
+ bool overWrite = arguments[2].asBool();
135
+ saveImageDataHOToFile(runtime, imageDataHostObject, filePath, overWrite);
136
+ return {};
137
+ });
138
+ jsiRuntime.global().setProperty(jsiRuntime, nameID, std::move(saveToFileFcn));
139
+ }
140
+ }
141
+ void install_imageManager_drawOnImage(Runtime &jsiRuntime){
142
+ auto nameID = PropNameID::forAscii(jsiRuntime, "imageManager_drawOnImage");
143
+ if(!jsiRuntime.global().hasProperty(jsiRuntime, nameID)) {
144
+ auto drawOnImageFcn = Function::createFromHostFunction(jsiRuntime, nameID, 4, JSI_FUNC {
145
+ auto imageDataObj = arguments[0].asObject(runtime);
146
+ auto imageDataHostObject = ImageDataHostObject::getHOFromObject(runtime, std::move(imageDataObj));
147
+ auto jsQuads = arguments[1].asObject(runtime).asArray(runtime);
148
+ auto color = arguments[2].asNumber();
149
+ auto thickness = arguments[3].asNumber();
150
+ ImageDataHostObject imageHOAfterDraw = drawOnImage(runtime, imageDataHostObject, jsQuads, (int) color, (int) thickness);
151
+ return Object::createFromHostObject(runtime, std::make_shared<ImageDataHostObject>(imageHOAfterDraw));
152
+ });
153
+ jsiRuntime.global().setProperty(jsiRuntime, nameID, std::move(drawOnImageFcn));
154
+ }
155
+ }
156
+
157
+ void install_imageManager_cropImage(Runtime &jsiRuntime){
158
+ auto nameID = PropNameID::forAscii(jsiRuntime, "imageManager_cropImage");
159
+ if(!jsiRuntime.global().hasProperty(jsiRuntime, nameID)) {
160
+ auto cropImageFcn = Function::createFromHostFunction(jsiRuntime, nameID, 4, JSI_FUNC {
161
+ auto imageDataObj = arguments[0].asObject(runtime);
162
+ auto imageDataHostObject = ImageDataHostObject::getHOFromObject(runtime, std::move(imageDataObj));
163
+ auto jsQuads = arguments[1].asObject(runtime);
164
+ ImageDataHostObject imageHOAfterCrop = cropImage(runtime, imageDataHostObject, jsQuads);
165
+ if(imageHOAfterCrop.buffer == nullptr) {
166
+ return Value::undefined();
167
+ }
168
+ return Object::createFromHostObject(runtime, std::make_shared<ImageDataHostObject>(imageHOAfterCrop));
169
+ });
170
+ jsiRuntime.global().setProperty(jsiRuntime, nameID, std::move(cropImageFcn));
171
+ }
172
+ }
173
+ }//namespace jsi_install::dce
174
+
175
+ void install_imageManager_methods(Runtime &jsiRuntime) {
176
+ jsi_install::utility::install_imageManager_saveToFile(jsiRuntime);
177
+ jsi_install::utility::install_imageManager_drawOnImage(jsiRuntime);
178
+ jsi_install::utility::install_imageManager_cropImage(jsiRuntime);
179
+ }
180
+
181
+
182
+ extern "C"
183
+ JNIEXPORT void JNICALL
184
+ Java_com_dynamsoft_reactnativelib_utility_ImageManagerModuleImpl_nativeInstall(JNIEnv *env, jobject thiz, jlong jsiPtr) {
185
+ if (!env->IsSameObject(jImageManagerModule, thiz)) {
186
+ jImageManagerModule = env->NewWeakGlobalRef(thiz);
187
+ }
188
+ if(jclzQuad == nullptr) {
189
+ jclzQuad = (jclass) env->NewWeakGlobalRef(env->FindClass("com/dynamsoft/core/basic_structures/Quadrilateral"));
190
+ }
191
+ if(jclzPoint == nullptr) {
192
+ jclzPoint = (jclass) env->NewWeakGlobalRef(env->FindClass("android/graphics/Point"));
193
+ }
194
+ auto rt = reinterpret_cast<Runtime *>(jsiPtr);
195
+ install_imageManager_methods(*rt);
196
+ }
@@ -0,0 +1,16 @@
1
+ //
2
+ // Created by Allen on 24/09/23.
3
+ //
4
+
5
+ #ifndef REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_UTILITY_JSIUTILITY_H_
6
+ #define REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_UTILITY_JSIUTILITY_H_
7
+ #include "JsiCore.h"
8
+
9
+
10
+ namespace jsi_install::utility {
11
+ void install_imageManager_saveToFile(Runtime &jsiRuntime);
12
+ void install_imageManager_drawOnImage(Runtime &jsiRuntime);
13
+ void install_imageManager_cropImage(Runtime &jsiRuntime);
14
+ }//namespace jsi_install::dce
15
+
16
+ #endif //REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_UTILITY_JSIUTILITY_H_
@@ -0,0 +1,24 @@
1
+ //
2
+ // Created by Allen on 24/08/26.
3
+ //
4
+
5
+
6
+ #include "RawBuffer.h"
7
+
8
+ MutableRawBuffer::MutableRawBuffer(uint8_t* data, size_t size, bool freeOnDealloc)
9
+ : _data(data), _size(size), _freeOnDealloc(freeOnDealloc) {}
10
+
11
+ MutableRawBuffer::~MutableRawBuffer() {
12
+ if (_freeOnDealloc && _data != nullptr) {
13
+ free(_data);
14
+ _data = nullptr;
15
+ }
16
+ }
17
+
18
+ size_t MutableRawBuffer::size() const {
19
+ return _size;
20
+ }
21
+
22
+ uint8_t* MutableRawBuffer::data() {
23
+ return _data;
24
+ }
@@ -0,0 +1,24 @@
1
+ //
2
+ // Created by Allen on 24/08/26.
3
+ //
4
+
5
+ #ifndef REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_MUTABLERAWBUFFER_H_
6
+ #define REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_MUTABLERAWBUFFER_H_
7
+
8
+
9
+ #include <jsi/jsi.h>
10
+ using namespace facebook::jsi;
11
+
12
+ class MutableRawBuffer : public MutableBuffer {
13
+ public:
14
+ MutableRawBuffer(uint8_t* data, size_t size, bool freeOnDealloc);
15
+ ~MutableRawBuffer() override;
16
+
17
+ uint8_t* data() override;
18
+ [[nodiscard]] size_t size() const override;
19
+ uint8_t* _data;
20
+ size_t _size;
21
+ bool _freeOnDealloc;
22
+ };
23
+
24
+ #endif //REACT_NATIVE_DCV_ANDROID_SRC_MAIN_CPP_MUTABLERAWBUFFER_H_
@@ -0,0 +1,14 @@
1
+ //
2
+ // Created by Allen on 24/05/15.
3
+ //
4
+
5
+ #ifndef DYNAMSOFT_CORE_REACT_NATIVE_ANDROID_SRC_MAIN_CPP_ANDROID_LOG_H_
6
+ #define DYNAMSOFT_CORE_REACT_NATIVE_ANDROID_SRC_MAIN_CPP_ANDROID_LOG_H_
7
+
8
+ #include "android/log.h"
9
+ #define LOG_TAG "Dynamsoft RN JNI"
10
+ #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
11
+ #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
12
+ #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
13
+
14
+ #endif //DYNAMSOFT_CORE_REACT_NATIVE_ANDROID_SRC_MAIN_CPP_ANDROID_LOG_H_
@@ -81,13 +81,13 @@ class CVRModule(reactApplicationContext: ReactApplicationContext) : ReactContext
81
81
  }
82
82
 
83
83
  @ReactMethod
84
- fun outputSettings(templateName: String, promise: Promise) {
85
- impl.outputSettings(templateName, promise)
84
+ fun outputSettings(templateName: String, includeDefaultValues: Boolean, promise: Promise) {
85
+ impl.outputSettings(templateName, includeDefaultValues, promise)
86
86
  }
87
87
 
88
88
  @ReactMethod
89
- fun outputSettingsToFile(file: String, templateName: String, promise: Promise) {
90
- impl.outputSettingsToFile(file, templateName, promise)
89
+ fun outputSettingsToFile(file: String, templateName: String, includeDefaultValues: Boolean, promise: Promise) {
90
+ impl.outputSettingsToFile(file, templateName, includeDefaultValues, promise)
91
91
  }
92
92
 
93
93
  @ReactMethod
@@ -99,6 +99,16 @@ class DCEModule(reactApplicationContext: ReactApplicationContext) : ReactContext
99
99
  impl.turnOffTorch()
100
100
  }
101
101
 
102
+ @ReactMethod
103
+ fun setResolution(resolution: Int) {
104
+ impl.setResolution(resolution)
105
+ }
106
+
107
+ @ReactMethod
108
+ fun getResolution(promise: Promise) {
109
+ impl.getResolution(promise)
110
+ }
111
+
102
112
  @ReactMethod
103
113
  fun beep() {
104
114
  impl.beep()
@@ -1,23 +1,12 @@
1
1
  // ReactNativeDcvPackage.java
2
2
  package com.dynamsoft.reactnativelib
3
3
 
4
- import com.dynamsoft.reactnativelib.core.ImageSourceAdapterModuleImpl
5
- import com.dynamsoft.reactnativelib.cvr.CaptureVisionRouterModuleImpl
6
- import com.dynamsoft.reactnativelib.dce.CameraEnhancerModuleImpl
7
- import com.dynamsoft.reactnativelib.dce.ImageEditorViewModuleImpl
8
- import com.dynamsoft.reactnativelib.license.LicenseModuleImpl
9
- import com.dynamsoft.reactnativelib.rtu.BarcodeScannerModuleImpl
10
- import com.dynamsoft.reactnativelib.rtu.MRZScannerModuleImpl
11
- import com.dynamsoft.reactnativelib.utility.ImageManagerModuleImpl
12
- import com.dynamsoft.reactnativelib.utility.MultiCrossFilterModuleImpl
13
- import com.facebook.react.TurboReactPackage
4
+ import com.facebook.react.ReactPackage
14
5
  import com.facebook.react.bridge.NativeModule
15
6
  import com.facebook.react.bridge.ReactApplicationContext
16
- import com.facebook.react.module.model.ReactModuleInfo
17
- import com.facebook.react.module.model.ReactModuleInfoProvider
18
7
  import com.facebook.react.uimanager.ViewManager
19
8
 
20
- class ReactNativeDcvPackage : TurboReactPackage() {
9
+ class ReactNativeDcvPackage : ReactPackage {
21
10
  companion object {
22
11
  init {
23
12
  System.loadLibrary("rn_dys")
@@ -28,77 +17,16 @@ class ReactNativeDcvPackage : TurboReactPackage() {
28
17
  return listOf(CameraViewManager(), ImageEditorViewManager())
29
18
  }
30
19
 
31
- override fun getModule(name: String, context: ReactApplicationContext): NativeModule? {
32
- return when (name) {
33
- CaptureVisionRouterModuleImpl.NAME -> CVRModule(context)
34
- CameraEnhancerModuleImpl.NAME -> DCEModule(context)
35
- ImageSourceAdapterModuleImpl.NAME -> ISAModule(context)
36
- LicenseModuleImpl.NAME -> LicenseModule(context)
37
- MultiCrossFilterModuleImpl.NAME -> MultiCrossFilterModule(context)
38
- VersionsModule.NAME -> VersionsModule(context)
39
- ImageEditorViewModuleImpl.NAME -> ImageEditorViewModule(context)
40
- ImageManagerModuleImpl.NAME -> ImageManagerModule(context)
41
- BarcodeScannerModuleImpl.NAME -> BarcodeScannerModule(context)
42
- MRZScannerModuleImpl.NAME -> MRZScannerModule(context)
43
- else -> null
44
- }
45
- }
46
-
47
- override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
48
- val isEnableNewArch = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
49
- return ReactModuleInfoProvider {
50
- mapOf(
51
- CaptureVisionRouterModuleImpl.NAME to ReactModuleInfo(
52
- CaptureVisionRouterModuleImpl.NAME,
53
- CaptureVisionRouterModuleImpl.NAME,
54
- false, false, true, false, isEnableNewArch
55
- ),
56
- CameraEnhancerModuleImpl.NAME to ReactModuleInfo(
57
- CameraEnhancerModuleImpl.NAME,
58
- CameraEnhancerModuleImpl.NAME,
59
- false, false, true, false, isEnableNewArch
60
- ),
61
- ImageSourceAdapterModuleImpl.NAME to ReactModuleInfo(
62
- ImageSourceAdapterModuleImpl.NAME,
63
- ImageSourceAdapterModuleImpl.NAME,
64
- false, false, true, false, isEnableNewArch
65
- ),
66
- LicenseModuleImpl.NAME to ReactModuleInfo(
67
- LicenseModuleImpl.NAME,
68
- LicenseModuleImpl.NAME,
69
- false, false, true, false, isEnableNewArch
70
- ),
71
- MultiCrossFilterModuleImpl.NAME to ReactModuleInfo(
72
- MultiCrossFilterModuleImpl.NAME,
73
- MultiCrossFilterModuleImpl.NAME,
74
- false, false, true, false, isEnableNewArch
75
- ),
76
- VersionsModule.NAME to ReactModuleInfo(
77
- VersionsModule.NAME,
78
- VersionsModule.NAME,
79
- false, false, true, false, isEnableNewArch
80
- ),
81
- ImageEditorViewModuleImpl.NAME to ReactModuleInfo(
82
- ImageEditorViewModuleImpl.NAME,
83
- ImageEditorViewModuleImpl.NAME,
84
- false, false, true, false, isEnableNewArch
85
- ),
86
- ImageManagerModuleImpl.NAME to ReactModuleInfo(
87
- ImageManagerModuleImpl.NAME,
88
- ImageManagerModuleImpl.NAME,
89
- false, false, true, false, isEnableNewArch
90
- ),
91
- BarcodeScannerModuleImpl.NAME to ReactModuleInfo(
92
- BarcodeScannerModuleImpl.NAME,
93
- BarcodeScannerModuleImpl.NAME,
94
- false, false, true, false, isEnableNewArch
95
- ),
96
- MRZScannerModuleImpl.NAME to ReactModuleInfo(
97
- MRZScannerModuleImpl.NAME,
98
- MRZScannerModuleImpl.NAME,
99
- false, false, true, false, isEnableNewArch
100
- )
101
- )
102
- }
20
+ override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
21
+ return mutableListOf(
22
+ CVRModule(reactContext),
23
+ DCEModule(reactContext),
24
+ ISAModule(reactContext),
25
+ LicenseModule(reactContext),
26
+ MultiCrossFilterModule(reactContext),
27
+ VersionsModule(reactContext),
28
+ ImageEditorViewModule(reactContext),
29
+ ImageManagerModule(reactContext),
30
+ )
103
31
  }
104
32
  }
@@ -5,7 +5,7 @@ import com.dynamsoft.cvr.CaptureVisionRouterModule
5
5
  import com.dynamsoft.dbr.BarcodeReaderModule
6
6
  import com.dynamsoft.dce.CameraEnhancerModule
7
7
  import com.dynamsoft.dcp.CodeParserModule
8
- import com.dynamsoft.dcp.dedicator.CodePaserDedicatorModule
8
+ import com.dynamsoft.dcp.dedicator.CodeParserDedicatorModule
9
9
  import com.dynamsoft.ddn.DocumentNormalizerModule
10
10
  import com.dynamsoft.dip.ImageProcessingModule
11
11
  import com.dynamsoft.dlr.LabelRecognizerModule
@@ -34,7 +34,7 @@ class VersionsModule(reactContext: ReactApplicationContext) : ReactContextBaseJa
34
34
  "dnn" to NeuralNetworkModule.getVersion(),
35
35
  "utility" to UtilityModule.getVersion(),
36
36
  "dcp" to CodeParserModule.getVersion(),
37
- "dcpd" to CodePaserDedicatorModule.getVersion(),
37
+ "dcpd" to CodeParserDedicatorModule.getVersion(),
38
38
  "dip" to ImageProcessingModule.getVersion()
39
39
  )
40
40
  )