This commit is contained in:
2022-06-10 21:38:30 +09:00
commit 27f5152838
51323 changed files with 12934539 additions and 0 deletions
@@ -0,0 +1,957 @@
.class public final Lcom/google/zxing/common/BitArray;
.super Ljava/lang/Object;
.source "BitArray.java"
# instance fields
.field private bits:[I
.field private size:I
# direct methods
.method public constructor <init>()V
.locals 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x0
.line 2
iput v0, p0, Lcom/google/zxing/common/BitArray;->size:I
const/4 v0, 0x1
new-array v0, v0, [I
.line 3
iput-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
return-void
.end method
.method public constructor <init>(I)V
.locals 0
.line 4
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 5
iput p1, p0, Lcom/google/zxing/common/BitArray;->size:I
.line 6
invoke-static {p1}, Lcom/google/zxing/common/BitArray;->makeArray(I)[I
move-result-object p1
iput-object p1, p0, Lcom/google/zxing/common/BitArray;->bits:[I
return-void
.end method
.method private ensureCapacity(I)V
.locals 3
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v0, v0
shl-int/lit8 v0, v0, 0x5
if-le p1, v0, :cond_0
.line 2
invoke-static {p1}, Lcom/google/zxing/common/BitArray;->makeArray(I)[I
move-result-object p1
.line 3
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v1, v0
const/4 v2, 0x0
invoke-static {v0, v2, p1, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 4
iput-object p1, p0, Lcom/google/zxing/common/BitArray;->bits:[I
:cond_0
return-void
.end method
.method private static makeArray(I)[I
.locals 0
add-int/lit8 p0, p0, 0x1f
shr-int/lit8 p0, p0, 0x5
.line 1
new-array p0, p0, [I
return-object p0
.end method
# virtual methods
.method public appendBit(Z)V
.locals 4
.line 1
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
const/4 v1, 0x1
add-int/2addr v0, v1
invoke-direct {p0, v0}, Lcom/google/zxing/common/BitArray;->ensureCapacity(I)V
if-eqz p1, :cond_0
.line 2
iget-object p1, p0, Lcom/google/zxing/common/BitArray;->bits:[I
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
shr-int/lit8 v2, v0, 0x5
aget v3, p1, v2
and-int/lit8 v0, v0, 0x1f
shl-int v0, v1, v0
or-int/2addr v0, v3
aput v0, p1, v2
.line 3
:cond_0
iget p1, p0, Lcom/google/zxing/common/BitArray;->size:I
add-int/2addr p1, v1
iput p1, p0, Lcom/google/zxing/common/BitArray;->size:I
return-void
.end method
.method public appendBitArray(Lcom/google/zxing/common/BitArray;)V
.locals 3
.line 1
iget v0, p1, Lcom/google/zxing/common/BitArray;->size:I
.line 2
iget v1, p0, Lcom/google/zxing/common/BitArray;->size:I
add-int/2addr v1, v0
invoke-direct {p0, v1}, Lcom/google/zxing/common/BitArray;->ensureCapacity(I)V
const/4 v1, 0x0
:goto_0
if-lt v1, v0, :cond_0
return-void
.line 3
:cond_0
invoke-virtual {p1, v1}, Lcom/google/zxing/common/BitArray;->get(I)Z
move-result v2
invoke-virtual {p0, v2}, Lcom/google/zxing/common/BitArray;->appendBit(Z)V
add-int/lit8 v1, v1, 0x1
goto :goto_0
.end method
.method public appendBits(II)V
.locals 2
if-ltz p2, :cond_2
const/16 v0, 0x20
if-gt p2, v0, :cond_2
.line 1
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
add-int/2addr v0, p2
invoke-direct {p0, v0}, Lcom/google/zxing/common/BitArray;->ensureCapacity(I)V
:goto_0
if-gtz p2, :cond_0
return-void
:cond_0
add-int/lit8 v0, p2, -0x1
shr-int v0, p1, v0
const/4 v1, 0x1
and-int/2addr v0, v1
if-ne v0, v1, :cond_1
goto :goto_1
:cond_1
const/4 v1, 0x0
.line 2
:goto_1
invoke-virtual {p0, v1}, Lcom/google/zxing/common/BitArray;->appendBit(Z)V
add-int/lit8 p2, p2, -0x1
goto :goto_0
.line 3
:cond_2
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Num bits must be between 0 and 32"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public clear()V
.locals 4
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v0, v0
const/4 v1, 0x0
move v2, v1
:goto_0
if-lt v2, v0, :cond_0
return-void
.line 2
:cond_0
iget-object v3, p0, Lcom/google/zxing/common/BitArray;->bits:[I
aput v1, v3, v2
add-int/lit8 v2, v2, 0x1
goto :goto_0
.end method
.method public flip(I)V
.locals 4
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
shr-int/lit8 v1, p1, 0x5
aget v2, v0, v1
and-int/lit8 p1, p1, 0x1f
const/4 v3, 0x1
shl-int p1, v3, p1
xor-int/2addr p1, v2
aput p1, v0, v1
return-void
.end method
.method public get(I)Z
.locals 2
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
shr-int/lit8 v1, p1, 0x5
aget v0, v0, v1
and-int/lit8 p1, p1, 0x1f
const/4 v1, 0x1
shl-int p1, v1, p1
and-int/2addr p1, v0
if-eqz p1, :cond_0
return v1
:cond_0
const/4 p1, 0x0
return p1
.end method
.method public getBitArray()[I
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
return-object v0
.end method
.method public getNextSet(I)I
.locals 3
.line 1
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
if-lt p1, v0, :cond_0
return v0
:cond_0
shr-int/lit8 v0, p1, 0x5
.line 2
iget-object v1, p0, Lcom/google/zxing/common/BitArray;->bits:[I
aget v1, v1, v0
and-int/lit8 p1, p1, 0x1f
const/4 v2, 0x1
shl-int p1, v2, p1
sub-int/2addr p1, v2
not-int p1, p1
and-int/2addr p1, v1
:goto_0
if-eqz p1, :cond_2
shl-int/lit8 v0, v0, 0x5
.line 3
invoke-static {p1}, Ljava/lang/Integer;->numberOfTrailingZeros(I)I
move-result p1
add-int/2addr p1, v0
.line 4
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
if-le p1, v0, :cond_1
move p1, v0
:cond_1
return p1
:cond_2
add-int/lit8 v0, v0, 0x1
.line 5
iget-object p1, p0, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v1, p1
if-ne v0, v1, :cond_3
.line 6
iget p1, p0, Lcom/google/zxing/common/BitArray;->size:I
return p1
.line 7
:cond_3
aget p1, p1, v0
goto :goto_0
.end method
.method public getNextUnset(I)I
.locals 3
.line 1
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
if-lt p1, v0, :cond_0
return v0
:cond_0
shr-int/lit8 v0, p1, 0x5
.line 2
iget-object v1, p0, Lcom/google/zxing/common/BitArray;->bits:[I
aget v1, v1, v0
not-int v1, v1
and-int/lit8 p1, p1, 0x1f
const/4 v2, 0x1
shl-int p1, v2, p1
sub-int/2addr p1, v2
not-int p1, p1
and-int/2addr p1, v1
:goto_0
if-eqz p1, :cond_2
shl-int/lit8 v0, v0, 0x5
.line 3
invoke-static {p1}, Ljava/lang/Integer;->numberOfTrailingZeros(I)I
move-result p1
add-int/2addr p1, v0
.line 4
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
if-le p1, v0, :cond_1
move p1, v0
:cond_1
return p1
:cond_2
add-int/lit8 v0, v0, 0x1
.line 5
iget-object p1, p0, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v1, p1
if-ne v0, v1, :cond_3
.line 6
iget p1, p0, Lcom/google/zxing/common/BitArray;->size:I
return p1
.line 7
:cond_3
aget p1, p1, v0
not-int p1, p1
goto :goto_0
.end method
.method public getSize()I
.locals 1
.line 1
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
return v0
.end method
.method public getSizeInBytes()I
.locals 1
.line 1
iget v0, p0, Lcom/google/zxing/common/BitArray;->size:I
add-int/lit8 v0, v0, 0x7
shr-int/lit8 v0, v0, 0x3
return v0
.end method
.method public isRange(IIZ)Z
.locals 10
if-lt p2, p1, :cond_8
const/4 v0, 0x1
if-ne p2, p1, :cond_0
return v0
:cond_0
const/4 v1, -0x1
add-int/2addr p2, v1
shr-int/lit8 v2, p1, 0x5
shr-int/lit8 v3, p2, 0x5
move v4, v2
:goto_0
if-le v4, v3, :cond_1
return v0
:cond_1
const/4 v5, 0x0
const/16 v6, 0x1f
if-le v4, v2, :cond_2
move v7, v5
goto :goto_1
:cond_2
and-int/lit8 v7, p1, 0x1f
:goto_1
if-ge v4, v3, :cond_3
move v8, v6
goto :goto_2
:cond_3
and-int/lit8 v8, p2, 0x1f
:goto_2
if-nez v7, :cond_4
if-ne v8, v6, :cond_4
move v6, v1
goto :goto_4
:cond_4
move v6, v5
:goto_3
if-le v7, v8, :cond_7
.line 1
:goto_4
iget-object v7, p0, Lcom/google/zxing/common/BitArray;->bits:[I
aget v7, v7, v4
and-int/2addr v7, v6
if-eqz p3, :cond_5
goto :goto_5
:cond_5
move v6, v5
:goto_5
if-eq v7, v6, :cond_6
return v5
:cond_6
add-int/lit8 v4, v4, 0x1
goto :goto_0
:cond_7
shl-int v9, v0, v7
or-int/2addr v6, v9
add-int/lit8 v7, v7, 0x1
goto :goto_3
.line 2
:cond_8
new-instance p1, Ljava/lang/IllegalArgumentException;
invoke-direct {p1}, Ljava/lang/IllegalArgumentException;-><init>()V
throw p1
.end method
.method public reverse()V
.locals 7
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v0, v0
new-array v0, v0, [I
.line 2
iget v1, p0, Lcom/google/zxing/common/BitArray;->size:I
const/4 v2, 0x0
:goto_0
if-lt v2, v1, :cond_0
.line 3
iput-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
return-void
:cond_0
sub-int v3, v1, v2
const/4 v4, 0x1
sub-int/2addr v3, v4
.line 4
invoke-virtual {p0, v3}, Lcom/google/zxing/common/BitArray;->get(I)Z
move-result v3
if-eqz v3, :cond_1
shr-int/lit8 v3, v2, 0x5
.line 5
aget v5, v0, v3
and-int/lit8 v6, v2, 0x1f
shl-int/2addr v4, v6
or-int/2addr v4, v5
aput v4, v0, v3
:cond_1
add-int/lit8 v2, v2, 0x1
goto :goto_0
.end method
.method public set(I)V
.locals 4
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
shr-int/lit8 v1, p1, 0x5
aget v2, v0, v1
and-int/lit8 p1, p1, 0x1f
const/4 v3, 0x1
shl-int p1, v3, p1
or-int/2addr p1, v2
aput p1, v0, v1
return-void
.end method
.method public setBulk(II)V
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
shr-int/lit8 p1, p1, 0x5
aput p2, v0, p1
return-void
.end method
.method public setRange(II)V
.locals 8
if-lt p2, p1, :cond_6
if-ne p2, p1, :cond_0
return-void
:cond_0
const/4 v0, -0x1
add-int/2addr p2, v0
shr-int/lit8 v1, p1, 0x5
shr-int/lit8 v2, p2, 0x5
move v3, v1
:goto_0
if-le v3, v2, :cond_1
return-void
:cond_1
const/4 v4, 0x0
const/16 v5, 0x1f
if-le v3, v1, :cond_2
move v6, v4
goto :goto_1
:cond_2
and-int/lit8 v6, p1, 0x1f
:goto_1
if-ge v3, v2, :cond_3
move v7, v5
goto :goto_2
:cond_3
and-int/lit8 v7, p2, 0x1f
:goto_2
if-nez v6, :cond_4
if-ne v7, v5, :cond_4
move v4, v0
goto :goto_4
:cond_4
:goto_3
if-le v6, v7, :cond_5
.line 1
:goto_4
iget-object v5, p0, Lcom/google/zxing/common/BitArray;->bits:[I
aget v6, v5, v3
or-int/2addr v4, v6
aput v4, v5, v3
add-int/lit8 v3, v3, 0x1
goto :goto_0
:cond_5
const/4 v5, 0x1
shl-int/2addr v5, v6
or-int/2addr v4, v5
add-int/lit8 v6, v6, 0x1
goto :goto_3
.line 2
:cond_6
new-instance p1, Ljava/lang/IllegalArgumentException;
invoke-direct {p1}, Ljava/lang/IllegalArgumentException;-><init>()V
throw p1
.end method
.method public toBytes(I[BII)V
.locals 6
const/4 v0, 0x0
move v1, v0
:goto_0
if-lt v1, p4, :cond_0
return-void
:cond_0
move v2, v0
move v3, v2
:goto_1
const/16 v4, 0x8
if-lt v2, v4, :cond_1
add-int v2, p3, v1
int-to-byte v3, v3
.line 1
aput-byte v3, p2, v2
add-int/lit8 v1, v1, 0x1
goto :goto_0
.line 2
:cond_1
invoke-virtual {p0, p1}, Lcom/google/zxing/common/BitArray;->get(I)Z
move-result v4
if-eqz v4, :cond_2
rsub-int/lit8 v4, v2, 0x7
const/4 v5, 0x1
shl-int v4, v5, v4
or-int/2addr v3, v4
:cond_2
add-int/lit8 p1, p1, 0x1
add-int/lit8 v2, v2, 0x1
goto :goto_1
.end method
.method public toString()Ljava/lang/String;
.locals 3
.line 1
new-instance v0, Ljava/lang/StringBuilder;
iget v1, p0, Lcom/google/zxing/common/BitArray;->size:I
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(I)V
const/4 v1, 0x0
.line 2
:goto_0
iget v2, p0, Lcom/google/zxing/common/BitArray;->size:I
if-lt v1, v2, :cond_0
.line 3
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
:cond_0
and-int/lit8 v2, v1, 0x7
if-nez v2, :cond_1
const/16 v2, 0x20
.line 4
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 5
:cond_1
invoke-virtual {p0, v1}, Lcom/google/zxing/common/BitArray;->get(I)Z
move-result v2
if-eqz v2, :cond_2
const/16 v2, 0x58
goto :goto_1
:cond_2
const/16 v2, 0x2e
:goto_1
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
add-int/lit8 v1, v1, 0x1
goto :goto_0
.end method
.method public xor(Lcom/google/zxing/common/BitArray;)V
.locals 4
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v0, v0
iget-object v1, p1, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v1, v1
if-ne v0, v1, :cond_1
const/4 v0, 0x0
.line 2
:goto_0
iget-object v1, p0, Lcom/google/zxing/common/BitArray;->bits:[I
array-length v2, v1
if-lt v0, v2, :cond_0
return-void
.line 3
:cond_0
aget v2, v1, v0
iget-object v3, p1, Lcom/google/zxing/common/BitArray;->bits:[I
aget v3, v3, v0
xor-int/2addr v2, v3
aput v2, v1, v0
add-int/lit8 v0, v0, 0x1
goto :goto_0
.line 4
:cond_1
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "Sizes don\'t match"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
@@ -0,0 +1,910 @@
.class public final Lcom/google/zxing/common/BitMatrix;
.super Ljava/lang/Object;
.source "BitMatrix.java"
# instance fields
.field private final bits:[I
.field private final height:I
.field private final rowSize:I
.field private final width:I
# direct methods
.method public constructor <init>(I)V
.locals 0
.line 1
invoke-direct {p0, p1, p1}, Lcom/google/zxing/common/BitMatrix;-><init>(II)V
return-void
.end method
.method public constructor <init>(II)V
.locals 1
.line 2
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x1
if-lt p1, v0, :cond_0
if-lt p2, v0, :cond_0
.line 3
iput p1, p0, Lcom/google/zxing/common/BitMatrix;->width:I
.line 4
iput p2, p0, Lcom/google/zxing/common/BitMatrix;->height:I
add-int/lit8 p1, p1, 0x1f
shr-int/lit8 p1, p1, 0x5
.line 5
iput p1, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
mul-int/2addr p1, p2
.line 6
new-array p1, p1, [I
iput-object p1, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
return-void
.line 7
:cond_0
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Both dimensions must be greater than 0"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
# virtual methods
.method public clear()V
.locals 4
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
array-length v0, v0
const/4 v1, 0x0
move v2, v1
:goto_0
if-lt v2, v0, :cond_0
return-void
.line 2
:cond_0
iget-object v3, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
aput v1, v3, v2
add-int/lit8 v2, v2, 0x1
goto :goto_0
.end method
.method public equals(Ljava/lang/Object;)Z
.locals 4
.line 1
instance-of v0, p1, Lcom/google/zxing/common/BitMatrix;
const/4 v1, 0x0
if-nez v0, :cond_0
return v1
.line 2
:cond_0
check-cast p1, Lcom/google/zxing/common/BitMatrix;
.line 3
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->width:I
iget v2, p1, Lcom/google/zxing/common/BitMatrix;->width:I
if-ne v0, v2, :cond_4
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->height:I
iget v2, p1, Lcom/google/zxing/common/BitMatrix;->height:I
if-ne v0, v2, :cond_4
.line 4
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
iget v2, p1, Lcom/google/zxing/common/BitMatrix;->rowSize:I
if-ne v0, v2, :cond_4
iget-object v0, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
array-length v0, v0
iget-object v2, p1, Lcom/google/zxing/common/BitMatrix;->bits:[I
array-length v2, v2
if-eq v0, v2, :cond_1
goto :goto_1
:cond_1
move v0, v1
.line 5
:goto_0
iget-object v2, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
array-length v3, v2
if-lt v0, v3, :cond_2
const/4 p1, 0x1
return p1
.line 6
:cond_2
aget v2, v2, v0
iget-object v3, p1, Lcom/google/zxing/common/BitMatrix;->bits:[I
aget v3, v3, v0
if-eq v2, v3, :cond_3
return v1
:cond_3
add-int/lit8 v0, v0, 0x1
goto :goto_0
:cond_4
:goto_1
return v1
.end method
.method public flip(II)V
.locals 3
.line 1
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
mul-int/2addr p2, v0
shr-int/lit8 v0, p1, 0x5
add-int/2addr p2, v0
.line 2
iget-object v0, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
aget v1, v0, p2
and-int/lit8 p1, p1, 0x1f
const/4 v2, 0x1
shl-int p1, v2, p1
xor-int/2addr p1, v1
aput p1, v0, p2
return-void
.end method
.method public get(II)Z
.locals 1
.line 1
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
mul-int/2addr p2, v0
shr-int/lit8 v0, p1, 0x5
add-int/2addr p2, v0
.line 2
iget-object v0, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
aget p2, v0, p2
and-int/lit8 p1, p1, 0x1f
ushr-int p1, p2, p1
const/4 p2, 0x1
and-int/2addr p1, p2
if-eqz p1, :cond_0
return p2
:cond_0
const/4 p1, 0x0
return p1
.end method
.method public getBottomRightOnBit()[I
.locals 6
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
array-length v0, v0
const/4 v1, 0x1
sub-int/2addr v0, v1
:goto_0
if-ltz v0, :cond_1
.line 2
iget-object v2, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
aget v2, v2, v0
if-eqz v2, :cond_0
goto :goto_1
:cond_0
add-int/lit8 v0, v0, -0x1
goto :goto_0
:cond_1
:goto_1
if-gez v0, :cond_2
const/4 v0, 0x0
return-object v0
.line 3
:cond_2
iget v2, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
div-int v3, v0, v2
.line 4
rem-int v2, v0, v2
shl-int/lit8 v2, v2, 0x5
.line 5
iget-object v4, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
aget v0, v4, v0
const/16 v4, 0x1f
:goto_2
ushr-int v5, v0, v4
if-eqz v5, :cond_3
add-int/2addr v2, v4
const/4 v0, 0x2
new-array v0, v0, [I
const/4 v4, 0x0
aput v2, v0, v4
aput v3, v0, v1
return-object v0
:cond_3
add-int/lit8 v4, v4, -0x1
goto :goto_2
.end method
.method public getEnclosingRectangle()[I
.locals 11
.line 1
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->width:I
.line 2
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->height:I
const/4 v2, -0x1
const/4 v3, 0x0
move v4, v2
move v5, v3
.line 3
:goto_0
iget v6, p0, Lcom/google/zxing/common/BitMatrix;->height:I
if-lt v5, v6, :cond_2
sub-int/2addr v2, v0
sub-int/2addr v4, v1
if-ltz v2, :cond_1
if-gez v4, :cond_0
goto :goto_1
:cond_0
const/4 v5, 0x4
new-array v5, v5, [I
aput v0, v5, v3
const/4 v0, 0x1
aput v1, v5, v0
const/4 v0, 0x2
aput v2, v5, v0
const/4 v0, 0x3
aput v4, v5, v0
return-object v5
:cond_1
:goto_1
const/4 v0, 0x0
return-object v0
:cond_2
move v6, v3
.line 4
:goto_2
iget v7, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
if-lt v6, v7, :cond_3
add-int/lit8 v5, v5, 0x1
goto :goto_0
.line 5
:cond_3
iget-object v8, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
mul-int/2addr v7, v5
add-int/2addr v7, v6
aget v7, v8, v7
if-eqz v7, :cond_9
if-ge v5, v1, :cond_4
move v1, v5
:cond_4
if-le v5, v4, :cond_5
move v4, v5
:cond_5
mul-int/lit8 v8, v6, 0x20
if-ge v8, v0, :cond_7
move v9, v3
:goto_3
rsub-int/lit8 v10, v9, 0x1f
shl-int v10, v7, v10
if-eqz v10, :cond_6
add-int/2addr v9, v8
if-ge v9, v0, :cond_7
move v0, v9
goto :goto_4
:cond_6
add-int/lit8 v9, v9, 0x1
goto :goto_3
:cond_7
:goto_4
add-int/lit8 v9, v8, 0x1f
if-le v9, v2, :cond_9
const/16 v9, 0x1f
:goto_5
ushr-int v10, v7, v9
if-eqz v10, :cond_8
add-int/2addr v8, v9
if-le v8, v2, :cond_9
move v2, v8
goto :goto_6
:cond_8
add-int/lit8 v9, v9, -0x1
goto :goto_5
:cond_9
:goto_6
add-int/lit8 v6, v6, 0x1
goto :goto_2
.end method
.method public getHeight()I
.locals 1
.line 1
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->height:I
return v0
.end method
.method public getRow(ILcom/google/zxing/common/BitArray;)Lcom/google/zxing/common/BitArray;
.locals 4
if-eqz p2, :cond_0
.line 1
invoke-virtual {p2}, Lcom/google/zxing/common/BitArray;->getSize()I
move-result v0
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->width:I
if-ge v0, v1, :cond_1
.line 2
:cond_0
new-instance p2, Lcom/google/zxing/common/BitArray;
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->width:I
invoke-direct {p2, v0}, Lcom/google/zxing/common/BitArray;-><init>(I)V
.line 3
:cond_1
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
mul-int/2addr p1, v0
const/4 v0, 0x0
.line 4
:goto_0
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
if-lt v0, v1, :cond_2
return-object p2
:cond_2
shl-int/lit8 v1, v0, 0x5
.line 5
iget-object v2, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
add-int v3, p1, v0
aget v2, v2, v3
invoke-virtual {p2, v1, v2}, Lcom/google/zxing/common/BitArray;->setBulk(II)V
add-int/lit8 v0, v0, 0x1
goto :goto_0
.end method
.method public getTopLeftOnBit()[I
.locals 6
const/4 v0, 0x0
move v1, v0
.line 1
:goto_0
iget-object v2, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
array-length v3, v2
if-ge v1, v3, :cond_1
aget v3, v2, v1
if-eqz v3, :cond_0
goto :goto_1
:cond_0
add-int/lit8 v1, v1, 0x1
goto :goto_0
.line 2
:cond_1
:goto_1
array-length v3, v2
if-ne v1, v3, :cond_2
const/4 v0, 0x0
return-object v0
.line 3
:cond_2
iget v3, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
div-int v4, v1, v3
.line 4
rem-int v3, v1, v3
shl-int/lit8 v3, v3, 0x5
.line 5
aget v1, v2, v1
move v2, v0
:goto_2
rsub-int/lit8 v5, v2, 0x1f
shl-int v5, v1, v5
if-eqz v5, :cond_3
add-int/2addr v3, v2
const/4 v1, 0x2
new-array v1, v1, [I
aput v3, v1, v0
const/4 v0, 0x1
aput v4, v1, v0
return-object v1
:cond_3
add-int/lit8 v2, v2, 0x1
goto :goto_2
.end method
.method public getWidth()I
.locals 1
.line 1
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->width:I
return v0
.end method
.method public hashCode()I
.locals 5
.line 1
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->width:I
const/16 v1, 0x1f
const/16 v2, 0x1f
invoke-static {v0, v1, v0, v2}, Lcom/google/protobuf/a;->a(IIII)I
move-result v0
.line 2
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->height:I
add-int/2addr v0, v1
mul-int/lit8 v0, v0, 0x1f
.line 3
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
add-int/2addr v0, v1
.line 4
iget-object v1, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
array-length v2, v1
const/4 v3, 0x0
:goto_0
if-lt v3, v2, :cond_0
return v0
:cond_0
aget v4, v1, v3
mul-int/lit8 v0, v0, 0x1f
add-int/2addr v0, v4
add-int/lit8 v3, v3, 0x1
goto :goto_0
.end method
.method public set(II)V
.locals 3
.line 1
iget v0, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
mul-int/2addr p2, v0
shr-int/lit8 v0, p1, 0x5
add-int/2addr p2, v0
.line 2
iget-object v0, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
aget v1, v0, p2
and-int/lit8 p1, p1, 0x1f
const/4 v2, 0x1
shl-int p1, v2, p1
or-int/2addr p1, v1
aput p1, v0, p2
return-void
.end method
.method public setRegion(IIII)V
.locals 7
if-ltz p2, :cond_4
if-ltz p1, :cond_4
const/4 v0, 0x1
if-lt p4, v0, :cond_3
if-lt p3, v0, :cond_3
add-int/2addr p3, p1
add-int/2addr p4, p2
.line 1
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->height:I
if-gt p4, v1, :cond_2
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->width:I
if-gt p3, v1, :cond_2
:goto_0
if-lt p2, p4, :cond_0
return-void
.line 2
:cond_0
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
mul-int/2addr v1, p2
move v2, p1
:goto_1
if-lt v2, p3, :cond_1
add-int/lit8 p2, p2, 0x1
goto :goto_0
.line 3
:cond_1
iget-object v3, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
shr-int/lit8 v4, v2, 0x5
add-int/2addr v4, v1
aget v5, v3, v4
and-int/lit8 v6, v2, 0x1f
shl-int v6, v0, v6
or-int/2addr v5, v6
aput v5, v3, v4
add-int/lit8 v2, v2, 0x1
goto :goto_1
.line 4
:cond_2
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "The region must fit inside the matrix"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.line 5
:cond_3
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Height and width must be at least 1"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.line 6
:cond_4
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Left and top must be nonnegative"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public setRow(ILcom/google/zxing/common/BitArray;)V
.locals 3
.line 1
invoke-virtual {p2}, Lcom/google/zxing/common/BitArray;->getBitArray()[I
move-result-object p2
iget-object v0, p0, Lcom/google/zxing/common/BitMatrix;->bits:[I
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->rowSize:I
mul-int/2addr p1, v1
const/4 v2, 0x0
invoke-static {p2, v2, v0, p1, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
return-void
.end method
.method public toString()Ljava/lang/String;
.locals 5
.line 1
new-instance v0, Ljava/lang/StringBuilder;
iget v1, p0, Lcom/google/zxing/common/BitMatrix;->height:I
iget v2, p0, Lcom/google/zxing/common/BitMatrix;->width:I
add-int/lit8 v2, v2, 0x1
mul-int/2addr v2, v1
invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(I)V
const/4 v1, 0x0
move v2, v1
.line 2
:goto_0
iget v3, p0, Lcom/google/zxing/common/BitMatrix;->height:I
if-lt v2, v3, :cond_0
.line 3
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
:cond_0
move v3, v1
.line 4
:goto_1
iget v4, p0, Lcom/google/zxing/common/BitMatrix;->width:I
if-lt v3, v4, :cond_1
const/16 v3, 0xa
.line 5
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
add-int/lit8 v2, v2, 0x1
goto :goto_0
.line 6
:cond_1
invoke-virtual {p0, v3, v2}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v4
if-eqz v4, :cond_2
const-string v4, "X "
goto :goto_2
:cond_2
const-string v4, " "
:goto_2
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
add-int/lit8 v3, v3, 0x1
goto :goto_1
.end method
@@ -0,0 +1,224 @@
.class public final Lcom/google/zxing/common/BitSource;
.super Ljava/lang/Object;
.source "BitSource.java"
# instance fields
.field private bitOffset:I
.field private byteOffset:I
.field private final bytes:[B
# direct methods
.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/common/BitSource;->bytes:[B
return-void
.end method
# virtual methods
.method public available()I
.locals 2
.line 1
iget-object v0, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
array-length v0, v0
iget v1, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
sub-int/2addr v0, v1
mul-int/lit8 v0, v0, 0x8
iget v1, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
sub-int/2addr v0, v1
return v0
.end method
.method public getBitOffset()I
.locals 1
.line 1
iget v0, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
return v0
.end method
.method public getByteOffset()I
.locals 1
.line 1
iget v0, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
return v0
.end method
.method public readBits(I)I
.locals 10
const/4 v0, 0x1
if-lt p1, v0, :cond_5
const/16 v1, 0x20
if-gt p1, v1, :cond_5
.line 1
invoke-virtual {p0}, Lcom/google/zxing/common/BitSource;->available()I
move-result v1
if-gt p1, v1, :cond_5
.line 2
iget v1, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
const/4 v2, 0x0
const/16 v3, 0xff
const/16 v4, 0x8
if-lez v1, :cond_2
rsub-int/lit8 v5, v1, 0x8
if-ge p1, v5, :cond_0
move v6, p1
goto :goto_0
:cond_0
move v6, v5
:goto_0
sub-int/2addr v5, v6
rsub-int/lit8 v7, v6, 0x8
shr-int v7, v3, v7
shl-int/2addr v7, v5
.line 3
iget-object v8, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
iget v9, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
aget-byte v8, v8, v9
and-int/2addr v7, v8
shr-int v5, v7, v5
sub-int/2addr p1, v6
add-int/2addr v1, v6
.line 4
iput v1, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
if-ne v1, v4, :cond_1
.line 5
iput v2, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
add-int/2addr v9, v0
.line 6
iput v9, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
:cond_1
move v2, v5
:cond_2
if-lez p1, :cond_4
:goto_1
if-ge p1, v4, :cond_3
if-lez p1, :cond_4
rsub-int/lit8 v0, p1, 0x8
shr-int v1, v3, v0
shl-int/2addr v1, v0
shl-int/2addr v2, p1
.line 7
iget-object v3, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
iget v4, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
aget-byte v3, v3, v4
and-int/2addr v1, v3
shr-int v0, v1, v0
or-int/2addr v2, v0
.line 8
iget v0, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
add-int/2addr v0, p1
iput v0, p0, Lcom/google/zxing/common/BitSource;->bitOffset:I
goto :goto_2
:cond_3
shl-int/lit8 v1, v2, 0x8
.line 9
iget-object v2, p0, Lcom/google/zxing/common/BitSource;->bytes:[B
iget v5, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
aget-byte v2, v2, v5
and-int/2addr v2, v3
or-int/2addr v2, v1
add-int/2addr v5, v0
.line 10
iput v5, p0, Lcom/google/zxing/common/BitSource;->byteOffset:I
add-int/lit8 p1, p1, -0x8
goto :goto_1
:cond_4
:goto_2
return v2
.line 11
:cond_5
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,98 @@
.class public final Lcom/google/zxing/common/DecoderResult;
.super Ljava/lang/Object;
.source "DecoderResult.java"
# instance fields
.field private final byteSegments:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"[B>;"
}
.end annotation
.end field
.field private final ecLevel:Ljava/lang/String;
.field private final rawBytes:[B
.field private final text:Ljava/lang/String;
# direct methods
.method public constructor <init>([BLjava/lang/String;Ljava/util/List;Ljava/lang/String;)V
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"([B",
"Ljava/lang/String;",
"Ljava/util/List<",
"[B>;",
"Ljava/lang/String;",
")V"
}
.end annotation
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput-object p1, p0, Lcom/google/zxing/common/DecoderResult;->rawBytes:[B
.line 3
iput-object p2, p0, Lcom/google/zxing/common/DecoderResult;->text:Ljava/lang/String;
.line 4
iput-object p3, p0, Lcom/google/zxing/common/DecoderResult;->byteSegments:Ljava/util/List;
.line 5
iput-object p4, p0, Lcom/google/zxing/common/DecoderResult;->ecLevel:Ljava/lang/String;
return-void
.end method
# virtual methods
.method public getByteSegments()Ljava/util/List;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"[B>;"
}
.end annotation
.line 1
iget-object v0, p0, Lcom/google/zxing/common/DecoderResult;->byteSegments:Ljava/util/List;
return-object v0
.end method
.method public getECLevel()Ljava/lang/String;
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/DecoderResult;->ecLevel:Ljava/lang/String;
return-object v0
.end method
.method public getRawBytes()[B
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/DecoderResult;->rawBytes:[B
return-object v0
.end method
.method public getText()Ljava/lang/String;
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/DecoderResult;->text:Ljava/lang/String;
return-object v0
.end method
@@ -0,0 +1,170 @@
.class public final Lcom/google/zxing/common/DefaultGridSampler;
.super Lcom/google/zxing/common/GridSampler;
.source "DefaultGridSampler.java"
# direct methods
.method public constructor <init>()V
.locals 0
.line 1
invoke-direct {p0}, Lcom/google/zxing/common/GridSampler;-><init>()V
return-void
.end method
# virtual methods
.method public sampleGrid(Lcom/google/zxing/common/BitMatrix;IIFFFFFFFFFFFFFFFF)Lcom/google/zxing/common/BitMatrix;
.locals 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 1
invoke-static/range {p4 .. p19}, Lcom/google/zxing/common/PerspectiveTransform;->quadrilateralToQuadrilateral(FFFFFFFFFFFFFFFF)Lcom/google/zxing/common/PerspectiveTransform;
move-result-object v0
move-object v1, p0
move-object v2, p1
move v3, p2
move v4, p3
.line 2
invoke-virtual {p0, p1, p2, p3, v0}, Lcom/google/zxing/common/DefaultGridSampler;->sampleGrid(Lcom/google/zxing/common/BitMatrix;IILcom/google/zxing/common/PerspectiveTransform;)Lcom/google/zxing/common/BitMatrix;
move-result-object v0
return-object v0
.end method
.method public sampleGrid(Lcom/google/zxing/common/BitMatrix;IILcom/google/zxing/common/PerspectiveTransform;)Lcom/google/zxing/common/BitMatrix;
.locals 8
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
if-lez p2, :cond_4
if-lez p3, :cond_4
.line 3
new-instance v0, Lcom/google/zxing/common/BitMatrix;
invoke-direct {v0, p2, p3}, Lcom/google/zxing/common/BitMatrix;-><init>(II)V
shl-int/lit8 p2, p2, 0x1
.line 4
new-array v1, p2, [F
const/4 v2, 0x0
move v3, v2
:goto_0
if-lt v3, p3, :cond_0
return-object v0
:cond_0
int-to-float v4, v3
const/high16 v5, 0x3f000000 # 0.5f
add-float/2addr v4, v5
move v6, v2
:goto_1
if-lt v6, p2, :cond_3
.line 5
invoke-virtual {p4, v1}, Lcom/google/zxing/common/PerspectiveTransform;->transformPoints([F)V
.line 6
invoke-static {p1, v1}, Lcom/google/zxing/common/GridSampler;->checkAndNudgePoints(Lcom/google/zxing/common/BitMatrix;[F)V
move v4, v2
:goto_2
if-lt v4, p2, :cond_1
add-int/lit8 v3, v3, 0x1
goto :goto_0
.line 7
:cond_1
:try_start_0
aget v5, v1, v4
float-to-int v5, v5
add-int/lit8 v6, v4, 0x1
aget v6, v1, v6
float-to-int v6, v6
invoke-virtual {p1, v5, v6}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v5
if-eqz v5, :cond_2
shr-int/lit8 v5, v4, 0x1
.line 8
invoke-virtual {v0, v5, v3}, Lcom/google/zxing/common/BitMatrix;->set(II)V
:try_end_0
.catch Ljava/lang/ArrayIndexOutOfBoundsException; {:try_start_0 .. :try_end_0} :catch_0
:cond_2
add-int/lit8 v4, v4, 0x2
goto :goto_2
.line 9
:catch_0
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object p1
throw p1
:cond_3
shr-int/lit8 v7, v6, 0x1
int-to-float v7, v7
add-float/2addr v7, v5
.line 10
aput v7, v1, v6
add-int/lit8 v7, v6, 0x1
.line 11
aput v4, v1, v7
add-int/lit8 v6, v6, 0x2
goto :goto_1
.line 12
:cond_4
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object p1
throw p1
.end method
@@ -0,0 +1,46 @@
.class public Lcom/google/zxing/common/DetectorResult;
.super Ljava/lang/Object;
.source "DetectorResult.java"
# instance fields
.field private final bits:Lcom/google/zxing/common/BitMatrix;
.field private final points:[Lcom/google/zxing/ResultPoint;
# direct methods
.method public constructor <init>(Lcom/google/zxing/common/BitMatrix;[Lcom/google/zxing/ResultPoint;)V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput-object p1, p0, Lcom/google/zxing/common/DetectorResult;->bits:Lcom/google/zxing/common/BitMatrix;
.line 3
iput-object p2, p0, Lcom/google/zxing/common/DetectorResult;->points:[Lcom/google/zxing/ResultPoint;
return-void
.end method
# virtual methods
.method public final getBits()Lcom/google/zxing/common/BitMatrix;
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/DetectorResult;->bits:Lcom/google/zxing/common/BitMatrix;
return-object v0
.end method
.method public final getPoints()[Lcom/google/zxing/ResultPoint;
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/DetectorResult;->points:[Lcom/google/zxing/ResultPoint;
return-object v0
.end method
@@ -0,0 +1,537 @@
.class public Lcom/google/zxing/common/GlobalHistogramBinarizer;
.super Lcom/google/zxing/Binarizer;
.source "GlobalHistogramBinarizer.java"
# static fields
.field private static final EMPTY:[B
.field private static final LUMINANCE_BITS:I = 0x5
.field private static final LUMINANCE_BUCKETS:I = 0x20
.field private static final LUMINANCE_SHIFT:I = 0x3
# instance fields
.field private final buckets:[I
.field private luminances:[B
# direct methods
.method public static constructor <clinit>()V
.locals 1
const/4 v0, 0x0
new-array v0, v0, [B
.line 1
sput-object v0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->EMPTY:[B
return-void
.end method
.method public constructor <init>(Lcom/google/zxing/LuminanceSource;)V
.locals 0
.line 1
invoke-direct {p0, p1}, Lcom/google/zxing/Binarizer;-><init>(Lcom/google/zxing/LuminanceSource;)V
.line 2
sget-object p1, Lcom/google/zxing/common/GlobalHistogramBinarizer;->EMPTY:[B
iput-object p1, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->luminances:[B
const/16 p1, 0x20
new-array p1, p1, [I
.line 3
iput-object p1, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->buckets:[I
return-void
.end method
.method private static estimateBlackPoint([I)I
.locals 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 1
array-length v0, p0
const/4 v1, 0x0
move v2, v1
move v3, v2
move v4, v3
move v5, v4
:goto_0
if-lt v2, v0, :cond_6
move v2, v1
move v3, v2
:goto_1
if-lt v1, v0, :cond_4
if-le v5, v3, :cond_0
goto :goto_2
:cond_0
move v8, v5
move v5, v3
move v3, v8
:goto_2
sub-int v1, v5, v3
shr-int/lit8 v0, v0, 0x4
if-le v1, v0, :cond_3
add-int/lit8 v0, v5, -0x1
const/4 v1, -0x1
move v2, v1
move v1, v0
:goto_3
if-gt v0, v3, :cond_1
shl-int/lit8 p0, v1, 0x3
return p0
:cond_1
sub-int v6, v0, v3
mul-int/2addr v6, v6
sub-int v7, v5, v0
mul-int/2addr v7, v6
.line 2
aget v6, p0, v0
sub-int v6, v4, v6
mul-int/2addr v6, v7
if-le v6, v2, :cond_2
move v1, v0
move v2, v6
:cond_2
add-int/lit8 v0, v0, -0x1
goto :goto_3
.line 3
:cond_3
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object p0
throw p0
:cond_4
sub-int v6, v1, v5
.line 4
aget v7, p0, v1
mul-int/2addr v7, v6
mul-int/2addr v7, v6
if-le v7, v2, :cond_5
move v3, v1
move v2, v7
:cond_5
add-int/lit8 v1, v1, 0x1
goto :goto_1
.line 5
:cond_6
aget v6, p0, v2
if-le v6, v3, :cond_7
.line 6
aget v3, p0, v2
move v5, v2
.line 7
:cond_7
aget v6, p0, v2
if-le v6, v4, :cond_8
.line 8
aget v4, p0, v2
:cond_8
add-int/lit8 v2, v2, 0x1
goto :goto_0
.end method
.method private initArrays(I)V
.locals 2
.line 1
iget-object v0, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->luminances:[B
array-length v0, v0
if-ge v0, p1, :cond_0
.line 2
new-array p1, p1, [B
iput-object p1, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->luminances:[B
:cond_0
const/4 p1, 0x0
move v0, p1
:goto_0
const/16 v1, 0x20
if-lt v0, v1, :cond_1
return-void
.line 3
:cond_1
iget-object v1, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->buckets:[I
aput p1, v1, v0
add-int/lit8 v0, v0, 0x1
goto :goto_0
.end method
# virtual methods
.method public createBinarizer(Lcom/google/zxing/LuminanceSource;)Lcom/google/zxing/Binarizer;
.locals 1
.line 1
new-instance v0, Lcom/google/zxing/common/GlobalHistogramBinarizer;
invoke-direct {v0, p1}, Lcom/google/zxing/common/GlobalHistogramBinarizer;-><init>(Lcom/google/zxing/LuminanceSource;)V
return-object v0
.end method
.method public getBlackMatrix()Lcom/google/zxing/common/BitMatrix;
.locals 13
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 1
invoke-virtual {p0}, Lcom/google/zxing/Binarizer;->getLuminanceSource()Lcom/google/zxing/LuminanceSource;
move-result-object v0
.line 2
invoke-virtual {v0}, Lcom/google/zxing/LuminanceSource;->getWidth()I
move-result v1
.line 3
invoke-virtual {v0}, Lcom/google/zxing/LuminanceSource;->getHeight()I
move-result v2
.line 4
new-instance v3, Lcom/google/zxing/common/BitMatrix;
invoke-direct {v3, v1, v2}, Lcom/google/zxing/common/BitMatrix;-><init>(II)V
.line 5
invoke-direct {p0, v1}, Lcom/google/zxing/common/GlobalHistogramBinarizer;->initArrays(I)V
.line 6
iget-object v4, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->buckets:[I
const/4 v5, 0x1
move v6, v5
:goto_0
const/4 v7, 0x5
if-lt v6, v7, :cond_3
.line 7
invoke-static {v4}, Lcom/google/zxing/common/GlobalHistogramBinarizer;->estimateBlackPoint([I)I
move-result v8
.line 8
invoke-virtual {v0}, Lcom/google/zxing/LuminanceSource;->getMatrix()[B
move-result-object v9
const/4 v10, 0x0
move v11, v10
:goto_1
if-lt v11, v2, :cond_0
return-object v3
:cond_0
mul-int v12, v11, v1
move v0, v10
:goto_2
if-lt v0, v1, :cond_1
add-int/lit8 v11, v11, 0x1
goto :goto_1
:cond_1
add-int v4, v12, v0
.line 9
aget-byte v4, v9, v4
and-int/lit16 v4, v4, 0xff
if-ge v4, v8, :cond_2
.line 10
invoke-virtual {v3, v0, v11}, Lcom/google/zxing/common/BitMatrix;->set(II)V
:cond_2
add-int/lit8 v0, v0, 0x1
goto :goto_2
:cond_3
mul-int v8, v2, v6
.line 11
div-int/2addr v8, v7
.line 12
iget-object v9, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->luminances:[B
invoke-virtual {v0, v8, v9}, Lcom/google/zxing/LuminanceSource;->getRow(I[B)[B
move-result-object v8
shl-int/lit8 v9, v1, 0x2
.line 13
div-int/2addr v9, v7
.line 14
div-int/lit8 v7, v1, 0x5
:goto_3
if-lt v7, v9, :cond_4
add-int/lit8 v6, v6, 0x1
goto :goto_0
.line 15
:cond_4
aget-byte v10, v8, v7
and-int/lit16 v10, v10, 0xff
shr-int/lit8 v10, v10, 0x3
.line 16
aget v11, v4, v10
add-int/2addr v11, v5
aput v11, v4, v10
add-int/lit8 v7, v7, 0x1
goto :goto_3
.end method
.method public getBlackRow(ILcom/google/zxing/common/BitArray;)Lcom/google/zxing/common/BitArray;
.locals 10
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 1
invoke-virtual {p0}, Lcom/google/zxing/Binarizer;->getLuminanceSource()Lcom/google/zxing/LuminanceSource;
move-result-object v0
.line 2
invoke-virtual {v0}, Lcom/google/zxing/LuminanceSource;->getWidth()I
move-result v1
if-eqz p2, :cond_1
.line 3
invoke-virtual {p2}, Lcom/google/zxing/common/BitArray;->getSize()I
move-result v2
if-ge v2, v1, :cond_0
goto :goto_0
.line 4
:cond_0
invoke-virtual {p2}, Lcom/google/zxing/common/BitArray;->clear()V
goto :goto_1
.line 5
:cond_1
:goto_0
new-instance p2, Lcom/google/zxing/common/BitArray;
invoke-direct {p2, v1}, Lcom/google/zxing/common/BitArray;-><init>(I)V
.line 6
:goto_1
invoke-direct {p0, v1}, Lcom/google/zxing/common/GlobalHistogramBinarizer;->initArrays(I)V
.line 7
iget-object v2, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->luminances:[B
invoke-virtual {v0, p1, v2}, Lcom/google/zxing/LuminanceSource;->getRow(I[B)[B
move-result-object p1
.line 8
iget-object v0, p0, Lcom/google/zxing/common/GlobalHistogramBinarizer;->buckets:[I
const/4 v2, 0x0
move v3, v2
:goto_2
const/4 v4, 0x1
if-lt v3, v1, :cond_4
.line 9
invoke-static {v0}, Lcom/google/zxing/common/GlobalHistogramBinarizer;->estimateBlackPoint([I)I
move-result v5
.line 10
aget-byte v0, p1, v2
and-int/lit16 v0, v0, 0xff
.line 11
aget-byte v2, p1, v4
and-int/lit16 v2, v2, 0xff
move v3, v4
move v9, v2
move v2, v0
move v0, v9
:goto_3
add-int/lit8 v6, v1, -0x1
if-lt v3, v6, :cond_2
return-object p2
:cond_2
add-int/lit8 v6, v3, 0x1
.line 12
aget-byte v7, p1, v6
and-int/lit16 v7, v7, 0xff
shl-int/lit8 v8, v0, 0x2
sub-int/2addr v8, v2
sub-int/2addr v8, v7
shr-int/lit8 v2, v8, 0x1
if-ge v2, v5, :cond_3
.line 13
invoke-virtual {p2, v3}, Lcom/google/zxing/common/BitArray;->set(I)V
:cond_3
move v2, v0
move v3, v6
move v0, v7
goto :goto_3
.line 14
:cond_4
aget-byte v5, p1, v3
and-int/lit16 v5, v5, 0xff
shr-int/lit8 v5, v5, 0x3
.line 15
aget v6, v0, v5
add-int/2addr v6, v4
aput v6, v0, v5
add-int/lit8 v3, v3, 0x1
goto :goto_2
.end method
@@ -0,0 +1,294 @@
.class public abstract Lcom/google/zxing/common/GridSampler;
.super Ljava/lang/Object;
.source "GridSampler.java"
# static fields
.field private static gridSampler:Lcom/google/zxing/common/GridSampler;
# direct methods
.method public static constructor <clinit>()V
.locals 1
.line 1
new-instance v0, Lcom/google/zxing/common/DefaultGridSampler;
invoke-direct {v0}, Lcom/google/zxing/common/DefaultGridSampler;-><init>()V
sput-object v0, Lcom/google/zxing/common/GridSampler;->gridSampler:Lcom/google/zxing/common/GridSampler;
return-void
.end method
.method public constructor <init>()V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static checkAndNudgePoints(Lcom/google/zxing/common/BitMatrix;[F)V
.locals 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 1
invoke-virtual {p0}, Lcom/google/zxing/common/BitMatrix;->getWidth()I
move-result v0
.line 2
invoke-virtual {p0}, Lcom/google/zxing/common/BitMatrix;->getHeight()I
move-result p0
const/4 v1, 0x0
const/4 v2, 0x1
move v3, v1
move v4, v2
.line 3
:goto_0
array-length v5, p1
const/4 v6, 0x0
const/4 v7, -0x1
if-ge v3, v5, :cond_6
if-nez v4, :cond_0
goto :goto_5
.line 4
:cond_0
aget v4, p1, v3
float-to-int v4, v4
add-int/lit8 v5, v3, 0x1
.line 5
aget v8, p1, v5
float-to-int v8, v8
if-lt v4, v7, :cond_5
if-gt v4, v0, :cond_5
if-lt v8, v7, :cond_5
if-gt v8, p0, :cond_5
if-ne v4, v7, :cond_1
.line 6
aput v6, p1, v3
:goto_1
move v4, v2
goto :goto_2
:cond_1
if-ne v4, v0, :cond_2
add-int/lit8 v4, v0, -0x1
int-to-float v4, v4
.line 7
aput v4, p1, v3
goto :goto_1
:cond_2
move v4, v1
:goto_2
if-ne v8, v7, :cond_3
.line 8
aput v6, p1, v5
:goto_3
move v4, v2
goto :goto_4
:cond_3
if-ne v8, p0, :cond_4
add-int/lit8 v4, p0, -0x1
int-to-float v4, v4
.line 9
aput v4, p1, v5
goto :goto_3
:cond_4
:goto_4
add-int/lit8 v3, v3, 0x2
goto :goto_0
.line 10
:cond_5
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object p0
throw p0
.line 11
:cond_6
:goto_5
array-length v3, p1
add-int/lit8 v3, v3, -0x2
move v4, v2
:goto_6
if-ltz v3, :cond_d
if-nez v4, :cond_7
goto :goto_b
.line 12
:cond_7
aget v4, p1, v3
float-to-int v4, v4
add-int/lit8 v5, v3, 0x1
.line 13
aget v8, p1, v5
float-to-int v8, v8
if-lt v4, v7, :cond_c
if-gt v4, v0, :cond_c
if-lt v8, v7, :cond_c
if-gt v8, p0, :cond_c
if-ne v4, v7, :cond_8
.line 14
aput v6, p1, v3
:goto_7
move v4, v2
goto :goto_8
:cond_8
if-ne v4, v0, :cond_9
add-int/lit8 v4, v0, -0x1
int-to-float v4, v4
.line 15
aput v4, p1, v3
goto :goto_7
:cond_9
move v4, v1
:goto_8
if-ne v8, v7, :cond_a
.line 16
aput v6, p1, v5
:goto_9
move v4, v2
goto :goto_a
:cond_a
if-ne v8, p0, :cond_b
add-int/lit8 v4, p0, -0x1
int-to-float v4, v4
.line 17
aput v4, p1, v5
goto :goto_9
:cond_b
:goto_a
add-int/lit8 v3, v3, -0x2
goto :goto_6
.line 18
:cond_c
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object p0
throw p0
:cond_d
:goto_b
return-void
.end method
.method public static getInstance()Lcom/google/zxing/common/GridSampler;
.locals 1
.line 1
sget-object v0, Lcom/google/zxing/common/GridSampler;->gridSampler:Lcom/google/zxing/common/GridSampler;
return-object v0
.end method
.method public static setGridSampler(Lcom/google/zxing/common/GridSampler;)V
.locals 0
.line 1
sput-object p0, Lcom/google/zxing/common/GridSampler;->gridSampler:Lcom/google/zxing/common/GridSampler;
return-void
.end method
# virtual methods
.method public abstract sampleGrid(Lcom/google/zxing/common/BitMatrix;IIFFFFFFFFFFFFFFFF)Lcom/google/zxing/common/BitMatrix;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.end method
.method public abstract sampleGrid(Lcom/google/zxing/common/BitMatrix;IILcom/google/zxing/common/PerspectiveTransform;)Lcom/google/zxing/common/BitMatrix;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.end method
@@ -0,0 +1,572 @@
.class public final Lcom/google/zxing/common/HybridBinarizer;
.super Lcom/google/zxing/common/GlobalHistogramBinarizer;
.source "HybridBinarizer.java"
# static fields
.field private static final BLOCK_SIZE:I = 0x8
.field private static final BLOCK_SIZE_MASK:I = 0x7
.field private static final BLOCK_SIZE_POWER:I = 0x3
.field private static final MINIMUM_DIMENSION:I = 0x28
.field private static final MIN_DYNAMIC_RANGE:I = 0x18
# instance fields
.field private matrix:Lcom/google/zxing/common/BitMatrix;
# direct methods
.method public constructor <init>(Lcom/google/zxing/LuminanceSource;)V
.locals 0
.line 1
invoke-direct {p0, p1}, Lcom/google/zxing/common/GlobalHistogramBinarizer;-><init>(Lcom/google/zxing/LuminanceSource;)V
return-void
.end method
.method private static calculateBlackPoints([BIIII)[[I
.locals 17
move/from16 v0, p1
move/from16 v1, p2
const/4 v2, 0x2
new-array v3, v2, [I
const/4 v4, 0x1
aput v0, v3, v4
const/4 v5, 0x0
aput v1, v3, v5
.line 1
const-class v6, I
invoke-static {v6, v3}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v3
check-cast v3, [[I
move v6, v5
:goto_0
if-lt v6, v1, :cond_0
return-object v3
:cond_0
shl-int/lit8 v7, v6, 0x3
const/16 v8, 0x8
add-int/lit8 v9, p4, -0x8
if-le v7, v9, :cond_1
move v7, v9
:cond_1
move v9, v5
:goto_1
if-lt v9, v0, :cond_2
add-int/lit8 v6, v6, 0x1
goto :goto_0
:cond_2
shl-int/lit8 v10, v9, 0x3
add-int/lit8 v11, p3, -0x8
if-le v10, v11, :cond_3
move v10, v11
:cond_3
mul-int v11, v7, p3
add-int/2addr v11, v10
const/16 v10, 0xff
move v12, v5
move v13, v12
move v14, v13
move v15, v10
:goto_2
const/16 v5, 0x18
if-lt v12, v8, :cond_5
shr-int/lit8 v10, v13, 0x6
sub-int/2addr v14, v15
if-gt v14, v5, :cond_4
shr-int/lit8 v10, v15, 0x1
if-lez v6, :cond_4
if-lez v9, :cond_4
add-int/lit8 v5, v6, -0x1
.line 2
aget-object v11, v3, v5
aget v11, v11, v9
aget-object v12, v3, v6
add-int/lit8 v13, v9, -0x1
aget v12, v12, v13
mul-int/2addr v12, v2
add-int/2addr v12, v11
.line 3
aget-object v5, v3, v5
aget v5, v5, v13
add-int/2addr v12, v5
shr-int/lit8 v5, v12, 0x2
if-ge v15, v5, :cond_4
move v10, v5
.line 4
:cond_4
aget-object v5, v3, v6
aput v10, v5, v9
add-int/lit8 v9, v9, 0x1
const/4 v5, 0x0
goto :goto_1
:cond_5
const/4 v2, 0x0
:goto_3
if-lt v2, v8, :cond_9
sub-int v2, v14, v15
if-le v2, v5, :cond_8
add-int/lit8 v12, v12, 0x1
add-int v11, v11, p3
move v2, v11
move v5, v12
:goto_4
if-lt v5, v8, :cond_6
move v11, v2
move v12, v5
goto :goto_6
:cond_6
const/4 v11, 0x0
:goto_5
if-lt v11, v8, :cond_7
add-int/lit8 v5, v5, 0x1
add-int v2, v2, p3
goto :goto_4
:cond_7
add-int v12, v2, v11
.line 5
aget-byte v12, p0, v12
and-int/2addr v12, v10
add-int/2addr v13, v12
add-int/lit8 v11, v11, 0x1
goto :goto_5
:cond_8
:goto_6
add-int/2addr v12, v4
add-int v11, v11, p3
const/4 v2, 0x2
goto :goto_2
:cond_9
add-int v16, v11, v2
.line 6
aget-byte v4, p0, v16
and-int/2addr v4, v10
add-int/2addr v13, v4
if-ge v4, v15, :cond_a
move v15, v4
:cond_a
if-le v4, v14, :cond_b
move v14, v4
:cond_b
add-int/lit8 v2, v2, 0x1
const/4 v4, 0x1
goto :goto_3
.end method
.method private static calculateThresholdForBlock([BIIII[[ILcom/google/zxing/common/BitMatrix;)V
.locals 15
move/from16 v0, p1
move/from16 v1, p2
const/4 v2, 0x0
move v3, v2
:goto_0
if-lt v3, v1, :cond_0
return-void
:cond_0
shl-int/lit8 v4, v3, 0x3
add-int/lit8 v5, p4, -0x8
if-le v4, v5, :cond_1
move v4, v5
:cond_1
move v5, v2
:goto_1
if-lt v5, v0, :cond_2
add-int/lit8 v3, v3, 0x1
goto :goto_0
:cond_2
shl-int/lit8 v6, v5, 0x3
add-int/lit8 v7, p3, -0x8
if-le v6, v7, :cond_3
goto :goto_2
:cond_3
move v7, v6
:goto_2
add-int/lit8 v6, v0, -0x3
const/4 v8, 0x2
.line 1
invoke-static {v5, v8, v6}, Lcom/google/zxing/common/HybridBinarizer;->cap(III)I
move-result v6
add-int/lit8 v9, v1, -0x3
.line 2
invoke-static {v3, v8, v9}, Lcom/google/zxing/common/HybridBinarizer;->cap(III)I
move-result v9
const/4 v10, -0x2
move v11, v2
:goto_3
if-le v10, v8, :cond_4
.line 3
div-int/lit8 v9, v11, 0x19
move-object v6, p0
move v8, v4
move/from16 v10, p3
move-object/from16 v11, p6
.line 4
invoke-static/range {v6 .. v11}, Lcom/google/zxing/common/HybridBinarizer;->thresholdBlock([BIIIILcom/google/zxing/common/BitMatrix;)V
add-int/lit8 v5, v5, 0x1
goto :goto_1
:cond_4
add-int v12, v9, v10
.line 5
aget-object v12, p5, v12
add-int/lit8 v13, v6, -0x2
.line 6
aget v13, v12, v13
add-int/lit8 v14, v6, -0x1
aget v14, v12, v14
add-int/2addr v13, v14
aget v14, v12, v6
add-int/2addr v13, v14
add-int/lit8 v14, v6, 0x1
aget v14, v12, v14
add-int/2addr v13, v14
add-int/lit8 v14, v6, 0x2
aget v12, v12, v14
add-int/2addr v13, v12
add-int/2addr v11, v13
add-int/lit8 v10, v10, 0x1
goto :goto_3
.end method
.method private static cap(III)I
.locals 0
if-ge p0, p1, :cond_0
move p0, p1
goto :goto_0
:cond_0
if-le p0, p2, :cond_1
move p0, p2
:cond_1
:goto_0
return p0
.end method
.method private static thresholdBlock([BIIIILcom/google/zxing/common/BitMatrix;)V
.locals 7
mul-int v0, p2, p4
add-int/2addr v0, p1
const/4 v1, 0x0
move v2, v1
:goto_0
const/16 v3, 0x8
if-lt v2, v3, :cond_0
return-void
:cond_0
move v4, v1
:goto_1
if-lt v4, v3, :cond_1
add-int/lit8 v2, v2, 0x1
add-int/2addr v0, p4
goto :goto_0
:cond_1
add-int v5, v0, v4
.line 1
aget-byte v5, p0, v5
and-int/lit16 v5, v5, 0xff
if-gt v5, p3, :cond_2
add-int v5, p1, v4
add-int v6, p2, v2
.line 2
invoke-virtual {p5, v5, v6}, Lcom/google/zxing/common/BitMatrix;->set(II)V
:cond_2
add-int/lit8 v4, v4, 0x1
goto :goto_1
.end method
# virtual methods
.method public createBinarizer(Lcom/google/zxing/LuminanceSource;)Lcom/google/zxing/Binarizer;
.locals 1
.line 1
new-instance v0, Lcom/google/zxing/common/HybridBinarizer;
invoke-direct {v0, p1}, Lcom/google/zxing/common/HybridBinarizer;-><init>(Lcom/google/zxing/LuminanceSource;)V
return-object v0
.end method
.method public getBlackMatrix()Lcom/google/zxing/common/BitMatrix;
.locals 8
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 1
iget-object v0, p0, Lcom/google/zxing/common/HybridBinarizer;->matrix:Lcom/google/zxing/common/BitMatrix;
if-eqz v0, :cond_0
return-object v0
.line 2
:cond_0
invoke-virtual {p0}, Lcom/google/zxing/Binarizer;->getLuminanceSource()Lcom/google/zxing/LuminanceSource;
move-result-object v0
.line 3
invoke-virtual {v0}, Lcom/google/zxing/LuminanceSource;->getWidth()I
move-result v4
.line 4
invoke-virtual {v0}, Lcom/google/zxing/LuminanceSource;->getHeight()I
move-result v5
const/16 v1, 0x28
if-lt v4, v1, :cond_3
if-lt v5, v1, :cond_3
.line 5
invoke-virtual {v0}, Lcom/google/zxing/LuminanceSource;->getMatrix()[B
move-result-object v1
shr-int/lit8 v0, v4, 0x3
and-int/lit8 v2, v4, 0x7
if-eqz v2, :cond_1
add-int/lit8 v0, v0, 0x1
:cond_1
move v2, v0
shr-int/lit8 v0, v5, 0x3
and-int/lit8 v3, v5, 0x7
if-eqz v3, :cond_2
add-int/lit8 v0, v0, 0x1
:cond_2
move v3, v0
.line 6
invoke-static {v1, v2, v3, v4, v5}, Lcom/google/zxing/common/HybridBinarizer;->calculateBlackPoints([BIIII)[[I
move-result-object v6
.line 7
new-instance v0, Lcom/google/zxing/common/BitMatrix;
invoke-direct {v0, v4, v5}, Lcom/google/zxing/common/BitMatrix;-><init>(II)V
move-object v7, v0
.line 8
invoke-static/range {v1 .. v7}, Lcom/google/zxing/common/HybridBinarizer;->calculateThresholdForBlock([BIIII[[ILcom/google/zxing/common/BitMatrix;)V
.line 9
iput-object v0, p0, Lcom/google/zxing/common/HybridBinarizer;->matrix:Lcom/google/zxing/common/BitMatrix;
goto :goto_0
.line 10
:cond_3
invoke-super {p0}, Lcom/google/zxing/common/GlobalHistogramBinarizer;->getBlackMatrix()Lcom/google/zxing/common/BitMatrix;
move-result-object v0
iput-object v0, p0, Lcom/google/zxing/common/HybridBinarizer;->matrix:Lcom/google/zxing/common/BitMatrix;
.line 11
:goto_0
iget-object v0, p0, Lcom/google/zxing/common/HybridBinarizer;->matrix:Lcom/google/zxing/common/BitMatrix;
return-object v0
.end method
@@ -0,0 +1,663 @@
.class public final Lcom/google/zxing/common/PerspectiveTransform;
.super Ljava/lang/Object;
.source "PerspectiveTransform.java"
# instance fields
.field private final a11:F
.field private final a12:F
.field private final a13:F
.field private final a21:F
.field private final a22:F
.field private final a23:F
.field private final a31:F
.field private final a32:F
.field private final a33:F
# direct methods
.method private constructor <init>(FFFFFFFFF)V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput p1, p0, Lcom/google/zxing/common/PerspectiveTransform;->a11:F
.line 3
iput p4, p0, Lcom/google/zxing/common/PerspectiveTransform;->a12:F
.line 4
iput p7, p0, Lcom/google/zxing/common/PerspectiveTransform;->a13:F
.line 5
iput p2, p0, Lcom/google/zxing/common/PerspectiveTransform;->a21:F
.line 6
iput p5, p0, Lcom/google/zxing/common/PerspectiveTransform;->a22:F
.line 7
iput p8, p0, Lcom/google/zxing/common/PerspectiveTransform;->a23:F
.line 8
iput p3, p0, Lcom/google/zxing/common/PerspectiveTransform;->a31:F
.line 9
iput p6, p0, Lcom/google/zxing/common/PerspectiveTransform;->a32:F
.line 10
iput p9, p0, Lcom/google/zxing/common/PerspectiveTransform;->a33:F
return-void
.end method
.method public static quadrilateralToQuadrilateral(FFFFFFFFFFFFFFFF)Lcom/google/zxing/common/PerspectiveTransform;
.locals 0
.line 1
invoke-static/range {p0 .. p7}, Lcom/google/zxing/common/PerspectiveTransform;->quadrilateralToSquare(FFFFFFFF)Lcom/google/zxing/common/PerspectiveTransform;
move-result-object p0
.line 2
invoke-static/range {p8 .. p15}, Lcom/google/zxing/common/PerspectiveTransform;->squareToQuadrilateral(FFFFFFFF)Lcom/google/zxing/common/PerspectiveTransform;
move-result-object p1
.line 3
invoke-virtual {p1, p0}, Lcom/google/zxing/common/PerspectiveTransform;->times(Lcom/google/zxing/common/PerspectiveTransform;)Lcom/google/zxing/common/PerspectiveTransform;
move-result-object p0
return-object p0
.end method
.method public static quadrilateralToSquare(FFFFFFFF)Lcom/google/zxing/common/PerspectiveTransform;
.locals 0
.line 1
invoke-static/range {p0 .. p7}, Lcom/google/zxing/common/PerspectiveTransform;->squareToQuadrilateral(FFFFFFFF)Lcom/google/zxing/common/PerspectiveTransform;
move-result-object p0
invoke-virtual {p0}, Lcom/google/zxing/common/PerspectiveTransform;->buildAdjoint()Lcom/google/zxing/common/PerspectiveTransform;
move-result-object p0
return-object p0
.end method
.method public static squareToQuadrilateral(FFFFFFFF)Lcom/google/zxing/common/PerspectiveTransform;
.locals 11
sub-float v0, p0, p2
add-float/2addr v0, p4
sub-float v0, v0, p6
sub-float v1, p1, p3
add-float v1, v1, p5
sub-float v1, v1, p7
const/4 v2, 0x0
cmpl-float v3, v0, v2
if-nez v3, :cond_0
cmpl-float v2, v1, v2
if-nez v2, :cond_0
.line 1
new-instance v10, Lcom/google/zxing/common/PerspectiveTransform;
sub-float v1, p2, p0
sub-float v2, p4, p2
sub-float v4, p3, p1
sub-float v5, p5, p3
const/4 v7, 0x0
const/4 v8, 0x0
const/high16 v9, 0x3f800000 # 1.0f
move-object v0, v10
move v3, p0
move v6, p1
invoke-direct/range {v0 .. v9}, Lcom/google/zxing/common/PerspectiveTransform;-><init>(FFFFFFFFF)V
return-object v10
:cond_0
sub-float v2, p2, p4
sub-float v3, p6, p4
sub-float v4, p3, p5
sub-float v5, p7, p5
mul-float v6, v2, v5
mul-float v7, v3, v4
sub-float/2addr v6, v7
mul-float/2addr v5, v0
mul-float/2addr v3, v1
sub-float/2addr v5, v3
div-float v7, v5, v6
mul-float/2addr v2, v1
mul-float/2addr v0, v4
sub-float/2addr v2, v0
div-float v8, v2, v6
.line 2
new-instance v10, Lcom/google/zxing/common/PerspectiveTransform;
sub-float v0, p2, p0
mul-float v1, v7, p2
add-float/2addr v1, v0
sub-float v0, p6, p0
mul-float v2, v8, p6
add-float/2addr v2, v0
sub-float v0, p3, p1
mul-float v3, v7, p3
add-float v4, v3, v0
sub-float v0, p7, p1
mul-float v3, v8, p7
add-float v5, v3, v0
const/high16 v9, 0x3f800000 # 1.0f
move-object v0, v10
move v3, p0
move v6, p1
invoke-direct/range {v0 .. v9}, Lcom/google/zxing/common/PerspectiveTransform;-><init>(FFFFFFFFF)V
return-object v10
.end method
# virtual methods
.method public buildAdjoint()Lcom/google/zxing/common/PerspectiveTransform;
.locals 18
move-object/from16 v0, p0
.line 1
new-instance v11, Lcom/google/zxing/common/PerspectiveTransform;
iget v1, v0, Lcom/google/zxing/common/PerspectiveTransform;->a22:F
iget v2, v0, Lcom/google/zxing/common/PerspectiveTransform;->a33:F
mul-float v3, v1, v2
iget v4, v0, Lcom/google/zxing/common/PerspectiveTransform;->a23:F
iget v5, v0, Lcom/google/zxing/common/PerspectiveTransform;->a32:F
mul-float v6, v4, v5
sub-float/2addr v3, v6
.line 2
iget v6, v0, Lcom/google/zxing/common/PerspectiveTransform;->a31:F
mul-float v7, v4, v6
iget v8, v0, Lcom/google/zxing/common/PerspectiveTransform;->a21:F
mul-float v9, v8, v2
sub-float/2addr v7, v9
mul-float v9, v8, v5
mul-float v10, v1, v6
sub-float/2addr v9, v10
.line 3
iget v10, v0, Lcom/google/zxing/common/PerspectiveTransform;->a13:F
mul-float v12, v10, v5
iget v13, v0, Lcom/google/zxing/common/PerspectiveTransform;->a12:F
mul-float v14, v13, v2
sub-float/2addr v12, v14
.line 4
iget v14, v0, Lcom/google/zxing/common/PerspectiveTransform;->a11:F
mul-float/2addr v2, v14
mul-float v15, v10, v6
sub-float v15, v2, v15
mul-float/2addr v6, v13
mul-float/2addr v5, v14
sub-float v16, v6, v5
mul-float v2, v13, v4
mul-float v5, v10, v1
sub-float v17, v2, v5
mul-float/2addr v10, v8
mul-float/2addr v4, v14
sub-float/2addr v10, v4
mul-float/2addr v14, v1
mul-float/2addr v13, v8
sub-float v13, v14, v13
move-object v1, v11
move v2, v3
move v3, v7
move v4, v9
move v5, v12
move v6, v15
move/from16 v7, v16
move/from16 v8, v17
move v9, v10
move v10, v13
.line 5
invoke-direct/range {v1 .. v10}, Lcom/google/zxing/common/PerspectiveTransform;-><init>(FFFFFFFFF)V
return-object v11
.end method
.method public times(Lcom/google/zxing/common/PerspectiveTransform;)Lcom/google/zxing/common/PerspectiveTransform;
.locals 19
move-object/from16 v0, p0
move-object/from16 v1, p1
.line 1
new-instance v11, Lcom/google/zxing/common/PerspectiveTransform;
iget v2, v0, Lcom/google/zxing/common/PerspectiveTransform;->a11:F
iget v3, v1, Lcom/google/zxing/common/PerspectiveTransform;->a11:F
mul-float v4, v2, v3
iget v5, v0, Lcom/google/zxing/common/PerspectiveTransform;->a21:F
iget v6, v1, Lcom/google/zxing/common/PerspectiveTransform;->a12:F
mul-float v7, v5, v6
add-float/2addr v7, v4
iget v4, v0, Lcom/google/zxing/common/PerspectiveTransform;->a31:F
iget v8, v1, Lcom/google/zxing/common/PerspectiveTransform;->a13:F
mul-float v9, v4, v8
add-float/2addr v7, v9
.line 2
iget v9, v1, Lcom/google/zxing/common/PerspectiveTransform;->a21:F
mul-float v10, v2, v9
iget v12, v1, Lcom/google/zxing/common/PerspectiveTransform;->a22:F
mul-float v13, v5, v12
add-float/2addr v13, v10
iget v10, v1, Lcom/google/zxing/common/PerspectiveTransform;->a23:F
mul-float v14, v4, v10
add-float/2addr v13, v14
.line 3
iget v14, v1, Lcom/google/zxing/common/PerspectiveTransform;->a31:F
mul-float/2addr v2, v14
iget v15, v1, Lcom/google/zxing/common/PerspectiveTransform;->a32:F
mul-float/2addr v5, v15
add-float/2addr v5, v2
iget v1, v1, Lcom/google/zxing/common/PerspectiveTransform;->a33:F
mul-float/2addr v4, v1
add-float/2addr v4, v5
.line 4
iget v2, v0, Lcom/google/zxing/common/PerspectiveTransform;->a12:F
mul-float v5, v2, v3
move/from16 p1, v4
iget v4, v0, Lcom/google/zxing/common/PerspectiveTransform;->a22:F
mul-float v16, v4, v6
add-float v16, v16, v5
iget v5, v0, Lcom/google/zxing/common/PerspectiveTransform;->a32:F
mul-float v17, v5, v8
add-float v16, v17, v16
mul-float v17, v2, v9
mul-float v18, v4, v12
add-float v18, v18, v17
mul-float v17, v5, v10
add-float v17, v17, v18
mul-float/2addr v2, v14
mul-float/2addr v4, v15
add-float/2addr v4, v2
mul-float/2addr v5, v1
add-float v18, v5, v4
.line 5
iget v2, v0, Lcom/google/zxing/common/PerspectiveTransform;->a13:F
mul-float/2addr v3, v2
iget v4, v0, Lcom/google/zxing/common/PerspectiveTransform;->a23:F
mul-float/2addr v6, v4
add-float/2addr v6, v3
iget v3, v0, Lcom/google/zxing/common/PerspectiveTransform;->a33:F
mul-float/2addr v8, v3
add-float/2addr v8, v6
mul-float/2addr v9, v2
mul-float/2addr v12, v4
add-float/2addr v12, v9
mul-float/2addr v10, v3
add-float v9, v10, v12
mul-float/2addr v2, v14
mul-float/2addr v4, v15
add-float/2addr v4, v2
mul-float/2addr v3, v1
add-float v10, v3, v4
move-object v1, v11
move v2, v7
move v3, v13
move/from16 v4, p1
move/from16 v5, v16
move/from16 v6, v17
move/from16 v7, v18
.line 6
invoke-direct/range {v1 .. v10}, Lcom/google/zxing/common/PerspectiveTransform;-><init>(FFFFFFFFF)V
return-object v11
.end method
.method public transformPoints([F)V
.locals 19
move-object/from16 v0, p0
move-object/from16 v1, p1
.line 1
array-length v2, v1
.line 2
iget v3, v0, Lcom/google/zxing/common/PerspectiveTransform;->a11:F
.line 3
iget v4, v0, Lcom/google/zxing/common/PerspectiveTransform;->a12:F
.line 4
iget v5, v0, Lcom/google/zxing/common/PerspectiveTransform;->a13:F
.line 5
iget v6, v0, Lcom/google/zxing/common/PerspectiveTransform;->a21:F
.line 6
iget v7, v0, Lcom/google/zxing/common/PerspectiveTransform;->a22:F
.line 7
iget v8, v0, Lcom/google/zxing/common/PerspectiveTransform;->a23:F
.line 8
iget v9, v0, Lcom/google/zxing/common/PerspectiveTransform;->a31:F
.line 9
iget v10, v0, Lcom/google/zxing/common/PerspectiveTransform;->a32:F
.line 10
iget v11, v0, Lcom/google/zxing/common/PerspectiveTransform;->a33:F
const/4 v12, 0x0
:goto_0
if-lt v12, v2, :cond_0
return-void
.line 11
:cond_0
aget v13, v1, v12
add-int/lit8 v14, v12, 0x1
.line 12
aget v15, v1, v14
mul-float v16, v5, v13
mul-float v17, v8, v15
add-float v17, v17, v16
add-float v17, v17, v11
mul-float v16, v3, v13
mul-float v18, v6, v15
add-float v18, v18, v16
add-float v18, v18, v9
div-float v18, v18, v17
.line 13
aput v18, v1, v12
mul-float/2addr v13, v4
mul-float/2addr v15, v7
add-float/2addr v15, v13
add-float/2addr v15, v10
div-float v15, v15, v17
.line 14
aput v15, v1, v14
add-int/lit8 v12, v12, 0x2
goto :goto_0
.end method
.method public transformPoints([F[F)V
.locals 7
.line 15
array-length v0, p1
const/4 v1, 0x0
:goto_0
if-lt v1, v0, :cond_0
return-void
.line 16
:cond_0
aget v2, p1, v1
.line 17
aget v3, p2, v1
.line 18
iget v4, p0, Lcom/google/zxing/common/PerspectiveTransform;->a13:F
mul-float/2addr v4, v2
iget v5, p0, Lcom/google/zxing/common/PerspectiveTransform;->a23:F
mul-float/2addr v5, v3
add-float/2addr v5, v4
iget v4, p0, Lcom/google/zxing/common/PerspectiveTransform;->a33:F
add-float/2addr v5, v4
.line 19
iget v4, p0, Lcom/google/zxing/common/PerspectiveTransform;->a11:F
mul-float/2addr v4, v2
iget v6, p0, Lcom/google/zxing/common/PerspectiveTransform;->a21:F
mul-float/2addr v6, v3
add-float/2addr v6, v4
iget v4, p0, Lcom/google/zxing/common/PerspectiveTransform;->a31:F
add-float/2addr v6, v4
div-float/2addr v6, v5
aput v6, p1, v1
.line 20
iget v4, p0, Lcom/google/zxing/common/PerspectiveTransform;->a12:F
mul-float/2addr v4, v2
iget v2, p0, Lcom/google/zxing/common/PerspectiveTransform;->a22:F
mul-float/2addr v2, v3
add-float/2addr v2, v4
iget v3, p0, Lcom/google/zxing/common/PerspectiveTransform;->a32:F
add-float/2addr v2, v3
div-float/2addr v2, v5
aput v2, p2, v1
add-int/lit8 v1, v1, 0x1
goto :goto_0
.end method
@@ -0,0 +1,504 @@
.class public final Lcom/google/zxing/common/StringUtils;
.super Ljava/lang/Object;
.source "StringUtils.java"
# static fields
.field private static final ASSUME_SHIFT_JIS:Z
.field private static final EUC_JP:Ljava/lang/String; = "EUC_JP"
.field public static final GB2312:Ljava/lang/String; = "GB2312"
.field private static final ISO88591:Ljava/lang/String; = "ISO8859_1"
.field private static final PLATFORM_DEFAULT_ENCODING:Ljava/lang/String;
.field public static final SHIFT_JIS:Ljava/lang/String; = "SJIS"
.field private static final UTF8:Ljava/lang/String; = "UTF8"
# direct methods
.method public static constructor <clinit>()V
.locals 2
const-string v0, "file.encoding"
.line 1
invoke-static {v0}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 2
sput-object v0, Lcom/google/zxing/common/StringUtils;->PLATFORM_DEFAULT_ENCODING:Ljava/lang/String;
const-string v1, "SJIS"
.line 3
invoke-virtual {v1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v1
if-nez v1, :cond_0
const-string v1, "EUC_JP"
.line 4
invoke-virtual {v1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_0
const/4 v0, 0x0
goto :goto_0
:cond_0
const/4 v0, 0x1
.line 5
:goto_0
sput-boolean v0, Lcom/google/zxing/common/StringUtils;->ASSUME_SHIFT_JIS:Z
return-void
.end method
.method private constructor <init>()V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static guessEncoding([BLjava/util/Map;)Ljava/lang/String;
.locals 19
.annotation system Ldalvik/annotation/Signature;
value = {
"([B",
"Ljava/util/Map<",
"Lcom/google/zxing/DecodeHintType;",
"*>;)",
"Ljava/lang/String;"
}
.end annotation
move-object/from16 v0, p0
move-object/from16 v1, p1
if-eqz v1, :cond_0
.line 1
sget-object v2, Lcom/google/zxing/DecodeHintType;->CHARACTER_SET:Lcom/google/zxing/DecodeHintType;
invoke-interface {v1, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
if-eqz v1, :cond_0
return-object v1
.line 2
:cond_0
array-length v1, v0
.line 3
array-length v2, v0
const/4 v3, 0x2
const/4 v4, 0x3
const/4 v5, 0x1
const/4 v6, 0x0
if-le v2, v4, :cond_1
.line 4
aget-byte v2, v0, v6
const/16 v7, -0x11
if-ne v2, v7, :cond_1
.line 5
aget-byte v2, v0, v5
const/16 v7, -0x45
if-ne v2, v7, :cond_1
.line 6
aget-byte v2, v0, v3
const/16 v7, -0x41
if-ne v2, v7, :cond_1
move v2, v5
goto :goto_0
:cond_1
move v2, v6
:goto_0
move v7, v5
move v8, v7
move v3, v6
move v9, v3
move v10, v9
move v11, v10
move v12, v11
move v13, v12
move v14, v13
move v15, v14
move/from16 v16, v15
move/from16 v17, v16
move/from16 v18, v17
:goto_1
if-ge v9, v1, :cond_16
if-nez v5, :cond_2
if-nez v7, :cond_2
if-nez v8, :cond_2
goto/16 :goto_9
.line 7
:cond_2
aget-byte v4, v0, v9
and-int/lit16 v4, v4, 0xff
if-eqz v8, :cond_9
if-lez v10, :cond_5
and-int/lit16 v0, v4, 0x80
if-nez v0, :cond_4
:cond_3
:goto_2
const/4 v8, 0x0
goto :goto_3
:cond_4
add-int/lit8 v10, v10, -0x1
goto :goto_3
:cond_5
and-int/lit16 v0, v4, 0x80
if-eqz v0, :cond_9
and-int/lit8 v0, v4, 0x40
if-nez v0, :cond_6
goto :goto_2
:cond_6
add-int/lit8 v10, v10, 0x1
and-int/lit8 v0, v4, 0x20
if-nez v0, :cond_7
add-int/lit8 v12, v12, 0x1
goto :goto_3
:cond_7
add-int/lit8 v10, v10, 0x1
and-int/lit8 v0, v4, 0x10
if-nez v0, :cond_8
add-int/lit8 v13, v13, 0x1
goto :goto_3
:cond_8
add-int/lit8 v10, v10, 0x1
and-int/lit8 v0, v4, 0x8
if-nez v0, :cond_3
add-int/lit8 v14, v14, 0x1
:cond_9
:goto_3
const/16 v0, 0x7f
if-eqz v5, :cond_c
if-le v4, v0, :cond_a
const/16 v0, 0xa0
if-ge v4, v0, :cond_a
const/4 v5, 0x0
goto :goto_4
:cond_a
const/16 v0, 0x9f
if-le v4, v0, :cond_c
const/16 v0, 0xc0
if-lt v4, v0, :cond_b
const/16 v0, 0xd7
if-eq v4, v0, :cond_b
const/16 v0, 0xf7
if-ne v4, v0, :cond_c
:cond_b
add-int/lit8 v16, v16, 0x1
:cond_c
:goto_4
if-eqz v7, :cond_15
if-lez v11, :cond_e
const/16 v0, 0x40
if-lt v4, v0, :cond_14
const/16 v0, 0x7f
if-eq v4, v0, :cond_14
const/16 v0, 0xfc
if-le v4, v0, :cond_d
goto :goto_7
:cond_d
add-int/lit8 v11, v11, -0x1
goto :goto_8
:cond_e
const/16 v0, 0x80
if-eq v4, v0, :cond_14
const/16 v0, 0xa0
if-eq v4, v0, :cond_14
const/16 v0, 0xef
if-le v4, v0, :cond_f
goto :goto_7
:cond_f
const/16 v0, 0xa0
if-le v4, v0, :cond_11
const/16 v0, 0xe0
if-ge v4, v0, :cond_11
add-int/lit8 v3, v3, 0x1
add-int/lit8 v0, v18, 0x1
if-le v0, v15, :cond_10
move v15, v0
move/from16 v18, v15
goto :goto_5
:cond_10
move/from16 v18, v0
:goto_5
const/16 v17, 0x0
goto :goto_8
:cond_11
const/16 v0, 0x7f
if-le v4, v0, :cond_13
add-int/lit8 v11, v11, 0x1
add-int/lit8 v0, v17, 0x1
if-le v0, v6, :cond_12
move v6, v0
move/from16 v17, v6
goto :goto_6
:cond_12
move/from16 v17, v0
goto :goto_6
:cond_13
const/16 v17, 0x0
:goto_6
const/16 v18, 0x0
goto :goto_8
:cond_14
:goto_7
const/4 v7, 0x0
:cond_15
:goto_8
add-int/lit8 v9, v9, 0x1
move-object/from16 v0, p0
const/4 v4, 0x3
goto/16 :goto_1
:cond_16
:goto_9
if-eqz v8, :cond_17
if-lez v10, :cond_17
const/4 v8, 0x0
:cond_17
if-eqz v7, :cond_18
if-lez v11, :cond_18
const/4 v7, 0x0
:cond_18
const-string v0, "UTF8"
if-eqz v8, :cond_1a
if-nez v2, :cond_19
add-int/2addr v12, v13
add-int/2addr v12, v14
if-lez v12, :cond_1a
:cond_19
return-object v0
:cond_1a
const-string v2, "SJIS"
if-eqz v7, :cond_1c
.line 8
sget-boolean v4, Lcom/google/zxing/common/StringUtils;->ASSUME_SHIFT_JIS:Z
if-nez v4, :cond_1b
const/4 v4, 0x3
if-ge v15, v4, :cond_1b
if-lt v6, v4, :cond_1c
:cond_1b
return-object v2
:cond_1c
const-string v4, "ISO8859_1"
if-eqz v5, :cond_20
if-eqz v7, :cond_20
const/4 v6, 0x2
if-ne v15, v6, :cond_1d
if-eq v3, v6, :cond_1f
:cond_1d
mul-int/lit8 v0, v16, 0xa
if-lt v0, v1, :cond_1e
goto :goto_a
:cond_1e
move-object v2, v4
:cond_1f
:goto_a
return-object v2
:cond_20
if-eqz v5, :cond_21
return-object v4
:cond_21
if-eqz v7, :cond_22
return-object v2
:cond_22
if-eqz v8, :cond_23
return-object v0
.line 9
:cond_23
sget-object v0, Lcom/google/zxing/common/StringUtils;->PLATFORM_DEFAULT_ENCODING:Ljava/lang/String;
return-object v0
.end method
@@ -0,0 +1,76 @@
.class public final Lcom/google/zxing/common/detector/MathUtils;
.super Ljava/lang/Object;
.source "MathUtils.java"
# direct methods
.method private constructor <init>()V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static distance(FFFF)F
.locals 0
sub-float/2addr p0, p2
sub-float/2addr p1, p3
mul-float/2addr p0, p0
mul-float/2addr p1, p1
add-float/2addr p1, p0
float-to-double p0, p1
.line 1
invoke-static {p0, p1}, Ljava/lang/Math;->sqrt(D)D
move-result-wide p0
double-to-float p0, p0
return p0
.end method
.method public static distance(IIII)F
.locals 0
sub-int/2addr p0, p2
sub-int/2addr p1, p3
mul-int/2addr p0, p0
mul-int/2addr p1, p1
add-int/2addr p1, p0
int-to-double p0, p1
.line 2
invoke-static {p0, p1}, Ljava/lang/Math;->sqrt(D)D
move-result-wide p0
double-to-float p0, p0
return p0
.end method
.method public static round(F)I
.locals 1
const/high16 v0, 0x3f000000 # 0.5f
add-float/2addr p0, v0
float-to-int p0, p0
return p0
.end method
@@ -0,0 +1,643 @@
.class public final Lcom/google/zxing/common/detector/MonochromeRectangleDetector;
.super Ljava/lang/Object;
.source "MonochromeRectangleDetector.java"
# static fields
.field private static final MAX_MODULES:I = 0x20
# instance fields
.field private final image:Lcom/google/zxing/common/BitMatrix;
# direct methods
.method public constructor <init>(Lcom/google/zxing/common/BitMatrix;)V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput-object p1, p0, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
return-void
.end method
.method private blackWhiteRange(IIIIZ)[I
.locals 5
add-int v0, p3, p4
const/4 v1, 0x1
shr-int/2addr v0, v1
move v2, v0
:goto_0
if-ge v2, p3, :cond_0
goto :goto_3
.line 1
:cond_0
iget-object v3, p0, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
if-eqz p5, :cond_1
invoke-virtual {v3, v2, p1}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v3
if-eqz v3, :cond_2
goto :goto_1
:cond_1
invoke-virtual {v3, p1, v2}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v3
if-eqz v3, :cond_2
:goto_1
add-int/lit8 v2, v2, -0x1
goto :goto_0
:cond_2
move v3, v2
:cond_3
add-int/lit8 v3, v3, -0x1
if-lt v3, p3, :cond_5
.line 2
iget-object v4, p0, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
if-eqz p5, :cond_4
invoke-virtual {v4, v3, p1}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v4
if-eqz v4, :cond_3
goto :goto_2
:cond_4
invoke-virtual {v4, p1, v3}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v4
if-eqz v4, :cond_3
:cond_5
:goto_2
sub-int v4, v2, v3
if-lt v3, p3, :cond_7
if-le v4, p2, :cond_6
goto :goto_3
:cond_6
move v2, v3
goto :goto_0
:cond_7
:goto_3
add-int/2addr v2, v1
:goto_4
if-lt v0, p4, :cond_8
goto :goto_7
.line 3
:cond_8
iget-object p3, p0, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
if-eqz p5, :cond_9
invoke-virtual {p3, v0, p1}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result p3
if-eqz p3, :cond_a
goto :goto_5
:cond_9
invoke-virtual {p3, p1, v0}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result p3
if-eqz p3, :cond_a
:goto_5
add-int/lit8 v0, v0, 0x1
goto :goto_4
:cond_a
move p3, v0
:cond_b
add-int/2addr p3, v1
if-ge p3, p4, :cond_d
.line 4
iget-object v3, p0, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
if-eqz p5, :cond_c
invoke-virtual {v3, p3, p1}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v3
if-eqz v3, :cond_b
goto :goto_6
:cond_c
invoke-virtual {v3, p1, p3}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v3
if-eqz v3, :cond_b
:cond_d
:goto_6
sub-int v3, p3, v0
if-ge p3, p4, :cond_f
if-le v3, p2, :cond_e
goto :goto_7
:cond_e
move v0, p3
goto :goto_4
:cond_f
:goto_7
add-int/lit8 v0, v0, -0x1
if-le v0, v2, :cond_10
const/4 p1, 0x2
new-array p1, p1, [I
const/4 p2, 0x0
aput v2, p1, p2
aput v0, p1, v1
goto :goto_8
:cond_10
const/4 p1, 0x0
:goto_8
return-object p1
.end method
.method private findCornerFromCenter(IIIIIIIII)Lcom/google/zxing/ResultPoint;
.locals 15
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
move/from16 v0, p1
move/from16 v1, p5
const/4 v2, 0x0
move/from16 v9, p8
move v11, v0
move v10, v1
:goto_0
if-ge v10, v9, :cond_a
move/from16 v12, p7
if-lt v10, v12, :cond_a
move/from16 v13, p4
if-ge v11, v13, :cond_a
move/from16 v14, p3
if-lt v11, v14, :cond_a
if-nez p2, :cond_0
const/4 v8, 0x1
move-object v3, p0
move v4, v10
move/from16 v5, p9
move/from16 v6, p3
move/from16 v7, p4
.line 1
invoke-direct/range {v3 .. v8}, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->blackWhiteRange(IIIIZ)[I
move-result-object v3
goto :goto_1
:cond_0
const/4 v8, 0x0
move-object v3, p0
move v4, v11
move/from16 v5, p9
move/from16 v6, p7
move/from16 v7, p8
.line 2
invoke-direct/range {v3 .. v8}, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->blackWhiteRange(IIIIZ)[I
move-result-object v3
:goto_1
if-nez v3, :cond_9
if-eqz v2, :cond_8
const/4 v3, 0x1
const/4 v4, 0x0
if-nez p2, :cond_4
sub-int v10, v10, p6
.line 3
aget v1, v2, v4
if-ge v1, v0, :cond_3
.line 4
aget v1, v2, v3
if-le v1, v0, :cond_2
.line 5
new-instance v0, Lcom/google/zxing/ResultPoint;
if-lez p6, :cond_1
aget v1, v2, v4
goto :goto_2
:cond_1
aget v1, v2, v3
:goto_2
int-to-float v1, v1
int-to-float v2, v10
invoke-direct {v0, v1, v2}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
return-object v0
.line 6
:cond_2
new-instance v0, Lcom/google/zxing/ResultPoint;
aget v1, v2, v4
int-to-float v1, v1
int-to-float v2, v10
invoke-direct {v0, v1, v2}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
return-object v0
.line 7
:cond_3
new-instance v0, Lcom/google/zxing/ResultPoint;
aget v1, v2, v3
int-to-float v1, v1
int-to-float v2, v10
invoke-direct {v0, v1, v2}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
return-object v0
:cond_4
sub-int v11, v11, p2
.line 8
aget v0, v2, v4
if-ge v0, v1, :cond_7
.line 9
aget v0, v2, v3
if-le v0, v1, :cond_6
.line 10
new-instance v0, Lcom/google/zxing/ResultPoint;
int-to-float v1, v11
if-gez p2, :cond_5
aget v2, v2, v4
goto :goto_3
:cond_5
aget v2, v2, v3
:goto_3
int-to-float v2, v2
invoke-direct {v0, v1, v2}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
return-object v0
.line 11
:cond_6
new-instance v0, Lcom/google/zxing/ResultPoint;
int-to-float v1, v11
aget v2, v2, v4
int-to-float v2, v2
invoke-direct {v0, v1, v2}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
return-object v0
.line 12
:cond_7
new-instance v0, Lcom/google/zxing/ResultPoint;
int-to-float v1, v11
aget v2, v2, v3
int-to-float v2, v2
invoke-direct {v0, v1, v2}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
return-object v0
.line 13
:cond_8
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v0
throw v0
:cond_9
add-int v10, v10, p6
add-int v11, v11, p2
move-object v2, v3
goto/16 :goto_0
.line 14
:cond_a
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v0
throw v0
.end method
# virtual methods
.method public detect()[Lcom/google/zxing/ResultPoint;
.locals 24
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
move-object/from16 v10, p0
.line 1
iget-object v0, v10, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
invoke-virtual {v0}, Lcom/google/zxing/common/BitMatrix;->getHeight()I
move-result v11
.line 2
iget-object v0, v10, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
invoke-virtual {v0}, Lcom/google/zxing/common/BitMatrix;->getWidth()I
move-result v12
shr-int/lit8 v13, v11, 0x1
shr-int/lit8 v14, v12, 0x1
.line 3
div-int/lit16 v0, v11, 0x100
const/4 v15, 0x1
invoke-static {v15, v0}, Ljava/lang/Math;->max(II)I
move-result v9
.line 4
div-int/lit16 v0, v12, 0x100
invoke-static {v15, v0}, Ljava/lang/Math;->max(II)I
move-result v8
neg-int v7, v9
shr-int/lit8 v16, v14, 0x1
const/4 v2, 0x0
const/4 v3, 0x0
const/16 v17, 0x0
move-object/from16 v0, p0
move v1, v14
move v4, v12
move v5, v13
move v6, v7
move/from16 v18, v7
move/from16 v7, v17
move/from16 v19, v8
move v8, v11
move/from16 v17, v9
move/from16 v9, v16
.line 5
invoke-direct/range {v0 .. v9}, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->findCornerFromCenter(IIIIIIIII)Lcom/google/zxing/ResultPoint;
move-result-object v0
.line 6
invoke-virtual {v0}, Lcom/google/zxing/ResultPoint;->getY()F
move-result v0
float-to-int v0, v0
add-int/lit8 v20, v0, -0x1
move/from16 v9, v19
neg-int v2, v9
shr-int/lit8 v19, v13, 0x1
const/4 v6, 0x0
move-object/from16 v0, p0
move/from16 v7, v20
move/from16 v21, v9
move/from16 v9, v19
.line 7
invoke-direct/range {v0 .. v9}, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->findCornerFromCenter(IIIIIIIII)Lcom/google/zxing/ResultPoint;
move-result-object v22
.line 8
invoke-virtual/range {v22 .. v22}, Lcom/google/zxing/ResultPoint;->getX()F
move-result v0
float-to-int v0, v0
add-int/lit8 v23, v0, -0x1
move-object/from16 v0, p0
move/from16 v2, v21
move/from16 v3, v23
.line 9
invoke-direct/range {v0 .. v9}, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->findCornerFromCenter(IIIIIIIII)Lcom/google/zxing/ResultPoint;
move-result-object v12
.line 10
invoke-virtual {v12}, Lcom/google/zxing/ResultPoint;->getX()F
move-result v0
float-to-int v0, v0
add-int/lit8 v19, v0, 0x1
const/4 v2, 0x0
move-object/from16 v0, p0
move/from16 v4, v19
move/from16 v6, v17
move/from16 v9, v16
.line 11
invoke-direct/range {v0 .. v9}, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->findCornerFromCenter(IIIIIIIII)Lcom/google/zxing/ResultPoint;
move-result-object v11
.line 12
invoke-virtual {v11}, Lcom/google/zxing/ResultPoint;->getY()F
move-result v0
float-to-int v0, v0
add-int/lit8 v8, v0, 0x1
shr-int/lit8 v9, v14, 0x2
move-object/from16 v0, p0
move/from16 v6, v18
.line 13
invoke-direct/range {v0 .. v9}, Lcom/google/zxing/common/detector/MonochromeRectangleDetector;->findCornerFromCenter(IIIIIIIII)Lcom/google/zxing/ResultPoint;
move-result-object v0
const/4 v1, 0x4
new-array v1, v1, [Lcom/google/zxing/ResultPoint;
aput-object v0, v1, v2
aput-object v22, v1, v15
const/4 v0, 0x2
aput-object v12, v1, v0
const/4 v0, 0x3
aput-object v11, v1, v0
return-object v1
.end method
@@ -0,0 +1,856 @@
.class public final Lcom/google/zxing/common/detector/WhiteRectangleDetector;
.super Ljava/lang/Object;
.source "WhiteRectangleDetector.java"
# static fields
.field private static final CORR:I = 0x1
.field private static final INIT_SIZE:I = 0x1e
# instance fields
.field private final downInit:I
.field private final height:I
.field private final image:Lcom/google/zxing/common/BitMatrix;
.field private final leftInit:I
.field private final rightInit:I
.field private final upInit:I
.field private final width:I
# direct methods
.method public constructor <init>(Lcom/google/zxing/common/BitMatrix;)V
.locals 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput-object p1, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
.line 3
invoke-virtual {p1}, Lcom/google/zxing/common/BitMatrix;->getHeight()I
move-result v0
iput v0, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->height:I
.line 4
invoke-virtual {p1}, Lcom/google/zxing/common/BitMatrix;->getWidth()I
move-result p1
iput p1, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->width:I
add-int/lit8 v1, p1, -0x1e
shr-int/lit8 v1, v1, 0x1
.line 5
iput v1, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->leftInit:I
add-int/lit8 v2, p1, 0x1e
shr-int/lit8 v2, v2, 0x1
.line 6
iput v2, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->rightInit:I
add-int/lit8 v3, v0, -0x1e
shr-int/lit8 v3, v3, 0x1
.line 7
iput v3, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->upInit:I
add-int/lit8 v4, v0, 0x1e
shr-int/lit8 v4, v4, 0x1
.line 8
iput v4, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->downInit:I
if-ltz v3, :cond_0
if-ltz v1, :cond_0
if-ge v4, v0, :cond_0
if-ge v2, p1, :cond_0
return-void
.line 9
:cond_0
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object p1
throw p1
.end method
.method public constructor <init>(Lcom/google/zxing/common/BitMatrix;III)V
.locals 3
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 10
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 11
iput-object p1, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
.line 12
invoke-virtual {p1}, Lcom/google/zxing/common/BitMatrix;->getHeight()I
move-result v0
iput v0, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->height:I
.line 13
invoke-virtual {p1}, Lcom/google/zxing/common/BitMatrix;->getWidth()I
move-result p1
iput p1, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->width:I
shr-int/lit8 p2, p2, 0x1
sub-int v1, p3, p2
.line 14
iput v1, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->leftInit:I
add-int/2addr p3, p2
.line 15
iput p3, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->rightInit:I
sub-int v2, p4, p2
.line 16
iput v2, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->upInit:I
add-int/2addr p4, p2
.line 17
iput p4, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->downInit:I
if-ltz v2, :cond_0
if-ltz v1, :cond_0
if-ge p4, v0, :cond_0
if-ge p3, p1, :cond_0
return-void
.line 18
:cond_0
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object p1
throw p1
.end method
.method private centerEdges(Lcom/google/zxing/ResultPoint;Lcom/google/zxing/ResultPoint;Lcom/google/zxing/ResultPoint;Lcom/google/zxing/ResultPoint;)[Lcom/google/zxing/ResultPoint;
.locals 11
.line 1
invoke-virtual {p1}, Lcom/google/zxing/ResultPoint;->getX()F
move-result v0
.line 2
invoke-virtual {p1}, Lcom/google/zxing/ResultPoint;->getY()F
move-result p1
.line 3
invoke-virtual {p2}, Lcom/google/zxing/ResultPoint;->getX()F
move-result v1
.line 4
invoke-virtual {p2}, Lcom/google/zxing/ResultPoint;->getY()F
move-result p2
.line 5
invoke-virtual {p3}, Lcom/google/zxing/ResultPoint;->getX()F
move-result v2
.line 6
invoke-virtual {p3}, Lcom/google/zxing/ResultPoint;->getY()F
move-result p3
.line 7
invoke-virtual {p4}, Lcom/google/zxing/ResultPoint;->getX()F
move-result v3
.line 8
invoke-virtual {p4}, Lcom/google/zxing/ResultPoint;->getY()F
move-result p4
.line 9
iget v4, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->width:I
const/4 v5, 0x2
div-int/2addr v4, v5
int-to-float v4, v4
cmpg-float v4, v0, v4
const/4 v6, 0x3
const/4 v7, 0x1
const/4 v8, 0x0
const/4 v9, 0x4
const/high16 v10, 0x3f800000 # 1.0f
if-gez v4, :cond_0
new-array v4, v9, [Lcom/google/zxing/ResultPoint;
.line 10
new-instance v9, Lcom/google/zxing/ResultPoint;
sub-float/2addr v3, v10
add-float/2addr p4, v10
invoke-direct {v9, v3, p4}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
aput-object v9, v4, v8
.line 11
new-instance p4, Lcom/google/zxing/ResultPoint;
add-float/2addr v1, v10
add-float/2addr p2, v10
invoke-direct {p4, v1, p2}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
aput-object p4, v4, v7
.line 12
new-instance p2, Lcom/google/zxing/ResultPoint;
sub-float/2addr v2, v10
sub-float/2addr p3, v10
invoke-direct {p2, v2, p3}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
aput-object p2, v4, v5
.line 13
new-instance p2, Lcom/google/zxing/ResultPoint;
add-float/2addr v0, v10
sub-float/2addr p1, v10
invoke-direct {p2, v0, p1}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
aput-object p2, v4, v6
return-object v4
:cond_0
new-array v4, v9, [Lcom/google/zxing/ResultPoint;
.line 14
new-instance v9, Lcom/google/zxing/ResultPoint;
add-float/2addr v3, v10
add-float/2addr p4, v10
invoke-direct {v9, v3, p4}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
aput-object v9, v4, v8
.line 15
new-instance p4, Lcom/google/zxing/ResultPoint;
add-float/2addr v1, v10
sub-float/2addr p2, v10
invoke-direct {p4, v1, p2}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
aput-object p4, v4, v7
.line 16
new-instance p2, Lcom/google/zxing/ResultPoint;
sub-float/2addr v2, v10
add-float/2addr p3, v10
invoke-direct {p2, v2, p3}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
aput-object p2, v4, v5
.line 17
new-instance p2, Lcom/google/zxing/ResultPoint;
sub-float/2addr v0, v10
sub-float/2addr p1, v10
invoke-direct {p2, v0, p1}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
aput-object p2, v4, v6
return-object v4
.end method
.method private containsBlackPoint(IIIZ)Z
.locals 1
const/4 v0, 0x1
if-eqz p4, :cond_2
:goto_0
if-le p1, p2, :cond_0
goto :goto_2
.line 1
:cond_0
iget-object p4, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
invoke-virtual {p4, p1, p3}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result p4
if-eqz p4, :cond_1
return v0
:cond_1
add-int/lit8 p1, p1, 0x1
goto :goto_0
:cond_2
:goto_1
if-le p1, p2, :cond_3
:goto_2
const/4 p1, 0x0
return p1
.line 2
:cond_3
iget-object p4, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
invoke-virtual {p4, p3, p1}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result p4
if-eqz p4, :cond_4
return v0
:cond_4
add-int/lit8 p1, p1, 0x1
goto :goto_1
.end method
.method private getBlackPointOnSegment(FFFF)Lcom/google/zxing/ResultPoint;
.locals 5
.line 1
invoke-static {p1, p2, p3, p4}, Lcom/google/zxing/common/detector/MathUtils;->distance(FFFF)F
move-result v0
invoke-static {v0}, Lcom/google/zxing/common/detector/MathUtils;->round(F)I
move-result v0
sub-float/2addr p3, p1
int-to-float v1, v0
div-float/2addr p3, v1
sub-float/2addr p4, p2
div-float/2addr p4, v1
const/4 v1, 0x0
:goto_0
if-lt v1, v0, :cond_0
const/4 p1, 0x0
return-object p1
:cond_0
int-to-float v2, v1
mul-float v3, v2, p3
add-float/2addr v3, p1
.line 2
invoke-static {v3}, Lcom/google/zxing/common/detector/MathUtils;->round(F)I
move-result v3
mul-float/2addr v2, p4
add-float/2addr v2, p2
.line 3
invoke-static {v2}, Lcom/google/zxing/common/detector/MathUtils;->round(F)I
move-result v2
.line 4
iget-object v4, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->image:Lcom/google/zxing/common/BitMatrix;
invoke-virtual {v4, v3, v2}, Lcom/google/zxing/common/BitMatrix;->get(II)Z
move-result v4
if-eqz v4, :cond_1
.line 5
new-instance p1, Lcom/google/zxing/ResultPoint;
int-to-float p2, v3
int-to-float p3, v2
invoke-direct {p1, p2, p3}, Lcom/google/zxing/ResultPoint;-><init>(FF)V
return-object p1
:cond_1
add-int/lit8 v1, v1, 0x1
goto :goto_0
.end method
# virtual methods
.method public detect()[Lcom/google/zxing/ResultPoint;
.locals 13
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 1
iget v0, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->leftInit:I
.line 2
iget v1, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->rightInit:I
.line 3
iget v2, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->upInit:I
.line 4
iget v3, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->downInit:I
const/4 v4, 0x0
const/4 v5, 0x1
move v7, v4
move v6, v5
:cond_0
:goto_0
if-nez v6, :cond_1
goto/16 :goto_a
:cond_1
move v8, v4
move v6, v5
:cond_2
:goto_1
if-eqz v6, :cond_4
.line 5
iget v6, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->width:I
if-lt v1, v6, :cond_3
goto :goto_2
.line 6
:cond_3
invoke-direct {p0, v2, v3, v1, v4}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->containsBlackPoint(IIIZ)Z
move-result v6
if-eqz v6, :cond_2
add-int/lit8 v1, v1, 0x1
move v8, v5
goto :goto_1
.line 7
:cond_4
:goto_2
iget v6, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->width:I
if-lt v1, v6, :cond_5
:goto_3
move v4, v5
goto :goto_a
:cond_5
move v6, v5
:cond_6
:goto_4
if-eqz v6, :cond_8
.line 8
iget v6, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->height:I
if-lt v3, v6, :cond_7
goto :goto_5
.line 9
:cond_7
invoke-direct {p0, v0, v1, v3, v5}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->containsBlackPoint(IIIZ)Z
move-result v6
if-eqz v6, :cond_6
add-int/lit8 v3, v3, 0x1
move v8, v5
goto :goto_4
.line 10
:cond_8
:goto_5
iget v6, p0, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->height:I
if-lt v3, v6, :cond_9
goto :goto_3
:cond_9
move v6, v5
:cond_a
:goto_6
if-eqz v6, :cond_c
if-gez v0, :cond_b
goto :goto_7
.line 11
:cond_b
invoke-direct {p0, v2, v3, v0, v4}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->containsBlackPoint(IIIZ)Z
move-result v6
if-eqz v6, :cond_a
add-int/lit8 v0, v0, -0x1
move v8, v5
goto :goto_6
:cond_c
:goto_7
if-gez v0, :cond_d
goto :goto_3
:cond_d
move v6, v8
move v8, v5
:cond_e
:goto_8
if-eqz v8, :cond_10
if-gez v2, :cond_f
goto :goto_9
.line 12
:cond_f
invoke-direct {p0, v0, v1, v2, v5}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->containsBlackPoint(IIIZ)Z
move-result v8
if-eqz v8, :cond_e
add-int/lit8 v2, v2, -0x1
move v6, v5
goto :goto_8
:cond_10
:goto_9
if-gez v2, :cond_1e
goto :goto_3
:goto_a
if-nez v4, :cond_1d
if-eqz v7, :cond_1d
sub-int v4, v1, v0
const/4 v6, 0x0
move v7, v5
move-object v8, v6
:goto_b
if-lt v7, v4, :cond_11
goto :goto_c
:cond_11
int-to-float v8, v0
sub-int v9, v3, v7
int-to-float v9, v9
add-int v10, v0, v7
int-to-float v10, v10
int-to-float v11, v3
.line 13
invoke-direct {p0, v8, v9, v10, v11}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->getBlackPointOnSegment(FFFF)Lcom/google/zxing/ResultPoint;
move-result-object v8
if-eqz v8, :cond_1c
:goto_c
if-eqz v8, :cond_1b
move v7, v5
move-object v9, v6
:goto_d
if-lt v7, v4, :cond_12
goto :goto_e
:cond_12
int-to-float v9, v0
add-int v10, v2, v7
int-to-float v10, v10
add-int v11, v0, v7
int-to-float v11, v11
int-to-float v12, v2
.line 14
invoke-direct {p0, v9, v10, v11, v12}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->getBlackPointOnSegment(FFFF)Lcom/google/zxing/ResultPoint;
move-result-object v9
if-eqz v9, :cond_1a
:goto_e
if-eqz v9, :cond_19
move v0, v5
move-object v7, v6
:goto_f
if-lt v0, v4, :cond_13
goto :goto_10
:cond_13
int-to-float v7, v1
add-int v10, v2, v0
int-to-float v10, v10
sub-int v11, v1, v0
int-to-float v11, v11
int-to-float v12, v2
.line 15
invoke-direct {p0, v7, v10, v11, v12}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->getBlackPointOnSegment(FFFF)Lcom/google/zxing/ResultPoint;
move-result-object v7
if-eqz v7, :cond_18
:goto_10
if-eqz v7, :cond_17
:goto_11
if-lt v5, v4, :cond_14
goto :goto_12
:cond_14
int-to-float v0, v1
sub-int v2, v3, v5
int-to-float v2, v2
sub-int v6, v1, v5
int-to-float v6, v6
int-to-float v10, v3
.line 16
invoke-direct {p0, v0, v2, v6, v10}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->getBlackPointOnSegment(FFFF)Lcom/google/zxing/ResultPoint;
move-result-object v6
if-eqz v6, :cond_16
:goto_12
if-eqz v6, :cond_15
.line 17
invoke-direct {p0, v6, v8, v7, v9}, Lcom/google/zxing/common/detector/WhiteRectangleDetector;->centerEdges(Lcom/google/zxing/ResultPoint;Lcom/google/zxing/ResultPoint;Lcom/google/zxing/ResultPoint;Lcom/google/zxing/ResultPoint;)[Lcom/google/zxing/ResultPoint;
move-result-object v0
return-object v0
.line 18
:cond_15
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v0
throw v0
:cond_16
add-int/lit8 v5, v5, 0x1
goto :goto_11
.line 19
:cond_17
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v0
throw v0
:cond_18
add-int/lit8 v0, v0, 0x1
goto :goto_f
.line 20
:cond_19
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v0
throw v0
:cond_1a
add-int/lit8 v7, v7, 0x1
goto :goto_d
.line 21
:cond_1b
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v0
throw v0
:cond_1c
add-int/lit8 v7, v7, 0x1
goto :goto_b
.line 22
:cond_1d
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v0
throw v0
:cond_1e
if-eqz v6, :cond_0
move v7, v5
goto/16 :goto_0
.end method
@@ -0,0 +1,459 @@
.class public final Lcom/google/zxing/common/reedsolomon/GenericGF;
.super Ljava/lang/Object;
.source "GenericGF.java"
# static fields
.field public static final AZTEC_DATA_10:Lcom/google/zxing/common/reedsolomon/GenericGF;
.field public static final AZTEC_DATA_12:Lcom/google/zxing/common/reedsolomon/GenericGF;
.field public static final AZTEC_DATA_6:Lcom/google/zxing/common/reedsolomon/GenericGF;
.field public static final AZTEC_DATA_8:Lcom/google/zxing/common/reedsolomon/GenericGF;
.field public static final AZTEC_PARAM:Lcom/google/zxing/common/reedsolomon/GenericGF;
.field public static final DATA_MATRIX_FIELD_256:Lcom/google/zxing/common/reedsolomon/GenericGF;
.field private static final INITIALIZATION_THRESHOLD:I
.field public static final MAXICODE_FIELD_64:Lcom/google/zxing/common/reedsolomon/GenericGF;
.field public static final QR_CODE_FIELD_256:Lcom/google/zxing/common/reedsolomon/GenericGF;
# instance fields
.field private expTable:[I
.field private initialized:Z
.field private logTable:[I
.field private one:Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.field private final primitive:I
.field private final size:I
.field private zero:Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
# direct methods
.method public static constructor <clinit>()V
.locals 4
.line 1
new-instance v0, Lcom/google/zxing/common/reedsolomon/GenericGF;
const/16 v1, 0x1069
const/16 v2, 0x1000
invoke-direct {v0, v1, v2}, Lcom/google/zxing/common/reedsolomon/GenericGF;-><init>(II)V
sput-object v0, Lcom/google/zxing/common/reedsolomon/GenericGF;->AZTEC_DATA_12:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 2
new-instance v0, Lcom/google/zxing/common/reedsolomon/GenericGF;
const/16 v1, 0x409
const/16 v2, 0x400
invoke-direct {v0, v1, v2}, Lcom/google/zxing/common/reedsolomon/GenericGF;-><init>(II)V
sput-object v0, Lcom/google/zxing/common/reedsolomon/GenericGF;->AZTEC_DATA_10:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 3
new-instance v0, Lcom/google/zxing/common/reedsolomon/GenericGF;
const/16 v1, 0x43
const/16 v2, 0x40
invoke-direct {v0, v1, v2}, Lcom/google/zxing/common/reedsolomon/GenericGF;-><init>(II)V
sput-object v0, Lcom/google/zxing/common/reedsolomon/GenericGF;->AZTEC_DATA_6:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 4
new-instance v1, Lcom/google/zxing/common/reedsolomon/GenericGF;
const/16 v2, 0x13
const/16 v3, 0x10
invoke-direct {v1, v2, v3}, Lcom/google/zxing/common/reedsolomon/GenericGF;-><init>(II)V
sput-object v1, Lcom/google/zxing/common/reedsolomon/GenericGF;->AZTEC_PARAM:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 5
new-instance v1, Lcom/google/zxing/common/reedsolomon/GenericGF;
const/16 v2, 0x11d
const/16 v3, 0x100
invoke-direct {v1, v2, v3}, Lcom/google/zxing/common/reedsolomon/GenericGF;-><init>(II)V
sput-object v1, Lcom/google/zxing/common/reedsolomon/GenericGF;->QR_CODE_FIELD_256:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 6
new-instance v1, Lcom/google/zxing/common/reedsolomon/GenericGF;
const/16 v2, 0x12d
invoke-direct {v1, v2, v3}, Lcom/google/zxing/common/reedsolomon/GenericGF;-><init>(II)V
sput-object v1, Lcom/google/zxing/common/reedsolomon/GenericGF;->DATA_MATRIX_FIELD_256:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 7
sput-object v1, Lcom/google/zxing/common/reedsolomon/GenericGF;->AZTEC_DATA_8:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 8
sput-object v0, Lcom/google/zxing/common/reedsolomon/GenericGF;->MAXICODE_FIELD_64:Lcom/google/zxing/common/reedsolomon/GenericGF;
return-void
.end method
.method public constructor <init>(II)V
.locals 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x0
.line 2
iput-boolean v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->initialized:Z
.line 3
iput p1, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->primitive:I
.line 4
iput p2, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->size:I
if-gtz p2, :cond_0
.line 5
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->initialize()V
:cond_0
return-void
.end method
.method public static addOrSubtract(II)I
.locals 0
xor-int/2addr p0, p1
return p0
.end method
.method private checkInit()V
.locals 1
.line 1
iget-boolean v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->initialized:Z
if-nez v0, :cond_0
.line 2
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->initialize()V
:cond_0
return-void
.end method
.method private initialize()V
.locals 6
.line 1
iget v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->size:I
new-array v1, v0, [I
iput-object v1, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->expTable:[I
.line 2
new-array v0, v0, [I
iput-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->logTable:[I
const/4 v0, 0x0
const/4 v1, 0x1
move v2, v0
move v3, v1
.line 3
:goto_0
iget v4, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->size:I
if-lt v2, v4, :cond_1
move v2, v0
.line 4
:goto_1
iget v3, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->size:I
sub-int/2addr v3, v1
if-lt v2, v3, :cond_0
.line 5
new-instance v2, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
new-array v3, v1, [I
invoke-direct {v2, p0, v3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
iput-object v2, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->zero:Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.line 6
new-instance v2, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
new-array v3, v1, [I
aput v1, v3, v0
invoke-direct {v2, p0, v3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
iput-object v2, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->one:Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.line 7
iput-boolean v1, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->initialized:Z
return-void
.line 8
:cond_0
iget-object v3, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->logTable:[I
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->expTable:[I
aget v4, v4, v2
aput v2, v3, v4
add-int/lit8 v2, v2, 0x1
goto :goto_1
.line 9
:cond_1
iget-object v5, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->expTable:[I
aput v3, v5, v2
shl-int/2addr v3, v1
if-lt v3, v4, :cond_2
.line 10
iget v5, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->primitive:I
xor-int/2addr v3, v5
add-int/lit8 v4, v4, -0x1
and-int/2addr v3, v4
:cond_2
add-int/lit8 v2, v2, 0x1
goto :goto_0
.end method
# virtual methods
.method public buildMonomial(II)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 1
.line 1
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->checkInit()V
if-ltz p1, :cond_1
if-nez p2, :cond_0
.line 2
iget-object p1, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->zero:Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
return-object p1
:cond_0
add-int/lit8 p1, p1, 0x1
.line 3
new-array p1, p1, [I
const/4 v0, 0x0
.line 4
aput p2, p1, v0
.line 5
new-instance p2, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
invoke-direct {p2, p0, p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
return-object p2
.line 6
:cond_1
new-instance p1, Ljava/lang/IllegalArgumentException;
invoke-direct {p1}, Ljava/lang/IllegalArgumentException;-><init>()V
throw p1
.end method
.method public exp(I)I
.locals 1
.line 1
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->checkInit()V
.line 2
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->expTable:[I
aget p1, v0, p1
return p1
.end method
.method public getOne()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 1
.line 1
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->checkInit()V
.line 2
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->one:Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
return-object v0
.end method
.method public getSize()I
.locals 1
.line 1
iget v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->size:I
return v0
.end method
.method public getZero()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 1
.line 1
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->checkInit()V
.line 2
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->zero:Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
return-object v0
.end method
.method public inverse(I)I
.locals 3
.line 1
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->checkInit()V
if-eqz p1, :cond_0
.line 2
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->expTable:[I
iget v1, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->size:I
iget-object v2, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->logTable:[I
aget p1, v2, p1
sub-int/2addr v1, p1
add-int/lit8 v1, v1, -0x1
aget p1, v0, v1
return p1
.line 3
:cond_0
new-instance p1, Ljava/lang/ArithmeticException;
invoke-direct {p1}, Ljava/lang/ArithmeticException;-><init>()V
throw p1
.end method
.method public log(I)I
.locals 1
.line 1
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->checkInit()V
if-eqz p1, :cond_0
.line 2
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->logTable:[I
aget p1, v0, p1
return p1
.line 3
:cond_0
new-instance p1, Ljava/lang/IllegalArgumentException;
invoke-direct {p1}, Ljava/lang/IllegalArgumentException;-><init>()V
throw p1
.end method
.method public multiply(II)I
.locals 2
.line 1
invoke-direct {p0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->checkInit()V
if-eqz p1, :cond_1
if-nez p2, :cond_0
goto :goto_0
.line 2
:cond_0
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->expTable:[I
iget-object v1, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->logTable:[I
aget p1, v1, p1
aget p2, v1, p2
add-int/2addr p1, p2
iget p2, p0, Lcom/google/zxing/common/reedsolomon/GenericGF;->size:I
add-int/lit8 p2, p2, -0x1
rem-int/2addr p1, p2
aget p1, v0, p1
return p1
:cond_1
:goto_0
const/4 p1, 0x0
return p1
.end method
@@ -0,0 +1,903 @@
.class final Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.super Ljava/lang/Object;
.source "GenericGFPoly.java"
# instance fields
.field private final coefficients:[I
.field private final field:Lcom/google/zxing/common/reedsolomon/GenericGF;
# direct methods
.method public constructor <init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
.locals 4
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
array-length v0, p2
if-eqz v0, :cond_4
.line 3
iput-object p1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 4
array-length v0, p2
const/4 v1, 0x1
if-le v0, v1, :cond_3
const/4 v2, 0x0
.line 5
aget v3, p2, v2
if-nez v3, :cond_3
:goto_0
if-ge v1, v0, :cond_1
.line 6
aget v3, p2, v1
if-eqz v3, :cond_0
goto :goto_1
:cond_0
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_1
:goto_1
if-ne v1, v0, :cond_2
.line 7
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getZero()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object p1
iget-object p1, p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
iput-object p1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
goto :goto_2
:cond_2
sub-int/2addr v0, v1
.line 8
new-array p1, v0, [I
iput-object p1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
.line 9
array-length v0, p1
.line 10
invoke-static {p2, v1, p1, v2, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
goto :goto_2
.line 11
:cond_3
iput-object p2, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
:goto_2
return-void
.line 12
:cond_4
new-instance p1, Ljava/lang/IllegalArgumentException;
invoke-direct {p1}, Ljava/lang/IllegalArgumentException;-><init>()V
throw p1
.end method
# virtual methods
.method public addOrSubtract(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 7
.line 1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
iget-object v1, p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v0, v1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_4
.line 2
invoke-virtual {p0}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->isZero()Z
move-result v0
if-eqz v0, :cond_0
return-object p1
.line 3
:cond_0
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->isZero()Z
move-result v0
if-eqz v0, :cond_1
return-object p0
.line 4
:cond_1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
.line 5
iget-object p1, p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
.line 6
array-length v1, v0
array-length v2, p1
if-le v1, v2, :cond_2
goto :goto_0
:cond_2
move-object v6, v0
move-object v0, p1
move-object p1, v6
.line 7
:goto_0
array-length v1, v0
new-array v1, v1, [I
.line 8
array-length v2, v0
array-length v3, p1
sub-int/2addr v2, v3
const/4 v3, 0x0
.line 9
invoke-static {v0, v3, v1, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
move v3, v2
.line 10
:goto_1
array-length v4, v0
if-lt v3, v4, :cond_3
.line 11
new-instance p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-direct {p1, v0, v1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
return-object p1
:cond_3
sub-int v4, v3, v2
.line 12
aget v4, p1, v4
aget v5, v0, v3
invoke-static {v4, v5}, Lcom/google/zxing/common/reedsolomon/GenericGF;->addOrSubtract(II)I
move-result v4
aput v4, v1, v3
add-int/lit8 v3, v3, 0x1
goto :goto_1
.line 13
:cond_4
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "GenericGFPolys do not have same GenericGF field"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public divide(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)[Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 7
.line 1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
iget-object v1, p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v0, v1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_3
.line 2
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->isZero()Z
move-result v0
if-nez v0, :cond_2
.line 3
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getZero()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v0
.line 4
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v1
invoke-virtual {p1, v1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficient(I)I
move-result v1
.line 5
iget-object v2, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v2, v1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->inverse(I)I
move-result v1
move-object v2, p0
.line 6
:goto_0
invoke-virtual {v2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v3
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v4
if-lt v3, v4, :cond_1
invoke-virtual {v2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->isZero()Z
move-result v3
if-eqz v3, :cond_0
goto :goto_1
.line 7
:cond_0
invoke-virtual {v2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v3
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v4
sub-int/2addr v3, v4
.line 8
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v5
invoke-virtual {v2, v5}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficient(I)I
move-result v5
invoke-virtual {v4, v5, v1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v4
.line 9
invoke-virtual {p1, v3, v4}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->multiplyByMonomial(II)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v5
.line 10
iget-object v6, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v6, v3, v4}, Lcom/google/zxing/common/reedsolomon/GenericGF;->buildMonomial(II)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v3
.line 11
invoke-virtual {v0, v3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->addOrSubtract(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v0
.line 12
invoke-virtual {v2, v5}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->addOrSubtract(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v2
goto :goto_0
:cond_1
:goto_1
const/4 p1, 0x2
new-array p1, p1, [Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
const/4 v1, 0x0
aput-object v0, p1, v1
const/4 v0, 0x1
aput-object v2, p1, v0
return-object p1
.line 13
:cond_2
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "Divide by 0"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.line 14
:cond_3
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "GenericGFPolys do not have same GenericGF field"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public evaluateAt(I)I
.locals 5
const/4 v0, 0x0
if-nez p1, :cond_0
.line 1
invoke-virtual {p0, v0}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficient(I)I
move-result p1
return p1
.line 2
:cond_0
iget-object v1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
array-length v2, v1
const/4 v3, 0x1
if-ne p1, v3, :cond_2
.line 3
array-length v4, v1
move p1, v0
:goto_0
if-lt v0, v4, :cond_1
return p1
:cond_1
aget v2, v1, v0
.line 4
invoke-static {p1, v2}, Lcom/google/zxing/common/reedsolomon/GenericGF;->addOrSubtract(II)I
move-result p1
add-int/lit8 v0, v0, 0x1
goto :goto_0
.line 5
:cond_2
aget v0, v1, v0
:goto_1
if-lt v3, v2, :cond_3
return v0
.line 6
:cond_3
iget-object v1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v1, p1, v0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v0
iget-object v1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
aget v1, v1, v3
invoke-static {v0, v1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->addOrSubtract(II)I
move-result v0
add-int/lit8 v3, v3, 0x1
goto :goto_1
.end method
.method public getCoefficient(I)I
.locals 2
.line 1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
array-length v1, v0
add-int/lit8 v1, v1, -0x1
sub-int/2addr v1, p1
aget p1, v0, v1
return p1
.end method
.method public getCoefficients()[I
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
return-object v0
.end method
.method public getDegree()I
.locals 1
.line 1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
array-length v0, v0
add-int/lit8 v0, v0, -0x1
return v0
.end method
.method public isZero()Z
.locals 2
.line 1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
const/4 v1, 0x0
aget v0, v0, v1
if-nez v0, :cond_0
const/4 v0, 0x1
return v0
:cond_0
return v1
.end method
.method public multiply(I)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 5
if-nez p1, :cond_0
.line 15
iget-object p1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getZero()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object p1
return-object p1
:cond_0
const/4 v0, 0x1
if-ne p1, v0, :cond_1
return-object p0
.line 16
:cond_1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
array-length v0, v0
.line 17
new-array v1, v0, [I
const/4 v2, 0x0
:goto_0
if-lt v2, v0, :cond_2
.line 18
new-instance p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-direct {p1, v0, v1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
return-object p1
.line 19
:cond_2
iget-object v3, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
aget v4, v4, v2
invoke-virtual {v3, v4, p1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v3
aput v3, v1, v2
add-int/lit8 v2, v2, 0x1
goto :goto_0
.end method
.method public multiply(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 12
.line 1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
iget-object v1, p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v0, v1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_4
.line 2
invoke-virtual {p0}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->isZero()Z
move-result v0
if-nez v0, :cond_3
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->isZero()Z
move-result v0
if-eqz v0, :cond_0
goto :goto_2
.line 3
:cond_0
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
.line 4
array-length v1, v0
.line 5
iget-object p1, p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
.line 6
array-length v2, p1
add-int v3, v1, v2
add-int/lit8 v3, v3, -0x1
.line 7
new-array v3, v3, [I
const/4 v4, 0x0
move v5, v4
:goto_0
if-lt v5, v1, :cond_1
.line 8
new-instance p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-direct {p1, v0, v3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
return-object p1
.line 9
:cond_1
aget v6, v0, v5
move v7, v4
:goto_1
if-lt v7, v2, :cond_2
add-int/lit8 v5, v5, 0x1
goto :goto_0
:cond_2
add-int v8, v5, v7
.line 10
aget v9, v3, v8
.line 11
iget-object v10, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
aget v11, p1, v7
invoke-virtual {v10, v6, v11}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v10
.line 12
invoke-static {v9, v10}, Lcom/google/zxing/common/reedsolomon/GenericGF;->addOrSubtract(II)I
move-result v9
aput v9, v3, v8
add-int/lit8 v7, v7, 0x1
goto :goto_1
.line 13
:cond_3
:goto_2
iget-object p1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getZero()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object p1
return-object p1
.line 14
:cond_4
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "GenericGFPolys do not have same GenericGF field"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public multiplyByMonomial(II)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 4
if-ltz p1, :cond_2
if-nez p2, :cond_0
.line 1
iget-object p1, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getZero()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object p1
return-object p1
.line 2
:cond_0
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
array-length v0, v0
add-int/2addr p1, v0
.line 3
new-array p1, p1, [I
const/4 v1, 0x0
:goto_0
if-lt v1, v0, :cond_1
.line 4
new-instance p2, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-direct {p2, v0, p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
return-object p2
.line 5
:cond_1
iget-object v2, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
iget-object v3, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->coefficients:[I
aget v3, v3, v1
invoke-virtual {v2, v3, p2}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v2
aput v2, p1, v1
add-int/lit8 v1, v1, 0x1
goto :goto_0
.line 6
:cond_2
new-instance p1, Ljava/lang/IllegalArgumentException;
invoke-direct {p1}, Ljava/lang/IllegalArgumentException;-><init>()V
throw p1
.end method
.method public toString()Ljava/lang/String;
.locals 5
.line 1
new-instance v0, Ljava/lang/StringBuilder;
invoke-virtual {p0}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v1
mul-int/lit8 v1, v1, 0x8
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(I)V
.line 2
invoke-virtual {p0}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v1
:goto_0
if-gez v1, :cond_0
.line 3
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.line 4
:cond_0
invoke-virtual {p0, v1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficient(I)I
move-result v2
if-eqz v2, :cond_8
if-gez v2, :cond_1
const-string v3, " - "
.line 5
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
neg-int v2, v2
goto :goto_1
.line 6
:cond_1
invoke-virtual {v0}, Ljava/lang/StringBuilder;->length()I
move-result v3
if-lez v3, :cond_2
const-string v3, " + "
.line 7
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
:cond_2
:goto_1
const/4 v3, 0x1
if-eqz v1, :cond_3
if-eq v2, v3, :cond_6
.line 8
:cond_3
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v4, v2}, Lcom/google/zxing/common/reedsolomon/GenericGF;->log(I)I
move-result v2
if-nez v2, :cond_4
const/16 v2, 0x31
.line 9
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
goto :goto_2
:cond_4
if-ne v2, v3, :cond_5
const/16 v2, 0x61
.line 10
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
goto :goto_2
:cond_5
const-string v4, "a^"
.line 11
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 12
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
:cond_6
:goto_2
if-eqz v1, :cond_8
if-ne v1, v3, :cond_7
const/16 v2, 0x78
.line 13
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
goto :goto_3
:cond_7
const-string v2, "x^"
.line 14
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 15
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
:cond_8
:goto_3
add-int/lit8 v1, v1, -0x1
goto :goto_0
.end method
@@ -0,0 +1,630 @@
.class public final Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;
.super Ljava/lang/Object;
.source "ReedSolomonDecoder.java"
# instance fields
.field private final field:Lcom/google/zxing/common/reedsolomon/GenericGF;
# direct methods
.method public constructor <init>(Lcom/google/zxing/common/reedsolomon/GenericGF;)V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput-object p1, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
return-void
.end method
.method private findErrorLocations(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)[I
.locals 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/common/reedsolomon/ReedSolomonException;
}
.end annotation
.line 1
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x1
if-ne v0, v2, :cond_0
new-array v0, v2, [I
.line 2
invoke-virtual {p1, v2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficient(I)I
move-result p1
aput p1, v0, v1
return-object v0
.line 3
:cond_0
new-array v3, v0, [I
.line 4
:goto_0
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v4}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getSize()I
move-result v4
if-ge v2, v4, :cond_3
if-lt v1, v0, :cond_1
goto :goto_1
.line 5
:cond_1
invoke-virtual {p1, v2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->evaluateAt(I)I
move-result v4
if-nez v4, :cond_2
.line 6
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v4, v2}, Lcom/google/zxing/common/reedsolomon/GenericGF;->inverse(I)I
move-result v4
aput v4, v3, v1
add-int/lit8 v1, v1, 0x1
:cond_2
add-int/lit8 v2, v2, 0x1
goto :goto_0
:cond_3
:goto_1
if-ne v1, v0, :cond_4
return-object v3
.line 7
:cond_4
new-instance p1, Lcom/google/zxing/common/reedsolomon/ReedSolomonException;
const-string v0, "Error locator degree does not match number of roots"
invoke-direct {p1, v0}, Lcom/google/zxing/common/reedsolomon/ReedSolomonException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method private findErrorMagnitudes(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;[IZ)[I
.locals 9
.line 1
array-length v0, p2
.line 2
new-array v1, v0, [I
const/4 v2, 0x0
move v3, v2
:goto_0
if-lt v3, v0, :cond_0
return-object v1
.line 3
:cond_0
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
aget v5, p2, v3
invoke-virtual {v4, v5}, Lcom/google/zxing/common/reedsolomon/GenericGF;->inverse(I)I
move-result v4
const/4 v5, 0x1
move v6, v2
:goto_1
if-lt v6, v0, :cond_2
.line 4
iget-object v6, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {p1, v4}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->evaluateAt(I)I
move-result v7
.line 5
iget-object v8, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v8, v5}, Lcom/google/zxing/common/reedsolomon/GenericGF;->inverse(I)I
move-result v5
.line 6
invoke-virtual {v6, v7, v5}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v5
aput v5, v1, v3
if-eqz p3, :cond_1
.line 7
iget-object v5, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
aget v6, v1, v3
invoke-virtual {v5, v6, v4}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v4
aput v4, v1, v3
:cond_1
add-int/lit8 v3, v3, 0x1
goto :goto_0
:cond_2
if-eq v3, v6, :cond_4
.line 8
iget-object v7, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
aget v8, p2, v6
invoke-virtual {v7, v8, v4}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v7
and-int/lit8 v8, v7, 0x1
if-nez v8, :cond_3
or-int/lit8 v7, v7, 0x1
goto :goto_2
:cond_3
and-int/lit8 v7, v7, -0x2
.line 9
:goto_2
iget-object v8, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v8, v5, v7}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v5
:cond_4
add-int/lit8 v6, v6, 0x1
goto :goto_1
.end method
.method private runEuclideanAlgorithm(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;Lcom/google/zxing/common/reedsolomon/GenericGFPoly;I)[Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/common/reedsolomon/ReedSolomonException;
}
.end annotation
.line 1
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v0
invoke-virtual {p2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v1
if-ge v0, v1, :cond_0
move-object v7, p2
move-object p2, p1
move-object p1, v7
.line 2
:cond_0
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v0}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getZero()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v0
.line 3
iget-object v1, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v1}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getOne()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v1
move-object v7, p2
move-object p2, p1
move-object p1, v7
.line 4
:goto_0
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v2
const/4 v3, 0x2
div-int/lit8 v4, p3, 0x2
if-ge v2, v4, :cond_2
const/4 p2, 0x0
.line 5
invoke-virtual {v1, p2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficient(I)I
move-result p3
if-eqz p3, :cond_1
.line 6
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v0, p3}, Lcom/google/zxing/common/reedsolomon/GenericGF;->inverse(I)I
move-result p3
.line 7
invoke-virtual {v1, p3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->multiply(I)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v0
.line 8
invoke-virtual {p1, p3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->multiply(I)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object p1
new-array p3, v3, [Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
aput-object v0, p3, p2
const/4 p2, 0x1
aput-object p1, p3, p2
return-object p3
.line 9
:cond_1
new-instance p1, Lcom/google/zxing/common/reedsolomon/ReedSolomonException;
const-string p2, "sigmaTilde(0) was zero"
invoke-direct {p1, p2}, Lcom/google/zxing/common/reedsolomon/ReedSolomonException;-><init>(Ljava/lang/String;)V
throw p1
.line 10
:cond_2
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->isZero()Z
move-result v2
if-nez v2, :cond_5
.line 11
iget-object v2, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v2}, Lcom/google/zxing/common/reedsolomon/GenericGF;->getZero()Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v2
.line 12
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v3
invoke-virtual {p1, v3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficient(I)I
move-result v3
.line 13
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v4, v3}, Lcom/google/zxing/common/reedsolomon/GenericGF;->inverse(I)I
move-result v3
.line 14
:goto_1
invoke-virtual {p2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v4
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v5
if-lt v4, v5, :cond_4
invoke-virtual {p2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->isZero()Z
move-result v4
if-eqz v4, :cond_3
goto :goto_2
.line 15
:cond_3
invoke-virtual {p2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v4
invoke-virtual {p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v5
sub-int/2addr v4, v5
.line 16
iget-object v5, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {p2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getDegree()I
move-result v6
invoke-virtual {p2, v6}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficient(I)I
move-result v6
invoke-virtual {v5, v6, v3}, Lcom/google/zxing/common/reedsolomon/GenericGF;->multiply(II)I
move-result v5
.line 17
iget-object v6, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v6, v4, v5}, Lcom/google/zxing/common/reedsolomon/GenericGF;->buildMonomial(II)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v6
invoke-virtual {v2, v6}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->addOrSubtract(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v2
.line 18
invoke-virtual {p1, v4, v5}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->multiplyByMonomial(II)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v4
invoke-virtual {p2, v4}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->addOrSubtract(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object p2
goto :goto_1
.line 19
:cond_4
:goto_2
invoke-virtual {v2, v1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->multiply(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v2
invoke-virtual {v2, v0}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->addOrSubtract(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v0
move-object v7, p2
move-object p2, p1
move-object p1, v7
move-object v8, v1
move-object v1, v0
move-object v0, v8
goto/16 :goto_0
.line 20
:cond_5
new-instance p1, Lcom/google/zxing/common/reedsolomon/ReedSolomonException;
const-string p2, "r_{i-1} was zero"
invoke-direct {p1, p2}, Lcom/google/zxing/common/reedsolomon/ReedSolomonException;-><init>(Ljava/lang/String;)V
throw p1
.end method
# virtual methods
.method public decode([II)V
.locals 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/common/reedsolomon/ReedSolomonException;
}
.end annotation
.line 1
new-instance v0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
iget-object v1, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-direct {v0, v1, p1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
.line 2
new-array v1, p2, [I
.line 3
iget-object v2, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
sget-object v3, Lcom/google/zxing/common/reedsolomon/GenericGF;->DATA_MATRIX_FIELD_256:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v2, v3}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v2
const/4 v3, 0x0
const/4 v4, 0x1
move v5, v3
move v6, v4
:goto_0
if-lt v5, p2, :cond_3
if-eqz v6, :cond_0
return-void
.line 4
:cond_0
new-instance v0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
iget-object v5, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-direct {v0, v5, v1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
.line 5
iget-object v1, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v1, p2, v4}, Lcom/google/zxing/common/reedsolomon/GenericGF;->buildMonomial(II)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v1
invoke-direct {p0, v1, v0, p2}, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->runEuclideanAlgorithm(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;Lcom/google/zxing/common/reedsolomon/GenericGFPoly;I)[Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object p2
.line 6
aget-object v0, p2, v3
.line 7
aget-object p2, p2, v4
.line 8
invoke-direct {p0, v0}, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->findErrorLocations(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)[I
move-result-object v0
.line 9
invoke-direct {p0, p2, v0, v2}, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->findErrorMagnitudes(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;[IZ)[I
move-result-object p2
.line 10
:goto_1
array-length v1, v0
if-lt v3, v1, :cond_1
return-void
.line 11
:cond_1
array-length v1, p1
sub-int/2addr v1, v4
iget-object v2, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
aget v5, v0, v3
invoke-virtual {v2, v5}, Lcom/google/zxing/common/reedsolomon/GenericGF;->log(I)I
move-result v2
sub-int/2addr v1, v2
if-ltz v1, :cond_2
.line 12
aget v2, p1, v1
aget v5, p2, v3
invoke-static {v2, v5}, Lcom/google/zxing/common/reedsolomon/GenericGF;->addOrSubtract(II)I
move-result v2
aput v2, p1, v1
add-int/lit8 v3, v3, 0x1
goto :goto_1
.line 13
:cond_2
new-instance p1, Lcom/google/zxing/common/reedsolomon/ReedSolomonException;
const-string p2, "Bad error location"
invoke-direct {p1, p2}, Lcom/google/zxing/common/reedsolomon/ReedSolomonException;-><init>(Ljava/lang/String;)V
throw p1
.line 14
:cond_3
iget-object v7, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonDecoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
if-eqz v2, :cond_4
add-int/lit8 v8, v5, 0x1
goto :goto_2
:cond_4
move v8, v5
:goto_2
invoke-virtual {v7, v8}, Lcom/google/zxing/common/reedsolomon/GenericGF;->exp(I)I
move-result v7
invoke-virtual {v0, v7}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->evaluateAt(I)I
move-result v7
add-int/lit8 v8, p2, -0x1
sub-int/2addr v8, v5
.line 15
aput v7, v1, v8
if-eqz v7, :cond_5
move v6, v3
:cond_5
add-int/lit8 v5, v5, 0x1
goto :goto_0
.end method
@@ -0,0 +1,267 @@
.class public final Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;
.super Ljava/lang/Object;
.source "ReedSolomonEncoder.java"
# instance fields
.field private final cachedGenerators:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/google/zxing/common/reedsolomon/GenericGFPoly;",
">;"
}
.end annotation
.end field
.field private final field:Lcom/google/zxing/common/reedsolomon/GenericGF;
# direct methods
.method public constructor <init>(Lcom/google/zxing/common/reedsolomon/GenericGF;)V
.locals 5
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
sget-object v0, Lcom/google/zxing/common/reedsolomon/GenericGF;->QR_CODE_FIELD_256:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-virtual {v0, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_0
.line 3
iput-object p1, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
.line 4
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->cachedGenerators:Ljava/util/List;
.line 5
new-instance v1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
const/4 v2, 0x1
new-array v3, v2, [I
const/4 v4, 0x0
aput v2, v3, v4
invoke-direct {v1, p1, v3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
return-void
.line 6
:cond_0
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "Only QR Code is supported at this time"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method private buildGenerator(I)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.locals 7
.line 1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->cachedGenerators:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
if-lt p1, v0, :cond_1
.line 2
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->cachedGenerators:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v1
const/4 v2, 0x1
sub-int/2addr v1, v2
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
.line 3
iget-object v1, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->cachedGenerators:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
:goto_0
if-le v1, p1, :cond_0
goto :goto_1
.line 4
:cond_0
new-instance v3, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
iget-object v4, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
const/4 v5, 0x2
new-array v5, v5, [I
const/4 v6, 0x0
aput v2, v5, v6
add-int/lit8 v6, v1, -0x1
invoke-virtual {v4, v6}, Lcom/google/zxing/common/reedsolomon/GenericGF;->exp(I)I
move-result v6
aput v6, v5, v2
invoke-direct {v3, v4, v5}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
invoke-virtual {v0, v3}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->multiply(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v0
.line 5
iget-object v3, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->cachedGenerators:Ljava/util/List;
invoke-interface {v3, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
add-int/lit8 v1, v1, 0x1
goto :goto_0
.line 6
:cond_1
:goto_1
iget-object v0, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->cachedGenerators:Ljava/util/List;
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
return-object p1
.end method
# virtual methods
.method public encode([II)V
.locals 6
if-eqz p2, :cond_2
.line 1
array-length v0, p1
sub-int/2addr v0, p2
if-lez v0, :cond_1
.line 2
invoke-direct {p0, p2}, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->buildGenerator(I)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v1
.line 3
new-array v2, v0, [I
const/4 v3, 0x0
.line 4
invoke-static {p1, v3, v2, v3, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 5
new-instance v4, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
iget-object v5, p0, Lcom/google/zxing/common/reedsolomon/ReedSolomonEncoder;->field:Lcom/google/zxing/common/reedsolomon/GenericGF;
invoke-direct {v4, v5, v2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;-><init>(Lcom/google/zxing/common/reedsolomon/GenericGF;[I)V
const/4 v2, 0x1
.line 6
invoke-virtual {v4, p2, v2}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->multiplyByMonomial(II)Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v4
.line 7
invoke-virtual {v4, v1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->divide(Lcom/google/zxing/common/reedsolomon/GenericGFPoly;)[Lcom/google/zxing/common/reedsolomon/GenericGFPoly;
move-result-object v1
aget-object v1, v1, v2
.line 8
invoke-virtual {v1}, Lcom/google/zxing/common/reedsolomon/GenericGFPoly;->getCoefficients()[I
move-result-object v1
.line 9
array-length v2, v1
sub-int/2addr p2, v2
move v2, v3
:goto_0
if-lt v2, p2, :cond_0
add-int/2addr v0, p2
.line 10
array-length p2, v1
invoke-static {v1, v3, p1, v0, p2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
return-void
:cond_0
add-int v4, v0, v2
.line 11
aput v3, p1, v4
add-int/lit8 v2, v2, 0x1
goto :goto_0
.line 12
:cond_1
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "No data bytes provided"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.line 13
:cond_2
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "No error correction bytes"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
@@ -0,0 +1,14 @@
.class public final Lcom/google/zxing/common/reedsolomon/ReedSolomonException;
.super Ljava/lang/Exception;
.source "ReedSolomonException.java"
# direct methods
.method public constructor <init>(Ljava/lang/String;)V
.locals 0
.line 1
invoke-direct {p0, p1}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
return-void
.end method