- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
121 lines
5.2 KiB
Java
121 lines
5.2 KiB
Java
package com.google.zxing.oned;
|
|
|
|
import com.google.zxing.BarcodeFormat;
|
|
import com.google.zxing.common.BitMatrix;
|
|
import java.util.Map;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public final class Code39Writer extends OneDimensionalCodeWriter {
|
|
@Override // com.google.zxing.oned.OneDimensionalCodeWriter, com.google.zxing.Writer
|
|
public BitMatrix encode(String str, BarcodeFormat barcodeFormat, int i, int i2, Map map) {
|
|
if (barcodeFormat != BarcodeFormat.CODE_39) {
|
|
throw new IllegalArgumentException("Can only encode CODE_39, but got ".concat(String.valueOf(barcodeFormat)));
|
|
}
|
|
return super.encode(str, barcodeFormat, i, i2, map);
|
|
}
|
|
|
|
@Override // com.google.zxing.oned.OneDimensionalCodeWriter
|
|
public boolean[] encode(String str) {
|
|
int length = str.length();
|
|
if (length > 80) {
|
|
throw new IllegalArgumentException("Requested contents should be less than 80 digits long, but got ".concat(String.valueOf(length)));
|
|
}
|
|
int i = 0;
|
|
while (true) {
|
|
if (i >= length) {
|
|
break;
|
|
}
|
|
if ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%".indexOf(str.charAt(i)) < 0) {
|
|
str = tryToConvertToExtendedMode(str);
|
|
length = str.length();
|
|
if (length > 80) {
|
|
throw new IllegalArgumentException("Requested contents should be less than 80 digits long, but got " + length + " (extended full ASCII mode)");
|
|
}
|
|
} else {
|
|
i++;
|
|
}
|
|
}
|
|
int[] iArr = new int[9];
|
|
int i2 = length + 25;
|
|
for (int i3 = 0; i3 < length; i3++) {
|
|
toIntArray(Code39Reader.CHARACTER_ENCODINGS["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%".indexOf(str.charAt(i3))], iArr);
|
|
for (int i4 = 0; i4 < 9; i4++) {
|
|
i2 += iArr[i4];
|
|
}
|
|
}
|
|
boolean[] zArr = new boolean[i2];
|
|
toIntArray(148, iArr);
|
|
int appendPattern = OneDimensionalCodeWriter.appendPattern(zArr, 0, iArr, true);
|
|
int[] iArr2 = {1};
|
|
int appendPattern2 = appendPattern + OneDimensionalCodeWriter.appendPattern(zArr, appendPattern, iArr2, false);
|
|
for (int i5 = 0; i5 < length; i5++) {
|
|
toIntArray(Code39Reader.CHARACTER_ENCODINGS["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%".indexOf(str.charAt(i5))], iArr);
|
|
int appendPattern3 = appendPattern2 + OneDimensionalCodeWriter.appendPattern(zArr, appendPattern2, iArr, true);
|
|
appendPattern2 = appendPattern3 + OneDimensionalCodeWriter.appendPattern(zArr, appendPattern3, iArr2, false);
|
|
}
|
|
toIntArray(148, iArr);
|
|
OneDimensionalCodeWriter.appendPattern(zArr, appendPattern2, iArr, true);
|
|
return zArr;
|
|
}
|
|
|
|
public static void toIntArray(int i, int[] iArr) {
|
|
for (int i2 = 0; i2 < 9; i2++) {
|
|
int i3 = 1;
|
|
if (((1 << (8 - i2)) & i) != 0) {
|
|
i3 = 2;
|
|
}
|
|
iArr[i2] = i3;
|
|
}
|
|
}
|
|
|
|
public static String tryToConvertToExtendedMode(String str) {
|
|
int length = str.length();
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < length; i++) {
|
|
char charAt = str.charAt(i);
|
|
if (charAt == 0) {
|
|
sb.append("%U");
|
|
} else {
|
|
if (charAt != ' ') {
|
|
if (charAt == '@') {
|
|
sb.append("%V");
|
|
} else if (charAt == '`') {
|
|
sb.append("%W");
|
|
} else if (charAt != '-' && charAt != '.') {
|
|
if (charAt <= 26) {
|
|
sb.append('$');
|
|
sb.append((char) (charAt + '@'));
|
|
} else if (charAt < ' ') {
|
|
sb.append('%');
|
|
sb.append((char) (charAt + '&'));
|
|
} else if (charAt <= ',' || charAt == '/' || charAt == ':') {
|
|
sb.append('/');
|
|
sb.append((char) (charAt + ' '));
|
|
} else if (charAt <= '9') {
|
|
sb.append(charAt);
|
|
} else if (charAt <= '?') {
|
|
sb.append('%');
|
|
sb.append((char) (charAt + 11));
|
|
} else if (charAt <= 'Z') {
|
|
sb.append(charAt);
|
|
} else if (charAt <= '_') {
|
|
sb.append('%');
|
|
sb.append((char) (charAt - 16));
|
|
} else if (charAt <= 'z') {
|
|
sb.append('+');
|
|
sb.append((char) (charAt - ' '));
|
|
} else if (charAt <= 127) {
|
|
sb.append('%');
|
|
sb.append((char) (charAt - '+'));
|
|
} else {
|
|
throw new IllegalArgumentException("Requested content contains a non-encodable character: '" + str.charAt(i) + "'");
|
|
}
|
|
}
|
|
}
|
|
sb.append(charAt);
|
|
}
|
|
}
|
|
return sb.toString();
|
|
}
|
|
}
|