barkoder-nativescript 1.6.5 → 1.6.7

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 (84) hide show
  1. package/barkoder-nativescript.android.ts +307 -3
  2. package/barkoder-nativescript.common.ts +6 -2
  3. package/barkoder-nativescript.ios.ts +304 -15
  4. package/package.json +1 -1
  5. package/platforms/android/barkoder.aar +0 -0
  6. package/platforms/ios/Barkoder.xcframework/Info.plist +5 -5
  7. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/Barkoder +0 -0
  8. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/Headers/iBarkoder.h +25 -3
  9. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/Info.plist +0 -0
  10. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/default.metallib +0 -0
  11. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/analytics/coremldata.bin +0 -0
  12. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/coremldata.bin +0 -0
  13. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/{int8_384x256_small2.mlmodelc → n2_384x256_int8.mlmodelc}/metadata.json +18 -29
  14. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/{int8_384x256_small2.mlmodelc → n2_384x256_int8.mlmodelc}/model.espresso.net +1960 -2558
  15. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/{int8_384x256_small2.mlmodelc → n2_384x256_int8.mlmodelc}/model.espresso.shape +775 -950
  16. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.weights +0 -0
  17. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/analytics/coremldata.bin +0 -0
  18. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/coremldata.bin +0 -0
  19. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/metadata.json +77 -0
  20. package/platforms/ios/Barkoder.xcframework/{ios-arm64_x86_64-simulator/Barkoder.framework/int8_384x256_small2.mlmodelc → ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc}/model.espresso.net +1960 -2558
  21. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.shape +1740 -0
  22. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.weights +0 -0
  23. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/Barkoder +0 -0
  24. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/Headers/iBarkoder.h +25 -3
  25. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/Info.plist +0 -0
  26. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/_CodeSignature/CodeResources +98 -65
  27. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/default.metallib +0 -0
  28. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/analytics/coremldata.bin +0 -0
  29. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/coremldata.bin +0 -0
  30. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/{int8_384x256_small2.mlmodelc → n2_384x256_int8.mlmodelc}/metadata.json +18 -29
  31. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/model/coremldata.bin +0 -0
  32. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.net +5331 -0
  33. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/{int8_384x256_small2.mlmodelc → n2_384x256_int8.mlmodelc}/model.espresso.shape +775 -950
  34. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/model.espresso.weights +0 -0
  35. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_384x256_int8.mlmodelc/neural_network_optionals/coremldata.bin +0 -0
  36. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/analytics/coremldata.bin +0 -0
  37. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/coremldata.bin +0 -0
  38. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/metadata.json +77 -0
  39. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/model/coremldata.bin +0 -0
  40. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.net +5331 -0
  41. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.shape +1740 -0
  42. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/model.espresso.weights +0 -0
  43. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/n2_512x384_int8.mlmodelc/neural_network_optionals/coremldata.bin +0 -0
  44. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/BarkoderSDK +0 -0
  45. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Headers/BarkoderSDK-Swift.h +105 -1
  46. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Info.plist +0 -0
  47. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios.abi.json +1847 -646
  48. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +49 -2
  49. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  50. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios.swiftinterface +49 -2
  51. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64/BarkoderSDK.framework/templates.json +19 -16
  52. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/BarkoderSDK +0 -0
  53. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Headers/BarkoderSDK-Swift.h +210 -2
  54. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Info.plist +0 -0
  55. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +1847 -646
  56. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +49 -2
  57. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  58. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +49 -2
  59. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +1847 -646
  60. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +49 -2
  61. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  62. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/Modules/BarkoderSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +49 -2
  63. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/_CodeSignature/CodeResources +25 -25
  64. package/platforms/ios/BarkoderSDK.xcframework/ios-arm64_x86_64-simulator/BarkoderSDK.framework/templates.json +19 -16
  65. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/analytics/coremldata.bin +0 -0
  66. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/coremldata.bin +0 -0
  67. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/metadata.json +0 -88
  68. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/model.mil +0 -753
  69. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/float16_512x384.mlmodelc/weights/weight.bin +0 -0
  70. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/int8_384x256_small2.mlmodelc/analytics/coremldata.bin +0 -0
  71. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/int8_384x256_small2.mlmodelc/coremldata.bin +0 -0
  72. package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/int8_384x256_small2.mlmodelc/model.espresso.weights +0 -0
  73. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/analytics/coremldata.bin +0 -0
  74. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/coremldata.bin +0 -0
  75. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/metadata.json +0 -88
  76. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/model.mil +0 -753
  77. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/float16_512x384.mlmodelc/weights/weight.bin +0 -0
  78. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/int8_384x256_small2.mlmodelc/analytics/coremldata.bin +0 -0
  79. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/int8_384x256_small2.mlmodelc/coremldata.bin +0 -0
  80. package/platforms/ios/Barkoder.xcframework/ios-arm64_x86_64-simulator/Barkoder.framework/int8_384x256_small2.mlmodelc/model.espresso.weights +0 -0
  81. /package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/{int8_384x256_small2.mlmodelc → n2_384x256_int8.mlmodelc}/model/coremldata.bin +0 -0
  82. /package/platforms/ios/Barkoder.xcframework/ios-arm64/Barkoder.framework/{int8_384x256_small2.mlmodelc → n2_384x256_int8.mlmodelc}/neural_network_optionals/coremldata.bin +0 -0
  83. /package/platforms/ios/Barkoder.xcframework/{ios-arm64_x86_64-simulator/Barkoder.framework/int8_384x256_small2.mlmodelc → ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc}/model/coremldata.bin +0 -0
  84. /package/platforms/ios/Barkoder.xcframework/{ios-arm64_x86_64-simulator/Barkoder.framework/int8_384x256_small2.mlmodelc → ios-arm64/Barkoder.framework/n2_512x384_int8.mlmodelc}/neural_network_optionals/coremldata.bin +0 -0
@@ -1,6 +1,6 @@
1
1
  import { BarkoderConstants } from "./barkoder-nativescript.common";
2
2
  import * as application from "@nativescript/core/application";
3
- import { View } from "@nativescript/core";
3
+ import { Color, View } from "@nativescript/core";
4
4
  import { BarkoderView } from "./barkoder-nativescript.common";
5
5
  import { ImageSource } from '@nativescript/core';
6
6
 
@@ -52,9 +52,13 @@ export class BarkoderViewAndroid extends View {
52
52
  ) => {
53
53
  // Convert native array to JS array first
54
54
  const jsThumbnails = [];
55
- for (let i = 0; i < thumbnails.length; i++) {
56
- jsThumbnails.push(thumbnails[i]);
55
+
56
+ if(thumbnails != null) {
57
+ for (let i = 0; i < thumbnails.length; i++) {
58
+ jsThumbnails.push(thumbnails[i]);
59
+ }
57
60
  }
61
+
58
62
 
59
63
  const convertedThumbnails = jsThumbnails.map((bitmap) => {
60
64
  const imgSrc = new ImageSource();
@@ -120,6 +124,10 @@ export class BarkoderViewAndroid extends View {
120
124
  this.bkdView.stopScanning();
121
125
  }
122
126
 
127
+ captureImage(): void {
128
+ this.bkdView.captureImage();
129
+ }
130
+
123
131
  pauseScanning(): void {
124
132
  this.bkdView.pauseScanning();
125
133
  }
@@ -146,6 +154,15 @@ export class BarkoderViewAndroid extends View {
146
154
  this.bkdView.setFlashEnabled(enabled);
147
155
  }
148
156
 
157
+ setARContinueScanningOnLimit(enabled: boolean): void {
158
+ this.bkdView.config.arConfig.setContinueScanningOnLimit(enabled);
159
+ }
160
+
161
+ setAREmitResultsAtSessionEndOnly(enabled: boolean): void {
162
+ this.bkdView.config.arConfig.emitResultsAtSessionEndOnly = enabled;
163
+ }
164
+
165
+
149
166
  /**
150
167
  * Retrieves the maximum available zoom factor for the device's camera
151
168
  */
@@ -263,6 +280,252 @@ export class BarkoderViewAndroid extends View {
263
280
  this.bkdView.config.setRegionOfInterestVisible(enabled);
264
281
  }
265
282
 
283
+
284
+
285
+
286
+
287
+ /**
288
+ * Configures the flash button with custom settings, supporting NativeScript types.
289
+ */
290
+ configureFlashButton(
291
+ visible: boolean,
292
+ position: number[],
293
+ iconSize: number,
294
+ tintColor: string | Color | null,
295
+ backgroundColor: string | Color | null,
296
+ cornerRadius: number,
297
+ padding: number,
298
+ useCustomIcon: boolean,
299
+ flashOnIconBase64: string,
300
+ flashOffIconBase64: string
301
+ ): void {
302
+
303
+ let nativeTintColor: java.lang.Integer = null;
304
+ if (tintColor != null) {
305
+ const color = (tintColor instanceof Color)
306
+ ? tintColor
307
+ : new Color(tintColor as string);
308
+ nativeTintColor = java.lang.Integer.valueOf(color.android);
309
+ }
310
+
311
+ let nativeBackgroundColor: java.lang.Integer = null;
312
+ if (backgroundColor != null) {
313
+ const color = (backgroundColor instanceof Color)
314
+ ? backgroundColor
315
+ : new Color(backgroundColor as string);
316
+ nativeBackgroundColor = java.lang.Integer.valueOf(color.android);
317
+ }
318
+
319
+ const nativePosition = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 2);
320
+ nativePosition[0] = position[0];
321
+ nativePosition[1] = position[1];
322
+
323
+ let nativeFlashOnBitmap = null;
324
+ let nativeFlashOffBitmap = null;
325
+
326
+ if (useCustomIcon) {
327
+ nativeFlashOnBitmap = this.decodeBase64ToBitmap(flashOnIconBase64);
328
+ nativeFlashOffBitmap = this.decodeBase64ToBitmap(flashOffIconBase64);
329
+ }
330
+
331
+ this.bkdView.configureFlashButton(
332
+ visible,
333
+ nativePosition,
334
+ iconSize,
335
+ nativeTintColor,
336
+ nativeBackgroundColor,
337
+ cornerRadius,
338
+ padding,
339
+ useCustomIcon,
340
+ nativeFlashOnBitmap,
341
+ nativeFlashOffBitmap
342
+ );
343
+ }
344
+
345
+
346
+ private decodeBase64ToBitmap(base64String: string): android.graphics.Bitmap | null {
347
+ if (!base64String) {
348
+ return null;
349
+ }
350
+ try {
351
+ // 1. Decode the Base64 string into a byte array
352
+ const decodedBytes = android.util.Base64.decode(base64String, android.util.Base64.DEFAULT);
353
+
354
+ // 2. Use BitmapFactory to create a Bitmap from the byte array
355
+ const bitmap = android.graphics.BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
356
+
357
+ return bitmap;
358
+ } catch (e) {
359
+ console.error("Error decoding Base64 string to Bitmap:", e);
360
+ return null;
361
+ }
362
+ }
363
+
364
+ configureCloseButton(
365
+ visible: boolean,
366
+ position: number[],
367
+ iconSize: number,
368
+ tintColor: string | Color | null,
369
+ backgroundColor: string | Color | null,
370
+ cornerRadius: number,
371
+ padding: number,
372
+ useCustomIcon: boolean,
373
+ customIcon: string,
374
+ onCloseCallback?: () => void
375
+ ): void {
376
+ if (!this.bkdView) {
377
+ return;
378
+ }
379
+
380
+ // ✅ 1. Safely convert tintColor
381
+ let nativeTintColor: java.lang.Integer = null;
382
+ if (tintColor != null) {
383
+ const color = tintColor instanceof Color
384
+ ? tintColor
385
+ : new Color(tintColor as string);
386
+ nativeTintColor = java.lang.Integer.valueOf(color.android);
387
+ }
388
+
389
+ // ✅ 2. Safely convert backgroundColor
390
+ let nativeBackgroundColor: java.lang.Integer = null;
391
+ if (backgroundColor != null) {
392
+ const color = backgroundColor instanceof Color
393
+ ? backgroundColor
394
+ : new Color(backgroundColor as string);
395
+ nativeBackgroundColor = java.lang.Integer.valueOf(color.android);
396
+ }
397
+
398
+ // ✅ 3. Convert position to float[]
399
+ const nativePosition = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 2);
400
+ nativePosition[0] = position[0];
401
+ nativePosition[1] = position[1];
402
+
403
+ // ✅ 4. Decode base64 icon if needed
404
+ let customIconBitmap = null;
405
+ if (useCustomIcon && customIcon) {
406
+ customIconBitmap = this.decodeBase64ToBitmap(customIcon);
407
+ }
408
+
409
+ // ✅ 5. Wrap the JS callback into a native Runnable
410
+ const nativeCallback = onCloseCallback
411
+ ? new java.lang.Runnable({
412
+ run: () => {
413
+ onCloseCallback();
414
+ }
415
+ })
416
+ : null;
417
+
418
+ // ✅ 6. Call native Android method
419
+ this.bkdView.configureCloseButton(
420
+ visible,
421
+ nativePosition,
422
+ iconSize,
423
+ nativeTintColor,
424
+ nativeBackgroundColor,
425
+ cornerRadius,
426
+ padding,
427
+ useCustomIcon,
428
+ customIconBitmap,
429
+ nativeCallback
430
+ );
431
+ }
432
+
433
+
434
+ configureZoomButton(
435
+ visible: boolean,
436
+ position: number[], // [xDp, yDp]
437
+ iconSize: number,
438
+ tintColor: string | Color | null,
439
+ backgroundColor: string | Color | null,
440
+ cornerRadius: number,
441
+ padding: number,
442
+ useCustomIcon: boolean,
443
+ zoomInIconBase64: string,
444
+ zoomOutIconBase64: string,
445
+ zoomedInFactor: number,
446
+ zoomedOutFactor: number
447
+ ): void {
448
+ if (!this.bkdView || !global.isAndroid) {
449
+ return;
450
+ }
451
+
452
+ // ✅ 1. Safely convert tintColor
453
+ let nativeTintColor: java.lang.Integer = null;
454
+ if (tintColor != null) {
455
+ const color = tintColor instanceof Color
456
+ ? tintColor
457
+ : new Color(tintColor as string);
458
+ nativeTintColor = java.lang.Integer.valueOf(color.android);
459
+ }
460
+
461
+ // ✅ 2. Safely convert backgroundColor
462
+ let nativeBackgroundColor: java.lang.Integer = null;
463
+ if (backgroundColor != null) {
464
+ const color = backgroundColor instanceof Color
465
+ ? backgroundColor
466
+ : new Color(backgroundColor as string);
467
+ nativeBackgroundColor = java.lang.Integer.valueOf(color.android);
468
+ }
469
+
470
+ // ✅ 3. Convert Position (JS number[] -> Java float[])
471
+ const nativePosition = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 2);
472
+ nativePosition[0] = position[0];
473
+ nativePosition[1] = position[1];
474
+
475
+ // ✅ 4. Decode base64 icons if using custom icons
476
+ let nativeZoomInBitmap = null;
477
+ let nativeZoomOutBitmap = null;
478
+
479
+ if (useCustomIcon && zoomInIconBase64 && zoomOutIconBase64) {
480
+ nativeZoomInBitmap = this.decodeBase64ToBitmap(zoomInIconBase64);
481
+ nativeZoomOutBitmap = this.decodeBase64ToBitmap(zoomOutIconBase64);
482
+ }
483
+
484
+ // ✅ 5. Call native method
485
+ this.bkdView.configureZoomButton(
486
+ visible,
487
+ nativePosition,
488
+ iconSize,
489
+ nativeTintColor,
490
+ nativeBackgroundColor,
491
+ cornerRadius,
492
+ padding,
493
+ useCustomIcon,
494
+ nativeZoomInBitmap,
495
+ nativeZoomOutBitmap,
496
+ zoomedInFactor,
497
+ zoomedOutFactor
498
+ );
499
+ }
500
+
501
+
502
+ // --- Placeholder for a Conversion Utility (Not part of the core wrapper, but essential) ---
503
+ private convertToNativeBitmap(imageSource: any): any /* android.graphics.Bitmap */ {
504
+ if (!imageSource) {
505
+ return null;
506
+ }
507
+
508
+ // If the imageSource is already a native Bitmap (from a previous conversion/cache)
509
+ if (imageSource.android instanceof com.google.zxing.qrcode.encoder.ByteMatrix) { // Incorrect type, placeholder
510
+ // return imageSource.android;
511
+ }
512
+
513
+ // Example conversion (highly simplified - you'll need the correct NativeScript helpers)
514
+ /* if (imageSource instanceof ImageSource) {
515
+ const nativeBitmap = imageSource.android;
516
+ return nativeBitmap;
517
+ }
518
+ */
519
+
520
+ // For a robust wrapper, you would need to:
521
+ // 1. Check if the input is a file path, Base64 string, or an ImageSource object.
522
+ // 2. Use NativeScript's image-loading utilities to load and convert it to an
523
+ // `android.graphics.Bitmap`.
524
+
525
+ console.warn("Image conversion placeholder called. Replace with actual logic.");
526
+ return null; // Return null if conversion fails
527
+ }
528
+
266
529
  /**
267
530
  * Defines the Region of Interest (ROI) on the camera preview for barcode scanning, specifying an area where the application focuses on detecting barcodes
268
531
  */
@@ -527,6 +790,10 @@ export class BarkoderViewAndroid extends View {
527
790
  this.bkdView.config.getDecoderConfig().formattingType =
528
791
  com.barkoder.Barkoder.FormattingType.AAMVA;
529
792
  break;
793
+ case BarkoderConstants.FormattingType.SADL:
794
+ this.bkdView.config.getDecoderConfig().formattingType =
795
+ com.barkoder.Barkoder.FormattingType.SADL;
796
+ break;
530
797
  }
531
798
  }
532
799
 
@@ -687,6 +954,8 @@ export class BarkoderViewAndroid extends View {
687
954
  return this.bkdView.config.getDecoderConfig().JapanesePost.enabled;
688
955
  case BarkoderConstants.DecoderType.MaxiCode:
689
956
  return this.bkdView.config.getDecoderConfig().MaxiCode.enabled;
957
+ case BarkoderConstants.DecoderType.OCRText:
958
+ return this.bkdView.config.getDecoderConfig().OCRText.enabled;
690
959
  }
691
960
  }
692
961
 
@@ -733,6 +1002,7 @@ export class BarkoderViewAndroid extends View {
733
1002
  this.bkdView.config.getDecoderConfig().KIX.enabled = false;
734
1003
  this.bkdView.config.getDecoderConfig().JapanesePost.enabled = false;
735
1004
  this.bkdView.config.getDecoderConfig().MaxiCode.enabled = false;
1005
+ this.bkdView.config.getDecoderConfig().OCRText.enabled = false;
736
1006
  decoders.forEach((dt: BarkoderConstants.DecoderType) => {
737
1007
  switch (dt) {
738
1008
  case BarkoderConstants.DecoderType.Aztec:
@@ -852,6 +1122,9 @@ export class BarkoderViewAndroid extends View {
852
1122
  case BarkoderConstants.DecoderType.MaxiCode:
853
1123
  this.bkdView.config.getDecoderConfig().MaxiCode.enabled = true;
854
1124
  break;
1125
+ case BarkoderConstants.DecoderType.OCRText:
1126
+ this.bkdView.config.getDecoderConfig().OCRText.enabled = true;
1127
+ break;
855
1128
  default:
856
1129
  break;
857
1130
  }
@@ -1101,6 +1374,10 @@ export class BarkoderViewAndroid extends View {
1101
1374
  this.bkdView.config.getDecoderConfig().maximumResultsCount = maximumResultsCount;
1102
1375
  }
1103
1376
 
1377
+ setARResultLimit(resultLimit: number): void {
1378
+ this.bkdView.config.arConfig.resultLimit = resultLimit;
1379
+ }
1380
+
1104
1381
  /**
1105
1382
  * Sets the delay in milliseconds for considering duplicate barcodes during scanning
1106
1383
  */
@@ -1108,6 +1385,29 @@ export class BarkoderViewAndroid extends View {
1108
1385
  this.bkdView.config.getDecoderConfig().duplicatesDelayMs = duplicateDelayMs;
1109
1386
  }
1110
1387
 
1388
+ getSadlImageFromExtra(extra: any): ImageSource | null {
1389
+ if (!extra || !global.isAndroid) {
1390
+ return null;
1391
+ }
1392
+
1393
+ try {
1394
+ const bitmap =
1395
+ com.barkoder.BarkoderHelper.sadlImage(extra);
1396
+
1397
+ if (!bitmap) {
1398
+ return null;
1399
+ }
1400
+
1401
+ const imageSource = new ImageSource();
1402
+ imageSource.setNativeSource(bitmap);
1403
+ return imageSource;
1404
+
1405
+ } catch (e) {
1406
+ console.error('Failed to extract SADL image:', e);
1407
+ return null;
1408
+ }
1409
+ }
1410
+
1111
1411
  /**
1112
1412
  * Sets the caching duration (in milliseconds) for multi-code results
1113
1413
  */
@@ -1327,6 +1627,10 @@ export class BarkoderViewAndroid extends View {
1327
1627
  com.barkoder.Barkoder.SetCustomOption(this.bkdView.config.getDecoderConfig(), string, mode);
1328
1628
  }
1329
1629
 
1630
+ setCustomOptionGlobal(string: string, mode: number): void {
1631
+ com.barkoder.Barkoder.SetCustomOptionGlobal(string, mode);
1632
+ }
1633
+
1330
1634
  setDynamicExposure(mode : number) : void {
1331
1635
  this.bkdView.setDynamicExposure(mode);
1332
1636
  }
@@ -60,7 +60,8 @@ export enum DecoderType {
60
60
  RoyalMail = 36,
61
61
  KIX = 37,
62
62
  JapanesePost = 38,
63
- MaxiCode = 39
63
+ MaxiCode = 39,
64
+ OCRText = 40
64
65
 
65
66
  }
66
67
 
@@ -68,7 +69,8 @@ export enum FormattingType {
68
69
  Disabled = 0,
69
70
  Automatic = 1,
70
71
  GS1 = 2,
71
- AAMVA = 3
72
+ AAMVA = 3,
73
+ SADL = 4
72
74
  }
73
75
 
74
76
  export enum DecodingSpeed {
@@ -238,6 +240,7 @@ export class DekoderConfig {
238
240
  kix?: BarcodeConfig;
239
241
  japanasePost?: BarcodeConfig;
240
242
  maxicode?: BarcodeConfig;
243
+ ocrText?: BarcodeConfig;
241
244
  general?: GeneralSettings;
242
245
 
243
246
  constructor(config: Partial<DekoderConfig>) {
@@ -286,6 +289,7 @@ export class DekoderConfig {
286
289
  'KIX': this.kix?.toMap(),
287
290
  'Japanase Post': this.japanasePost?.toMap(),
288
291
  'MaxiCode': this.maxicode?.toMap(),
292
+ 'OCR Text': this.maxicode?.toMap(),
289
293
  'general': this.general?.toMap()
290
294
  }
291
295