630 lines
20 KiB
Java
630 lines
20 KiB
Java
package com.google.zxing.qrcode.detector;
|
|
|
|
import com.google.zxing.DecodeHintType;
|
|
import com.google.zxing.NotFoundException;
|
|
import com.google.zxing.ResultPoint;
|
|
import com.google.zxing.ResultPointCallback;
|
|
import com.google.zxing.common.BitMatrix;
|
|
import java.io.Serializable;
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.Comparator;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class FinderPatternFinder {
|
|
private final BitMatrix a;
|
|
private boolean c;
|
|
private final ResultPointCallback e;
|
|
private final List<FinderPattern> b = new ArrayList();
|
|
private final int[] d = new int[5];
|
|
|
|
private static final class CenterComparator implements Serializable, Comparator<FinderPattern> {
|
|
private final float a;
|
|
|
|
@Override // java.util.Comparator
|
|
/* renamed from: a, reason: merged with bridge method [inline-methods] */
|
|
public int compare(FinderPattern finderPattern, FinderPattern finderPattern2) {
|
|
int compare = Integer.compare(finderPattern2.c(), finderPattern.c());
|
|
return compare == 0 ? Float.compare(Math.abs(finderPattern.d() - this.a), Math.abs(finderPattern2.d() - this.a)) : compare;
|
|
}
|
|
|
|
private CenterComparator(float f) {
|
|
this.a = f;
|
|
}
|
|
}
|
|
|
|
private static final class FurthestFromAverageComparator implements Serializable, Comparator<FinderPattern> {
|
|
private final float a;
|
|
|
|
@Override // java.util.Comparator
|
|
/* renamed from: a, reason: merged with bridge method [inline-methods] */
|
|
public int compare(FinderPattern finderPattern, FinderPattern finderPattern2) {
|
|
return Float.compare(Math.abs(finderPattern2.d() - this.a), Math.abs(finderPattern.d() - this.a));
|
|
}
|
|
|
|
private FurthestFromAverageComparator(float f) {
|
|
this.a = f;
|
|
}
|
|
}
|
|
|
|
public FinderPatternFinder(BitMatrix bitMatrix, ResultPointCallback resultPointCallback) {
|
|
this.a = bitMatrix;
|
|
this.e = resultPointCallback;
|
|
}
|
|
|
|
private int[] b() {
|
|
a(this.d);
|
|
return this.d;
|
|
}
|
|
|
|
protected static boolean c(int[] iArr) {
|
|
int i = 0;
|
|
for (int i2 = 0; i2 < 5; i2++) {
|
|
int i3 = iArr[i2];
|
|
if (i3 == 0) {
|
|
return false;
|
|
}
|
|
i += i3;
|
|
}
|
|
if (i < 7) {
|
|
return false;
|
|
}
|
|
float f = i / 7.0f;
|
|
float f2 = f / 2.0f;
|
|
return Math.abs(f - ((float) iArr[0])) < f2 && Math.abs(f - ((float) iArr[1])) < f2 && Math.abs((f * 3.0f) - ((float) iArr[2])) < 3.0f * f2 && Math.abs(f - ((float) iArr[3])) < f2 && Math.abs(f - ((float) iArr[4])) < f2;
|
|
}
|
|
|
|
protected static boolean d(int[] iArr) {
|
|
int i = 0;
|
|
for (int i2 = 0; i2 < 5; i2++) {
|
|
int i3 = iArr[i2];
|
|
if (i3 == 0) {
|
|
return false;
|
|
}
|
|
i += i3;
|
|
}
|
|
if (i < 7) {
|
|
return false;
|
|
}
|
|
float f = i / 7.0f;
|
|
float f2 = f / 1.333f;
|
|
return Math.abs(f - ((float) iArr[0])) < f2 && Math.abs(f - ((float) iArr[1])) < f2 && Math.abs((f * 3.0f) - ((float) iArr[2])) < 3.0f * f2 && Math.abs(f - ((float) iArr[3])) < f2 && Math.abs(f - ((float) iArr[4])) < f2;
|
|
}
|
|
|
|
final FinderPatternInfo a(Map<DecodeHintType, ?> map) throws NotFoundException {
|
|
boolean z = map != null && map.containsKey(DecodeHintType.TRY_HARDER);
|
|
int i = this.a.i();
|
|
int k = this.a.k();
|
|
int i2 = (i * 3) / 388;
|
|
if (i2 < 3 || z) {
|
|
i2 = 3;
|
|
}
|
|
int[] iArr = new int[5];
|
|
int i3 = i2 - 1;
|
|
int i4 = i2;
|
|
boolean z2 = false;
|
|
while (i3 < i && !z2) {
|
|
a(iArr);
|
|
boolean z3 = z2;
|
|
int i5 = i4;
|
|
int i6 = 0;
|
|
int i7 = 0;
|
|
while (i6 < k) {
|
|
if (this.a.b(i6, i3)) {
|
|
if ((i7 & 1) == 1) {
|
|
i7++;
|
|
}
|
|
iArr[i7] = iArr[i7] + 1;
|
|
} else if ((i7 & 1) != 0) {
|
|
iArr[i7] = iArr[i7] + 1;
|
|
} else if (i7 == 4) {
|
|
if (!c(iArr)) {
|
|
b(iArr);
|
|
} else if (a(iArr, i3, i6)) {
|
|
if (this.c) {
|
|
z3 = c();
|
|
} else {
|
|
int a = a();
|
|
if (a > iArr[2]) {
|
|
i3 += (a - iArr[2]) - 2;
|
|
i6 = k - 1;
|
|
}
|
|
}
|
|
a(iArr);
|
|
i7 = 0;
|
|
i5 = 2;
|
|
} else {
|
|
b(iArr);
|
|
}
|
|
i7 = 3;
|
|
} else {
|
|
i7++;
|
|
iArr[i7] = iArr[i7] + 1;
|
|
}
|
|
i6++;
|
|
}
|
|
if (c(iArr) && a(iArr, i3, k)) {
|
|
int i8 = iArr[0];
|
|
if (this.c) {
|
|
i4 = i8;
|
|
z2 = c();
|
|
i3 += i4;
|
|
} else {
|
|
i4 = i8;
|
|
}
|
|
} else {
|
|
i4 = i5;
|
|
}
|
|
z2 = z3;
|
|
i3 += i4;
|
|
}
|
|
FinderPattern[] d = d();
|
|
ResultPoint.a(d);
|
|
return new FinderPatternInfo(d);
|
|
}
|
|
|
|
protected final void b(int[] iArr) {
|
|
iArr[0] = iArr[2];
|
|
iArr[1] = iArr[3];
|
|
iArr[2] = iArr[4];
|
|
iArr[3] = 1;
|
|
iArr[4] = 0;
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:21:0x003a, code lost:
|
|
|
|
if (r2[1] <= r13) goto L21;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:23:0x003f, code lost:
|
|
|
|
if (r3 < 0) goto L74;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:25:0x0045, code lost:
|
|
|
|
if (r0.b(r12, r3) == false) goto L72;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:27:0x0049, code lost:
|
|
|
|
if (r2[0] > r13) goto L73;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:28:0x004b, code lost:
|
|
|
|
r2[0] = r2[0] + 1;
|
|
r3 = r3 - 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:31:0x0055, code lost:
|
|
|
|
if (r2[0] <= r13) goto L31;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:32:0x0057, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:33:0x0058, code lost:
|
|
|
|
r11 = r11 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:34:0x0059, code lost:
|
|
|
|
if (r11 >= r1) goto L75;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:36:0x005f, code lost:
|
|
|
|
if (r0.b(r12, r11) == false) goto L76;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:37:0x0061, code lost:
|
|
|
|
r2[2] = r2[2] + 1;
|
|
r11 = r11 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:39:0x0069, code lost:
|
|
|
|
if (r11 != r1) goto L38;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:40:0x006b, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:42:0x006d, code lost:
|
|
|
|
if (r11 >= r1) goto L79;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:44:0x0073, code lost:
|
|
|
|
if (r0.b(r12, r11) != false) goto L77;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:46:0x0077, code lost:
|
|
|
|
if (r2[3] >= r13) goto L78;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:47:0x0079, code lost:
|
|
|
|
r2[3] = r2[3] + 1;
|
|
r11 = r11 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:49:0x0081, code lost:
|
|
|
|
if (r11 == r1) goto L66;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:51:0x0085, code lost:
|
|
|
|
if (r2[3] < r13) goto L49;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:53:0x0089, code lost:
|
|
|
|
if (r11 >= r1) goto L81;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:55:0x008f, code lost:
|
|
|
|
if (r0.b(r12, r11) == false) goto L82;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:57:0x0093, code lost:
|
|
|
|
if (r2[4] >= r13) goto L80;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:58:0x0095, code lost:
|
|
|
|
r2[4] = r2[4] + 1;
|
|
r11 = r11 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:61:0x009f, code lost:
|
|
|
|
if (r2[4] < r13) goto L59;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:62:0x00a1, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:64:0x00b9, code lost:
|
|
|
|
if ((java.lang.Math.abs(((((r2[0] + r2[1]) + r2[2]) + r2[3]) + r2[4]) - r14) * 5) < (r14 * 2)) goto L62;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:65:0x00bb, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:67:0x00c0, code lost:
|
|
|
|
if (c(r2) == false) goto L66;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:69:0x00c6, code lost:
|
|
|
|
return a(r2, r11);
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct code enable 'Show inconsistent code' option in preferences
|
|
*/
|
|
private float b(int r11, int r12, int r13, int r14) {
|
|
/*
|
|
Method dump skipped, instructions count: 200
|
|
To view this dump change 'Code comments level' option to 'DEBUG'
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.google.zxing.qrcode.detector.FinderPatternFinder.b(int, int, int, int):float");
|
|
}
|
|
|
|
private boolean c() {
|
|
int size = this.b.size();
|
|
float f = 0.0f;
|
|
int i = 0;
|
|
float f2 = 0.0f;
|
|
for (FinderPattern finderPattern : this.b) {
|
|
if (finderPattern.c() >= 2) {
|
|
i++;
|
|
f2 += finderPattern.d();
|
|
}
|
|
}
|
|
if (i < 3) {
|
|
return false;
|
|
}
|
|
float f3 = f2 / size;
|
|
Iterator<FinderPattern> it = this.b.iterator();
|
|
while (it.hasNext()) {
|
|
f += Math.abs(it.next().d() - f3);
|
|
}
|
|
return f <= f2 * 0.05f;
|
|
}
|
|
|
|
private FinderPattern[] d() throws NotFoundException {
|
|
int size = this.b.size();
|
|
if (size >= 3) {
|
|
float f = 0.0f;
|
|
if (size > 3) {
|
|
Iterator<FinderPattern> it = this.b.iterator();
|
|
float f2 = 0.0f;
|
|
float f3 = 0.0f;
|
|
while (it.hasNext()) {
|
|
float d = it.next().d();
|
|
f2 += d;
|
|
f3 += d * d;
|
|
}
|
|
float f4 = f2 / size;
|
|
float sqrt = (float) Math.sqrt((f3 / r0) - (f4 * f4));
|
|
Collections.sort(this.b, new FurthestFromAverageComparator(f4));
|
|
float max = Math.max(0.2f * f4, sqrt);
|
|
int i = 0;
|
|
while (i < this.b.size() && this.b.size() > 3) {
|
|
if (Math.abs(this.b.get(i).d() - f4) > max) {
|
|
this.b.remove(i);
|
|
i--;
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
if (this.b.size() > 3) {
|
|
Iterator<FinderPattern> it2 = this.b.iterator();
|
|
while (it2.hasNext()) {
|
|
f += it2.next().d();
|
|
}
|
|
Collections.sort(this.b, new CenterComparator(f / this.b.size()));
|
|
List<FinderPattern> list = this.b;
|
|
list.subList(3, list.size()).clear();
|
|
}
|
|
return new FinderPattern[]{this.b.get(0), this.b.get(1), this.b.get(2)};
|
|
}
|
|
throw NotFoundException.getNotFoundInstance();
|
|
}
|
|
|
|
private static float a(int[] iArr, int i) {
|
|
return ((i - iArr[4]) - iArr[3]) - (iArr[2] / 2.0f);
|
|
}
|
|
|
|
protected final void a(int[] iArr) {
|
|
for (int i = 0; i < iArr.length; i++) {
|
|
iArr[i] = 0;
|
|
}
|
|
}
|
|
|
|
private boolean a(int i, int i2) {
|
|
int i3;
|
|
int i4;
|
|
int i5;
|
|
int[] b = b();
|
|
int i6 = 0;
|
|
while (i >= i6 && i2 >= i6 && this.a.b(i2 - i6, i - i6)) {
|
|
b[2] = b[2] + 1;
|
|
i6++;
|
|
}
|
|
if (b[2] == 0) {
|
|
return false;
|
|
}
|
|
while (i >= i6 && i2 >= i6 && !this.a.b(i2 - i6, i - i6)) {
|
|
b[1] = b[1] + 1;
|
|
i6++;
|
|
}
|
|
if (b[1] == 0) {
|
|
return false;
|
|
}
|
|
while (i >= i6 && i2 >= i6 && this.a.b(i2 - i6, i - i6)) {
|
|
b[0] = b[0] + 1;
|
|
i6++;
|
|
}
|
|
if (b[0] == 0) {
|
|
return false;
|
|
}
|
|
int i7 = this.a.i();
|
|
int k = this.a.k();
|
|
int i8 = 1;
|
|
while (true) {
|
|
int i9 = i + i8;
|
|
if (i9 >= i7 || (i5 = i2 + i8) >= k || !this.a.b(i5, i9)) {
|
|
break;
|
|
}
|
|
b[2] = b[2] + 1;
|
|
i8++;
|
|
}
|
|
while (true) {
|
|
int i10 = i + i8;
|
|
if (i10 >= i7 || (i4 = i2 + i8) >= k || this.a.b(i4, i10)) {
|
|
break;
|
|
}
|
|
b[3] = b[3] + 1;
|
|
i8++;
|
|
}
|
|
if (b[3] == 0) {
|
|
return false;
|
|
}
|
|
while (true) {
|
|
int i11 = i + i8;
|
|
if (i11 >= i7 || (i3 = i2 + i8) >= k || !this.a.b(i3, i11)) {
|
|
break;
|
|
}
|
|
b[4] = b[4] + 1;
|
|
i8++;
|
|
}
|
|
if (b[4] == 0) {
|
|
return false;
|
|
}
|
|
return d(b);
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:21:0x003a, code lost:
|
|
|
|
if (r2[1] <= r13) goto L21;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:23:0x003f, code lost:
|
|
|
|
if (r3 < 0) goto L74;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:25:0x0045, code lost:
|
|
|
|
if (r0.b(r3, r12) == false) goto L72;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:27:0x0049, code lost:
|
|
|
|
if (r2[0] > r13) goto L73;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:28:0x004b, code lost:
|
|
|
|
r2[0] = r2[0] + 1;
|
|
r3 = r3 - 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:31:0x0055, code lost:
|
|
|
|
if (r2[0] <= r13) goto L31;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:32:0x0057, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:33:0x0058, code lost:
|
|
|
|
r11 = r11 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:34:0x0059, code lost:
|
|
|
|
if (r11 >= r1) goto L75;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:36:0x005f, code lost:
|
|
|
|
if (r0.b(r11, r12) == false) goto L76;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:37:0x0061, code lost:
|
|
|
|
r2[2] = r2[2] + 1;
|
|
r11 = r11 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:39:0x0069, code lost:
|
|
|
|
if (r11 != r1) goto L38;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:40:0x006b, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:42:0x006d, code lost:
|
|
|
|
if (r11 >= r1) goto L79;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:44:0x0073, code lost:
|
|
|
|
if (r0.b(r11, r12) != false) goto L77;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:46:0x0077, code lost:
|
|
|
|
if (r2[3] >= r13) goto L78;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:47:0x0079, code lost:
|
|
|
|
r2[3] = r2[3] + 1;
|
|
r11 = r11 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:49:0x0081, code lost:
|
|
|
|
if (r11 == r1) goto L66;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:51:0x0085, code lost:
|
|
|
|
if (r2[3] < r13) goto L49;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:53:0x0089, code lost:
|
|
|
|
if (r11 >= r1) goto L81;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:55:0x008f, code lost:
|
|
|
|
if (r0.b(r11, r12) == false) goto L82;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:57:0x0093, code lost:
|
|
|
|
if (r2[4] >= r13) goto L80;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:58:0x0095, code lost:
|
|
|
|
r2[4] = r2[4] + 1;
|
|
r11 = r11 + 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:61:0x009f, code lost:
|
|
|
|
if (r2[4] < r13) goto L59;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:62:0x00a1, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:64:0x00b7, code lost:
|
|
|
|
if ((java.lang.Math.abs(((((r2[0] + r2[1]) + r2[2]) + r2[3]) + r2[4]) - r14) * 5) < r14) goto L62;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:65:0x00b9, code lost:
|
|
|
|
return Float.NaN;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:67:0x00be, code lost:
|
|
|
|
if (c(r2) == false) goto L66;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:69:0x00c4, code lost:
|
|
|
|
return a(r2, r11);
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct code enable 'Show inconsistent code' option in preferences
|
|
*/
|
|
private float a(int r11, int r12, int r13, int r14) {
|
|
/*
|
|
Method dump skipped, instructions count: 198
|
|
To view this dump change 'Code comments level' option to 'DEBUG'
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.google.zxing.qrcode.detector.FinderPatternFinder.a(int, int, int, int):float");
|
|
}
|
|
|
|
protected final boolean a(int[] iArr, int i, int i2) {
|
|
boolean z = false;
|
|
int i3 = iArr[0] + iArr[1] + iArr[2] + iArr[3] + iArr[4];
|
|
int a = (int) a(iArr, i2);
|
|
float b = b(i, a, iArr[2], i3);
|
|
if (!Float.isNaN(b)) {
|
|
int i4 = (int) b;
|
|
float a2 = a(a, i4, iArr[2], i3);
|
|
if (!Float.isNaN(a2) && a(i4, (int) a2)) {
|
|
float f = i3 / 7.0f;
|
|
int i5 = 0;
|
|
while (true) {
|
|
if (i5 >= this.b.size()) {
|
|
break;
|
|
}
|
|
FinderPattern finderPattern = this.b.get(i5);
|
|
if (finderPattern.a(f, b, a2)) {
|
|
this.b.set(i5, finderPattern.b(b, a2, f));
|
|
z = true;
|
|
break;
|
|
}
|
|
i5++;
|
|
}
|
|
if (!z) {
|
|
FinderPattern finderPattern2 = new FinderPattern(a2, b, f);
|
|
this.b.add(finderPattern2);
|
|
ResultPointCallback resultPointCallback = this.e;
|
|
if (resultPointCallback != null) {
|
|
resultPointCallback.a(finderPattern2);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private int a() {
|
|
if (this.b.size() <= 1) {
|
|
return 0;
|
|
}
|
|
FinderPattern finderPattern = null;
|
|
for (FinderPattern finderPattern2 : this.b) {
|
|
if (finderPattern2.c() >= 2) {
|
|
if (finderPattern != null) {
|
|
this.c = true;
|
|
return ((int) (Math.abs(finderPattern.a() - finderPattern2.a()) - Math.abs(finderPattern.b() - finderPattern2.b()))) / 2;
|
|
}
|
|
finderPattern = finderPattern2;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
}
|