269 lines
8.0 KiB
Java
269 lines
8.0 KiB
Java
package com.google.zxing.qrcode.detector;
|
|
|
|
import com.google.zxing.NotFoundException;
|
|
import com.google.zxing.ResultPointCallback;
|
|
import com.google.zxing.common.BitMatrix;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes.dex */
|
|
final class AlignmentPatternFinder {
|
|
private final BitMatrix a;
|
|
private final int c;
|
|
private final int d;
|
|
private final int e;
|
|
private final int f;
|
|
private final float g;
|
|
private final ResultPointCallback i;
|
|
private final List<AlignmentPattern> b = new ArrayList(5);
|
|
private final int[] h = new int[3];
|
|
|
|
AlignmentPatternFinder(BitMatrix bitMatrix, int i, int i2, int i3, int i4, float f, ResultPointCallback resultPointCallback) {
|
|
this.a = bitMatrix;
|
|
this.c = i;
|
|
this.d = i2;
|
|
this.e = i3;
|
|
this.f = i4;
|
|
this.g = f;
|
|
this.i = resultPointCallback;
|
|
}
|
|
|
|
AlignmentPattern a() throws NotFoundException {
|
|
AlignmentPattern a;
|
|
AlignmentPattern a2;
|
|
int i = this.c;
|
|
int i2 = this.f;
|
|
int i3 = this.e + i;
|
|
int i4 = this.d + (i2 / 2);
|
|
int[] iArr = new int[3];
|
|
for (int i5 = 0; i5 < i2; i5++) {
|
|
int i6 = ((i5 & 1) == 0 ? (i5 + 1) / 2 : -((i5 + 1) / 2)) + i4;
|
|
iArr[0] = 0;
|
|
iArr[1] = 0;
|
|
iArr[2] = 0;
|
|
int i7 = i;
|
|
while (i7 < i3 && !this.a.b(i7, i6)) {
|
|
i7++;
|
|
}
|
|
int i8 = 0;
|
|
while (i7 < i3) {
|
|
if (!this.a.b(i7, i6)) {
|
|
if (i8 == 1) {
|
|
i8++;
|
|
}
|
|
iArr[i8] = iArr[i8] + 1;
|
|
} else if (i8 == 1) {
|
|
iArr[1] = iArr[1] + 1;
|
|
} else if (i8 != 2) {
|
|
i8++;
|
|
iArr[i8] = iArr[i8] + 1;
|
|
} else {
|
|
if (a(iArr) && (a2 = a(iArr, i6, i7)) != null) {
|
|
return a2;
|
|
}
|
|
iArr[0] = iArr[2];
|
|
iArr[1] = 1;
|
|
iArr[2] = 0;
|
|
i8 = 1;
|
|
}
|
|
i7++;
|
|
}
|
|
if (a(iArr) && (a = a(iArr, i6, i3)) != null) {
|
|
return a;
|
|
}
|
|
}
|
|
if (this.b.isEmpty()) {
|
|
throw NotFoundException.getNotFoundInstance();
|
|
}
|
|
return this.b.get(0);
|
|
}
|
|
|
|
private static float a(int[] iArr, int i) {
|
|
return (i - iArr[2]) - (iArr[1] / 2.0f);
|
|
}
|
|
|
|
private boolean a(int[] iArr) {
|
|
float f = this.g;
|
|
float f2 = f / 2.0f;
|
|
for (int i = 0; i < 3; i++) {
|
|
if (Math.abs(f - iArr[i]) >= f2) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:34:0x0062, code lost:
|
|
|
|
if (r2[1] <= r12) goto L34;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:35:0x0065, code lost:
|
|
|
|
if (r10 >= r1) goto L60;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:37:0x006b, code lost:
|
|
|
|
if (r0.b(r11, r10) != false) goto L61;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:39:0x006f, code lost:
|
|
|
|
if (r2[2] > r12) goto L62;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:40:0x0071, code lost:
|
|
|
|
r2[2] = r2[2] + 1;
|
|
r10 = r10 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:43:0x007b, code lost:
|
|
|
|
if (r2[2] <= r12) goto L43;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:44:0x007d, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:46:0x008f, code lost:
|
|
|
|
if ((java.lang.Math.abs(((r2[0] + r2[1]) + r2[2]) - r13) * 5) < (r13 * 2)) goto L46;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:47:0x0091, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:49:0x0096, code lost:
|
|
|
|
if (a(r2) == false) goto L50;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:51:0x009c, code lost:
|
|
|
|
return a(r2, r10);
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct code enable 'Show inconsistent code' option in preferences
|
|
*/
|
|
private float a(int r10, int r11, int r12, int r13) {
|
|
/*
|
|
r9 = this;
|
|
com.google.zxing.common.BitMatrix r0 = r9.a
|
|
int r1 = r0.i()
|
|
int[] r2 = r9.h
|
|
r3 = 0
|
|
r2[r3] = r3
|
|
r4 = 1
|
|
r2[r4] = r3
|
|
r5 = 2
|
|
r2[r5] = r3
|
|
r6 = r10
|
|
L12:
|
|
if (r6 < 0) goto L26
|
|
boolean r7 = r0.b(r11, r6)
|
|
if (r7 == 0) goto L26
|
|
r7 = r2[r4]
|
|
if (r7 > r12) goto L26
|
|
r7 = r2[r4]
|
|
int r7 = r7 + r4
|
|
r2[r4] = r7
|
|
int r6 = r6 + (-1)
|
|
goto L12
|
|
L26:
|
|
r7 = 2143289344(0x7fc00000, float:NaN)
|
|
if (r6 < 0) goto L9d
|
|
r8 = r2[r4]
|
|
if (r8 <= r12) goto L30
|
|
goto L9d
|
|
L30:
|
|
if (r6 < 0) goto L44
|
|
boolean r8 = r0.b(r11, r6)
|
|
if (r8 != 0) goto L44
|
|
r8 = r2[r3]
|
|
if (r8 > r12) goto L44
|
|
r8 = r2[r3]
|
|
int r8 = r8 + r4
|
|
r2[r3] = r8
|
|
int r6 = r6 + (-1)
|
|
goto L30
|
|
L44:
|
|
r6 = r2[r3]
|
|
if (r6 <= r12) goto L49
|
|
return r7
|
|
L49:
|
|
int r10 = r10 + r4
|
|
L4a:
|
|
if (r10 >= r1) goto L5e
|
|
boolean r6 = r0.b(r11, r10)
|
|
if (r6 == 0) goto L5e
|
|
r6 = r2[r4]
|
|
if (r6 > r12) goto L5e
|
|
r6 = r2[r4]
|
|
int r6 = r6 + r4
|
|
r2[r4] = r6
|
|
int r10 = r10 + 1
|
|
goto L4a
|
|
L5e:
|
|
if (r10 == r1) goto L9d
|
|
r6 = r2[r4]
|
|
if (r6 <= r12) goto L65
|
|
goto L9d
|
|
L65:
|
|
if (r10 >= r1) goto L79
|
|
boolean r6 = r0.b(r11, r10)
|
|
if (r6 != 0) goto L79
|
|
r6 = r2[r5]
|
|
if (r6 > r12) goto L79
|
|
r6 = r2[r5]
|
|
int r6 = r6 + r4
|
|
r2[r5] = r6
|
|
int r10 = r10 + 1
|
|
goto L65
|
|
L79:
|
|
r11 = r2[r5]
|
|
if (r11 <= r12) goto L7e
|
|
return r7
|
|
L7e:
|
|
r11 = r2[r3]
|
|
r12 = r2[r4]
|
|
int r11 = r11 + r12
|
|
r12 = r2[r5]
|
|
int r11 = r11 + r12
|
|
int r11 = r11 - r13
|
|
int r11 = java.lang.Math.abs(r11)
|
|
int r11 = r11 * 5
|
|
int r13 = r13 * 2
|
|
if (r11 < r13) goto L92
|
|
return r7
|
|
L92:
|
|
boolean r11 = r9.a(r2)
|
|
if (r11 == 0) goto L9d
|
|
float r10 = a(r2, r10)
|
|
return r10
|
|
L9d:
|
|
return r7
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.google.zxing.qrcode.detector.AlignmentPatternFinder.a(int, int, int, int):float");
|
|
}
|
|
|
|
private AlignmentPattern a(int[] iArr, int i, int i2) {
|
|
int i3 = iArr[0] + iArr[1] + iArr[2];
|
|
float a = a(iArr, i2);
|
|
float a2 = a(i, (int) a, iArr[1] * 2, i3);
|
|
if (Float.isNaN(a2)) {
|
|
return null;
|
|
}
|
|
float f = ((iArr[0] + iArr[1]) + iArr[2]) / 3.0f;
|
|
for (AlignmentPattern alignmentPattern : this.b) {
|
|
if (alignmentPattern.a(f, a2, a)) {
|
|
return alignmentPattern.b(a2, a, f);
|
|
}
|
|
}
|
|
AlignmentPattern alignmentPattern2 = new AlignmentPattern(a, a2, f);
|
|
this.b.add(alignmentPattern2);
|
|
ResultPointCallback resultPointCallback = this.i;
|
|
if (resultPointCallback == null) {
|
|
return null;
|
|
}
|
|
resultPointCallback.a(alignmentPattern2);
|
|
return null;
|
|
}
|
|
}
|