dynamsoft-capture-vision-react-native 3.4.1300 → 3.4.3010

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/LICENSE +4 -4
  2. package/README.md +62 -62
  3. package/android/README.md +14 -14
  4. package/android/build.gradle +167 -163
  5. package/android/gradle.properties +20 -20
  6. package/android/settings.gradle +5 -5
  7. package/android/src/main/AndroidManifest.xml +6 -6
  8. package/android/src/main/AndroidManifest_noPackage.xml +5 -5
  9. package/android/src/main/cpp/CMakeLists.txt +21 -21
  10. package/android/src/main/cpp/ImgHO.cpp +94 -94
  11. package/android/src/main/cpp/ImgHO.h +34 -34
  12. package/android/src/main/cpp/JsiCore.cpp +296 -296
  13. package/android/src/main/cpp/JsiCore.h +51 -51
  14. package/android/src/main/cpp/JsiCvr.cpp +332 -332
  15. package/android/src/main/cpp/JsiCvr.h +54 -54
  16. package/android/src/main/cpp/JsiDbr.cpp +283 -283
  17. package/android/src/main/cpp/JsiDbr.h +26 -26
  18. package/android/src/main/cpp/JsiDce.cpp +59 -59
  19. package/android/src/main/cpp/JsiDce.h +17 -17
  20. package/android/src/main/cpp/JsiDcp.cpp +51 -51
  21. package/android/src/main/cpp/JsiDcp.h +31 -31
  22. package/android/src/main/cpp/JsiDdn.cpp +50 -50
  23. package/android/src/main/cpp/JsiDdn.h +28 -28
  24. package/android/src/main/cpp/JsiDlr.cpp +60 -60
  25. package/android/src/main/cpp/JsiDlr.h +26 -26
  26. package/android/src/main/cpp/JsiUtility.cpp +604 -604
  27. package/android/src/main/cpp/JsiUtility.h +26 -26
  28. package/android/src/main/cpp/RawBuffer.cpp +23 -23
  29. package/android/src/main/cpp/RawBuffer.h +24 -24
  30. package/android/src/main/cpp/android_log.h +14 -14
  31. package/android/src/main/dysJniLibsFor86/debug/arm64-v8a/librn_dys.so +0 -0
  32. package/android/src/main/dysJniLibsFor86/debug/armeabi-v7a/librn_dys.so +0 -0
  33. package/android/src/main/dysJniLibsFor86/debug/x86/librn_dys.so +0 -0
  34. package/android/src/main/dysJniLibsFor86/debug/x86_64/librn_dys.so +0 -0
  35. package/android/src/main/dysJniLibsFor86/release/arm64-v8a/librn_dys.so +0 -0
  36. package/android/src/main/dysJniLibsFor86/release/armeabi-v7a/librn_dys.so +0 -0
  37. package/android/src/main/dysJniLibsFor86/release/x86/librn_dys.so +0 -0
  38. package/android/src/main/dysJniLibsFor86/release/x86_64/librn_dys.so +0 -0
  39. package/android/src/main/java/com/dynamsoft/reactnativelib/CVRModule.kt +137 -137
  40. package/android/src/main/java/com/dynamsoft/reactnativelib/CameraViewManager.kt +62 -62
  41. package/android/src/main/java/com/dynamsoft/reactnativelib/DCEModule.kt +125 -125
  42. package/android/src/main/java/com/dynamsoft/reactnativelib/DynamsoftBaseModule.kt +8 -8
  43. package/android/src/main/java/com/dynamsoft/reactnativelib/ISAModule.kt +73 -73
  44. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageEditorViewManager.kt +14 -14
  45. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageEditorViewModule.kt +35 -35
  46. package/android/src/main/java/com/dynamsoft/reactnativelib/ImageManagerModule.kt +15 -15
  47. package/android/src/main/java/com/dynamsoft/reactnativelib/LicenseModule.kt +29 -29
  48. package/android/src/main/java/com/dynamsoft/reactnativelib/MultiCrossFilterModule.kt +83 -83
  49. package/android/src/main/java/com/dynamsoft/reactnativelib/ReactNativeDcvPackage.kt +32 -32
  50. package/android/src/main/java/com/dynamsoft/reactnativelib/VersionsModule.kt +41 -41
  51. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/Basic.kt +44 -44
  52. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForCore.kt +50 -50
  53. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForCvr.kt +129 -129
  54. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDBR.kt +157 -157
  55. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDCE.kt +110 -110
  56. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDCP.kt +49 -49
  57. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDDN.kt +85 -85
  58. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ForDLR.kt +72 -72
  59. package/android/src/main/java/com/dynamsoft/reactnativelib/basicutils/ImageUtil.kt +58 -58
  60. package/android/src/main/java/com/dynamsoft/reactnativelib/core/ImageSourceAdapterModuleImpl.kt +120 -120
  61. package/android/src/main/java/com/dynamsoft/reactnativelib/cvr/CaptureVisionRouterModuleImpl.kt +306 -306
  62. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraEnhancerModuleImpl.kt +247 -247
  63. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraLifeCycleOwner.java +14 -14
  64. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/CameraViewManagerImpl.kt +77 -77
  65. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewManagerImpl.kt +15 -15
  66. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/ImageEditorViewModuleImpl.kt +110 -110
  67. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/RNCameraView.kt +20 -20
  68. package/android/src/main/java/com/dynamsoft/reactnativelib/dce/RNImageEditorView.kt +19 -19
  69. package/android/src/main/java/com/dynamsoft/reactnativelib/license/LicenseModuleImpl.kt +39 -39
  70. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/ImageManagerModuleImpl.kt +120 -120
  71. package/android/src/main/java/com/dynamsoft/reactnativelib/utility/MultiCrossFilterModuleImpl.kt +111 -111
  72. package/app.plugin.js +21 -21
  73. package/dynamsoft-capture-vision-react-native.podspec +24 -24
  74. package/ios/CPP/DSImageData+HostObject.h +18 -18
  75. package/ios/CPP/DSImageData+HostObject.mm +38 -38
  76. package/ios/CPP/ImageDataHostObject.cpp +87 -87
  77. package/ios/CPP/ImageDataHostObject.hpp +35 -35
  78. package/ios/CPP/MutableRawBuffer.cpp +23 -23
  79. package/ios/CPP/MutableRawBuffer.hpp +23 -23
  80. package/ios/CPP/RNDynamsoft+JSI.h +22 -22
  81. package/ios/CPP/RNDynamsoft+JSI.mm +303 -303
  82. package/ios/CPP/RNDynamsoft+Json.h +93 -93
  83. package/ios/CPP/RNDynamsoft+Json.m +733 -733
  84. package/ios/CPP/YeetJSIUtils.h +56 -56
  85. package/ios/CPP/YeetJSIUtils.mm +208 -208
  86. package/ios/RNDynamsoftCameraView.h +31 -31
  87. package/ios/RNDynamsoftCameraView.m +108 -108
  88. package/ios/RNDynamsoftCameraViewManager.h +14 -14
  89. package/ios/RNDynamsoftCameraViewManager.m +195 -195
  90. package/ios/RNDynamsoftCaptureVisionRouter.h +18 -18
  91. package/ios/RNDynamsoftCaptureVisionRouter.mm +532 -532
  92. package/ios/RNDynamsoftImageEditorView.h +17 -17
  93. package/ios/RNDynamsoftImageEditorView.m +25 -25
  94. package/ios/RNDynamsoftImageEditorViewManager.h +14 -14
  95. package/ios/RNDynamsoftImageEditorViewManager.mm +183 -183
  96. package/ios/RNDynamsoftImageManager.h +14 -14
  97. package/ios/RNDynamsoftImageManager.mm +369 -369
  98. package/ios/RNDynamsoftImageSourceAdapter.h +19 -19
  99. package/ios/RNDynamsoftImageSourceAdapter.mm +255 -255
  100. package/ios/RNDynamsoftLicense.h +14 -14
  101. package/ios/RNDynamsoftLicense.m +62 -62
  102. package/ios/RNDynamsoftMultiCrossFilter.h +14 -14
  103. package/ios/RNDynamsoftMultiCrossFilter.m +145 -145
  104. package/ios/RNDynamsoftVersions.h +13 -13
  105. package/ios/RNDynamsoftVersions.m +27 -27
  106. package/package.json +48 -48
  107. package/src/NativeDynamsoftVersionsModule.tsx +20 -20
  108. package/src/VersionsModule.tsx +7 -7
  109. package/src/core/CapturedResultBase.tsx +18 -18
  110. package/src/core/CapturedResultItem.tsx +23 -23
  111. package/src/core/CoreModule.tsx +9 -9
  112. package/src/core/DSRect.tsx +29 -29
  113. package/src/core/EnumCaptureResultItemType.tsx +52 -52
  114. package/src/core/EnumColourChannelUsageType.tsx +26 -26
  115. package/src/core/EnumCrossVerificationStatus.tsx +46 -46
  116. package/src/core/EnumGrayscaleEnhancementMode.tsx +46 -46
  117. package/src/core/EnumGrayscaleTransformationMode.tsx +35 -35
  118. package/src/core/EnumImageFileFormat.tsx +6 -6
  119. package/src/core/EnumPixelFormat.tsx +53 -53
  120. package/src/core/ImageData.tsx +87 -87
  121. package/src/core/ImageSourceAdapter.tsx +160 -160
  122. package/src/core/NativeDynamsoftImageSourceAdapterModule.tsx +29 -29
  123. package/src/core/Point.tsx +13 -13
  124. package/src/core/Quadrilateral.tsx +12 -12
  125. package/src/core/index.tsx +18 -18
  126. package/src/cvr/CaptureVisionRouter.tsx +683 -683
  127. package/src/cvr/CaptureVisionRouterModule.tsx +9 -9
  128. package/src/cvr/CapturedResult.tsx +123 -123
  129. package/src/cvr/CapturedResultFilter.tsx +13 -13
  130. package/src/cvr/CapturedResultReceiver.tsx +71 -71
  131. package/src/cvr/EnumPresetTemplate.tsx +81 -81
  132. package/src/cvr/NativeDynamsoftCaptureVisionRouterModule.tsx +25 -25
  133. package/src/cvr/SimplifiedCaptureVisionSettings.tsx +61 -61
  134. package/src/cvr/index.tsx +11 -11
  135. package/src/dbr/BarcodeDetails.tsx +51 -51
  136. package/src/dbr/BarcodeReaderModule.tsx +9 -9
  137. package/src/dbr/BarcodeResultItem.tsx +65 -65
  138. package/src/dbr/DecodedBarcodesResult.tsx +14 -14
  139. package/src/dbr/ECISegment.tsx +23 -23
  140. package/src/dbr/EnumBarcodeFormat.tsx +112 -112
  141. package/src/dbr/EnumDeblurMode.tsx +29 -29
  142. package/src/dbr/EnumLocalizationMode.tsx +27 -27
  143. package/src/dbr/EnumQRCodeErrorCorrectionLevel.tsx +6 -6
  144. package/src/dbr/SimplifiedBarcodeReaderSettings.tsx +80 -80
  145. package/src/dbr/index.tsx +9 -9
  146. package/src/dce/CameraEnhancer.tsx +254 -254
  147. package/src/dce/CameraEnhancerModule.tsx +9 -9
  148. package/src/dce/CameraView.tsx +100 -100
  149. package/src/dce/DynamsoftCameraViewNativeComponent.ts +96 -96
  150. package/src/dce/DynamsoftImageEditorViewNativeComponent.ts +9 -9
  151. package/src/dce/EnumCameraPosition.tsx +25 -25
  152. package/src/dce/EnumDrawingLayerId.tsx +17 -17
  153. package/src/dce/EnumEnhancedFeatures.tsx +24 -24
  154. package/src/dce/EnumFocusMode.tsx +6 -6
  155. package/src/dce/EnumResolution.tsx +8 -8
  156. package/src/dce/EnumTorchState.tsx +10 -10
  157. package/src/dce/FeedBack.tsx +28 -28
  158. package/src/dce/ImageEditorView.tsx +131 -131
  159. package/src/dce/NativeDynamsoftCameraViewModule.tsx +47 -47
  160. package/src/dce/NativeDynamsoftImageEditorViewModule.ts +9 -9
  161. package/src/dce/index.tsx +13 -13
  162. package/src/dcp/CodeParserDedicatorModule.tsx +9 -9
  163. package/src/dcp/CodeParserModule.tsx +9 -9
  164. package/src/dcp/EnumMappingStatus.tsx +14 -14
  165. package/src/dcp/EnumValidationStatus.tsx +14 -14
  166. package/src/dcp/ParsedResult.tsx +14 -14
  167. package/src/dcp/ParsedResultItem.tsx +50 -50
  168. package/src/dcp/index.tsx +8 -8
  169. package/src/ddn/DeskewedImageResultItem.tsx +40 -40
  170. package/src/ddn/DetectedQuadResultItem.tsx +31 -31
  171. package/src/ddn/DocumentNormalizerModule.tsx +9 -9
  172. package/src/ddn/EnhancedImageResultItem.tsx +20 -20
  173. package/src/ddn/EnumImageColourMode.tsx +14 -14
  174. package/src/ddn/ProcessedDocumentResult.tsx +27 -27
  175. package/src/ddn/SimplifiedDocumentNormalizerSettings.tsx +65 -65
  176. package/src/ddn/index.tsx +11 -11
  177. package/src/dip/ImageProcessingModule.tsx +9 -9
  178. package/src/dip/index.tsx +1 -1
  179. package/src/dlr/CharacterResult.tsx +28 -28
  180. package/src/dlr/LabelRecognizerModule.tsx +9 -9
  181. package/src/dlr/RecognizedTextLinesResult.tsx +19 -19
  182. package/src/dlr/SimplifiedLabelRecognizerSettings.tsx +33 -33
  183. package/src/dlr/TextLineResultItem.tsx +41 -41
  184. package/src/dlr/index.tsx +8 -8
  185. package/src/index.tsx +13 -13
  186. package/src/license/LicenseManager.tsx +49 -49
  187. package/src/license/LicenseModule.tsx +9 -9
  188. package/src/license/NativeDynamsoftLicenseModule.tsx +7 -7
  189. package/src/license/index.tsx +7 -7
  190. package/src/utility/CrossVerificationCriteria.tsx +11 -11
  191. package/src/utility/EnumFilterType.tsx +5 -5
  192. package/src/utility/ImageManager.tsx +348 -348
  193. package/src/utility/MultiFrameResultCrossFilter.tsx +183 -183
  194. package/src/utility/NativeDynamsoftImageManagerModule.tsx +7 -7
  195. package/src/utility/NativeDynamsoftMultiCrossFilterModule.tsx +18 -18
  196. package/src/utility/UtilityModule.tsx +9 -9
  197. package/src/utility/index.tsx +4 -4
  198. package/android/.gitignore +0 -4
@@ -1,283 +1,283 @@
1
- //
2
- // Created by Allen on 24/08/28.
3
- //
4
-
5
- #include "JsiDbr.h"
6
-
7
- namespace jsiConversion::dbr {
8
-
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(128);
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
-
37
- jmethodID getText = env->GetMethodID(clsItem, "getText", "()Ljava/lang/String;");
38
- jstring jtext = (jstring) env->CallObjectMethod(jItem, getText);
39
- if (jtext != nullptr) {
40
- const jchar *ptext = env->GetStringChars(jtext, nullptr);
41
- if (ptext != nullptr) {
42
- jsize textLength = env->GetStringLength(jtext);
43
- jsItem.setProperty(rt, "text", facebook::jsi::String::createFromUtf16(rt, reinterpret_cast<const char16_t *>(ptext), static_cast<size_t>(textLength)));
44
- env->ReleaseStringChars(jtext, ptext);
45
- } else {
46
- jsItem.setProperty(rt, "text", "");
47
- }
48
- } else {
49
- jsItem.setProperty(rt, "text", "");
50
- }
51
-
52
- jmethodID getLocation = env->GetMethodID(clsItem, "getLocation", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
53
- Object jsQuad(rt);
54
- jsiConversion::core::jQuadToJsObject(rt, env, env->CallObjectMethod(jItem, getLocation), jsQuad);
55
- jsItem.setProperty(rt, "location", jsQuad);
56
-
57
- jmethodID getConfidence = env->GetMethodID(clsItem, "getConfidence", "()I");
58
- jsItem.setProperty(rt, "confidence", env->CallIntMethod(jItem, getConfidence));
59
-
60
- jmethodID getAngle = env->GetMethodID(clsItem, "getAngle", "()I");
61
- jsItem.setProperty(rt, "angle", env->CallIntMethod(jItem, getAngle));
62
-
63
- jmethodID getModuleSize = env->GetMethodID(clsItem, "getModuleSize", "()I");
64
- jsItem.setProperty(rt, "moduleSize", env->CallIntMethod(jItem, getModuleSize));
65
-
66
- jmethodID isMirrored = env->GetMethodID(clsItem, "isMirrored", "()Z");
67
- jsItem.setProperty(rt, "isMirrored", (bool) env->CallBooleanMethod(jItem, isMirrored));
68
-
69
- jmethodID isDPM = env->GetMethodID(clsItem, "isDPM", "()Z");
70
- jsItem.setProperty(rt, "isDPM", (bool) env->CallBooleanMethod(jItem, isDPM));
71
-
72
- jmethodID getBytes = env->GetMethodID(clsItem, "getBytes", "()[B");
73
- jbyteArray jBytes = (jbyteArray) env->CallObjectMethod(jItem, getBytes);
74
- if (jBytes != nullptr) {
75
- jclass clsBase64 = env->FindClass("android/util/Base64");
76
- jmethodID encodeMethod = env->GetStaticMethodID(clsBase64, "encodeToString", "([BI)Ljava/lang/String;");
77
- jstring base64Str = (jstring) env->CallStaticObjectMethod(clsBase64, encodeMethod, jBytes, 2);
78
- if (base64Str) {
79
- const char *b64 = env->GetStringUTFChars(base64Str, nullptr);
80
- if (b64) {
81
- jsItem.setProperty(rt, "bytes", String::createFromUtf8(rt, b64));
82
- env->ReleaseStringUTFChars(base64Str, b64);
83
- }
84
- env->DeleteLocalRef(base64Str);
85
- }
86
- env->DeleteLocalRef(clsBase64);
87
- }
88
-
89
- jmethodID getECISegments = env->GetMethodID(clsItem, "getECISegments", "()[Lcom/dynamsoft/dbr/ECISegment;");
90
- jobjectArray jEciSegments = (jobjectArray) env->CallObjectMethod(jItem, getECISegments);
91
- if (jEciSegments != nullptr) {
92
- int eciSegments_len = env->GetArrayLength(jEciSegments);
93
- Array jsEciSegments(rt, eciSegments_len);
94
- jclass clsEciSegment = env->FindClass("com/dynamsoft/dbr/ECISegment");
95
- jfieldID fi_eciValue = env->GetFieldID(clsEciSegment, "eciValue", "I");
96
- jfieldID fi_startIndex = env->GetFieldID(clsEciSegment, "startIndex", "I");
97
- jfieldID fi_length = env->GetFieldID(clsEciSegment, "length", "I");
98
- jfieldID fi_charsetEncoding = env->GetFieldID(clsEciSegment, "charsetEncoding", "Ljava/lang/String;");
99
- for (int i = 0; i < eciSegments_len; ++i) {
100
- Object jsEciSegment(rt);
101
- jobject jEciSegment = env->GetObjectArrayElement(jEciSegments, i);
102
- jsEciSegment.setProperty(rt, "eciValue", env->GetIntField(jEciSegment, fi_eciValue));
103
- jsEciSegment.setProperty(rt, "startIndex", env->GetIntField(jEciSegment, fi_startIndex));
104
- jsEciSegment.setProperty(rt, "length", env->GetIntField(jEciSegment, fi_length));
105
- auto jCharsetEncoding = (jstring) env->GetObjectField(jEciSegment, fi_charsetEncoding);
106
- auto pCharsetEncoding = jCharsetEncoding ? env->GetStringUTFChars(jCharsetEncoding, nullptr) : "";
107
- jsEciSegment.setProperty(rt, "charsetEncoding", pCharsetEncoding);
108
- if (jCharsetEncoding) {
109
- env->ReleaseStringUTFChars(jCharsetEncoding, pCharsetEncoding);
110
- env->DeleteLocalRef(jCharsetEncoding);
111
- }
112
- jsEciSegments.setValueAtIndex(rt, i, std::move(jsEciSegment));
113
- env->DeleteLocalRef(jEciSegment);
114
- }
115
- jsItem.setProperty(rt, "eciSegments", jsEciSegments);
116
- }
117
-
118
- jmethodID getDetails = env->GetMethodID(clsItem, "getDetails", "()Lcom/dynamsoft/dbr/BarcodeDetails;");
119
- jobject jDetails = env->CallObjectMethod(jItem, getDetails);
120
- if (jDetails != nullptr) {
121
- jclass clsOneDCodeDetails = env->FindClass("com/dynamsoft/dbr/OneDCodeDetails");
122
- jclass clsDataMatrixDetails = env->FindClass("com/dynamsoft/dbr/DataMatrixDetails");
123
- jclass clsAztecDetails = env->FindClass("com/dynamsoft/dbr/AztecDetails");
124
- jclass clsPDF417Details = env->FindClass("com/dynamsoft/dbr/PDF417Details");
125
- jclass clsQRCodeDetails = env->FindClass("com/dynamsoft/dbr/QRCodeDetails");
126
- if (env->IsInstanceOf(jDetails, clsOneDCodeDetails)) {
127
- Object jsOneDCodeDetails(rt);
128
-
129
- jmethodID getStartPatternRange = env->GetMethodID(clsOneDCodeDetails, "getStartPatternRange", "()Landroid/util/Range;");
130
- jobject jStartPatternRange = env->CallObjectMethod(jDetails, getStartPatternRange);
131
- float startPatternRange_lower = 0, startPatternRange_upper = 0;
132
- getUpperAndLowerFromJRange(env, jStartPatternRange, startPatternRange_lower, startPatternRange_upper);
133
- jsOneDCodeDetails.setProperty(rt, "startPatternRange_lower", startPatternRange_lower);
134
- jsOneDCodeDetails.setProperty(rt, "startPatternRange_upper", startPatternRange_upper);
135
-
136
- jmethodID getMiddlePatternRange = env->GetMethodID(clsOneDCodeDetails, "getMiddlePatternRange", "()Landroid/util/Range;");
137
- jobject jMiddlePatternRange = env->CallObjectMethod(jDetails, getMiddlePatternRange);
138
- float middlePatternRange_lower = 0, middlePatternRange_upper = 0;
139
- getUpperAndLowerFromJRange(env, jMiddlePatternRange, middlePatternRange_lower, middlePatternRange_upper);
140
- jsOneDCodeDetails.setProperty(rt, "middlePatternRange_lower", middlePatternRange_lower);
141
- jsOneDCodeDetails.setProperty(rt, "middlePatternRange_upper", middlePatternRange_upper);
142
-
143
- jmethodID getEndPatternRange = env->GetMethodID(clsOneDCodeDetails, "getEndPatternRange", "()Landroid/util/Range;");
144
- jobject jEndPatternRange = env->CallObjectMethod(jDetails, getEndPatternRange);
145
- float endPatternRange_lower = 0, endPatternRange_upper = 0;
146
- getUpperAndLowerFromJRange(env, jEndPatternRange, endPatternRange_lower, endPatternRange_upper);
147
- jsOneDCodeDetails.setProperty(rt, "endPatternRange_lower", endPatternRange_lower);
148
- jsOneDCodeDetails.setProperty(rt, "endPatternRange_upper", endPatternRange_upper);
149
-
150
-
151
- jmethodID getStartCharsBytes = env->GetMethodID(clsOneDCodeDetails, "getStartCharsBytes", "()[B");
152
- jobject jStartCharsBytes = env->CallObjectMethod(jDetails, getStartCharsBytes);
153
- if (jStartCharsBytes != nullptr) {
154
- int startCharsBytes_len = env->GetArrayLength((jbyteArray) jStartCharsBytes);
155
- Array jsStartCharsBytes(rt, startCharsBytes_len);
156
- jbyte *jStartCharsByte = env->GetByteArrayElements((jbyteArray) jStartCharsBytes, nullptr);
157
- for (int i = 0; i < startCharsBytes_len; i++) {
158
- jsStartCharsBytes.setValueAtIndex(rt, i, Value((unsigned char) jStartCharsByte[i]));
159
- }
160
- env->ReleaseByteArrayElements((jbyteArray) jStartCharsBytes, jStartCharsByte, 0);
161
- jsOneDCodeDetails.setProperty(rt, "startCharsBytes", jsStartCharsBytes);
162
- }
163
-
164
- jmethodID getStopCharsBytes = env->GetMethodID(clsOneDCodeDetails, "getStopCharsBytes", "()[B");
165
- jobject jStopCharsBytes = env->CallObjectMethod(jDetails, getStopCharsBytes);
166
- if (jStopCharsBytes != nullptr) {
167
- int stopCharsBytes_len = env->GetArrayLength((jbyteArray) jStopCharsBytes);
168
- Array jsStopCharsBytes(rt, stopCharsBytes_len);
169
- jbyte *jStopCharsByte = env->GetByteArrayElements((jbyteArray) jStopCharsBytes, nullptr);
170
- for (int i = 0; i < stopCharsBytes_len; i++) {
171
- jsStopCharsBytes.setValueAtIndex(rt, i, Value((unsigned char) jStopCharsByte[i]));
172
- }
173
- env->ReleaseByteArrayElements((jbyteArray) jStopCharsBytes, jStopCharsByte, 0);
174
- jsOneDCodeDetails.setProperty(rt, "stopCharsBytes", jsStopCharsBytes);
175
- }
176
-
177
- jmethodID getCheckDigitBytes = env->GetMethodID(clsOneDCodeDetails, "getCheckDigitBytes", "()[B");
178
- jobject jCheckDigitBytes = env->CallObjectMethod(jDetails, getCheckDigitBytes);
179
- if (jCheckDigitBytes != nullptr) {
180
- int checkDigitBytes_len = env->GetArrayLength((jbyteArray) jCheckDigitBytes);
181
- Array jsCheckDigitBytes(rt, checkDigitBytes_len);
182
- jbyte *jCheckDigitByte = env->GetByteArrayElements((jbyteArray) jCheckDigitBytes, nullptr);
183
- for (int i = 0; i < checkDigitBytes_len; i++) {
184
- jsCheckDigitBytes.setValueAtIndex(rt, i, Value((unsigned char) jCheckDigitByte[i]));
185
- }
186
- env->ReleaseByteArrayElements((jbyteArray) jCheckDigitBytes, jCheckDigitByte, 0);
187
- jsOneDCodeDetails.setProperty(rt, "checkDigitBytes", jsCheckDigitBytes);
188
- }
189
-
190
- jsItem.setProperty(rt, "oneDCodeDetails", jsOneDCodeDetails);
191
- } else if (env->IsInstanceOf(jDetails, clsQRCodeDetails)) {
192
- Object jsQRCodeDetails(rt);
193
- jmethodID getRows = env->GetMethodID(clsQRCodeDetails, "getRows", "()I");
194
- jsQRCodeDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
195
- jmethodID getColumns = env->GetMethodID(clsQRCodeDetails, "getColumns", "()I");
196
- jsQRCodeDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
197
- jmethodID getErrorCorrectionLevel = env->GetMethodID(clsQRCodeDetails, "getErrorCorrectionLevel", "()I");
198
- jsQRCodeDetails.setProperty(rt, "errorCorrectionLevel", env->CallIntMethod(jDetails, getErrorCorrectionLevel));
199
- jmethodID getVersion = env->GetMethodID(clsQRCodeDetails, "getVersion", "()I");
200
- jsQRCodeDetails.setProperty(rt, "version", env->CallIntMethod(jDetails, getVersion));
201
- jmethodID getModel = env->GetMethodID(clsQRCodeDetails, "getModel", "()I");
202
- jsQRCodeDetails.setProperty(rt, "model", env->CallIntMethod(jDetails, getModel));
203
- jmethodID getMode = env->GetMethodID(clsQRCodeDetails, "getMode", "()I");
204
- jsQRCodeDetails.setProperty(rt, "mode", env->CallIntMethod(jDetails, getMode));
205
- jmethodID getPage = env->GetMethodID(clsQRCodeDetails, "getPage", "()I");
206
- jsQRCodeDetails.setProperty(rt, "page", env->CallIntMethod(jDetails, getPage));
207
- jmethodID getTotalPage = env->GetMethodID(clsQRCodeDetails, "getTotalPage", "()I");
208
- jsQRCodeDetails.setProperty(rt, "totalPage", env->CallIntMethod(jDetails, getTotalPage));
209
- jmethodID getParityData = env->GetMethodID(clsQRCodeDetails, "getParityData", "()B");
210
- jsQRCodeDetails.setProperty(rt, "parityData", (int) env->CallByteMethod(jDetails, getParityData));
211
- jmethodID getDataMaskPattern = env->GetMethodID(clsQRCodeDetails, "getDataMaskPattern", "()I");
212
- jsQRCodeDetails.setProperty(rt, "dataMaskPattern", env->CallIntMethod(jDetails, getDataMaskPattern));
213
- jmethodID getCodewords = env->GetMethodID(clsQRCodeDetails, "getCodewords", "()[B");
214
- jbyteArray jCodewords = (jbyteArray) env->CallObjectMethod(jDetails, getCodewords);
215
-
216
- if (jCodewords != nullptr) {
217
- int codewords_len = env->GetArrayLength(jCodewords);
218
- Array jsCodewords(rt, codewords_len);
219
- jbyte *pCodewords = env->GetByteArrayElements(jCodewords, nullptr);
220
- for (int i = 0; i < codewords_len; i++) {
221
- jsCodewords.setValueAtIndex(rt, i, Value(pCodewords[i]));
222
- }
223
- env->ReleaseByteArrayElements(jCodewords, pCodewords, 0);
224
- jsQRCodeDetails.setProperty(rt, "codewords", jsCodewords);
225
- }
226
-
227
- jsItem.setProperty(rt, "qrCodeDetails", jsQRCodeDetails);
228
- } else if (env->IsInstanceOf(jDetails, clsAztecDetails)) {
229
- Object jsAztecDetails(rt);
230
- jmethodID getRows = env->GetMethodID(clsAztecDetails, "getRows", "()I");
231
- jsAztecDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
232
- jmethodID getColumns = env->GetMethodID(clsAztecDetails, "getColumns", "()I");
233
- jsAztecDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
234
- jmethodID getLayerNumber = env->GetMethodID(clsAztecDetails, "getLayerNumber", "()I");
235
- jsAztecDetails.setProperty(rt, "layerNumber", env->CallIntMethod(jDetails, getLayerNumber));
236
-
237
- jsItem.setProperty(rt, "aztecDetails", jsAztecDetails);
238
- } else if (env->IsInstanceOf(jDetails, clsPDF417Details)) {
239
- Object jsPDF417Details(rt);
240
- jmethodID getRows = env->GetMethodID(clsPDF417Details, "getRows", "()I");
241
- jsPDF417Details.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
242
- jmethodID getColumns = env->GetMethodID(clsPDF417Details, "getColumns", "()I");
243
- jsPDF417Details.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
244
- jmethodID getErrorCorrectionLevel = env->GetMethodID(clsPDF417Details, "getErrorCorrectionLevel", "()I");
245
- jsPDF417Details.setProperty(rt, "errorCorrectionLevel", env->CallIntMethod(jDetails, getErrorCorrectionLevel));
246
- jmethodID hasLeftRowIndicator = env->GetMethodID(clsPDF417Details, "hasLeftRowIndicator", "()Z");
247
- jsPDF417Details.setProperty(rt, "hasLeftRowIndicator", (bool) env->CallBooleanMethod(jDetails, hasLeftRowIndicator));
248
- jmethodID hasRightRowIndicator = env->GetMethodID(clsPDF417Details, "hasRightRowIndicator", "()Z");
249
- jsPDF417Details.setProperty(rt, "hasRightRowIndicator", (bool) env->CallBooleanMethod(jDetails, hasRightRowIndicator));
250
-
251
- jmethodID getCodewords = env->GetMethodID(clsPDF417Details, "getCodewords", "()[I");
252
- jintArray jCodewords = (jintArray) env->CallObjectMethod(jDetails, getCodewords);
253
-
254
- if (jCodewords != nullptr) {
255
- int codewords_len = env->GetArrayLength(jCodewords);
256
- Array jsCodewords(rt, codewords_len);
257
- jint *pCodewords = env->GetIntArrayElements(jCodewords, nullptr);
258
- for (int i = 0; i < codewords_len; i++) {
259
- jsCodewords.setValueAtIndex(rt, i, Value(pCodewords[i]));
260
- }
261
- env->ReleaseIntArrayElements(jCodewords, pCodewords, 0);
262
- jsPDF417Details.setProperty(rt, "codewords", jsCodewords);
263
- }
264
-
265
- jsItem.setProperty(rt, "pdf417Details", jsPDF417Details);
266
- } else if (env->IsInstanceOf(jDetails, clsDataMatrixDetails)) {
267
- Object jsDataMatrixDetails(rt);
268
- jmethodID getRows = env->GetMethodID(clsDataMatrixDetails, "getRows", "()I");
269
- jsDataMatrixDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
270
- jmethodID getColumns = env->GetMethodID(clsDataMatrixDetails, "getColumns", "()I");
271
- jsDataMatrixDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
272
- jmethodID getDataRegionRows = env->GetMethodID(clsDataMatrixDetails, "getDataRegionRows", "()I");
273
- jsDataMatrixDetails.setProperty(rt, "dataRegionRows", env->CallIntMethod(jDetails, getDataRegionRows));
274
- jmethodID getDataRegionColumns = env->GetMethodID(clsDataMatrixDetails, "getDataRegionColumns", "()I");
275
- jsDataMatrixDetails.setProperty(rt, "dataRegionColumns", env->CallIntMethod(jDetails, getDataRegionColumns));
276
- jmethodID getDataRegionNumber = env->GetMethodID(clsDataMatrixDetails, "getDataRegionNumber", "()I");
277
- jsDataMatrixDetails.setProperty(rt, "dataRegionNumber", env->CallIntMethod(jDetails, getDataRegionNumber));
278
- jsItem.setProperty(rt, "dataMatrixDetails", jsDataMatrixDetails);
279
- }
280
- }
281
- env->PopLocalFrame(nullptr);
282
- }
283
- }//namespace jsiConversion::dbr
1
+ //
2
+ // Created by Allen on 24/08/28.
3
+ //
4
+
5
+ #include "JsiDbr.h"
6
+
7
+ namespace jsiConversion::dbr {
8
+
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(128);
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
+
37
+ jmethodID getText = env->GetMethodID(clsItem, "getText", "()Ljava/lang/String;");
38
+ jstring jtext = (jstring) env->CallObjectMethod(jItem, getText);
39
+ if (jtext != nullptr) {
40
+ const jchar *ptext = env->GetStringChars(jtext, nullptr);
41
+ if (ptext != nullptr) {
42
+ jsize textLength = env->GetStringLength(jtext);
43
+ jsItem.setProperty(rt, "text", facebook::jsi::String::createFromUtf16(rt, reinterpret_cast<const char16_t *>(ptext), static_cast<size_t>(textLength)));
44
+ env->ReleaseStringChars(jtext, ptext);
45
+ } else {
46
+ jsItem.setProperty(rt, "text", "");
47
+ }
48
+ } else {
49
+ jsItem.setProperty(rt, "text", "");
50
+ }
51
+
52
+ jmethodID getLocation = env->GetMethodID(clsItem, "getLocation", "()Lcom/dynamsoft/core/basic_structures/Quadrilateral;");
53
+ Object jsQuad(rt);
54
+ jsiConversion::core::jQuadToJsObject(rt, env, env->CallObjectMethod(jItem, getLocation), jsQuad);
55
+ jsItem.setProperty(rt, "location", jsQuad);
56
+
57
+ jmethodID getConfidence = env->GetMethodID(clsItem, "getConfidence", "()I");
58
+ jsItem.setProperty(rt, "confidence", env->CallIntMethod(jItem, getConfidence));
59
+
60
+ jmethodID getAngle = env->GetMethodID(clsItem, "getAngle", "()I");
61
+ jsItem.setProperty(rt, "angle", env->CallIntMethod(jItem, getAngle));
62
+
63
+ jmethodID getModuleSize = env->GetMethodID(clsItem, "getModuleSize", "()I");
64
+ jsItem.setProperty(rt, "moduleSize", env->CallIntMethod(jItem, getModuleSize));
65
+
66
+ jmethodID isMirrored = env->GetMethodID(clsItem, "isMirrored", "()Z");
67
+ jsItem.setProperty(rt, "isMirrored", (bool) env->CallBooleanMethod(jItem, isMirrored));
68
+
69
+ jmethodID isDPM = env->GetMethodID(clsItem, "isDPM", "()Z");
70
+ jsItem.setProperty(rt, "isDPM", (bool) env->CallBooleanMethod(jItem, isDPM));
71
+
72
+ jmethodID getBytes = env->GetMethodID(clsItem, "getBytes", "()[B");
73
+ jbyteArray jBytes = (jbyteArray) env->CallObjectMethod(jItem, getBytes);
74
+ if (jBytes != nullptr) {
75
+ jclass clsBase64 = env->FindClass("android/util/Base64");
76
+ jmethodID encodeMethod = env->GetStaticMethodID(clsBase64, "encodeToString", "([BI)Ljava/lang/String;");
77
+ jstring base64Str = (jstring) env->CallStaticObjectMethod(clsBase64, encodeMethod, jBytes, 2);
78
+ if (base64Str) {
79
+ const char *b64 = env->GetStringUTFChars(base64Str, nullptr);
80
+ if (b64) {
81
+ jsItem.setProperty(rt, "bytes", String::createFromUtf8(rt, b64));
82
+ env->ReleaseStringUTFChars(base64Str, b64);
83
+ }
84
+ env->DeleteLocalRef(base64Str);
85
+ }
86
+ env->DeleteLocalRef(clsBase64);
87
+ }
88
+
89
+ jmethodID getECISegments = env->GetMethodID(clsItem, "getECISegments", "()[Lcom/dynamsoft/dbr/ECISegment;");
90
+ jobjectArray jEciSegments = (jobjectArray) env->CallObjectMethod(jItem, getECISegments);
91
+ if (jEciSegments != nullptr) {
92
+ int eciSegments_len = env->GetArrayLength(jEciSegments);
93
+ Array jsEciSegments(rt, eciSegments_len);
94
+ jclass clsEciSegment = env->FindClass("com/dynamsoft/dbr/ECISegment");
95
+ jfieldID fi_eciValue = env->GetFieldID(clsEciSegment, "eciValue", "I");
96
+ jfieldID fi_startIndex = env->GetFieldID(clsEciSegment, "startIndex", "I");
97
+ jfieldID fi_length = env->GetFieldID(clsEciSegment, "length", "I");
98
+ jfieldID fi_charsetEncoding = env->GetFieldID(clsEciSegment, "charsetEncoding", "Ljava/lang/String;");
99
+ for (int i = 0; i < eciSegments_len; ++i) {
100
+ Object jsEciSegment(rt);
101
+ jobject jEciSegment = env->GetObjectArrayElement(jEciSegments, i);
102
+ jsEciSegment.setProperty(rt, "eciValue", env->GetIntField(jEciSegment, fi_eciValue));
103
+ jsEciSegment.setProperty(rt, "startIndex", env->GetIntField(jEciSegment, fi_startIndex));
104
+ jsEciSegment.setProperty(rt, "length", env->GetIntField(jEciSegment, fi_length));
105
+ auto jCharsetEncoding = (jstring) env->GetObjectField(jEciSegment, fi_charsetEncoding);
106
+ auto pCharsetEncoding = jCharsetEncoding ? env->GetStringUTFChars(jCharsetEncoding, nullptr) : "";
107
+ jsEciSegment.setProperty(rt, "charsetEncoding", pCharsetEncoding);
108
+ if (jCharsetEncoding) {
109
+ env->ReleaseStringUTFChars(jCharsetEncoding, pCharsetEncoding);
110
+ env->DeleteLocalRef(jCharsetEncoding);
111
+ }
112
+ jsEciSegments.setValueAtIndex(rt, i, std::move(jsEciSegment));
113
+ env->DeleteLocalRef(jEciSegment);
114
+ }
115
+ jsItem.setProperty(rt, "eciSegments", jsEciSegments);
116
+ }
117
+
118
+ jmethodID getDetails = env->GetMethodID(clsItem, "getDetails", "()Lcom/dynamsoft/dbr/BarcodeDetails;");
119
+ jobject jDetails = env->CallObjectMethod(jItem, getDetails);
120
+ if (jDetails != nullptr) {
121
+ jclass clsOneDCodeDetails = env->FindClass("com/dynamsoft/dbr/OneDCodeDetails");
122
+ jclass clsDataMatrixDetails = env->FindClass("com/dynamsoft/dbr/DataMatrixDetails");
123
+ jclass clsAztecDetails = env->FindClass("com/dynamsoft/dbr/AztecDetails");
124
+ jclass clsPDF417Details = env->FindClass("com/dynamsoft/dbr/PDF417Details");
125
+ jclass clsQRCodeDetails = env->FindClass("com/dynamsoft/dbr/QRCodeDetails");
126
+ if (env->IsInstanceOf(jDetails, clsOneDCodeDetails)) {
127
+ Object jsOneDCodeDetails(rt);
128
+
129
+ jmethodID getStartPatternRange = env->GetMethodID(clsOneDCodeDetails, "getStartPatternRange", "()Landroid/util/Range;");
130
+ jobject jStartPatternRange = env->CallObjectMethod(jDetails, getStartPatternRange);
131
+ float startPatternRange_lower = 0, startPatternRange_upper = 0;
132
+ getUpperAndLowerFromJRange(env, jStartPatternRange, startPatternRange_lower, startPatternRange_upper);
133
+ jsOneDCodeDetails.setProperty(rt, "startPatternRange_lower", startPatternRange_lower);
134
+ jsOneDCodeDetails.setProperty(rt, "startPatternRange_upper", startPatternRange_upper);
135
+
136
+ jmethodID getMiddlePatternRange = env->GetMethodID(clsOneDCodeDetails, "getMiddlePatternRange", "()Landroid/util/Range;");
137
+ jobject jMiddlePatternRange = env->CallObjectMethod(jDetails, getMiddlePatternRange);
138
+ float middlePatternRange_lower = 0, middlePatternRange_upper = 0;
139
+ getUpperAndLowerFromJRange(env, jMiddlePatternRange, middlePatternRange_lower, middlePatternRange_upper);
140
+ jsOneDCodeDetails.setProperty(rt, "middlePatternRange_lower", middlePatternRange_lower);
141
+ jsOneDCodeDetails.setProperty(rt, "middlePatternRange_upper", middlePatternRange_upper);
142
+
143
+ jmethodID getEndPatternRange = env->GetMethodID(clsOneDCodeDetails, "getEndPatternRange", "()Landroid/util/Range;");
144
+ jobject jEndPatternRange = env->CallObjectMethod(jDetails, getEndPatternRange);
145
+ float endPatternRange_lower = 0, endPatternRange_upper = 0;
146
+ getUpperAndLowerFromJRange(env, jEndPatternRange, endPatternRange_lower, endPatternRange_upper);
147
+ jsOneDCodeDetails.setProperty(rt, "endPatternRange_lower", endPatternRange_lower);
148
+ jsOneDCodeDetails.setProperty(rt, "endPatternRange_upper", endPatternRange_upper);
149
+
150
+
151
+ jmethodID getStartCharsBytes = env->GetMethodID(clsOneDCodeDetails, "getStartCharsBytes", "()[B");
152
+ jobject jStartCharsBytes = env->CallObjectMethod(jDetails, getStartCharsBytes);
153
+ if (jStartCharsBytes != nullptr) {
154
+ int startCharsBytes_len = env->GetArrayLength((jbyteArray) jStartCharsBytes);
155
+ Array jsStartCharsBytes(rt, startCharsBytes_len);
156
+ jbyte *jStartCharsByte = env->GetByteArrayElements((jbyteArray) jStartCharsBytes, nullptr);
157
+ for (int i = 0; i < startCharsBytes_len; i++) {
158
+ jsStartCharsBytes.setValueAtIndex(rt, i, Value((unsigned char) jStartCharsByte[i]));
159
+ }
160
+ env->ReleaseByteArrayElements((jbyteArray) jStartCharsBytes, jStartCharsByte, 0);
161
+ jsOneDCodeDetails.setProperty(rt, "startCharsBytes", jsStartCharsBytes);
162
+ }
163
+
164
+ jmethodID getStopCharsBytes = env->GetMethodID(clsOneDCodeDetails, "getStopCharsBytes", "()[B");
165
+ jobject jStopCharsBytes = env->CallObjectMethod(jDetails, getStopCharsBytes);
166
+ if (jStopCharsBytes != nullptr) {
167
+ int stopCharsBytes_len = env->GetArrayLength((jbyteArray) jStopCharsBytes);
168
+ Array jsStopCharsBytes(rt, stopCharsBytes_len);
169
+ jbyte *jStopCharsByte = env->GetByteArrayElements((jbyteArray) jStopCharsBytes, nullptr);
170
+ for (int i = 0; i < stopCharsBytes_len; i++) {
171
+ jsStopCharsBytes.setValueAtIndex(rt, i, Value((unsigned char) jStopCharsByte[i]));
172
+ }
173
+ env->ReleaseByteArrayElements((jbyteArray) jStopCharsBytes, jStopCharsByte, 0);
174
+ jsOneDCodeDetails.setProperty(rt, "stopCharsBytes", jsStopCharsBytes);
175
+ }
176
+
177
+ jmethodID getCheckDigitBytes = env->GetMethodID(clsOneDCodeDetails, "getCheckDigitBytes", "()[B");
178
+ jobject jCheckDigitBytes = env->CallObjectMethod(jDetails, getCheckDigitBytes);
179
+ if (jCheckDigitBytes != nullptr) {
180
+ int checkDigitBytes_len = env->GetArrayLength((jbyteArray) jCheckDigitBytes);
181
+ Array jsCheckDigitBytes(rt, checkDigitBytes_len);
182
+ jbyte *jCheckDigitByte = env->GetByteArrayElements((jbyteArray) jCheckDigitBytes, nullptr);
183
+ for (int i = 0; i < checkDigitBytes_len; i++) {
184
+ jsCheckDigitBytes.setValueAtIndex(rt, i, Value((unsigned char) jCheckDigitByte[i]));
185
+ }
186
+ env->ReleaseByteArrayElements((jbyteArray) jCheckDigitBytes, jCheckDigitByte, 0);
187
+ jsOneDCodeDetails.setProperty(rt, "checkDigitBytes", jsCheckDigitBytes);
188
+ }
189
+
190
+ jsItem.setProperty(rt, "oneDCodeDetails", jsOneDCodeDetails);
191
+ } else if (env->IsInstanceOf(jDetails, clsQRCodeDetails)) {
192
+ Object jsQRCodeDetails(rt);
193
+ jmethodID getRows = env->GetMethodID(clsQRCodeDetails, "getRows", "()I");
194
+ jsQRCodeDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
195
+ jmethodID getColumns = env->GetMethodID(clsQRCodeDetails, "getColumns", "()I");
196
+ jsQRCodeDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
197
+ jmethodID getErrorCorrectionLevel = env->GetMethodID(clsQRCodeDetails, "getErrorCorrectionLevel", "()I");
198
+ jsQRCodeDetails.setProperty(rt, "errorCorrectionLevel", env->CallIntMethod(jDetails, getErrorCorrectionLevel));
199
+ jmethodID getVersion = env->GetMethodID(clsQRCodeDetails, "getVersion", "()I");
200
+ jsQRCodeDetails.setProperty(rt, "version", env->CallIntMethod(jDetails, getVersion));
201
+ jmethodID getModel = env->GetMethodID(clsQRCodeDetails, "getModel", "()I");
202
+ jsQRCodeDetails.setProperty(rt, "model", env->CallIntMethod(jDetails, getModel));
203
+ jmethodID getMode = env->GetMethodID(clsQRCodeDetails, "getMode", "()I");
204
+ jsQRCodeDetails.setProperty(rt, "mode", env->CallIntMethod(jDetails, getMode));
205
+ jmethodID getPage = env->GetMethodID(clsQRCodeDetails, "getPage", "()I");
206
+ jsQRCodeDetails.setProperty(rt, "page", env->CallIntMethod(jDetails, getPage));
207
+ jmethodID getTotalPage = env->GetMethodID(clsQRCodeDetails, "getTotalPage", "()I");
208
+ jsQRCodeDetails.setProperty(rt, "totalPage", env->CallIntMethod(jDetails, getTotalPage));
209
+ jmethodID getParityData = env->GetMethodID(clsQRCodeDetails, "getParityData", "()B");
210
+ jsQRCodeDetails.setProperty(rt, "parityData", (int) env->CallByteMethod(jDetails, getParityData));
211
+ jmethodID getDataMaskPattern = env->GetMethodID(clsQRCodeDetails, "getDataMaskPattern", "()I");
212
+ jsQRCodeDetails.setProperty(rt, "dataMaskPattern", env->CallIntMethod(jDetails, getDataMaskPattern));
213
+ jmethodID getCodewords = env->GetMethodID(clsQRCodeDetails, "getCodewords", "()[B");
214
+ jbyteArray jCodewords = (jbyteArray) env->CallObjectMethod(jDetails, getCodewords);
215
+
216
+ if (jCodewords != nullptr) {
217
+ int codewords_len = env->GetArrayLength(jCodewords);
218
+ Array jsCodewords(rt, codewords_len);
219
+ jbyte *pCodewords = env->GetByteArrayElements(jCodewords, nullptr);
220
+ for (int i = 0; i < codewords_len; i++) {
221
+ jsCodewords.setValueAtIndex(rt, i, Value(pCodewords[i]));
222
+ }
223
+ env->ReleaseByteArrayElements(jCodewords, pCodewords, 0);
224
+ jsQRCodeDetails.setProperty(rt, "codewords", jsCodewords);
225
+ }
226
+
227
+ jsItem.setProperty(rt, "qrCodeDetails", jsQRCodeDetails);
228
+ } else if (env->IsInstanceOf(jDetails, clsAztecDetails)) {
229
+ Object jsAztecDetails(rt);
230
+ jmethodID getRows = env->GetMethodID(clsAztecDetails, "getRows", "()I");
231
+ jsAztecDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
232
+ jmethodID getColumns = env->GetMethodID(clsAztecDetails, "getColumns", "()I");
233
+ jsAztecDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
234
+ jmethodID getLayerNumber = env->GetMethodID(clsAztecDetails, "getLayerNumber", "()I");
235
+ jsAztecDetails.setProperty(rt, "layerNumber", env->CallIntMethod(jDetails, getLayerNumber));
236
+
237
+ jsItem.setProperty(rt, "aztecDetails", jsAztecDetails);
238
+ } else if (env->IsInstanceOf(jDetails, clsPDF417Details)) {
239
+ Object jsPDF417Details(rt);
240
+ jmethodID getRows = env->GetMethodID(clsPDF417Details, "getRows", "()I");
241
+ jsPDF417Details.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
242
+ jmethodID getColumns = env->GetMethodID(clsPDF417Details, "getColumns", "()I");
243
+ jsPDF417Details.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
244
+ jmethodID getErrorCorrectionLevel = env->GetMethodID(clsPDF417Details, "getErrorCorrectionLevel", "()I");
245
+ jsPDF417Details.setProperty(rt, "errorCorrectionLevel", env->CallIntMethod(jDetails, getErrorCorrectionLevel));
246
+ jmethodID hasLeftRowIndicator = env->GetMethodID(clsPDF417Details, "hasLeftRowIndicator", "()Z");
247
+ jsPDF417Details.setProperty(rt, "hasLeftRowIndicator", (bool) env->CallBooleanMethod(jDetails, hasLeftRowIndicator));
248
+ jmethodID hasRightRowIndicator = env->GetMethodID(clsPDF417Details, "hasRightRowIndicator", "()Z");
249
+ jsPDF417Details.setProperty(rt, "hasRightRowIndicator", (bool) env->CallBooleanMethod(jDetails, hasRightRowIndicator));
250
+
251
+ jmethodID getCodewords = env->GetMethodID(clsPDF417Details, "getCodewords", "()[I");
252
+ jintArray jCodewords = (jintArray) env->CallObjectMethod(jDetails, getCodewords);
253
+
254
+ if (jCodewords != nullptr) {
255
+ int codewords_len = env->GetArrayLength(jCodewords);
256
+ Array jsCodewords(rt, codewords_len);
257
+ jint *pCodewords = env->GetIntArrayElements(jCodewords, nullptr);
258
+ for (int i = 0; i < codewords_len; i++) {
259
+ jsCodewords.setValueAtIndex(rt, i, Value(pCodewords[i]));
260
+ }
261
+ env->ReleaseIntArrayElements(jCodewords, pCodewords, 0);
262
+ jsPDF417Details.setProperty(rt, "codewords", jsCodewords);
263
+ }
264
+
265
+ jsItem.setProperty(rt, "pdf417Details", jsPDF417Details);
266
+ } else if (env->IsInstanceOf(jDetails, clsDataMatrixDetails)) {
267
+ Object jsDataMatrixDetails(rt);
268
+ jmethodID getRows = env->GetMethodID(clsDataMatrixDetails, "getRows", "()I");
269
+ jsDataMatrixDetails.setProperty(rt, "rows", env->CallIntMethod(jDetails, getRows));
270
+ jmethodID getColumns = env->GetMethodID(clsDataMatrixDetails, "getColumns", "()I");
271
+ jsDataMatrixDetails.setProperty(rt, "columns", env->CallIntMethod(jDetails, getColumns));
272
+ jmethodID getDataRegionRows = env->GetMethodID(clsDataMatrixDetails, "getDataRegionRows", "()I");
273
+ jsDataMatrixDetails.setProperty(rt, "dataRegionRows", env->CallIntMethod(jDetails, getDataRegionRows));
274
+ jmethodID getDataRegionColumns = env->GetMethodID(clsDataMatrixDetails, "getDataRegionColumns", "()I");
275
+ jsDataMatrixDetails.setProperty(rt, "dataRegionColumns", env->CallIntMethod(jDetails, getDataRegionColumns));
276
+ jmethodID getDataRegionNumber = env->GetMethodID(clsDataMatrixDetails, "getDataRegionNumber", "()I");
277
+ jsDataMatrixDetails.setProperty(rt, "dataRegionNumber", env->CallIntMethod(jDetails, getDataRegionNumber));
278
+ jsItem.setProperty(rt, "dataMatrixDetails", jsDataMatrixDetails);
279
+ }
280
+ }
281
+ env->PopLocalFrame(nullptr);
282
+ }
283
+ }//namespace jsiConversion::dbr