471 lines
18 KiB
Java
471 lines
18 KiB
Java
|
package com.kofax.kmc.ken.engines;
|
||
|
|
||
|
import android.graphics.Bitmap;
|
||
|
import android.os.Handler;
|
||
|
import android.os.Looper;
|
||
|
import com.kofax.kmc.ken.engines.data.BarCodeType;
|
||
|
import com.kofax.kmc.ken.engines.data.Image;
|
||
|
import com.kofax.kmc.kut.utilities.Licensing;
|
||
|
import com.kofax.kmc.kut.utilities.error.ErrorInfo;
|
||
|
import com.kofax.kmc.kut.utilities.error.KmcException;
|
||
|
import com.kofax.kmc.kut.utilities.error.KmcRuntimeException;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.EventObject;
|
||
|
import java.util.List;
|
||
|
import org.bouncycastle.asn1.cmp.PKIFailureInfo;
|
||
|
|
||
|
/* loaded from: classes3.dex */
|
||
|
public class BarCodeReader {
|
||
|
private static volatile boolean a;
|
||
|
private Symbology[] _symbology;
|
||
|
private int b;
|
||
|
private Direction c;
|
||
|
private ErrorInfo e;
|
||
|
private final Handler d = new Handler(Looper.getMainLooper());
|
||
|
private final ArrayList<BarcodeReadCompleteListener> f = new ArrayList<>();
|
||
|
|
||
|
/* loaded from: classes3.dex */
|
||
|
public interface BarcodeReadCompleteListener {
|
||
|
void barcodeReadComplete(BarcodeReadCompleteEvent barcodeReadCompleteEvent);
|
||
|
}
|
||
|
|
||
|
public BarCodeReader() {
|
||
|
a(1);
|
||
|
this._symbology = new Symbology[0];
|
||
|
this.c = Direction.ALL;
|
||
|
}
|
||
|
|
||
|
public BarCodeReader(Symbology[] symbologyArr, Direction direction, int i) {
|
||
|
a(i);
|
||
|
if (symbologyArr == null) {
|
||
|
this._symbology = new Symbology[0];
|
||
|
}
|
||
|
this._symbology = symbologyArr;
|
||
|
if (direction == null) {
|
||
|
this.c = Direction.ALL;
|
||
|
}
|
||
|
this.c = direction;
|
||
|
}
|
||
|
|
||
|
public String getBcVersion() {
|
||
|
return new BarcodeReaderEngineManager().b();
|
||
|
}
|
||
|
|
||
|
public void readBarcodes(Image image) throws KmcException {
|
||
|
synchronized (this.d) {
|
||
|
if (a) {
|
||
|
throw new KmcException(ErrorInfo.KMC_BC_BUSY);
|
||
|
}
|
||
|
a = true;
|
||
|
}
|
||
|
try {
|
||
|
a(image);
|
||
|
} catch (KmcException e) {
|
||
|
a = false;
|
||
|
throw e;
|
||
|
} catch (KmcRuntimeException e2) {
|
||
|
a = false;
|
||
|
throw e2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: private */
|
||
|
public Bitmap a(Bitmap bitmap) {
|
||
|
return Bitmap.createScaledBitmap(bitmap, (int) (bitmap.getWidth() * 2.0f), (int) (bitmap.getHeight() * 2.0f), true);
|
||
|
}
|
||
|
|
||
|
private void a(Image image) throws KmcException {
|
||
|
this.e = ErrorInfo.KMC_SUCCESS;
|
||
|
a();
|
||
|
ErrorInfo b = b(image);
|
||
|
this.e = b;
|
||
|
if (b != ErrorInfo.KMC_SUCCESS) {
|
||
|
throw new KmcException(this.e);
|
||
|
}
|
||
|
Image.ImageRep imageRepresentation = image.getImageRepresentation();
|
||
|
if (image.getImageRepresentation() == Image.ImageRep.IMAGE_REP_FILE) {
|
||
|
image.imageReadFromFile();
|
||
|
}
|
||
|
Bitmap imageBitmap = image.getImageBitmap();
|
||
|
a(image, imageRepresentation, imageBitmap, imageBitmap.getWidth(), imageBitmap.getHeight(), a(this._symbology), this.c.u, this.b, image.getImageOutputColor().getBitsPerPixel());
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
||
|
/* renamed from: com.kofax.kmc.ken.engines.BarCodeReader$1, reason: invalid class name */
|
||
|
/* loaded from: classes3.dex */
|
||
|
public class AnonymousClass1 extends Thread {
|
||
|
final Bitmap g;
|
||
|
final int h;
|
||
|
final int i;
|
||
|
final int j;
|
||
|
final int k;
|
||
|
final int l;
|
||
|
final int m;
|
||
|
final Image n;
|
||
|
|
||
|
/* renamed from: o, reason: collision with root package name */
|
||
|
final Image.ImageRep f6502o;
|
||
|
final BarCodeReader p;
|
||
|
|
||
|
AnonymousClass1(BarCodeReader barCodeReader, Bitmap bitmap, int i, int i2, int i3, int i4, int i5, int i6, Image image, Image.ImageRep imageRep) {
|
||
|
this.p = barCodeReader;
|
||
|
this.g = bitmap;
|
||
|
this.h = i;
|
||
|
this.i = i2;
|
||
|
this.j = i3;
|
||
|
this.k = i4;
|
||
|
this.l = i5;
|
||
|
this.m = i6;
|
||
|
this.n = image;
|
||
|
this.f6502o = imageRep;
|
||
|
}
|
||
|
|
||
|
@Override // java.lang.Thread, java.lang.Runnable
|
||
|
public void run() {
|
||
|
int i;
|
||
|
BarcodeReaderEngineManager barcodeReaderEngineManager = new BarcodeReaderEngineManager();
|
||
|
Symbology[] symbologyArr = {Symbology.QRCode};
|
||
|
Symbology[] symbologyArr2 = {Symbology.QRCode, Symbology.Pdf417};
|
||
|
int a = this.p.a(symbologyArr);
|
||
|
int a2 = this.p.a(symbologyArr2);
|
||
|
RecognitionContext a3 = barcodeReaderEngineManager.a(this.g, this.h, this.i, this.j, this.k, this.l, this.m);
|
||
|
int i2 = 1;
|
||
|
if (a3.getSymbolsFound() == 0 && (a == (i = this.j) || a2 == i)) {
|
||
|
Bitmap a4 = this.p.a(this.g);
|
||
|
a3 = barcodeReaderEngineManager.a(a4, a4.getWidth(), a4.getHeight(), a, this.k, this.l, this.m);
|
||
|
a4.recycle();
|
||
|
i2 = 2;
|
||
|
}
|
||
|
this.p.d.post(new Runnable(this, a3, i2) { // from class: com.kofax.kmc.ken.engines.BarCodeReader.1.1
|
||
|
final RecognitionContext q;
|
||
|
final int r;
|
||
|
final AnonymousClass1 s;
|
||
|
|
||
|
{
|
||
|
this.s = this;
|
||
|
this.q = a3;
|
||
|
this.r = i2;
|
||
|
}
|
||
|
|
||
|
@Override // java.lang.Runnable
|
||
|
public void run() {
|
||
|
ErrorInfo errorInfo = ErrorInfo.KMC_SUCCESS;
|
||
|
ArrayList arrayList = new ArrayList();
|
||
|
try {
|
||
|
RecognitionContext recognitionContext = this.q;
|
||
|
if (recognitionContext != null) {
|
||
|
if (recognitionContext.getBarcode().length == 0) {
|
||
|
errorInfo = this.s.p.a(this.q.getResultCode(), this.q);
|
||
|
}
|
||
|
arrayList.addAll(this.q.getBarCodeResults(this.r));
|
||
|
}
|
||
|
if (this.s.n.getImageBarCodes().size() > 0) {
|
||
|
this.s.n.getImageBarCodes().clear();
|
||
|
}
|
||
|
this.s.n.setImageBarCodes(arrayList);
|
||
|
if (this.s.f6502o == Image.ImageRep.IMAGE_REP_FILE) {
|
||
|
this.s.n.imageClearBitmap();
|
||
|
}
|
||
|
boolean unused = BarCodeReader.a = false;
|
||
|
a(this.s.n, errorInfo, this.s.p.f);
|
||
|
} catch (Throwable th) {
|
||
|
boolean unused2 = BarCodeReader.a = false;
|
||
|
throw th;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void a(Image image, ErrorInfo errorInfo, List<BarcodeReadCompleteListener> list) {
|
||
|
if (list != null) {
|
||
|
for (BarcodeReadCompleteListener barcodeReadCompleteListener : list) {
|
||
|
if (barcodeReadCompleteListener != null) {
|
||
|
barcodeReadCompleteListener.barcodeReadComplete(new BarcodeReadCompleteEvent(this, errorInfo, image));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void a(Image image, Image.ImageRep imageRep, Bitmap bitmap, int i, int i2, int i3, int i4, int i5, int i6) {
|
||
|
new AnonymousClass1(this, bitmap, i, i2, i3, i4, i5, i6, image, imageRep).start();
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Removed duplicated region for block: B:19:0x005c */
|
||
|
/* JADX WARN: Removed duplicated region for block: B:34:? A[RETURN, SYNTHETIC] */
|
||
|
/*
|
||
|
Code decompiled incorrectly, please refer to instructions dump.
|
||
|
To view partially-correct add '--show-bad-code' argument
|
||
|
*/
|
||
|
private com.kofax.kmc.kut.utilities.error.ErrorInfo b(com.kofax.kmc.ken.engines.data.Image r7) throws com.kofax.kmc.kut.utilities.error.KmcException {
|
||
|
/*
|
||
|
r6 = this;
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r0 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_SUCCESS
|
||
|
if (r7 != 0) goto L7
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r7 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_BC_INVALID_IMAGE
|
||
|
return r7
|
||
|
L7:
|
||
|
com.kofax.kmc.ken.engines.data.Image$OutputColor r1 = r7.getImageOutputColor()
|
||
|
int r1 = r1.getBitsPerPixel()
|
||
|
r2 = 1
|
||
|
if (r1 != r2) goto L14
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r0 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_BC_INVALID_IMAGE
|
||
|
L14:
|
||
|
java.lang.Float r1 = r7.getImageBitmapScaling()
|
||
|
float r1 = r1.floatValue()
|
||
|
r3 = 1065353216(0x3f800000, float:1.0)
|
||
|
int r1 = (r1 > r3 ? 1 : (r1 == r3 ? 0 : -1))
|
||
|
r3 = 0
|
||
|
if (r1 >= 0) goto L25
|
||
|
r1 = r2
|
||
|
goto L26
|
||
|
L25:
|
||
|
r1 = r3
|
||
|
L26:
|
||
|
com.kofax.kmc.ken.engines.data.Image$ImageRep r4 = r7.getImageRepresentation()
|
||
|
com.kofax.kmc.ken.engines.data.Image$ImageRep r5 = com.kofax.kmc.ken.engines.data.Image.ImageRep.IMAGE_REP_BITMAP
|
||
|
if (r4 != r5) goto L38
|
||
|
if (r1 == 0) goto L58
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r0 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_BC_NO_REPRESENTATION
|
||
|
java.lang.String r1 = "Only representation is bitmap but it is scaled down"
|
||
|
r0.setErrCause(r1)
|
||
|
goto L57
|
||
|
L38:
|
||
|
com.kofax.kmc.ken.engines.data.Image$ImageRep r4 = r7.getImageRepresentation()
|
||
|
com.kofax.kmc.ken.engines.data.Image$ImageRep r5 = com.kofax.kmc.ken.engines.data.Image.ImageRep.IMAGE_REP_FILE
|
||
|
if (r4 != r5) goto L4b
|
||
|
com.kofax.kmc.ken.engines.data.Image$ImageFileRep r1 = r7.getImageFileRep()
|
||
|
com.kofax.kmc.ken.engines.data.Image$ImageFileRep r2 = com.kofax.kmc.ken.engines.data.Image.ImageFileRep.FILE_BUFFERED
|
||
|
if (r1 != r2) goto L57
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r0 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_BC_IMAGE_BUFFERED
|
||
|
goto L57
|
||
|
L4b:
|
||
|
com.kofax.kmc.ken.engines.data.Image$ImageRep r4 = r7.getImageRepresentation()
|
||
|
com.kofax.kmc.ken.engines.data.Image$ImageRep r5 = com.kofax.kmc.ken.engines.data.Image.ImageRep.IMAGE_REP_BOTH
|
||
|
if (r4 != r5) goto L55
|
||
|
r2 = r2 ^ r1
|
||
|
goto L58
|
||
|
L55:
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r0 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_BC_NO_REPRESENTATION
|
||
|
L57:
|
||
|
r2 = r3
|
||
|
L58:
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r1 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_SUCCESS
|
||
|
if (r0 != r1) goto L87
|
||
|
if (r2 == 0) goto L6c
|
||
|
android.graphics.Bitmap r7 = r7.getImageBitmap()
|
||
|
if (r7 != 0) goto L87
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r0 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_ED_NOIMAGE
|
||
|
java.lang.String r7 = "imageBitmap field is null"
|
||
|
r0.setErrCause(r7)
|
||
|
goto L87
|
||
|
L6c:
|
||
|
java.lang.String r7 = r7.getImageFilePath()
|
||
|
if (r7 != 0) goto L7a
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r0 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_ED_FILEPATH
|
||
|
java.lang.String r7 = "imageFilePath field is null"
|
||
|
r0.setErrCause(r7)
|
||
|
goto L87
|
||
|
L7a:
|
||
|
java.io.File r1 = new java.io.File
|
||
|
r1.<init>(r7)
|
||
|
boolean r7 = r1.exists()
|
||
|
if (r7 != 0) goto L87
|
||
|
com.kofax.kmc.kut.utilities.error.ErrorInfo r0 = com.kofax.kmc.kut.utilities.error.ErrorInfo.KMC_GN_FILE_NOT_FOUND
|
||
|
L87:
|
||
|
return r0
|
||
|
*/
|
||
|
throw new UnsupportedOperationException("Method not decompiled: com.kofax.kmc.ken.engines.BarCodeReader.b(com.kofax.kmc.ken.engines.data.Image):com.kofax.kmc.kut.utilities.error.ErrorInfo");
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: private */
|
||
|
public int a(Symbology[] symbologyArr) {
|
||
|
int i = 0;
|
||
|
for (Symbology symbology : symbologyArr) {
|
||
|
i |= symbology.u;
|
||
|
}
|
||
|
return i;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: private */
|
||
|
public ErrorInfo a(int i, RecognitionContext recognitionContext) {
|
||
|
return i != 0 ? ErrorInfo.KMC_BC_UNKNOWN : ErrorInfo.KMC_SUCCESS;
|
||
|
}
|
||
|
|
||
|
private static void a() {
|
||
|
if (!Licensing.isSdkLicensed(Licensing.LicenseType.BARCODE_CAPTURE)) {
|
||
|
throw new KmcRuntimeException(ErrorInfo.KMC_UT_LICENSE_BARCODE_CAPTURE);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void setMaxBarcodes(int i) {
|
||
|
a(i);
|
||
|
}
|
||
|
|
||
|
public void addBarcodeReadCompleteEventListener(BarcodeReadCompleteListener barcodeReadCompleteListener) {
|
||
|
if (barcodeReadCompleteListener == null) {
|
||
|
throw new KmcRuntimeException(ErrorInfo.KMC_BC_UNKNOWN);
|
||
|
}
|
||
|
if (this.f.contains(barcodeReadCompleteListener)) {
|
||
|
return;
|
||
|
}
|
||
|
this.f.add(barcodeReadCompleteListener);
|
||
|
}
|
||
|
|
||
|
public void removeBarcodeReadCompleteEventListener(BarcodeReadCompleteListener barcodeReadCompleteListener) {
|
||
|
if (barcodeReadCompleteListener != null) {
|
||
|
this.f.remove(barcodeReadCompleteListener);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* loaded from: classes3.dex */
|
||
|
public static class BarcodeReadCompleteEvent extends EventObject {
|
||
|
private static final long serialVersionUID = 5157442993015269738L;
|
||
|
private ErrorInfo e;
|
||
|
private Image t;
|
||
|
|
||
|
public BarcodeReadCompleteEvent(Object obj, ErrorInfo errorInfo, Image image) {
|
||
|
super(obj);
|
||
|
this.e = errorInfo;
|
||
|
this.t = image;
|
||
|
}
|
||
|
|
||
|
public ErrorInfo getStatus() {
|
||
|
return this.e;
|
||
|
}
|
||
|
|
||
|
public Image getImage() {
|
||
|
return this.t;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* loaded from: classes3.dex */
|
||
|
public enum Symbology {
|
||
|
Code128(1),
|
||
|
Ean(6),
|
||
|
Upc(24),
|
||
|
Code39(32),
|
||
|
Code25(64),
|
||
|
Code93(512),
|
||
|
Codabar(1024),
|
||
|
Postnet(4096),
|
||
|
Datamatrix(PKIFailureInfo.badCertTemplate),
|
||
|
Pdf417(PKIFailureInfo.badSenderNonce),
|
||
|
QRCode(4194304);
|
||
|
|
||
|
private final int u;
|
||
|
|
||
|
public static BarCodeType getBarCodeType(int i) {
|
||
|
if (i == 1) {
|
||
|
return BarCodeType.CODE128;
|
||
|
}
|
||
|
if (i != 2) {
|
||
|
switch (i) {
|
||
|
case 4:
|
||
|
break;
|
||
|
case 8:
|
||
|
case 16:
|
||
|
return BarCodeType.UPC;
|
||
|
case 32:
|
||
|
return BarCodeType.CODE39;
|
||
|
case 64:
|
||
|
return BarCodeType.CODE25;
|
||
|
case 512:
|
||
|
return BarCodeType.CODE93;
|
||
|
case 1024:
|
||
|
return BarCodeType.CODABAR;
|
||
|
case 4096:
|
||
|
return BarCodeType.POSTNET;
|
||
|
case PKIFailureInfo.badCertTemplate /* 1048576 */:
|
||
|
return BarCodeType.DATAMATRIX;
|
||
|
case PKIFailureInfo.badSenderNonce /* 2097152 */:
|
||
|
return BarCodeType.PDF417;
|
||
|
case 4194304:
|
||
|
return BarCodeType.QR;
|
||
|
default:
|
||
|
return BarCodeType.UNKNOWN;
|
||
|
}
|
||
|
}
|
||
|
return BarCodeType.EAN;
|
||
|
}
|
||
|
|
||
|
Symbology(int i) {
|
||
|
this.u = i;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Enum visitor error
|
||
|
jadx.core.utils.exceptions.JadxRuntimeException: Init of enum field 'ALL' uses external variables
|
||
|
at jadx.core.dex.visitors.EnumVisitor.createEnumFieldByConstructor(EnumVisitor.java:451)
|
||
|
at jadx.core.dex.visitors.EnumVisitor.processEnumFieldByRegister(EnumVisitor.java:395)
|
||
|
at jadx.core.dex.visitors.EnumVisitor.extractEnumFieldsFromFilledArray(EnumVisitor.java:324)
|
||
|
at jadx.core.dex.visitors.EnumVisitor.extractEnumFieldsFromInsn(EnumVisitor.java:262)
|
||
|
at jadx.core.dex.visitors.EnumVisitor.convertToEnum(EnumVisitor.java:151)
|
||
|
at jadx.core.dex.visitors.EnumVisitor.visit(EnumVisitor.java:100)
|
||
|
*/
|
||
|
/* JADX WARN: Failed to restore enum class, 'enum' modifier and super class removed */
|
||
|
/* loaded from: classes3.dex */
|
||
|
public static final class Direction {
|
||
|
public static final Direction ALL;
|
||
|
public static final Direction BOTTOM_UP;
|
||
|
public static final Direction LEFT_RIGHT;
|
||
|
public static final Direction RIGHT_LEFT;
|
||
|
public static final Direction TOP_DOWN;
|
||
|
private static final Direction[] v;
|
||
|
private final int u;
|
||
|
|
||
|
public static Direction valueOf(String str) {
|
||
|
return (Direction) Enum.valueOf(Direction.class, str);
|
||
|
}
|
||
|
|
||
|
public static Direction[] values() {
|
||
|
return (Direction[]) v.clone();
|
||
|
}
|
||
|
|
||
|
static {
|
||
|
Direction direction = new Direction("LEFT_RIGHT", 0, 1);
|
||
|
LEFT_RIGHT = direction;
|
||
|
Direction direction2 = new Direction("RIGHT_LEFT", 1, 4);
|
||
|
RIGHT_LEFT = direction2;
|
||
|
Direction direction3 = new Direction("TOP_DOWN", 2, 2);
|
||
|
TOP_DOWN = direction3;
|
||
|
Direction direction4 = new Direction("BOTTOM_UP", 3, 8);
|
||
|
BOTTOM_UP = direction4;
|
||
|
Direction direction5 = new Direction("ALL", 4, direction.u | direction2.u | direction3.u | direction4.u);
|
||
|
ALL = direction5;
|
||
|
v = new Direction[]{direction, direction2, direction3, direction4, direction5};
|
||
|
}
|
||
|
|
||
|
private Direction(String str, int i, int i2) {
|
||
|
this.u = i2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void a(int i) {
|
||
|
if (i <= 0) {
|
||
|
throw new IllegalArgumentException("maxBarcodes <= 0: ".concat(String.valueOf(i)));
|
||
|
}
|
||
|
this.b = i;
|
||
|
}
|
||
|
|
||
|
public void setSearchSymbology(Symbology[] symbologyArr) {
|
||
|
this._symbology = symbologyArr;
|
||
|
}
|
||
|
|
||
|
public void setSearchDirections(Direction direction) {
|
||
|
this.c = direction;
|
||
|
}
|
||
|
|
||
|
public Symbology[] getSearchSymbology() {
|
||
|
return this._symbology;
|
||
|
}
|
||
|
|
||
|
public Direction getSearchDirections() {
|
||
|
return this.c;
|
||
|
}
|
||
|
|
||
|
public int getMaxBarcodes() {
|
||
|
return this.b;
|
||
|
}
|
||
|
}
|