- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
78 lines
3.0 KiB
Java
78 lines
3.0 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 class Code93Writer 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_93) {
|
|
throw new IllegalArgumentException("Can only encode CODE_93, 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[] iArr = new int[9];
|
|
int length2 = ((str.length() + 4) * 9) + 1;
|
|
toIntArray(Code93Reader.CHARACTER_ENCODINGS[47], iArr);
|
|
boolean[] zArr = new boolean[length2];
|
|
int appendPattern = appendPattern(zArr, 0, iArr);
|
|
for (int i = 0; i < length; i++) {
|
|
toIntArray(Code93Reader.CHARACTER_ENCODINGS["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*".indexOf(str.charAt(i))], iArr);
|
|
appendPattern += appendPattern(zArr, appendPattern, iArr);
|
|
}
|
|
int computeChecksumIndex = computeChecksumIndex(str, 20);
|
|
int[] iArr2 = Code93Reader.CHARACTER_ENCODINGS;
|
|
toIntArray(iArr2[computeChecksumIndex], iArr);
|
|
int appendPattern2 = appendPattern + appendPattern(zArr, appendPattern, iArr);
|
|
toIntArray(iArr2[computeChecksumIndex(str + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*".charAt(computeChecksumIndex), 15)], iArr);
|
|
int appendPattern3 = appendPattern2 + appendPattern(zArr, appendPattern2, iArr);
|
|
toIntArray(iArr2[47], iArr);
|
|
zArr[appendPattern3 + appendPattern(zArr, appendPattern3, iArr)] = true;
|
|
return zArr;
|
|
}
|
|
|
|
private static void toIntArray(int i, int[] iArr) {
|
|
for (int i2 = 0; i2 < 9; i2++) {
|
|
int i3 = 1;
|
|
if (((1 << (8 - i2)) & i) == 0) {
|
|
i3 = 0;
|
|
}
|
|
iArr[i2] = i3;
|
|
}
|
|
}
|
|
|
|
public static int appendPattern(boolean[] zArr, int i, int[] iArr) {
|
|
int length = iArr.length;
|
|
int i2 = 0;
|
|
while (i2 < length) {
|
|
int i3 = i + 1;
|
|
zArr[i] = iArr[i2] != 0;
|
|
i2++;
|
|
i = i3;
|
|
}
|
|
return 9;
|
|
}
|
|
|
|
public static int computeChecksumIndex(String str, int i) {
|
|
int i2 = 0;
|
|
int i3 = 1;
|
|
for (int length = str.length() - 1; length >= 0; length--) {
|
|
i2 += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*".indexOf(str.charAt(length)) * i3;
|
|
i3++;
|
|
if (i3 > i) {
|
|
i3 = 1;
|
|
}
|
|
}
|
|
return i2 % 47;
|
|
}
|
|
}
|