Rabbit-R1/android (non root)/java/sources/com/google/zxing/oned/UPCEANExtension5Support.java
2024-05-21 17:08:36 -04:00

203 lines
6.9 KiB
Java

package com.google.zxing.oned;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.ResultMetadataType;
import com.google.zxing.ResultPoint;
import com.google.zxing.common.BitArray;
import java.util.EnumMap;
import java.util.Map;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public final class UPCEANExtension5Support {
private static final int[] CHECK_DIGIT_ENCODINGS = {24, 20, 18, 17, 12, 6, 3, 10, 9, 5};
private final int[] decodeMiddleCounters = new int[4];
private final StringBuilder decodeRowStringBuffer = new StringBuilder();
/* JADX INFO: Access modifiers changed from: package-private */
public Result decodeRow(int i, BitArray bitArray, int[] iArr) throws NotFoundException {
StringBuilder sb = this.decodeRowStringBuffer;
sb.setLength(0);
int decodeMiddle = decodeMiddle(bitArray, iArr, sb);
String sb2 = sb.toString();
Map<ResultMetadataType, Object> parseExtensionString = parseExtensionString(sb2);
float f = i;
Result result = new Result(sb2, null, new ResultPoint[]{new ResultPoint((iArr[0] + iArr[1]) / 2.0f, f), new ResultPoint(decodeMiddle, f)}, BarcodeFormat.UPC_EAN_EXTENSION);
if (parseExtensionString != null) {
result.putAllMetadata(parseExtensionString);
}
return result;
}
private int decodeMiddle(BitArray bitArray, int[] iArr, StringBuilder sb) throws NotFoundException {
int[] iArr2 = this.decodeMiddleCounters;
iArr2[0] = 0;
iArr2[1] = 0;
iArr2[2] = 0;
iArr2[3] = 0;
int size = bitArray.getSize();
int i = iArr[1];
int i2 = 0;
for (int i3 = 0; i3 < 5 && i < size; i3++) {
int decodeDigit = UPCEANReader.decodeDigit(bitArray, iArr2, i, UPCEANReader.L_AND_G_PATTERNS);
sb.append((char) ((decodeDigit % 10) + 48));
for (int i4 : iArr2) {
i += i4;
}
if (decodeDigit >= 10) {
i2 |= 1 << (4 - i3);
}
if (i3 != 4) {
i = bitArray.getNextUnset(bitArray.getNextSet(i));
}
}
if (sb.length() != 5) {
throw NotFoundException.getNotFoundInstance();
}
if (extensionChecksum(sb.toString()) == determineCheckDigit(i2)) {
return i;
}
throw NotFoundException.getNotFoundInstance();
}
private static int extensionChecksum(CharSequence charSequence) {
int length = charSequence.length();
int i = 0;
for (int i2 = length - 2; i2 >= 0; i2 -= 2) {
i += charSequence.charAt(i2) - '0';
}
int i3 = i * 3;
for (int i4 = length - 1; i4 >= 0; i4 -= 2) {
i3 += charSequence.charAt(i4) - '0';
}
return (i3 * 3) % 10;
}
private static int determineCheckDigit(int i) throws NotFoundException {
for (int i2 = 0; i2 < 10; i2++) {
if (i == CHECK_DIGIT_ENCODINGS[i2]) {
return i2;
}
}
throw NotFoundException.getNotFoundInstance();
}
private static Map<ResultMetadataType, Object> parseExtensionString(String str) {
String parseExtension5String;
if (str.length() != 5 || (parseExtension5String = parseExtension5String(str)) == null) {
return null;
}
EnumMap enumMap = new EnumMap(ResultMetadataType.class);
enumMap.put((EnumMap) ResultMetadataType.SUGGESTED_PRICE, (ResultMetadataType) parseExtension5String);
return enumMap;
}
/* JADX WARN: Can't fix incorrect switch cases order, some code will duplicate */
/* JADX WARN: Code restructure failed: missing block: B:22:0x003e, code lost:
if (r5.equals("90000") == false) goto L11;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private static java.lang.String parseExtension5String(java.lang.String r5) {
/*
r0 = 0
char r1 = r5.charAt(r0)
r2 = 48
r3 = 1
if (r1 == r2) goto L50
r2 = 53
if (r1 == r2) goto L4d
r2 = 57
java.lang.String r4 = ""
if (r1 == r2) goto L15
goto L52
L15:
r5.hashCode()
int r1 = r5.hashCode()
r2 = -1
switch(r1) {
case 54118329: goto L38;
case 54395376: goto L2d;
case 54395377: goto L22;
default: goto L20;
}
L20:
r0 = r2
goto L41
L22:
java.lang.String r0 = "99991"
boolean r0 = r5.equals(r0)
if (r0 != 0) goto L2b
goto L20
L2b:
r0 = 2
goto L41
L2d:
java.lang.String r0 = "99990"
boolean r0 = r5.equals(r0)
if (r0 != 0) goto L36
goto L20
L36:
r0 = r3
goto L41
L38:
java.lang.String r1 = "90000"
boolean r1 = r5.equals(r1)
if (r1 != 0) goto L41
goto L20
L41:
switch(r0) {
case 0: goto L4b;
case 1: goto L48;
case 2: goto L45;
default: goto L44;
}
L44:
goto L52
L45:
java.lang.String r5 = "0.00"
return r5
L48:
java.lang.String r5 = "Used"
return r5
L4b:
r5 = 0
return r5
L4d:
java.lang.String r4 = "$"
goto L52
L50:
java.lang.String r4 = "£"
L52:
java.lang.String r5 = r5.substring(r3)
int r5 = java.lang.Integer.parseInt(r5)
int r0 = r5 / 100
java.lang.String r0 = java.lang.String.valueOf(r0)
int r5 = r5 % 100
r1 = 10
if (r5 >= r1) goto L71
java.lang.String r1 = "0"
java.lang.String r5 = java.lang.String.valueOf(r5)
java.lang.String r5 = r1.concat(r5)
goto L75
L71:
java.lang.String r5 = java.lang.String.valueOf(r5)
L75:
java.lang.StringBuilder r1 = new java.lang.StringBuilder
r1.<init>()
java.lang.StringBuilder r1 = r1.append(r4)
java.lang.StringBuilder r0 = r1.append(r0)
r1 = 46
java.lang.StringBuilder r0 = r0.append(r1)
java.lang.StringBuilder r5 = r0.append(r5)
java.lang.String r5 = r5.toString()
return r5
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.zxing.oned.UPCEANExtension5Support.parseExtension5String(java.lang.String):java.lang.String");
}
}