271 lines
8.4 KiB
Java
271 lines
8.4 KiB
Java
package com.google.zxing.datamatrix.encoder;
|
|
|
|
import com.google.zxing.Dimension;
|
|
import java.util.Arrays;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class HighLevelEncoder {
|
|
private static char a(char c, int i) {
|
|
int i2 = c + ((i * 149) % 253) + 1;
|
|
if (i2 > 254) {
|
|
i2 -= 254;
|
|
}
|
|
return (char) i2;
|
|
}
|
|
|
|
static boolean b(char c) {
|
|
return c >= '0' && c <= '9';
|
|
}
|
|
|
|
static boolean c(char c) {
|
|
return c >= 128 && c <= 255;
|
|
}
|
|
|
|
private static boolean d(char c) {
|
|
if (c == ' ') {
|
|
return true;
|
|
}
|
|
if (c < '0' || c > '9') {
|
|
return c >= 'A' && c <= 'Z';
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private static boolean e(char c) {
|
|
return c >= ' ' && c <= '^';
|
|
}
|
|
|
|
private static boolean f(char c) {
|
|
if (c == ' ') {
|
|
return true;
|
|
}
|
|
if (c < '0' || c > '9') {
|
|
return c >= 'a' && c <= 'z';
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private static boolean g(char c) {
|
|
if (i(c) || c == ' ') {
|
|
return true;
|
|
}
|
|
if (c < '0' || c > '9') {
|
|
return c >= 'A' && c <= 'Z';
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private static boolean h(char c) {
|
|
return false;
|
|
}
|
|
|
|
private static boolean i(char c) {
|
|
return c == '\r' || c == '*' || c == '>';
|
|
}
|
|
|
|
public static String a(String str, SymbolShapeHint symbolShapeHint, Dimension dimension, Dimension dimension2) {
|
|
int i = 0;
|
|
Encoder[] encoderArr = {new ASCIIEncoder(), new C40Encoder(), new TextEncoder(), new X12Encoder(), new EdifactEncoder(), new Base256Encoder()};
|
|
EncoderContext encoderContext = new EncoderContext(str);
|
|
encoderContext.a(symbolShapeHint);
|
|
encoderContext.a(dimension, dimension2);
|
|
if (str.startsWith("[)>\u001e05\u001d") && str.endsWith("\u001e\u0004")) {
|
|
encoderContext.a((char) 236);
|
|
encoderContext.a(2);
|
|
encoderContext.f += 7;
|
|
} else if (str.startsWith("[)>\u001e06\u001d") && str.endsWith("\u001e\u0004")) {
|
|
encoderContext.a((char) 237);
|
|
encoderContext.a(2);
|
|
encoderContext.f += 7;
|
|
}
|
|
while (encoderContext.h()) {
|
|
encoderArr[i].a(encoderContext);
|
|
if (encoderContext.e() >= 0) {
|
|
i = encoderContext.e();
|
|
encoderContext.i();
|
|
}
|
|
}
|
|
int a = encoderContext.a();
|
|
encoderContext.k();
|
|
int a2 = encoderContext.g().a();
|
|
if (a < a2 && i != 0 && i != 5 && i != 4) {
|
|
encoderContext.a((char) 254);
|
|
}
|
|
StringBuilder b = encoderContext.b();
|
|
if (b.length() < a2) {
|
|
b.append((char) 129);
|
|
}
|
|
while (b.length() < a2) {
|
|
b.append(a((char) 129, b.length() + 1));
|
|
}
|
|
return encoderContext.b().toString();
|
|
}
|
|
|
|
static int a(CharSequence charSequence, int i, int i2) {
|
|
float[] fArr;
|
|
char c;
|
|
if (i >= charSequence.length()) {
|
|
return i2;
|
|
}
|
|
if (i2 == 0) {
|
|
fArr = new float[]{0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.25f};
|
|
} else {
|
|
fArr = new float[]{1.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.25f};
|
|
fArr[i2] = 0.0f;
|
|
}
|
|
int i3 = 0;
|
|
while (true) {
|
|
int i4 = i + i3;
|
|
if (i4 == charSequence.length()) {
|
|
byte[] bArr = new byte[6];
|
|
int[] iArr = new int[6];
|
|
int a = a(fArr, iArr, Integer.MAX_VALUE, bArr);
|
|
int a2 = a(bArr);
|
|
if (iArr[0] == a) {
|
|
return 0;
|
|
}
|
|
if (a2 == 1 && bArr[5] > 0) {
|
|
return 5;
|
|
}
|
|
if (a2 == 1 && bArr[4] > 0) {
|
|
return 4;
|
|
}
|
|
if (a2 != 1 || bArr[2] <= 0) {
|
|
return (a2 != 1 || bArr[3] <= 0) ? 1 : 3;
|
|
}
|
|
return 2;
|
|
}
|
|
char charAt = charSequence.charAt(i4);
|
|
i3++;
|
|
if (b(charAt)) {
|
|
fArr[0] = fArr[0] + 0.5f;
|
|
} else if (c(charAt)) {
|
|
fArr[0] = (float) Math.ceil(fArr[0]);
|
|
fArr[0] = fArr[0] + 2.0f;
|
|
} else {
|
|
fArr[0] = (float) Math.ceil(fArr[0]);
|
|
fArr[0] = fArr[0] + 1.0f;
|
|
}
|
|
if (d(charAt)) {
|
|
fArr[1] = fArr[1] + 0.6666667f;
|
|
} else if (c(charAt)) {
|
|
fArr[1] = fArr[1] + 2.6666667f;
|
|
} else {
|
|
fArr[1] = fArr[1] + 1.3333334f;
|
|
}
|
|
if (f(charAt)) {
|
|
fArr[2] = fArr[2] + 0.6666667f;
|
|
} else if (c(charAt)) {
|
|
fArr[2] = fArr[2] + 2.6666667f;
|
|
} else {
|
|
fArr[2] = fArr[2] + 1.3333334f;
|
|
}
|
|
if (g(charAt)) {
|
|
fArr[3] = fArr[3] + 0.6666667f;
|
|
} else if (c(charAt)) {
|
|
fArr[3] = fArr[3] + 4.3333335f;
|
|
} else {
|
|
fArr[3] = fArr[3] + 3.3333333f;
|
|
}
|
|
if (e(charAt)) {
|
|
fArr[4] = fArr[4] + 0.75f;
|
|
} else if (c(charAt)) {
|
|
fArr[4] = fArr[4] + 4.25f;
|
|
} else {
|
|
fArr[4] = fArr[4] + 3.25f;
|
|
}
|
|
if (h(charAt)) {
|
|
c = 5;
|
|
fArr[5] = fArr[5] + 4.0f;
|
|
} else {
|
|
c = 5;
|
|
fArr[5] = fArr[5] + 1.0f;
|
|
}
|
|
if (i3 >= 4) {
|
|
int[] iArr2 = new int[6];
|
|
byte[] bArr2 = new byte[6];
|
|
a(fArr, iArr2, Integer.MAX_VALUE, bArr2);
|
|
int a3 = a(bArr2);
|
|
if (iArr2[0] < iArr2[c] && iArr2[0] < iArr2[1] && iArr2[0] < iArr2[2] && iArr2[0] < iArr2[3] && iArr2[0] < iArr2[4]) {
|
|
return 0;
|
|
}
|
|
if (iArr2[5] < iArr2[0] || bArr2[1] + bArr2[2] + bArr2[3] + bArr2[4] == 0) {
|
|
return 5;
|
|
}
|
|
if (a3 == 1 && bArr2[4] > 0) {
|
|
return 4;
|
|
}
|
|
if (a3 == 1 && bArr2[2] > 0) {
|
|
return 2;
|
|
}
|
|
if (a3 == 1 && bArr2[3] > 0) {
|
|
return 3;
|
|
}
|
|
if (iArr2[1] + 1 < iArr2[0] && iArr2[1] + 1 < iArr2[5] && iArr2[1] + 1 < iArr2[4] && iArr2[1] + 1 < iArr2[2]) {
|
|
if (iArr2[1] < iArr2[3]) {
|
|
return 1;
|
|
}
|
|
if (iArr2[1] == iArr2[3]) {
|
|
for (int i5 = i + i3 + 1; i5 < charSequence.length(); i5++) {
|
|
char charAt2 = charSequence.charAt(i5);
|
|
if (i(charAt2)) {
|
|
return 3;
|
|
}
|
|
if (!g(charAt2)) {
|
|
break;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static int a(float[] fArr, int[] iArr, int i, byte[] bArr) {
|
|
Arrays.fill(bArr, (byte) 0);
|
|
int i2 = i;
|
|
for (int i3 = 0; i3 < 6; i3++) {
|
|
iArr[i3] = (int) Math.ceil(fArr[i3]);
|
|
int i4 = iArr[i3];
|
|
if (i2 > i4) {
|
|
Arrays.fill(bArr, (byte) 0);
|
|
i2 = i4;
|
|
}
|
|
if (i2 == i4) {
|
|
bArr[i3] = (byte) (bArr[i3] + 1);
|
|
}
|
|
}
|
|
return i2;
|
|
}
|
|
|
|
private static int a(byte[] bArr) {
|
|
int i = 0;
|
|
for (int i2 = 0; i2 < 6; i2++) {
|
|
i += bArr[i2];
|
|
}
|
|
return i;
|
|
}
|
|
|
|
public static int a(CharSequence charSequence, int i) {
|
|
int length = charSequence.length();
|
|
int i2 = 0;
|
|
if (i < length) {
|
|
char charAt = charSequence.charAt(i);
|
|
while (b(charAt) && i < length) {
|
|
i2++;
|
|
i++;
|
|
if (i < length) {
|
|
charAt = charSequence.charAt(i);
|
|
}
|
|
}
|
|
}
|
|
return i2;
|
|
}
|
|
|
|
static void a(char c) {
|
|
String hexString = Integer.toHexString(c);
|
|
throw new IllegalArgumentException("Illegal character: " + c + " (0x" + ("0000".substring(0, 4 - hexString.length()) + hexString) + ')');
|
|
}
|
|
}
|