dynamsoft-capture-vision-react-native 3.0.5201 → 3.2.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 (93) hide show
  1. package/README.md +5 -2
  2. package/android/build.gradle +4 -6
  3. package/android/gradle.properties +3 -3
  4. package/android/src/main/cpp/JsiCore.cpp +1 -1
  5. package/android/src/main/cpp/JsiDbr.cpp +208 -23
  6. package/android/src/main/cpp/JsiDcp.cpp +1 -1
  7. package/android/src/main/cpp/JsiDlr.cpp +10 -1
  8. package/android/src/main/cpp/JsiUtility.cpp +470 -62
  9. package/android/src/main/cpp/JsiUtility.h +13 -3
  10. package/android/src/main/dysJniLibs/debug/arm64-v8a/librn_dys.so +0 -0
  11. package/android/src/main/dysJniLibs/debug/armeabi-v7a/librn_dys.so +0 -0
  12. package/android/src/main/dysJniLibs/debug/x86/librn_dys.so +0 -0
  13. package/android/src/main/dysJniLibs/debug/x86_64/librn_dys.so +0 -0
  14. package/android/src/main/dysJniLibs/release/arm64-v8a/librn_dys.so +0 -0
  15. package/android/src/main/dysJniLibs/release/armeabi-v7a/librn_dys.so +0 -0
  16. package/android/src/main/dysJniLibs/release/x86/librn_dys.so +0 -0
  17. package/android/src/main/dysJniLibs/release/x86_64/librn_dys.so +0 -0
  18. package/android/src/main/dysJniLibsFor81/debug/arm64-v8a/librn_dys.so +0 -0
  19. package/android/src/main/dysJniLibsFor81/debug/armeabi-v7a/librn_dys.so +0 -0
  20. package/android/src/main/dysJniLibsFor81/debug/x86/librn_dys.so +0 -0
  21. package/android/src/main/dysJniLibsFor81/debug/x86_64/librn_dys.so +0 -0
  22. package/android/src/main/dysJniLibsFor81/release/arm64-v8a/librn_dys.so +0 -0
  23. package/android/src/main/dysJniLibsFor81/release/armeabi-v7a/librn_dys.so +0 -0
  24. package/android/src/main/dysJniLibsFor81/release/x86/librn_dys.so +0 -0
  25. package/android/src/main/dysJniLibsFor81/release/x86_64/librn_dys.so +0 -0
  26. package/android/src/main/dysJniLibsFor82/debug/arm64-v8a/librn_dys.so +0 -0
  27. package/android/src/main/dysJniLibsFor82/debug/armeabi-v7a/librn_dys.so +0 -0
  28. package/android/src/main/dysJniLibsFor82/debug/x86/librn_dys.so +0 -0
  29. package/android/src/main/dysJniLibsFor82/debug/x86_64/librn_dys.so +0 -0
  30. package/android/src/main/dysJniLibsFor82/release/arm64-v8a/librn_dys.so +0 -0
  31. package/android/src/main/dysJniLibsFor82/release/armeabi-v7a/librn_dys.so +0 -0
  32. package/android/src/main/dysJniLibsFor82/release/x86/librn_dys.so +0 -0
  33. package/android/src/main/dysJniLibsFor82/release/x86_64/librn_dys.so +0 -0
  34. package/android/src/main/java/com/dynamsoft/reactnativelib/CVRModule.kt +17 -2
  35. package/android/src/main/java/com/dynamsoft/reactnativelib/CameraViewManager.kt +13 -1
  36. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageEditorViewManager.kt +1 -1
  37. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/Basic.kt +1 -1
  38. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForCore.kt +1 -2
  39. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForCvr.kt +1 -5
  40. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDBR.kt +74 -3
  41. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDCE.kt +33 -13
  42. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDCP.kt +1 -1
  43. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDDN.kt +1 -3
  44. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDLR.kt +6 -3
  45. package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ImageUtil.kt +2 -2
  46. package/android/src/main/java/com/dynamsoft/reactnativelib/cvr/CaptureVisionRouterModuleImpl.kt +25 -5
  47. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraEnhancerModuleImpl.kt +6 -3
  48. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraViewManagerImpl.kt +15 -3
  49. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewManagerImpl.kt +1 -5
  50. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewModuleImpl.kt +2 -4
  51. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/RNCameraView.kt +1 -2
  52. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/ImageManagerModuleImpl.kt +75 -3
  53. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/MultiCrossFilterModuleImpl.kt +2 -2
  54. package/dynamsoft-capture-vision-react-native.podspec +1 -1
  55. package/ios/CPP/ImageDataHostObject.cpp +1 -1
  56. package/ios/CPP/ImageDataHostObject.hpp +1 -1
  57. package/ios/CPP/RNDynamsoft+JSI.h +3 -0
  58. package/ios/CPP/RNDynamsoft+JSI.mm +119 -2
  59. package/ios/CPP/RNDynamsoft+Json.m +114 -14
  60. package/ios/CPP/YeetJSIUtils.h +2 -0
  61. package/ios/CPP/YeetJSIUtils.mm +15 -0
  62. package/ios/RNDynamsoftCameraView.h +4 -0
  63. package/ios/RNDynamsoftCameraView.m +25 -0
  64. package/ios/RNDynamsoftCameraViewManager.m +8 -2
  65. package/ios/RNDynamsoftCaptureVisionRouter.mm +149 -92
  66. package/ios/RNDynamsoftImageEditorViewManager.mm +71 -40
  67. package/ios/RNDynamsoftImageManager.mm +295 -81
  68. package/ios/RNDynamsoftImageSourceAdapter.mm +100 -65
  69. package/package.json +1 -1
  70. package/src/core/EnumGrayscaleEnhancementMode.tsx +1 -0
  71. package/src/core/EnumGrayscaleTransformationMode.tsx +1 -0
  72. package/src/core/EnumImageFileFormat.tsx +6 -0
  73. package/src/core/index.tsx +1 -0
  74. package/src/cvr/CaptureVisionRouter.tsx +33 -5
  75. package/src/dbr/BarcodeDetails.tsx +51 -0
  76. package/src/dbr/BarcodeResultItem.tsx +11 -0
  77. package/src/dbr/EnumBarcodeFormat.tsx +2 -0
  78. package/src/dbr/EnumDeblurMode.tsx +1 -0
  79. package/src/dbr/EnumLocalizationMode.tsx +1 -0
  80. package/src/dbr/EnumQRCodeErrorCorrectionLevel.tsx +6 -0
  81. package/src/dbr/index.tsx +2 -0
  82. package/src/dce/CameraEnhancer.tsx +14 -6
  83. package/src/dce/CameraView.tsx +10 -2
  84. package/src/dce/DynamsoftCameraViewNativeComponent.ts +25 -0
  85. package/src/dce/EnumCameraPosition.tsx +13 -1
  86. package/src/dce/EnumEnhancedFeatures.tsx +3 -4
  87. package/src/dce/ImageEditorView.tsx +1 -1
  88. package/src/dlr/CharacterResult.tsx +4 -1
  89. package/src/dlr/SimplifiedLabelRecognizerSettings.tsx +2 -0
  90. package/src/dlr/TextLineResultItem.tsx +5 -0
  91. package/src/utility/EnumFilterType.tsx +5 -0
  92. package/src/utility/ImageManager.tsx +227 -9
  93. package/src/utility/index.tsx +1 -0
package/README.md CHANGED
@@ -22,13 +22,16 @@ DCV enables you to develop highly customizable applications for barcode reading,
22
22
 
23
23
  ### React Native
24
24
 
25
- - Supported Version: 0.71.0 or higher
25
+ - Supported Version: 0.71.0 or higher (0.75.0+ recommended)
26
26
 
27
27
  ### Android
28
28
 
29
29
  - Supported OS: Android 5.0 (API Level 21) or higher.
30
30
  - Supported ABI: armeabi-v7a, arm64-v8a, x86 and x86_64.
31
- - Development Environment: Android Studio 2022.2.1 or higher.
31
+ - Development Environment:
32
+ - IDE: Android Studio 2024.3.2 suggested.
33
+ - JDK: Java 17 or higher.
34
+ - Gradle: 8.0 or higher.
32
35
 
33
36
  ### iOS
34
37
 
@@ -35,15 +35,17 @@ def getReactNativeVersion() {
35
35
  def packageJson = new groovy.json.JsonSlurper().parseText(packageJsonFile.text)
36
36
  return packageJson.version
37
37
  }
38
- return "unknown"
38
+ return "0.82.0"
39
39
  }
40
40
 
41
41
  static def getMajor(String version) {
42
+ if (version == "unknown") return 0
42
43
  def parts = version.tokenize('.')
43
44
  return parts.size() > 0 ? parts[0].toInteger() : 0
44
45
  }
45
46
 
46
47
  static def getMinor(String version) {
48
+ if (version == "unknown") return 0
47
49
  def parts = version.tokenize('.')
48
50
  return parts.size() > 1 ? parts[1].toInteger() : 0
49
51
  }
@@ -142,10 +144,6 @@ rootProject.allprojects {
142
144
  url "https://download2.dynamsoft.com/maven/aar"
143
145
  }
144
146
  }
145
-
146
- configurations.all {
147
- resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
148
- }
149
147
  }
150
148
 
151
149
 
@@ -161,5 +159,5 @@ dependencies {
161
159
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
162
160
  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
163
161
 
164
- implementation "com.dynamsoft:capturevisionbundle:3.0.5000"
162
+ implementation "com.dynamsoft:capturevisionbundle:3.2.3000"
165
163
  }
@@ -14,8 +14,8 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
14
14
  android.useAndroidX=true
15
15
  android.enableJetifier=true
16
16
 
17
- kotlinVersion=1.7.21
17
+ kotlinVersion=1.8.22
18
18
  minSdk=21
19
- targetSdk=34
20
- compileSdk=34
19
+ targetSdk=36
20
+ compileSdk=36
21
21
  ndkversion=21.4.7075529
@@ -157,7 +157,7 @@ Value imageDataHOToBase64(ImageDataHostObject &imageDataHO, Runtime &rt) {
157
157
  needDetach = true;
158
158
  }
159
159
 
160
- auto cls = env->FindClass("com/dynamsoft/reactnative/basicutils/ImageUtilKt");
160
+ auto cls = env->FindClass("com/dynamsoft/reactnativelib/basicutils/ImageUtilKt");
161
161
  auto imageData2base64 = env->GetStaticMethodID(cls, "imageData2base64", "(Lcom/dynamsoft/core/basic_structures/ImageData;)Ljava/lang/String;");
162
162
 
163
163
  auto jImageData = jsiConversion::core::getJImageDataFromHO(env, imageDataHO);
@@ -3,36 +3,221 @@
3
3
  //
4
4
 
5
5
  #include "JsiDbr.h"
6
+
6
7
  namespace jsiConversion::dbr {
7
- void jBarcodeResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem) {
8
- env->PushLocalFrame(10);
9
- jclass clsItem = env->FindClass("com/dynamsoft/dbr/BarcodeResultItem");
10
- jmethodID getFormat = env->GetMethodID(clsItem, "getFormat", "()J");
11
- jsItem.setProperty(rt, "format", BigInt::fromInt64(rt, env->CallLongMethod(jItem, getFormat)));
12
8
 
13
- SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, formatString, getFormatString)
14
- SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, text, getText)
9
+ void getUpperAndLowerFromJRange(JNIEnv *env, jobject jRange, float &lower, float &upper) {
10
+ env->PushLocalFrame(16);
11
+ if (jRange == nullptr) {
12
+ lower = 0;
13
+ upper = 0;
14
+ return;
15
+ }
16
+ jclass clsRange = env->FindClass("android/util/Range");
17
+ jmethodID getLower = env->GetMethodID(clsRange, "getLower", "()Ljava/lang/Comparable;");
18
+ jmethodID getUpper = env->GetMethodID(clsRange, "getUpper", "()Ljava/lang/Comparable;");
19
+ jobject jLowerObj = env->CallObjectMethod(jRange, getLower);
20
+ jobject jUpperObj = env->CallObjectMethod(jRange, getUpper);
21
+ jclass clsFloat = env->FindClass("java/lang/Float");
22
+ jmethodID floatValue = env->GetMethodID(clsFloat, "floatValue", "()F");
23
+ lower = env->CallFloatMethod(jLowerObj, floatValue);
24
+ upper = env->CallFloatMethod(jUpperObj, floatValue);
25
+ env->PopLocalFrame(nullptr);
26
+ }
27
+
28
+
29
+ void jBarcodeResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem) {
30
+ env->PushLocalFrame(64);
31
+ jclass clsItem = env->FindClass("com/dynamsoft/dbr/BarcodeResultItem");
32
+ jmethodID getFormat = env->GetMethodID(clsItem, "getFormat", "()J");
33
+ jsItem.setProperty(rt, "format", BigInt::fromInt64(rt, env->CallLongMethod(jItem, getFormat)));
34
+
35
+ SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, formatString, getFormatString)
36
+ SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, text, getText)
37
+
38
+ jmethodID getLocation = env->GetMethodID(clsItem, "getLocation", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
39
+ Object jsQuad(rt);
40
+ jsiConversion::core::jQuadToJsObject(rt, env, env->CallObjectMethod(jItem, getLocation), jsQuad);
41
+ jsItem.setProperty(rt, "location", jsQuad);
42
+
43
+ jmethodID getConfidence = env->GetMethodID(clsItem, "getConfidence", "()I");
44
+ jsItem.setProperty(rt, "confidence", env->CallIntMethod(jItem, getConfidence));
45
+
46
+ jmethodID getAngle = env->GetMethodID(clsItem, "getAngle", "()I");
47
+ jsItem.setProperty(rt, "angle", env->CallIntMethod(jItem, getAngle));
48
+
49
+ jmethodID getModuleSize = env->GetMethodID(clsItem, "getModuleSize", "()I");
50
+ jsItem.setProperty(rt, "moduleSize", env->CallIntMethod(jItem, getModuleSize));
51
+
52
+ jmethodID isMirrored = env->GetMethodID(clsItem, "isMirrored", "()Z");
53
+ jsItem.setProperty(rt, "isMirrored", (bool) env->CallBooleanMethod(jItem, isMirrored));
54
+
55
+ jmethodID isDPM = env->GetMethodID(clsItem, "isDPM", "()Z");
56
+ jsItem.setProperty(rt, "isDPM", (bool) env->CallBooleanMethod(jItem, isDPM));
57
+
58
+ jmethodID getDetails = env->GetMethodID(clsItem, "getDetails", "()Lcom/dynamsoft/dbr/BarcodeDetails;");
59
+ jobject jDetails = env->CallObjectMethod(jItem, getDetails);
60
+ if (jDetails != nullptr) {
61
+ jclass clsOneDCodeDetails = env->FindClass("com/dynamsoft/dbr/OneDCodeDetails");
62
+ jclass clsDataMatrixDetails = env->FindClass("com/dynamsoft/dbr/DataMatrixDetails");
63
+ jclass clsAztecDetails = env->FindClass("com/dynamsoft/dbr/AztecDetails");
64
+ jclass clsPDF417Details = env->FindClass("com/dynamsoft/dbr/PDF417Details");
65
+ jclass clsQRCodeDetails = env->FindClass("com/dynamsoft/dbr/QRCodeDetails");
66
+ if (env->IsInstanceOf(jDetails, clsOneDCodeDetails)) {
67
+ Object jsOneDCodeDetails(rt);
68
+
69
+ jmethodID getStartPatternRange = env->GetMethodID(clsOneDCodeDetails, "getStartPatternRange", "()Landroid/util/Range;");
70
+ jobject jStartPatternRange = env->CallObjectMethod(jDetails, getStartPatternRange);
71
+ float startPatternRange_lower = 0, startPatternRange_upper = 0;
72
+ getUpperAndLowerFromJRange(env, jStartPatternRange, startPatternRange_lower, startPatternRange_upper);
73
+ jsOneDCodeDetails.setProperty(rt, "startPatternRange_lower", startPatternRange_lower);
74
+ jsOneDCodeDetails.setProperty(rt, "startPatternRange_upper", startPatternRange_upper);
75
+
76
+ jmethodID getMiddlePatternRange = env->GetMethodID(clsOneDCodeDetails, "getMiddlePatternRange", "()Landroid/util/Range;");
77
+ jobject jMiddlePatternRange = env->CallObjectMethod(jDetails, getMiddlePatternRange);
78
+ float middlePatternRange_lower = 0, middlePatternRange_upper = 0;
79
+ getUpperAndLowerFromJRange(env, jMiddlePatternRange, middlePatternRange_lower, middlePatternRange_upper);
80
+ jsOneDCodeDetails.setProperty(rt, "middlePatternRange_lower", middlePatternRange_lower);
81
+ jsOneDCodeDetails.setProperty(rt, "middlePatternRange_upper", middlePatternRange_upper);
82
+
83
+ jmethodID getEndPatternRange = env->GetMethodID(clsOneDCodeDetails, "getEndPatternRange", "()Landroid/util/Range;");
84
+ jobject jEndPatternRange = env->CallObjectMethod(jDetails, getEndPatternRange);
85
+ float endPatternRange_lower = 0, endPatternRange_upper = 0;
86
+ getUpperAndLowerFromJRange(env, jEndPatternRange, endPatternRange_lower, endPatternRange_upper);
87
+ jsOneDCodeDetails.setProperty(rt, "endPatternRange_lower", endPatternRange_lower);
88
+ jsOneDCodeDetails.setProperty(rt, "endPatternRange_upper", endPatternRange_upper);
89
+
90
+
91
+ jmethodID getStartCharsBytes = env->GetMethodID(clsOneDCodeDetails, "getStartCharsBytes", "()[B");
92
+ jobject jStartCharsBytes = env->CallObjectMethod(jDetails, getStartCharsBytes);
93
+ if (jStartCharsBytes != nullptr) {
94
+ int startCharsBytes_len = env->GetArrayLength((jbyteArray) jStartCharsBytes);
95
+ Array jsStartCharsBytes(rt, startCharsBytes_len);
96
+ jbyte *jStartCharsByte = env->GetByteArrayElements((jbyteArray) jStartCharsBytes, nullptr);
97
+ for (int i = 0; i < startCharsBytes_len; i++) {
98
+ jsStartCharsBytes.setValueAtIndex(rt, i, Value((unsigned char) jStartCharsByte[i]));
99
+ }
100
+ env->ReleaseByteArrayElements((jbyteArray) jStartCharsBytes, jStartCharsByte, 0);
101
+ jsOneDCodeDetails.setProperty(rt, "startCharsBytes", jsStartCharsBytes);
102
+ }
103
+
104
+ jmethodID getStopCharsBytes = env->GetMethodID(clsOneDCodeDetails, "getStopCharsBytes", "()[B");
105
+ jobject jStopCharsBytes = env->CallObjectMethod(jDetails, getStopCharsBytes);
106
+ if (jStopCharsBytes != nullptr) {
107
+ int stopCharsBytes_len = env->GetArrayLength((jbyteArray) jStopCharsBytes);
108
+ Array jsStopCharsBytes(rt, stopCharsBytes_len);
109
+ jbyte *jStopCharsByte = env->GetByteArrayElements((jbyteArray) jStopCharsBytes, nullptr);
110
+ for (int i = 0; i < stopCharsBytes_len; i++) {
111
+ jsStopCharsBytes.setValueAtIndex(rt, i, Value((unsigned char) jStopCharsByte[i]));
112
+ }
113
+ env->ReleaseByteArrayElements((jbyteArray) jStopCharsBytes, jStopCharsByte, 0);
114
+ jsOneDCodeDetails.setProperty(rt, "stopCharsBytes", jsStopCharsBytes);
115
+ }
116
+
117
+ jmethodID getCheckDigitBytes = env->GetMethodID(clsOneDCodeDetails, "getCheckDigitBytes", "()[B");
118
+ jobject jCheckDigitBytes = env->CallObjectMethod(jDetails, getCheckDigitBytes);
119
+ if (jCheckDigitBytes != nullptr) {
120
+ int checkDigitBytes_len = env->GetArrayLength((jbyteArray) jCheckDigitBytes);
121
+ Array jsCheckDigitBytes(rt, checkDigitBytes_len);
122
+ jbyte *jCheckDigitByte = env->GetByteArrayElements((jbyteArray) jCheckDigitBytes, nullptr);
123
+ for (int i = 0; i < checkDigitBytes_len; i++) {
124
+ jsCheckDigitBytes.setValueAtIndex(rt, i, Value((unsigned char) jCheckDigitByte[i]));
125
+ }
126
+ env->ReleaseByteArrayElements((jbyteArray) jCheckDigitBytes, jCheckDigitByte, 0);
127
+ jsOneDCodeDetails.setProperty(rt, "checkDigitBytes", jsCheckDigitBytes);
128
+ }
15
129
 
16
- jmethodID getLocation = env->GetMethodID(clsItem, "getLocation", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
17
- Object jsQuad(rt);
18
- jsiConversion::core::jQuadToJsObject(rt, env, env->CallObjectMethod(jItem, getLocation), jsQuad);
19
- jsItem.setProperty(rt, "location", jsQuad);
130
+ jsItem.setProperty(rt, "oneDCodeDetails", jsOneDCodeDetails);
131
+ } else if (env->IsInstanceOf(jDetails, clsQRCodeDetails)) {
132
+ Object jsQRCodeDetails(rt);
133
+ jmethodID getRows = env->GetMethodID(clsQRCodeDetails, "getRows", "()I");
134
+ jsQRCodeDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
135
+ jmethodID getColumns = env->GetMethodID(clsQRCodeDetails, "getColumns", "()I");
136
+ jsQRCodeDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
137
+ jmethodID getErrorCorrectionLevel = env->GetMethodID(clsQRCodeDetails, "getErrorCorrectionLevel", "()I");
138
+ jsQRCodeDetails.setProperty(rt, "errorCorrectionLevel", env->CallIntMethod(jDetails, getErrorCorrectionLevel));
139
+ jmethodID getVersion = env->GetMethodID(clsQRCodeDetails, "getVersion", "()I");
140
+ jsQRCodeDetails.setProperty(rt, "version", env->CallIntMethod(jDetails, getVersion));
141
+ jmethodID getModel = env->GetMethodID(clsQRCodeDetails, "getModel", "()I");
142
+ jsQRCodeDetails.setProperty(rt, "model", env->CallIntMethod(jDetails, getModel));
143
+ jmethodID getMode = env->GetMethodID(clsQRCodeDetails, "getMode", "()I");
144
+ jsQRCodeDetails.setProperty(rt, "mode", env->CallIntMethod(jDetails, getMode));
145
+ jmethodID getPage = env->GetMethodID(clsQRCodeDetails, "getPage", "()I");
146
+ jsQRCodeDetails.setProperty(rt, "page", env->CallIntMethod(jDetails, getPage));
147
+ jmethodID getTotalPage = env->GetMethodID(clsQRCodeDetails, "getTotalPage", "()I");
148
+ jsQRCodeDetails.setProperty(rt, "totalPage", env->CallIntMethod(jDetails, getTotalPage));
149
+ jmethodID getParityData = env->GetMethodID(clsQRCodeDetails, "getParityData", "()B");
150
+ jsQRCodeDetails.setProperty(rt, "parityData", (int) env->CallByteMethod(jDetails, getParityData));
151
+ jmethodID getDataMaskPattern = env->GetMethodID(clsQRCodeDetails, "getDataMaskPattern", "()I");
152
+ jsQRCodeDetails.setProperty(rt, "dataMaskPattern", env->CallIntMethod(jDetails, getDataMaskPattern));
153
+ jmethodID getCodewords = env->GetMethodID(clsQRCodeDetails, "getCodewords", "()[B");
154
+ jbyteArray jCodewords = (jbyteArray) env->CallObjectMethod(jDetails, getCodewords);
20
155
 
21
- jmethodID getConfidence = env->GetMethodID(clsItem, "getConfidence", "()I");
22
- jsItem.setProperty(rt, "confidence", env->CallIntMethod(jItem, getConfidence));
156
+ if (jCodewords != nullptr) {
157
+ int codewords_len = env->GetArrayLength(jCodewords);
158
+ Array jsCodewords(rt, codewords_len);
159
+ jbyte *pCodewords = env->GetByteArrayElements(jCodewords, nullptr);
160
+ for (int i = 0; i < codewords_len; i++) {
161
+ jsCodewords.setValueAtIndex(rt, i, Value(pCodewords[i]));
162
+ }
163
+ env->ReleaseByteArrayElements(jCodewords, pCodewords, 0);
164
+ jsQRCodeDetails.setProperty(rt, "codewords", jsCodewords);
165
+ }
23
166
 
24
- jmethodID getAngle = env->GetMethodID(clsItem, "getAngle", "()I");
25
- jsItem.setProperty(rt, "angle", env->CallIntMethod(jItem, getAngle));
167
+ jsItem.setProperty(rt, "qrCodeDetails", jsQRCodeDetails);
168
+ } else if (env->IsInstanceOf(jDetails, clsAztecDetails)) {
169
+ Object jsAztecDetails(rt);
170
+ jmethodID getRows = env->GetMethodID(clsAztecDetails, "getRows", "()I");
171
+ jsAztecDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
172
+ jmethodID getColumns = env->GetMethodID(clsAztecDetails, "getColumns", "()I");
173
+ jsAztecDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
174
+ jmethodID getLayerNumber = env->GetMethodID(clsAztecDetails, "getLayerNumber", "()I");
175
+ jsAztecDetails.setProperty(rt, "layerNumber", env->CallIntMethod(jDetails, getLayerNumber));
26
176
 
27
- jmethodID getModuleSize = env->GetMethodID(clsItem, "getModuleSize", "()I");
28
- jsItem.setProperty(rt, "moduleSize", env->CallIntMethod(jItem, getModuleSize));
177
+ jsItem.setProperty(rt, "aztecDetails", jsAztecDetails);
178
+ } else if (env->IsInstanceOf(jDetails, clsPDF417Details)) {
179
+ Object jsPDF417Details(rt);
180
+ jmethodID getRows = env->GetMethodID(clsPDF417Details, "getRows", "()I");
181
+ jsPDF417Details.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
182
+ jmethodID getColumns = env->GetMethodID(clsPDF417Details, "getColumns", "()I");
183
+ jsPDF417Details.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
184
+ jmethodID getErrorCorrectionLevel = env->GetMethodID(clsPDF417Details, "getErrorCorrectionLevel", "()I");
185
+ jsPDF417Details.setProperty(rt, "errorCorrectionLevel", env->CallIntMethod(jDetails, getErrorCorrectionLevel));
186
+ jmethodID hasLeftRowIndicator = env->GetMethodID(clsPDF417Details, "hasLeftRowIndicator", "()Z");
187
+ jsPDF417Details.setProperty(rt, "hasLeftRowIndicator", (bool) env->CallBooleanMethod(jDetails, hasLeftRowIndicator));
188
+ jmethodID hasRightRowIndicator = env->GetMethodID(clsPDF417Details, "hasRightRowIndicator", "()Z");
189
+ jsPDF417Details.setProperty(rt, "hasRightRowIndicator", (bool) env->CallBooleanMethod(jDetails, hasRightRowIndicator));
29
190
 
30
- jmethodID isMirrored = env->GetMethodID(clsItem, "isMirrored", "()Z");
31
- jsItem.setProperty(rt, "isMirrored", (bool) env->CallBooleanMethod(jItem, isMirrored));
191
+ jmethodID getCodewords = env->GetMethodID(clsPDF417Details, "getCodewords", "()[I");
192
+ jintArray jCodewords = (jintArray) env->CallObjectMethod(jDetails, getCodewords);
32
193
 
33
- jmethodID isDPM = env->GetMethodID(clsItem, "isDPM", "()Z");
34
- jsItem.setProperty(rt, "isDPM", (bool) env->CallBooleanMethod(jItem, isDPM));
194
+ if (jCodewords != nullptr) {
195
+ int codewords_len = env->GetArrayLength(jCodewords);
196
+ Array jsCodewords(rt, codewords_len);
197
+ jint *pCodewords = env->GetIntArrayElements(jCodewords, nullptr);
198
+ for (int i = 0; i < codewords_len; i++) {
199
+ jsCodewords.setValueAtIndex(rt, i, Value(pCodewords[i]));
200
+ }
201
+ env->ReleaseIntArrayElements(jCodewords, pCodewords, 0);
202
+ jsPDF417Details.setProperty(rt, "codewords", jsCodewords);
203
+ }
35
204
 
36
- env->PopLocalFrame(nullptr);
37
- }
205
+ jsItem.setProperty(rt, "pdf417Details", jsPDF417Details);
206
+ } else if (env->IsInstanceOf(jDetails, clsDataMatrixDetails)) {
207
+ Object jsDataMatrixDetails(rt);
208
+ jmethodID getRows = env->GetMethodID(clsDataMatrixDetails, "getRows", "()I");
209
+ jsDataMatrixDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
210
+ jmethodID getColumns = env->GetMethodID(clsDataMatrixDetails, "getColumns", "()I");
211
+ jsDataMatrixDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
212
+ jmethodID getDataRegionRows = env->GetMethodID(clsDataMatrixDetails, "getDataRegionRows", "()I");
213
+ jsDataMatrixDetails.setProperty(rt, "dataRegionRows", env->CallIntMethod(jDetails, getDataRegionRows));
214
+ jmethodID getDataRegionColumns = env->GetMethodID(clsDataMatrixDetails, "getDataRegionColumns", "()I");
215
+ jsDataMatrixDetails.setProperty(rt, "dataRegionColumns", env->CallIntMethod(jDetails, getDataRegionColumns));
216
+ jmethodID getDataRegionNumber = env->GetMethodID(clsDataMatrixDetails, "getDataRegionNumber", "()I");
217
+ jsDataMatrixDetails.setProperty(rt, "dataRegionNumber", env->CallIntMethod(jDetails, getDataRegionNumber));
218
+ jsItem.setProperty(rt, "dataMatrixDetails", jsDataMatrixDetails);
219
+ }
220
+ }
221
+ env->PopLocalFrame(nullptr);
222
+ }
38
223
  }//namespace jsiConversion::dbr
@@ -40,7 +40,7 @@ void jParsedResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object
40
40
  }
41
41
  SET_STRING_PROPERTY_BY_METHOD2(jItem, js_itemFiled, value, getFieldValue, j_key)
42
42
  js_itemFiled.setProperty(rt, "mappingStatus", env->CallIntMethod(jItem, getFieldMappingStatus, j_key));
43
- js_itemFiled.setProperty(rt, "fieldValidationStatus", env->CallIntMethod(jItem, getFieldValidationStatus, j_key));
43
+ js_itemFiled.setProperty(rt, "validationStatus", env->CallIntMethod(jItem, getFieldValidationStatus, j_key));
44
44
  js_parsedFields.setProperty(rt, p_key, js_itemFiled);
45
45
  if(j_key) {
46
46
  env->ReleaseStringUTFChars(j_key, p_key);
@@ -6,7 +6,7 @@
6
6
 
7
7
  namespace jsiConversion::dlr {
8
8
  void jTextLineResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Object &jsItem) {
9
- env->PushLocalFrame(8);
9
+ env->PushLocalFrame(64);
10
10
  jclass clsItem = env->FindClass("com/dynamsoft/dlr/TextLineResultItem");
11
11
  jmethodID getLocation = env->GetMethodID(clsItem, "getLocation", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
12
12
  Object jsQuad(rt);
@@ -17,6 +17,7 @@ void jTextLineResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Obje
17
17
  jsItem.setProperty(rt, "confidence", env->CallIntMethod(jItem, getConfidence));
18
18
 
19
19
  SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, text, getText)
20
+ SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, rawText, getRawText)
20
21
  SET_STRING_PROPERTY_BY_METHOD(clsItem, jItem, jsItem, specificationName, getSpecificationName)
21
22
 
22
23
  jmethodID getCharacterResults = env->GetMethodID(clsItem, "getCharacterResults", "()[Lcom/dynamsoft/dlr/CharacterResult;");
@@ -30,9 +31,11 @@ void jTextLineResultItemToJsObject(Runtime &rt, JNIEnv *env, jobject jItem, Obje
30
31
  env->DeleteLocalRef(jCharRes);
31
32
  jsCharacterResultArray.setValueAtIndex(rt, i, jsCharacterResult);
32
33
  }
34
+ jsItem.setProperty(rt, "characterResults", jsCharacterResultArray);
33
35
  env->PopLocalFrame(nullptr);
34
36
  }
35
37
  void jCharacterResultToJsObject(Runtime &rt, JNIEnv *env, jobject jCharRes, Object &jsCharRes) {
38
+ env->PushLocalFrame(8);
36
39
  jclass clsResult = env->FindClass("com/dynamsoft/dlr/CharacterResult");
37
40
  jfieldID characterH = env->GetFieldID(clsResult, "characterH", "C");
38
41
  jfieldID characterM = env->GetFieldID(clsResult, "characterM", "C");
@@ -47,5 +50,11 @@ void jCharacterResultToJsObject(Runtime &rt, JNIEnv *env, jobject jCharRes, Obje
47
50
  jsCharRes.setProperty(rt, "characterHConfidence", env->GetIntField(jCharRes, characterHConfidence));
48
51
  jsCharRes.setProperty(rt, "characterMConfidence", env->GetIntField(jCharRes, characterMConfidence));
49
52
  jsCharRes.setProperty(rt, "characterLConfidence", env->GetIntField(jCharRes, characterLConfidence));
53
+
54
+ jmethodID getLocation = env->GetMethodID(clsResult, "getLocation", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
55
+ Object jsQuad(rt);
56
+ jsiConversion::core::jQuadToJsObject(rt, env, env->CallObjectMethod(jCharRes, getLocation), jsQuad);
57
+ jsCharRes.setProperty(rt, "location", jsQuad);
58
+ env->PopLocalFrame(nullptr);
50
59
  }
51
60
  }//namespace jsiConversion::dlr