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

128 lines
5.3 KiB
Java

package com.google.zxing.oned;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import java.util.Map;
/* loaded from: classes.dex */
public final class Code39Writer extends OneDimensionalCodeWriter {
private static String b(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) {
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 - 1) + 65));
} else if (charAt < ' ') {
sb.append('%');
sb.append((char) ((charAt - 27) + 65));
} else if (charAt <= ',' || charAt == '/' || charAt == ':') {
sb.append('/');
sb.append((char) ((charAt - '!') + 65));
} else if (charAt <= '9') {
sb.append((char) ((charAt - '0') + 48));
} else if (charAt <= '?') {
sb.append('%');
sb.append((char) ((charAt - ';') + 70));
} else if (charAt <= 'Z') {
sb.append((char) ((charAt - 'A') + 65));
} else if (charAt <= '_') {
sb.append('%');
sb.append((char) ((charAt - '[') + 75));
} else if (charAt <= 'z') {
sb.append('+');
sb.append((char) ((charAt - 'a') + 65));
} else {
if (charAt > 127) {
throw new IllegalArgumentException("Requested content contains a non-encodable character: '" + str.charAt(i) + "'");
}
sb.append('%');
sb.append((char) ((charAt - '{') + 80));
}
}
}
sb.append(charAt);
} else {
sb.append("%U");
}
}
return sb.toString();
}
@Override // com.google.zxing.oned.OneDimensionalCodeWriter, com.google.zxing.Writer
public BitMatrix a(String str, BarcodeFormat barcodeFormat, int i, int i2, Map<EncodeHintType, ?> map) throws WriterException {
if (barcodeFormat == BarcodeFormat.CODE_39) {
return super.a(str, barcodeFormat, i, i2, map);
}
throw new IllegalArgumentException("Can only encode CODE_39, but got ".concat(String.valueOf(barcodeFormat)));
}
@Override // com.google.zxing.oned.OneDimensionalCodeWriter
public boolean[] a(String str) {
int length = str.length();
if (length <= 80) {
int i = 0;
while (true) {
if (i >= length) {
break;
}
if ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%".indexOf(str.charAt(i)) < 0) {
str = b(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;
int i3 = 0;
while (i3 < length) {
a(Code39Reader.e["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%".indexOf(str.charAt(i3))], iArr);
int i4 = i2;
for (int i5 = 0; i5 < 9; i5++) {
i4 += iArr[i5];
}
i3++;
i2 = i4;
}
boolean[] zArr = new boolean[i2];
a(148, iArr);
int a = OneDimensionalCodeWriter.a(zArr, 0, iArr, true);
int[] iArr2 = {1};
int a2 = a + OneDimensionalCodeWriter.a(zArr, a, iArr2, false);
for (int i6 = 0; i6 < length; i6++) {
a(Code39Reader.e["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%".indexOf(str.charAt(i6))], iArr);
int a3 = a2 + OneDimensionalCodeWriter.a(zArr, a2, iArr, true);
a2 = a3 + OneDimensionalCodeWriter.a(zArr, a3, iArr2, false);
}
a(148, iArr);
OneDimensionalCodeWriter.a(zArr, a2, iArr, true);
return zArr;
}
throw new IllegalArgumentException("Requested contents should be less than 80 digits long, but got ".concat(String.valueOf(length)));
}
private static void a(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;
}
}
}