Rabbit-R1/android (non root)/java/sources/com/google/zxing/qrcode/decoder/BitMatrixParser.java

173 lines
6.2 KiB
Java
Raw Normal View History

2024-05-21 21:08:36 +00:00
package com.google.zxing.qrcode.decoder;
import com.google.zxing.FormatException;
import com.google.zxing.common.BitMatrix;
/* loaded from: classes3.dex */
final class BitMatrixParser {
private final BitMatrix bitMatrix;
private boolean mirror;
private FormatInformation parsedFormatInfo;
private Version parsedVersion;
/* JADX INFO: Access modifiers changed from: package-private */
public void setMirror(boolean z) {
this.parsedVersion = null;
this.parsedFormatInfo = null;
this.mirror = z;
}
/* JADX INFO: Access modifiers changed from: package-private */
public BitMatrixParser(BitMatrix bitMatrix) throws FormatException {
int height = bitMatrix.getHeight();
if (height < 21 || (height & 3) != 1) {
throw FormatException.getFormatInstance();
}
this.bitMatrix = bitMatrix;
}
/* JADX INFO: Access modifiers changed from: package-private */
public FormatInformation readFormatInformation() throws FormatException {
FormatInformation formatInformation = this.parsedFormatInfo;
if (formatInformation != null) {
return formatInformation;
}
int i = 0;
int i2 = 0;
for (int i3 = 0; i3 < 6; i3++) {
i2 = copyBit(i3, 8, i2);
}
int copyBit = copyBit(8, 7, copyBit(8, 8, copyBit(7, 8, i2)));
for (int i4 = 5; i4 >= 0; i4--) {
copyBit = copyBit(8, i4, copyBit);
}
int height = this.bitMatrix.getHeight();
int i5 = height - 7;
for (int i6 = height - 1; i6 >= i5; i6--) {
i = copyBit(8, i6, i);
}
for (int i7 = height - 8; i7 < height; i7++) {
i = copyBit(i7, 8, i);
}
FormatInformation decodeFormatInformation = FormatInformation.decodeFormatInformation(copyBit, i);
this.parsedFormatInfo = decodeFormatInformation;
if (decodeFormatInformation != null) {
return decodeFormatInformation;
}
throw FormatException.getFormatInstance();
}
/* JADX INFO: Access modifiers changed from: package-private */
public Version readVersion() throws FormatException {
Version version = this.parsedVersion;
if (version != null) {
return version;
}
int height = this.bitMatrix.getHeight();
int i = (height - 17) / 4;
if (i <= 6) {
return Version.getVersionForNumber(i);
}
int i2 = height - 11;
int i3 = 0;
int i4 = 0;
for (int i5 = 5; i5 >= 0; i5--) {
for (int i6 = height - 9; i6 >= i2; i6--) {
i4 = copyBit(i6, i5, i4);
}
}
Version decodeVersionInformation = Version.decodeVersionInformation(i4);
if (decodeVersionInformation != null && decodeVersionInformation.getDimensionForVersion() == height) {
this.parsedVersion = decodeVersionInformation;
return decodeVersionInformation;
}
for (int i7 = 5; i7 >= 0; i7--) {
for (int i8 = height - 9; i8 >= i2; i8--) {
i3 = copyBit(i7, i8, i3);
}
}
Version decodeVersionInformation2 = Version.decodeVersionInformation(i3);
if (decodeVersionInformation2 == null || decodeVersionInformation2.getDimensionForVersion() != height) {
throw FormatException.getFormatInstance();
}
this.parsedVersion = decodeVersionInformation2;
return decodeVersionInformation2;
}
private int copyBit(int i, int i2, int i3) {
boolean z = this.mirror;
BitMatrix bitMatrix = this.bitMatrix;
return z ? bitMatrix.get(i2, i) : bitMatrix.get(i, i2) ? (i3 << 1) | 1 : i3 << 1;
}
/* JADX INFO: Access modifiers changed from: package-private */
public byte[] readCodewords() throws FormatException {
FormatInformation readFormatInformation = readFormatInformation();
Version readVersion = readVersion();
DataMask dataMask = DataMask.values()[readFormatInformation.getDataMask()];
int height = this.bitMatrix.getHeight();
dataMask.unmaskBitMatrix(this.bitMatrix, height);
BitMatrix buildFunctionPattern = readVersion.buildFunctionPattern();
byte[] bArr = new byte[readVersion.getTotalCodewords()];
int i = height - 1;
boolean z = true;
int i2 = i;
int i3 = 0;
int i4 = 0;
int i5 = 0;
while (i2 > 0) {
if (i2 == 6) {
i2--;
}
for (int i6 = 0; i6 < height; i6++) {
int i7 = z ? i - i6 : i6;
for (int i8 = 0; i8 < 2; i8++) {
int i9 = i2 - i8;
if (!buildFunctionPattern.get(i9, i7)) {
i4++;
i5 <<= 1;
if (this.bitMatrix.get(i9, i7)) {
i5 |= 1;
}
if (i4 == 8) {
bArr[i3] = (byte) i5;
i3++;
i4 = 0;
i5 = 0;
}
}
}
}
z = !z;
i2 -= 2;
}
if (i3 == readVersion.getTotalCodewords()) {
return bArr;
}
throw FormatException.getFormatInstance();
}
/* JADX INFO: Access modifiers changed from: package-private */
public void remask() {
if (this.parsedFormatInfo == null) {
return;
}
DataMask.values()[this.parsedFormatInfo.getDataMask()].unmaskBitMatrix(this.bitMatrix, this.bitMatrix.getHeight());
}
/* JADX INFO: Access modifiers changed from: package-private */
public void mirror() {
int i = 0;
while (i < this.bitMatrix.getWidth()) {
int i2 = i + 1;
for (int i3 = i2; i3 < this.bitMatrix.getHeight(); i3++) {
if (this.bitMatrix.get(i, i3) != this.bitMatrix.get(i3, i)) {
this.bitMatrix.flip(i3, i);
this.bitMatrix.flip(i, i3);
}
}
i = i2;
}
}
}