Files
vtosters/smali/smali_classes2/com/google/zxing/aztec/encoder/HighLevelEncoder.smali
T
2022-06-18 19:27:15 +03:00

1068 lines
20 KiB
Smali

.class public final Lcom/google/zxing/aztec/encoder/HighLevelEncoder;
.super Ljava/lang/Object;
.source "HighLevelEncoder.java"
# static fields
.field private static final CHAR_MAP:[[I
.field static final LATCH_TABLE:[[I
.field static final MODE_DIGIT:I = 0x2
.field static final MODE_LOWER:I = 0x1
.field static final MODE_MIXED:I = 0x3
.field static final MODE_NAMES:[Ljava/lang/String;
.field static final MODE_PUNCT:I = 0x4
.field static final MODE_UPPER:I
.field static final SHIFT_TABLE:[[I
# instance fields
.field private final text:[B
# direct methods
.method static constructor <clinit>()V
.locals 12
.line 1
const-class v0, I
const-string v1, "UPPER"
const-string v2, "LOWER"
const-string v3, "DIGIT"
const-string v4, "MIXED"
const-string v5, "PUNCT"
filled-new-array {v1, v2, v3, v4, v5}, [Ljava/lang/String;
move-result-object v1
sput-object v1, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->MODE_NAMES:[Ljava/lang/String;
const/4 v1, 0x5
new-array v2, v1, [[I
new-array v3, v1, [I
.line 2
fill-array-data v3, :array_0
const/4 v4, 0x0
aput-object v3, v2, v4
new-array v3, v1, [I
fill-array-data v3, :array_1
const/4 v5, 0x1
aput-object v3, v2, v5
new-array v3, v1, [I
fill-array-data v3, :array_2
const/4 v6, 0x2
aput-object v3, v2, v6
new-array v3, v1, [I
fill-array-data v3, :array_3
const/4 v7, 0x3
aput-object v3, v2, v7
new-array v3, v1, [I
fill-array-data v3, :array_4
const/4 v8, 0x4
aput-object v3, v2, v8
sput-object v2, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->LATCH_TABLE:[[I
const/16 v2, 0x100
.line 3
filled-new-array {v1, v2}, [I
move-result-object v1
invoke-static {v0, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v1
check-cast v1, [[I
.line 4
sput-object v1, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v1, v1, v4
const/16 v2, 0x20
aput v5, v1, v2
const/16 v1, 0x41
:goto_0
const/16 v3, 0x5a
if-gt v1, v3, :cond_0
.line 5
sget-object v3, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v3, v3, v4
add-int/lit8 v9, v1, -0x41
add-int/2addr v9, v6
aput v9, v3, v1
add-int/lit8 v1, v1, 0x1
goto :goto_0
.line 6
:cond_0
sget-object v1, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v1, v1, v5
aput v5, v1, v2
const/16 v1, 0x61
:goto_1
const/16 v3, 0x7a
if-gt v1, v3, :cond_1
.line 7
sget-object v3, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v3, v3, v5
add-int/lit8 v9, v1, -0x61
add-int/2addr v9, v6
aput v9, v3, v1
add-int/lit8 v1, v1, 0x1
goto :goto_1
.line 8
:cond_1
sget-object v1, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v1, v1, v6
aput v5, v1, v2
const/16 v1, 0x30
:goto_2
const/16 v2, 0x39
if-gt v1, v2, :cond_2
.line 9
sget-object v2, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v2, v2, v6
add-int/lit8 v3, v1, -0x30
add-int/2addr v3, v6
aput v3, v2, v1
add-int/lit8 v1, v1, 0x1
goto :goto_2
.line 10
:cond_2
sget-object v1, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v2, v1, v6
const/16 v3, 0x2c
const/16 v9, 0xc
aput v9, v2, v3
.line 11
aget-object v1, v1, v6
const/16 v2, 0x2e
const/16 v3, 0xd
aput v3, v1, v2
const/16 v1, 0x1c
new-array v2, v1, [I
.line 12
fill-array-data v2, :array_5
const/4 v3, 0x0
:goto_3
if-ge v3, v1, :cond_3
.line 13
sget-object v9, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v9, v9, v7
aget v10, v2, v3
aput v3, v9, v10
add-int/lit8 v3, v3, 0x1
goto :goto_3
:cond_3
const/16 v2, 0x1f
new-array v3, v2, [I
.line 14
fill-array-data v3, :array_6
const/4 v9, 0x0
:goto_4
if-ge v9, v2, :cond_5
.line 15
aget v10, v3, v9
if-lez v10, :cond_4
.line 16
sget-object v10, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v10, v10, v8
aget v11, v3, v9
aput v9, v10, v11
:cond_4
add-int/lit8 v9, v9, 0x1
goto :goto_4
:cond_5
const/4 v2, 0x6
.line 17
filled-new-array {v2, v2}, [I
move-result-object v2
invoke-static {v0, v2}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v0
check-cast v0, [[I
.line 18
sput-object v0, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->SHIFT_TABLE:[[I
array-length v2, v0
const/4 v3, 0x0
:goto_5
if-ge v3, v2, :cond_6
aget-object v9, v0, v3
const/4 v10, -0x1
.line 19
invoke-static {v9, v10}, Ljava/util/Arrays;->fill([II)V
add-int/lit8 v3, v3, 0x1
goto :goto_5
.line 20
:cond_6
sget-object v0, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->SHIFT_TABLE:[[I
aget-object v2, v0, v4
aput v4, v2, v8
.line 21
aget-object v2, v0, v5
aput v4, v2, v8
.line 22
aget-object v2, v0, v5
aput v1, v2, v4
.line 23
aget-object v1, v0, v7
aput v4, v1, v8
.line 24
aget-object v1, v0, v6
aput v4, v1, v8
.line 25
aget-object v0, v0, v6
const/16 v1, 0xf
aput v1, v0, v4
return-void
:array_0
.array-data 4
0x0
0x5001c
0x5001e
0x5001d
0xa03be
.end array-data
:array_1
.array-data 4
0x901ee
0x0
0x5001e
0x5001d
0xa03be
.end array-data
:array_2
.array-data 4
0x4000e
0x901dc
0x0
0x901dd
0xe3bbe
.end array-data
:array_3
.array-data 4
0x5001d
0x5001c
0xa03be
0x0
0x5001e
.end array-data
:array_4
.array-data 4
0x5001f
0xa03fc
0xa03fe
0xa03fd
0x0
.end array-data
:array_5
.array-data 4
0x0
0x20
0x1
0x2
0x3
0x4
0x5
0x6
0x7
0x8
0x9
0xa
0xb
0xc
0xd
0x1b
0x1c
0x1d
0x1e
0x1f
0x40
0x5c
0x5e
0x5f
0x60
0x7c
0x7e
0x7f
.end array-data
:array_6
.array-data 4
0x0
0xd
0x0
0x0
0x0
0x0
0x21
0x27
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x2a
0x2b
0x2c
0x2d
0x2e
0x2f
0x3a
0x3b
0x3c
0x3d
0x3e
0x3f
0x5b
0x5d
0x7b
0x7d
.end array-data
.end method
.method public constructor <init>([B)V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput-object p1, p0, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->text:[B
return-void
.end method
.method private static simplifyStates(Ljava/lang/Iterable;)Ljava/util/Collection;
.locals 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Iterable<",
"Lcom/google/zxing/aztec/encoder/State;",
">;)",
"Ljava/util/Collection<",
"Lcom/google/zxing/aztec/encoder/State;",
">;"
}
.end annotation
.line 1
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
.line 2
invoke-interface {p0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object p0
:cond_0
:goto_0
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_4
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/zxing/aztec/encoder/State;
const/4 v2, 0x1
.line 3
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_1
:goto_1
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_3
.line 4
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/google/zxing/aztec/encoder/State;
.line 5
invoke-virtual {v4, v1}, Lcom/google/zxing/aztec/encoder/State;->isBetterThanOrEqualTo(Lcom/google/zxing/aztec/encoder/State;)Z
move-result v5
if-eqz v5, :cond_2
const/4 v2, 0x0
goto :goto_2
.line 6
:cond_2
invoke-virtual {v1, v4}, Lcom/google/zxing/aztec/encoder/State;->isBetterThanOrEqualTo(Lcom/google/zxing/aztec/encoder/State;)Z
move-result v4
if-eqz v4, :cond_1
.line 7
invoke-interface {v3}, Ljava/util/Iterator;->remove()V
goto :goto_1
:cond_3
:goto_2
if-eqz v2, :cond_0
.line 8
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_0
:cond_4
return-object v0
.end method
.method private updateStateForChar(Lcom/google/zxing/aztec/encoder/State;ILjava/util/Collection;)V
.locals 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/zxing/aztec/encoder/State;",
"I",
"Ljava/util/Collection<",
"Lcom/google/zxing/aztec/encoder/State;",
">;)V"
}
.end annotation
.line 1
iget-object v0, p0, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->text:[B
aget-byte v0, v0, p2
and-int/lit16 v0, v0, 0xff
int-to-char v0, v0
.line 2
sget-object v1, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
invoke-virtual {p1}, Lcom/google/zxing/aztec/encoder/State;->getMode()I
move-result v2
aget-object v1, v1, v2
aget v1, v1, v0
const/4 v2, 0x0
if-lez v1, :cond_0
const/4 v1, 0x1
goto :goto_0
:cond_0
const/4 v1, 0x0
:goto_0
const/4 v3, 0x0
:goto_1
const/4 v4, 0x4
if-gt v2, v4, :cond_5
.line 3
sget-object v4, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
aget-object v4, v4, v2
aget v4, v4, v0
if-lez v4, :cond_4
if-nez v3, :cond_1
.line 4
invoke-virtual {p1, p2}, Lcom/google/zxing/aztec/encoder/State;->endBinaryShift(I)Lcom/google/zxing/aztec/encoder/State;
move-result-object v3
:cond_1
if-eqz v1, :cond_2
.line 5
invoke-virtual {p1}, Lcom/google/zxing/aztec/encoder/State;->getMode()I
move-result v5
if-eq v2, v5, :cond_2
const/4 v5, 0x2
if-ne v2, v5, :cond_3
.line 6
:cond_2
invoke-virtual {v3, v2, v4}, Lcom/google/zxing/aztec/encoder/State;->latchAndAppend(II)Lcom/google/zxing/aztec/encoder/State;
move-result-object v5
.line 7
invoke-interface {p3, v5}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
:cond_3
if-nez v1, :cond_4
.line 8
sget-object v5, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->SHIFT_TABLE:[[I
invoke-virtual {p1}, Lcom/google/zxing/aztec/encoder/State;->getMode()I
move-result v6
aget-object v5, v5, v6
aget v5, v5, v2
if-ltz v5, :cond_4
.line 9
invoke-virtual {v3, v2, v4}, Lcom/google/zxing/aztec/encoder/State;->shiftAndAppend(II)Lcom/google/zxing/aztec/encoder/State;
move-result-object v4
.line 10
invoke-interface {p3, v4}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
:cond_4
add-int/lit8 v2, v2, 0x1
goto :goto_1
.line 11
:cond_5
invoke-virtual {p1}, Lcom/google/zxing/aztec/encoder/State;->getBinaryShiftByteCount()I
move-result v1
if-gtz v1, :cond_6
sget-object v1, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->CHAR_MAP:[[I
invoke-virtual {p1}, Lcom/google/zxing/aztec/encoder/State;->getMode()I
move-result v2
aget-object v1, v1, v2
aget v0, v1, v0
if-nez v0, :cond_7
.line 12
:cond_6
invoke-virtual {p1, p2}, Lcom/google/zxing/aztec/encoder/State;->addBinaryShiftChar(I)Lcom/google/zxing/aztec/encoder/State;
move-result-object p1
.line 13
invoke-interface {p3, p1}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
:cond_7
return-void
.end method
.method private static updateStateForPair(Lcom/google/zxing/aztec/encoder/State;IILjava/util/Collection;)V
.locals 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/zxing/aztec/encoder/State;",
"II",
"Ljava/util/Collection<",
"Lcom/google/zxing/aztec/encoder/State;",
">;)V"
}
.end annotation
.line 1
invoke-virtual {p0, p1}, Lcom/google/zxing/aztec/encoder/State;->endBinaryShift(I)Lcom/google/zxing/aztec/encoder/State;
move-result-object v0
const/4 v1, 0x4
.line 2
invoke-virtual {v0, v1, p2}, Lcom/google/zxing/aztec/encoder/State;->latchAndAppend(II)Lcom/google/zxing/aztec/encoder/State;
move-result-object v2
invoke-interface {p3, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 3
invoke-virtual {p0}, Lcom/google/zxing/aztec/encoder/State;->getMode()I
move-result v2
if-eq v2, v1, :cond_0
.line 4
invoke-virtual {v0, v1, p2}, Lcom/google/zxing/aztec/encoder/State;->shiftAndAppend(II)Lcom/google/zxing/aztec/encoder/State;
move-result-object v2
invoke-interface {p3, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
:cond_0
const/4 v2, 0x3
const/4 v3, 0x1
if-eq p2, v2, :cond_1
if-ne p2, v1, :cond_2
:cond_1
rsub-int/lit8 p2, p2, 0x10
const/4 v1, 0x2
.line 5
invoke-virtual {v0, v1, p2}, Lcom/google/zxing/aztec/encoder/State;->latchAndAppend(II)Lcom/google/zxing/aztec/encoder/State;
move-result-object p2
.line 6
invoke-virtual {p2, v1, v3}, Lcom/google/zxing/aztec/encoder/State;->latchAndAppend(II)Lcom/google/zxing/aztec/encoder/State;
move-result-object p2
.line 7
invoke-interface {p3, p2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 8
:cond_2
invoke-virtual {p0}, Lcom/google/zxing/aztec/encoder/State;->getBinaryShiftByteCount()I
move-result p2
if-lez p2, :cond_3
.line 9
invoke-virtual {p0, p1}, Lcom/google/zxing/aztec/encoder/State;->addBinaryShiftChar(I)Lcom/google/zxing/aztec/encoder/State;
move-result-object p0
add-int/2addr p1, v3
invoke-virtual {p0, p1}, Lcom/google/zxing/aztec/encoder/State;->addBinaryShiftChar(I)Lcom/google/zxing/aztec/encoder/State;
move-result-object p0
.line 10
invoke-interface {p3, p0}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
:cond_3
return-void
.end method
.method private updateStateListForChar(Ljava/lang/Iterable;I)Ljava/util/Collection;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Iterable<",
"Lcom/google/zxing/aztec/encoder/State;",
">;I)",
"Ljava/util/Collection<",
"Lcom/google/zxing/aztec/encoder/State;",
">;"
}
.end annotation
.line 1
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
.line 2
invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_0
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_0
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/zxing/aztec/encoder/State;
.line 3
invoke-direct {p0, v1, p2, v0}, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->updateStateForChar(Lcom/google/zxing/aztec/encoder/State;ILjava/util/Collection;)V
goto :goto_0
.line 4
:cond_0
invoke-static {v0}, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->simplifyStates(Ljava/lang/Iterable;)Ljava/util/Collection;
move-result-object p1
return-object p1
.end method
.method private static updateStateListForPair(Ljava/lang/Iterable;II)Ljava/util/Collection;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Iterable<",
"Lcom/google/zxing/aztec/encoder/State;",
">;II)",
"Ljava/util/Collection<",
"Lcom/google/zxing/aztec/encoder/State;",
">;"
}
.end annotation
.line 1
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
.line 2
invoke-interface {p0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object p0
:goto_0
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_0
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/zxing/aztec/encoder/State;
.line 3
invoke-static {v1, p1, p2, v0}, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->updateStateForPair(Lcom/google/zxing/aztec/encoder/State;IILjava/util/Collection;)V
goto :goto_0
.line 4
:cond_0
invoke-static {v0}, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->simplifyStates(Ljava/lang/Iterable;)Ljava/util/Collection;
move-result-object p0
return-object p0
.end method
# virtual methods
.method public encode()Lcom/google/zxing/common/BitArray;
.locals 8
.line 1
sget-object v0, Lcom/google/zxing/aztec/encoder/State;->INITIAL_STATE:Lcom/google/zxing/aztec/encoder/State;
invoke-static {v0}, Ljava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List;
move-result-object v0
const/4 v1, 0x0
move-object v2, v0
const/4 v0, 0x0
.line 2
:goto_0
iget-object v3, p0, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->text:[B
array-length v4, v3
if-ge v0, v4, :cond_7
add-int/lit8 v4, v0, 0x1
.line 3
array-length v5, v3
if-ge v4, v5, :cond_0
aget-byte v3, v3, v4
goto :goto_1
:cond_0
const/4 v3, 0x0
.line 4
:goto_1
iget-object v5, p0, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->text:[B
aget-byte v5, v5, v0
const/16 v6, 0xd
if-eq v5, v6, :cond_5
const/16 v6, 0x2c
const/16 v7, 0x20
if-eq v5, v6, :cond_4
const/16 v6, 0x2e
if-eq v5, v6, :cond_3
const/16 v6, 0x3a
if-eq v5, v6, :cond_2
:cond_1
const/4 v3, 0x0
goto :goto_2
:cond_2
if-ne v3, v7, :cond_1
const/4 v3, 0x5
goto :goto_2
:cond_3
if-ne v3, v7, :cond_1
const/4 v3, 0x3
goto :goto_2
:cond_4
if-ne v3, v7, :cond_1
const/4 v3, 0x4
goto :goto_2
:cond_5
const/16 v5, 0xa
if-ne v3, v5, :cond_1
const/4 v3, 0x2
:goto_2
if-lez v3, :cond_6
.line 5
invoke-static {v2, v0, v3}, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->updateStateListForPair(Ljava/lang/Iterable;II)Ljava/util/Collection;
move-result-object v0
move-object v2, v0
move v0, v4
goto :goto_3
.line 6
:cond_6
invoke-direct {p0, v2, v0}, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->updateStateListForChar(Ljava/lang/Iterable;I)Ljava/util/Collection;
move-result-object v2
:goto_3
add-int/lit8 v0, v0, 0x1
goto :goto_0
.line 7
:cond_7
new-instance v0, Lcom/google/zxing/aztec/encoder/HighLevelEncoder$1;
invoke-direct {v0, p0}, Lcom/google/zxing/aztec/encoder/HighLevelEncoder$1;-><init>(Lcom/google/zxing/aztec/encoder/HighLevelEncoder;)V
invoke-static {v2, v0}, Ljava/util/Collections;->min(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/zxing/aztec/encoder/State;
.line 8
iget-object v1, p0, Lcom/google/zxing/aztec/encoder/HighLevelEncoder;->text:[B
invoke-virtual {v0, v1}, Lcom/google/zxing/aztec/encoder/State;->toBitArray([B)Lcom/google/zxing/common/BitArray;
move-result-object v0
return-object v0
.end method