jimu-decompiled/sources/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java
2025-05-13 19:24:51 +02:00

654 lines
22 KiB
Java

package com.google.zxing.oned.rss.expanded;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.DecodeHintType;
import com.google.zxing.FormatException;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.ResultPoint;
import com.google.zxing.common.BitArray;
import com.google.zxing.common.detector.MathUtils;
import com.google.zxing.oned.OneDReader;
import com.google.zxing.oned.rss.AbstractRSSReader;
import com.google.zxing.oned.rss.DataCharacter;
import com.google.zxing.oned.rss.FinderPattern;
import com.google.zxing.oned.rss.RSSUtils;
import com.google.zxing.oned.rss.expanded.decoders.AbstractExpandedDecoder;
import com.twitter.sdk.android.core.TwitterAuthConfig;
import com.ubt.jimu.base.entities.Constant;
import com.ubtrobot.jimu.robotapi.PeripheralType;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/* loaded from: classes.dex */
public final class RSSExpandedReader extends AbstractRSSReader {
private static final int[] k = {7, 5, 4, 3, 1};
private static final int[] l = {4, 20, 52, 104, 204};
private static final int[] m = {0, 348, 1388, 2948, 3988};
private static final int[][] n = {new int[]{1, 8, 4, 1}, new int[]{3, 6, 4, 1}, new int[]{3, 4, 6, 1}, new int[]{3, 2, 8, 1}, new int[]{2, 6, 5, 1}, new int[]{2, 2, 9, 1}};
private static final int[][] o = {new int[]{1, 3, 9, 27, 81, 32, 96, 77}, new int[]{20, 60, 180, 118, 143, 7, 21, 63}, new int[]{189, 145, 13, 39, 117, TwitterAuthConfig.DEFAULT_AUTH_REQUEST_CODE, 209, 205}, new int[]{193, 157, 49, 147, 19, 57, 171, 91}, new int[]{62, 186, 136, 197, 169, 85, 44, 132}, new int[]{185, 133, 188, 142, 4, 12, 36, 108}, new int[]{113, PeripheralType.SERVO, 173, 97, 80, 29, 87, 50}, new int[]{150, 28, 84, 41, 123, 158, 52, 156}, new int[]{46, 138, 203, 187, 139, 206, 196, 166}, new int[]{76, 17, 51, 153, 37, 111, 122, 155}, new int[]{43, 129, 176, 106, 107, 110, 119, 146}, new int[]{16, 48, 144, 10, 30, 90, 59, 177}, new int[]{109, 116, 137, 200, 178, 112, 125, 164}, new int[]{70, 210, 208, Constant.Publish.REQUEST_CODE_PICK_FILE, 184, 130, 179, 115}, new int[]{134, 191, 151, 31, 93, 68, 204, 190}, new int[]{148, 22, 66, 198, 172, 94, 71, 2}, new int[]{6, 18, 54, 162, 64, 192, 154, 40}, new int[]{120, 149, 25, 75, 14, 42, 126, 167}, new int[]{79, 26, 78, 23, 69, 207, 199, 175}, new int[]{103, 98, 83, 38, 114, 131, 182, 124}, new int[]{161, 61, 183, 127, 170, 88, 53, 159}, new int[]{55, 165, 73, 8, 24, 72, 5, 15}, new int[]{45, 135, 194, 160, 58, 174, 100, 89}};
private static final int[][] p = {new int[]{0, 0}, new int[]{0, 1, 1}, new int[]{0, 2, 1, 3}, new int[]{0, 4, 1, 3, 2}, new int[]{0, 4, 1, 3, 3, 5}, new int[]{0, 4, 1, 3, 4, 5, 5}, new int[]{0, 0, 1, 1, 2, 2, 3, 3}, new int[]{0, 0, 1, 1, 2, 2, 3, 4, 4}, new int[]{0, 0, 1, 1, 2, 2, 3, 4, 5, 5}, new int[]{0, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5}};
private final List<ExpandedPair> g = new ArrayList(11);
private final List<ExpandedRow> h = new ArrayList();
private final int[] i = new int[2];
private boolean j;
private static boolean b(List<ExpandedPair> list) {
boolean z;
for (int[] iArr : p) {
if (list.size() <= iArr.length) {
int i = 0;
while (true) {
if (i >= list.size()) {
z = true;
break;
}
if (list.get(i).a().c() != iArr[i]) {
z = false;
break;
}
i++;
}
if (z) {
return true;
}
}
}
return false;
}
private boolean g() {
ExpandedPair expandedPair = this.g.get(0);
DataCharacter b = expandedPair.b();
DataCharacter c = expandedPair.c();
if (c == null) {
return false;
}
int a = c.a();
int i = 2;
for (int i2 = 1; i2 < this.g.size(); i2++) {
ExpandedPair expandedPair2 = this.g.get(i2);
a += expandedPair2.b().a();
i++;
DataCharacter c2 = expandedPair2.c();
if (c2 != null) {
a += c2.a();
i++;
}
}
return ((i + (-4)) * 211) + (a % 211) == b.b();
}
@Override // com.google.zxing.oned.OneDReader
public Result a(int i, BitArray bitArray, Map<DecodeHintType, ?> map) throws NotFoundException, FormatException {
this.g.clear();
this.j = false;
try {
return a(a(i, bitArray));
} catch (NotFoundException unused) {
this.g.clear();
this.j = true;
return a(a(i, bitArray));
}
}
@Override // com.google.zxing.oned.OneDReader, com.google.zxing.Reader
public void reset() {
this.g.clear();
this.h.clear();
}
private void b(BitArray bitArray, List<ExpandedPair> list, int i) throws NotFoundException {
int[] b = b();
b[0] = 0;
b[1] = 0;
b[2] = 0;
b[3] = 0;
int h = bitArray.h();
if (i < 0) {
i = list.isEmpty() ? 0 : list.get(list.size() - 1).a().b()[1];
}
boolean z = list.size() % 2 != 0;
if (this.j) {
z = !z;
}
boolean z2 = false;
while (i < h) {
z2 = !bitArray.a(i);
if (!z2) {
break;
} else {
i++;
}
}
int i2 = i;
int i3 = 0;
while (i < h) {
if (bitArray.a(i) != z2) {
b[i3] = b[i3] + 1;
} else {
if (i3 == 3) {
if (z) {
b(b);
}
if (AbstractRSSReader.a(b)) {
int[] iArr = this.i;
iArr[0] = i2;
iArr[1] = i;
return;
}
if (z) {
b(b);
}
i2 += b[0] + b[1];
b[0] = b[2];
b[1] = b[3];
b[2] = 0;
b[3] = 0;
i3--;
} else {
i3++;
}
b[i3] = 1;
z2 = !z2;
}
i++;
}
throw NotFoundException.getNotFoundInstance();
}
List<ExpandedPair> a(int i, BitArray bitArray) throws NotFoundException {
boolean z = false;
while (!z) {
try {
this.g.add(a(bitArray, this.g, i));
} catch (NotFoundException e) {
if (this.g.isEmpty()) {
throw e;
}
z = true;
}
}
if (g()) {
return this.g;
}
boolean z2 = !this.h.isEmpty();
a(i, false);
if (z2) {
List<ExpandedPair> a = a(false);
if (a != null) {
return a;
}
List<ExpandedPair> a2 = a(true);
if (a2 != null) {
return a2;
}
}
throw NotFoundException.getNotFoundInstance();
}
private List<ExpandedPair> a(boolean z) {
List<ExpandedPair> list = null;
if (this.h.size() > 25) {
this.h.clear();
return null;
}
this.g.clear();
if (z) {
Collections.reverse(this.h);
}
try {
list = a(new ArrayList(), 0);
} catch (NotFoundException unused) {
}
if (z) {
Collections.reverse(this.h);
}
return list;
}
private List<ExpandedPair> a(List<ExpandedRow> list, int i) throws NotFoundException {
while (i < this.h.size()) {
ExpandedRow expandedRow = this.h.get(i);
this.g.clear();
Iterator<ExpandedRow> it = list.iterator();
while (it.hasNext()) {
this.g.addAll(it.next().a());
}
this.g.addAll(expandedRow.a());
if (b(this.g)) {
if (g()) {
return this.g;
}
ArrayList arrayList = new ArrayList(list);
arrayList.add(expandedRow);
try {
return a(arrayList, i + 1);
} catch (NotFoundException unused) {
continue;
}
}
i++;
}
throw NotFoundException.getNotFoundInstance();
}
private static void b(int[] iArr) {
int length = iArr.length;
for (int i = 0; i < length / 2; i++) {
int i2 = iArr[i];
int i3 = (length - i) - 1;
iArr[i] = iArr[i3];
iArr[i3] = i2;
}
}
private void a(int i, boolean z) {
boolean z2 = false;
int i2 = 0;
boolean z3 = false;
while (true) {
if (i2 >= this.h.size()) {
break;
}
ExpandedRow expandedRow = this.h.get(i2);
if (expandedRow.b() > i) {
z2 = expandedRow.a(this.g);
break;
} else {
z3 = expandedRow.a(this.g);
i2++;
}
}
if (z2 || z3 || a((Iterable<ExpandedPair>) this.g, (Iterable<ExpandedRow>) this.h)) {
return;
}
this.h.add(i2, new ExpandedRow(this.g, i, z));
a(this.g, this.h);
}
private static void a(List<ExpandedPair> list, List<ExpandedRow> list2) {
boolean z;
Iterator<ExpandedRow> it = list2.iterator();
while (it.hasNext()) {
ExpandedRow next = it.next();
if (next.a().size() != list.size()) {
Iterator<ExpandedPair> it2 = next.a().iterator();
while (true) {
z = false;
boolean z2 = true;
if (!it2.hasNext()) {
z = true;
break;
}
ExpandedPair next2 = it2.next();
Iterator<ExpandedPair> it3 = list.iterator();
while (true) {
if (!it3.hasNext()) {
z2 = false;
break;
} else if (next2.equals(it3.next())) {
break;
}
}
if (!z2) {
break;
}
}
if (z) {
it.remove();
}
}
}
}
private static boolean a(Iterable<ExpandedPair> iterable, Iterable<ExpandedRow> iterable2) {
boolean z;
boolean z2;
Iterator<ExpandedRow> it = iterable2.iterator();
do {
z = false;
if (!it.hasNext()) {
return false;
}
ExpandedRow next = it.next();
Iterator<ExpandedPair> it2 = iterable.iterator();
while (true) {
if (!it2.hasNext()) {
z = true;
break;
}
ExpandedPair next2 = it2.next();
Iterator<ExpandedPair> it3 = next.a().iterator();
while (true) {
if (!it3.hasNext()) {
z2 = false;
break;
}
if (next2.equals(it3.next())) {
z2 = true;
break;
}
}
if (!z2) {
break;
}
}
} while (!z);
return true;
}
static Result a(List<ExpandedPair> list) throws NotFoundException, FormatException {
String c = AbstractExpandedDecoder.a(BitArrayBuilder.a(list)).c();
ResultPoint[] a = list.get(0).a().a();
ResultPoint[] a2 = list.get(list.size() - 1).a().a();
return new Result(c, null, new ResultPoint[]{a[0], a[1], a2[0], a2[1]}, BarcodeFormat.RSS_EXPANDED);
}
private static int a(BitArray bitArray, int i) {
if (bitArray.a(i)) {
return bitArray.b(bitArray.c(i));
}
return bitArray.c(bitArray.b(i));
}
ExpandedPair a(BitArray bitArray, List<ExpandedPair> list, int i) throws NotFoundException {
FinderPattern a;
DataCharacter dataCharacter;
boolean z = list.size() % 2 == 0;
if (this.j) {
z = !z;
}
int i2 = -1;
boolean z2 = true;
do {
b(bitArray, list, i2);
a = a(bitArray, i, z);
if (a == null) {
i2 = a(bitArray, this.i[0]);
} else {
z2 = false;
}
} while (z2);
DataCharacter a2 = a(bitArray, a, z, true);
if (!list.isEmpty() && list.get(list.size() - 1).d()) {
throw NotFoundException.getNotFoundInstance();
}
try {
dataCharacter = a(bitArray, a, z, false);
} catch (NotFoundException unused) {
dataCharacter = null;
}
return new ExpandedPair(a2, dataCharacter, a, true);
}
private FinderPattern a(BitArray bitArray, int i, boolean z) {
int i2;
int i3;
int i4;
if (z) {
int i5 = this.i[0] - 1;
while (i5 >= 0 && !bitArray.a(i5)) {
i5--;
}
int i6 = i5 + 1;
int[] iArr = this.i;
int i7 = iArr[0] - i6;
i3 = iArr[1];
i4 = i6;
i2 = i7;
} else {
int[] iArr2 = this.i;
int i8 = iArr2[0];
int c = bitArray.c(iArr2[1] + 1);
i2 = c - this.i[1];
i3 = c;
i4 = i8;
}
int[] b = b();
System.arraycopy(b, 0, b, 1, b.length - 1);
b[0] = i2;
try {
return new FinderPattern(AbstractRSSReader.a(b, n), new int[]{i4, i3}, i4, i3, i);
} catch (NotFoundException unused) {
return null;
}
}
DataCharacter a(BitArray bitArray, FinderPattern finderPattern, boolean z, boolean z2) throws NotFoundException {
int[] a = a();
for (int i = 0; i < a.length; i++) {
a[i] = 0;
}
if (z2) {
OneDReader.b(bitArray, finderPattern.b()[0], a);
} else {
OneDReader.a(bitArray, finderPattern.b()[1], a);
int i2 = 0;
for (int length = a.length - 1; i2 < length; length--) {
int i3 = a[i2];
a[i2] = a[length];
a[length] = i3;
i2++;
}
}
float a2 = MathUtils.a(a) / 17.0f;
float f = (finderPattern.b()[1] - finderPattern.b()[0]) / 15.0f;
if (Math.abs(a2 - f) / f <= 0.3f) {
int[] e = e();
int[] c = c();
float[] f2 = f();
float[] d = d();
for (int i4 = 0; i4 < a.length; i4++) {
float f3 = (a[i4] * 1.0f) / a2;
int i5 = (int) (0.5f + f3);
int i6 = 8;
if (i5 <= 0) {
if (f3 < 0.3f) {
throw NotFoundException.getNotFoundInstance();
}
i6 = 1;
} else if (i5 <= 8) {
i6 = i5;
} else if (f3 > 8.7f) {
throw NotFoundException.getNotFoundInstance();
}
int i7 = i4 / 2;
if ((i4 & 1) == 0) {
e[i7] = i6;
f2[i7] = f3 - i6;
} else {
c[i7] = i6;
d[i7] = f3 - i6;
}
}
a(17);
int c2 = (((finderPattern.c() * 4) + (z ? 0 : 2)) + (!z2 ? 1 : 0)) - 1;
int i8 = 0;
int i9 = 0;
for (int length2 = e.length - 1; length2 >= 0; length2--) {
if (a(finderPattern, z, z2)) {
i8 += e[length2] * o[c2][length2 * 2];
}
i9 += e[length2];
}
int i10 = 0;
for (int length3 = c.length - 1; length3 >= 0; length3--) {
if (a(finderPattern, z, z2)) {
i10 += c[length3] * o[c2][(length3 * 2) + 1];
}
}
int i11 = i8 + i10;
if ((i9 & 1) == 0 && i9 <= 13 && i9 >= 4) {
int i12 = (13 - i9) / 2;
int i13 = k[i12];
return new DataCharacter((RSSUtils.a(e, i13, true) * l[i12]) + RSSUtils.a(c, 9 - i13, false) + m[i12], i11);
}
throw NotFoundException.getNotFoundInstance();
}
throw NotFoundException.getNotFoundInstance();
}
private static boolean a(FinderPattern finderPattern, boolean z, boolean z2) {
return (finderPattern.c() == 0 && z && z2) ? false : true;
}
/* JADX WARN: Removed duplicated region for block: B:12:0x0038 */
/* JADX WARN: Removed duplicated region for block: B:14:0x003b */
/* JADX WARN: Removed duplicated region for block: B:18:0x007b */
/* JADX WARN: Removed duplicated region for block: B:24:0x0090 */
/* JADX WARN: Removed duplicated region for block: B:26:0x009d */
/* JADX WARN: Removed duplicated region for block: B:31:0x00b2 */
/* JADX WARN: Removed duplicated region for block: B:33:? A[RETURN, SYNTHETIC] */
/* JADX WARN: Removed duplicated region for block: B:40:0x004f */
/* JADX WARN: Removed duplicated region for block: B:64:0x0033 */
/* JADX WARN: Removed duplicated region for block: B:65:0x0024 */
/* JADX WARN: Removed duplicated region for block: B:6:0x0021 */
/* JADX WARN: Removed duplicated region for block: B:9:0x0031 */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
private void a(int r11) throws com.google.zxing.NotFoundException {
/*
r10 = this;
int[] r0 = r10.e()
int r0 = com.google.zxing.common.detector.MathUtils.a(r0)
int[] r1 = r10.c()
int r1 = com.google.zxing.common.detector.MathUtils.a(r1)
r2 = 4
r3 = 13
r4 = 0
r5 = 1
if (r0 <= r3) goto L19
r6 = 1
goto L1e
L19:
r6 = 0
if (r0 >= r2) goto L1e
r7 = 1
goto L1f
L1e:
r7 = 0
L1f:
if (r1 <= r3) goto L24
r2 = 0
r3 = 1
goto L2a
L24:
if (r1 >= r2) goto L28
r2 = 1
goto L29
L28:
r2 = 0
L29:
r3 = 0
L2a:
int r8 = r0 + r1
int r8 = r8 - r11
r11 = r0 & 1
if (r11 != r5) goto L33
r11 = 1
goto L34
L33:
r11 = 0
L34:
r9 = r1 & 1
if (r9 != 0) goto L39
r4 = 1
L39:
if (r8 != r5) goto L4f
if (r11 == 0) goto L46
if (r4 != 0) goto L41
L3f:
r6 = 1
goto L79
L41:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
L46:
if (r4 == 0) goto L4a
r3 = 1
goto L79
L4a:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
L4f:
r9 = -1
if (r8 != r9) goto L66
if (r11 == 0) goto L5d
if (r4 != 0) goto L58
L56:
r7 = 1
goto L79
L58:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
L5d:
if (r4 == 0) goto L61
r2 = 1
goto L79
L61:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
L66:
if (r8 != 0) goto Lc3
if (r11 == 0) goto L77
if (r4 == 0) goto L72
if (r0 >= r1) goto L70
r3 = 1
goto L56
L70:
r2 = 1
goto L3f
L72:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
L77:
if (r4 != 0) goto Lbe
L79:
if (r7 == 0) goto L8e
if (r6 != 0) goto L89
int[] r11 = r10.e()
float[] r0 = r10.f()
com.google.zxing.oned.rss.AbstractRSSReader.b(r11, r0)
goto L8e
L89:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
L8e:
if (r6 == 0) goto L9b
int[] r11 = r10.e()
float[] r0 = r10.f()
com.google.zxing.oned.rss.AbstractRSSReader.a(r11, r0)
L9b:
if (r2 == 0) goto Lb0
if (r3 != 0) goto Lab
int[] r11 = r10.c()
float[] r0 = r10.f()
com.google.zxing.oned.rss.AbstractRSSReader.b(r11, r0)
goto Lb0
Lab:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
Lb0:
if (r3 == 0) goto Lbd
int[] r11 = r10.c()
float[] r0 = r10.d()
com.google.zxing.oned.rss.AbstractRSSReader.a(r11, r0)
Lbd:
return
Lbe:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
Lc3:
com.google.zxing.NotFoundException r11 = com.google.zxing.NotFoundException.getNotFoundInstance()
throw r11
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.zxing.oned.rss.expanded.RSSExpandedReader.a(int):void");
}
}