dynamsoft-capture-vision-react-native 3.0.5200 → 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.
- package/README.md +5 -2
- package/android/build.gradle +20 -10
- package/android/gradle.properties +3 -3
- package/android/src/main/cpp/JsiCore.cpp +1 -1
- package/android/src/main/cpp/JsiDbr.cpp +208 -23
- package/android/src/main/cpp/JsiDcp.cpp +1 -1
- package/android/src/main/cpp/JsiDlr.cpp +10 -1
- package/android/src/main/cpp/JsiUtility.cpp +470 -62
- package/android/src/main/cpp/JsiUtility.h +13 -3
- package/android/src/main/dysJniLibs/debug/arm64-v8a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibs/debug/armeabi-v7a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibs/debug/x86/librn_dys.so +0 -0
- package/android/src/main/dysJniLibs/debug/x86_64/librn_dys.so +0 -0
- package/android/src/main/dysJniLibs/release/arm64-v8a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibs/release/armeabi-v7a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibs/release/x86/librn_dys.so +0 -0
- package/android/src/main/dysJniLibs/release/x86_64/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor81/debug/arm64-v8a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor81/debug/armeabi-v7a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor81/debug/x86/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor81/debug/x86_64/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor81/release/arm64-v8a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor81/release/armeabi-v7a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor81/release/x86/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor81/release/x86_64/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor82/debug/arm64-v8a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor82/debug/armeabi-v7a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor82/debug/x86/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor82/debug/x86_64/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor82/release/arm64-v8a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor82/release/armeabi-v7a/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor82/release/x86/librn_dys.so +0 -0
- package/android/src/main/dysJniLibsFor82/release/x86_64/librn_dys.so +0 -0
- package/android/src/main/java/com/dynamsoft/reactnativelib/CVRModule.kt +17 -2
- package/android/src/main/java/com/dynamsoft/reactnativelib/CameraViewManager.kt +13 -1
- package/android/src/main/java/com/dynamsoft/reactnativelib/ImageEditorViewManager.kt +1 -1
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/Basic.kt +1 -1
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForCore.kt +1 -2
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForCvr.kt +1 -5
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDBR.kt +74 -3
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDCE.kt +33 -13
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDCP.kt +1 -1
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDDN.kt +1 -3
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ForDLR.kt +6 -3
- package/android/src/main/java/com/dynamsoft/reactnativelib/{utils → basicutils}/ImageUtil.kt +2 -2
- package/android/src/main/java/com/dynamsoft/reactnativelib/cvr/CaptureVisionRouterModuleImpl.kt +25 -5
- package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraEnhancerModuleImpl.kt +6 -3
- package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraViewManagerImpl.kt +15 -3
- package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewManagerImpl.kt +1 -5
- package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewModuleImpl.kt +2 -4
- package/android/src/main/java/com/dynamsoft/reactnativelib/dce/RNCameraView.kt +1 -2
- package/android/src/main/java/com/dynamsoft/reactnativelib/utility/ImageManagerModuleImpl.kt +75 -3
- package/android/src/main/java/com/dynamsoft/reactnativelib/utility/MultiCrossFilterModuleImpl.kt +2 -2
- package/dynamsoft-capture-vision-react-native.podspec +1 -1
- package/ios/CPP/ImageDataHostObject.cpp +1 -1
- package/ios/CPP/ImageDataHostObject.hpp +1 -1
- package/ios/CPP/RNDynamsoft+JSI.h +3 -0
- package/ios/CPP/RNDynamsoft+JSI.mm +119 -2
- package/ios/CPP/RNDynamsoft+Json.m +114 -14
- package/ios/CPP/YeetJSIUtils.h +2 -0
- package/ios/CPP/YeetJSIUtils.mm +15 -0
- package/ios/RNDynamsoftCameraView.h +4 -0
- package/ios/RNDynamsoftCameraView.m +25 -0
- package/ios/RNDynamsoftCameraViewManager.m +8 -2
- package/ios/RNDynamsoftCaptureVisionRouter.mm +149 -92
- package/ios/RNDynamsoftImageEditorViewManager.mm +71 -40
- package/ios/RNDynamsoftImageManager.mm +295 -81
- package/ios/RNDynamsoftImageSourceAdapter.mm +100 -65
- package/package.json +1 -1
- package/src/core/EnumGrayscaleEnhancementMode.tsx +1 -0
- package/src/core/EnumGrayscaleTransformationMode.tsx +1 -0
- package/src/core/EnumImageFileFormat.tsx +6 -0
- package/src/core/index.tsx +1 -0
- package/src/cvr/CaptureVisionRouter.tsx +33 -5
- package/src/dbr/BarcodeDetails.tsx +51 -0
- package/src/dbr/BarcodeResultItem.tsx +11 -0
- package/src/dbr/EnumBarcodeFormat.tsx +2 -0
- package/src/dbr/EnumDeblurMode.tsx +1 -0
- package/src/dbr/EnumLocalizationMode.tsx +1 -0
- package/src/dbr/EnumQRCodeErrorCorrectionLevel.tsx +6 -0
- package/src/dbr/index.tsx +2 -0
- package/src/dce/CameraEnhancer.tsx +14 -6
- package/src/dce/CameraView.tsx +10 -2
- package/src/dce/DynamsoftCameraViewNativeComponent.ts +25 -0
- package/src/dce/EnumCameraPosition.tsx +13 -1
- package/src/dce/EnumEnhancedFeatures.tsx +3 -4
- package/src/dce/ImageEditorView.tsx +1 -1
- package/src/dlr/CharacterResult.tsx +4 -1
- package/src/dlr/SimplifiedLabelRecognizerSettings.tsx +2 -0
- package/src/dlr/TextLineResultItem.tsx +5 -0
- package/src/utility/EnumFilterType.tsx +5 -0
- package/src/utility/ImageManager.tsx +227 -9
- 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:
|
|
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
|
|
package/android/build.gradle
CHANGED
|
@@ -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 "
|
|
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
|
}
|
|
@@ -68,7 +70,7 @@ android {
|
|
|
68
70
|
versionCode 1
|
|
69
71
|
versionName "1.0"
|
|
70
72
|
|
|
71
|
-
if(versionNumber < 79) {
|
|
73
|
+
if (versionNumber < 79) {
|
|
72
74
|
externalNativeBuild {
|
|
73
75
|
cmake {
|
|
74
76
|
arguments "-DANDROID_STL=c++_shared"
|
|
@@ -80,7 +82,7 @@ android {
|
|
|
80
82
|
abortOnError false
|
|
81
83
|
}
|
|
82
84
|
|
|
83
|
-
if(versionNumber < 79) {
|
|
85
|
+
if (versionNumber < 79) {
|
|
84
86
|
buildFeatures {
|
|
85
87
|
prefab true
|
|
86
88
|
buildConfig true
|
|
@@ -95,14 +97,26 @@ android {
|
|
|
95
97
|
release {
|
|
96
98
|
sourceSets {
|
|
97
99
|
main {
|
|
98
|
-
|
|
100
|
+
if (versionNumber >= 82) {
|
|
101
|
+
jniLibs.srcDirs = ["src/main/dysJniLibsFor82/release"]
|
|
102
|
+
} else if (versionNumber >= 81) {
|
|
103
|
+
jniLibs.srcDirs = ["src/main/dysJniLibsFor81/release"]
|
|
104
|
+
} else {
|
|
105
|
+
jniLibs.srcDirs = ["src/main/dysJniLibs/release"]
|
|
106
|
+
}
|
|
99
107
|
}
|
|
100
108
|
}
|
|
101
109
|
}
|
|
102
110
|
debug {
|
|
103
111
|
sourceSets {
|
|
104
112
|
main {
|
|
105
|
-
|
|
113
|
+
if (versionNumber >= 82) {
|
|
114
|
+
jniLibs.srcDirs = ["src/main/dysJniLibsFor82/debug"]
|
|
115
|
+
} else if (versionNumber >= 81) {
|
|
116
|
+
jniLibs.srcDirs = ["src/main/dysJniLibsFor81/debug"]
|
|
117
|
+
} else {
|
|
118
|
+
jniLibs.srcDirs = ["src/main/dysJniLibs/debug"]
|
|
119
|
+
}
|
|
106
120
|
}
|
|
107
121
|
}
|
|
108
122
|
}
|
|
@@ -130,10 +144,6 @@ rootProject.allprojects {
|
|
|
130
144
|
url "https://download2.dynamsoft.com/maven/aar"
|
|
131
145
|
}
|
|
132
146
|
}
|
|
133
|
-
|
|
134
|
-
configurations.all {
|
|
135
|
-
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
|
|
136
|
-
}
|
|
137
147
|
}
|
|
138
148
|
|
|
139
149
|
|
|
@@ -149,5 +159,5 @@ dependencies {
|
|
|
149
159
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
|
|
150
160
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
|
|
151
161
|
|
|
152
|
-
implementation "com.dynamsoft:capturevisionbundle:3.
|
|
162
|
+
implementation "com.dynamsoft:capturevisionbundle:3.2.3000"
|
|
153
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.
|
|
17
|
+
kotlinVersion=1.8.22
|
|
18
18
|
minSdk=21
|
|
19
|
-
targetSdk=
|
|
20
|
-
compileSdk=
|
|
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/
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
22
|
-
|
|
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
|
-
|
|
25
|
-
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
|
|
31
|
-
|
|
191
|
+
jmethodID getCodewords = env->GetMethodID(clsPDF417Details, "getCodewords", "()[I");
|
|
192
|
+
jintArray jCodewords = (jintArray) env->CallObjectMethod(jDetails, getCodewords);
|
|
32
193
|
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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, "
|
|
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(
|
|
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
|