MultiFinderPatternFinder.smali
.class final Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder;
.super Lcom/google/zxing/qrcode/a/e;
.source "MultiFinderPatternFinder.java"
# static fields
.field private static final bpn:[Lcom/google/zxing/qrcode/a/f;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 51
const/4 v0, 0x0
new-array v0, v0, [Lcom/google/zxing/qrcode/a/f;
sput-object v0, Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder;->bpn:[Lcom/google/zxing/qrcode/a/f;
return-void
.end method
.method constructor <init>(Lcom/google/zxing/common/b;)V
.registers 2
.prologue
.line 97
invoke-direct {p0, p1}, Lcom/google/zxing/qrcode/a/e;-><init>(Lcom/google/zxing/common/b;)V
.line 98
return-void
.end method
# virtual methods
.method public final r(Ljava/util/Map;)[Lcom/google/zxing/qrcode/a/f;
.registers 20
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Map",
"<",
"Lcom/google/zxing/DecodeHintType;",
"*>;)[",
"Lcom/google/zxing/qrcode/a/f;"
}
.end annotation
.prologue
.line 232
if-eqz p1, :cond_6c
sget-object v2, Lcom/google/zxing/DecodeHintType;->TRY_HARDER:Lcom/google/zxing/DecodeHintType;
move-object/from16 v0, p1
invoke-interface {v0, v2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_6c
const/4 v2, 0x1
move v4, v2
.line 233
:goto_e
if-eqz p1, :cond_6f
sget-object v2, Lcom/google/zxing/DecodeHintType;->PURE_BARCODE:Lcom/google/zxing/DecodeHintType;
move-object/from16 v0, p1
invoke-interface {v0, v2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_6f
const/4 v2, 0x1
.line 1069
:goto_1b
move-object/from16 v0, p0
iget-object v7, v0, Lcom/google/zxing/qrcode/a/e;->bpO:Lcom/google/zxing/common/b;
.line 1406
iget v8, v7, Lcom/google/zxing/common/b;->height:I
.line 2399
iget v9, v7, Lcom/google/zxing/common/b;->width:I
.line 244
int-to-float v3, v8
const/high16 v5, 0x43640000 # 228.0f
div-float/2addr v3, v5
const/high16 v5, 0x40400000 # 3.0f
mul-float/2addr v3, v5
float-to-int v3, v3
.line 245
const/4 v5, 0x3
if-lt v3, v5, :cond_30
if-eqz v4, :cond_31
.line 246
:cond_30
const/4 v3, 0x3
.line 249
:cond_31
const/4 v4, 0x5
new-array v10, v4, [I
.line 250
add-int/lit8 v4, v3, -0x1
move v6, v4
:goto_37
if-ge v6, v8, :cond_d8
.line 252
const/4 v4, 0x0
const/4 v5, 0x0
aput v5, v10, v4
.line 253
const/4 v4, 0x1
const/4 v5, 0x0
aput v5, v10, v4
.line 254
const/4 v4, 0x2
const/4 v5, 0x0
aput v5, v10, v4
.line 255
const/4 v4, 0x3
const/4 v5, 0x0
aput v5, v10, v4
.line 256
const/4 v4, 0x4
const/4 v5, 0x0
aput v5, v10, v4
.line 257
const/4 v5, 0x0
.line 258
const/4 v4, 0x0
move/from16 v17, v4
move v4, v5
move/from16 v5, v17
:goto_54
if-ge v5, v9, :cond_c8
.line 259
invoke-virtual {v7, v5, v6}, Lcom/google/zxing/common/b;->av(II)Z
move-result v11
if-eqz v11, :cond_71
.line 261
and-int/lit8 v11, v4, 0x1
const/4 v12, 0x1
if-ne v11, v12, :cond_63
.line 262
add-int/lit8 v4, v4, 0x1
.line 264
:cond_63
aget v11, v10, v4
add-int/lit8 v11, v11, 0x1
aput v11, v10, v4
.line 258
:goto_69
add-int/lit8 v5, v5, 0x1
goto :goto_54
.line 232
:cond_6c
const/4 v2, 0x0
move v4, v2
goto :goto_e
.line 233
:cond_6f
const/4 v2, 0x0
goto :goto_1b
.line 266
:cond_71
and-int/lit8 v11, v4, 0x1
if-nez v11, :cond_c1
.line 267
const/4 v11, 0x4
if-ne v4, v11, :cond_b8
.line 268
invoke-static {v10}, Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder;->d([I)Z
move-result v4
if-eqz v4, :cond_9c
move-object/from16 v0, p0
invoke-virtual {v0, v10, v6, v5, v2}, Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder;->a([IIIZ)Z
move-result v4
if-eqz v4, :cond_9c
.line 270
const/4 v4, 0x0
.line 271
const/4 v11, 0x0
const/4 v12, 0x0
aput v12, v10, v11
.line 272
const/4 v11, 0x1
const/4 v12, 0x0
aput v12, v10, v11
.line 273
const/4 v11, 0x2
const/4 v12, 0x0
aput v12, v10, v11
.line 274
const/4 v11, 0x3
const/4 v12, 0x0
aput v12, v10, v11
.line 275
const/4 v11, 0x4
const/4 v12, 0x0
aput v12, v10, v11
goto :goto_69
.line 277
:cond_9c
const/4 v4, 0x0
const/4 v11, 0x2
aget v11, v10, v11
aput v11, v10, v4
.line 278
const/4 v4, 0x1
const/4 v11, 0x3
aget v11, v10, v11
aput v11, v10, v4
.line 279
const/4 v4, 0x2
const/4 v11, 0x4
aget v11, v10, v11
aput v11, v10, v4
.line 280
const/4 v4, 0x3
const/4 v11, 0x1
aput v11, v10, v4
.line 281
const/4 v4, 0x4
const/4 v11, 0x0
aput v11, v10, v4
.line 282
const/4 v4, 0x3
goto :goto_69
.line 285
:cond_b8
add-int/lit8 v4, v4, 0x1
aget v11, v10, v4
add-int/lit8 v11, v11, 0x1
aput v11, v10, v4
goto :goto_69
.line 288
:cond_c1
aget v11, v10, v4
add-int/lit8 v11, v11, 0x1
aput v11, v10, v4
goto :goto_69
.line 293
:cond_c8
invoke-static {v10}, Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder;->d([I)Z
move-result v4
if-eqz v4, :cond_d3
.line 294
move-object/from16 v0, p0
invoke-virtual {v0, v10, v6, v9, v2}, Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder;->a([IIIZ)Z
.line 250
:cond_d3
add-int v4, v6, v3
move v6, v4
goto/16 :goto_37
.line 4073
:cond_d8
move-object/from16 v0, p0
iget-object v8, v0, Lcom/google/zxing/qrcode/a/e;->bpP:Ljava/util/List;
.line 3108
invoke-interface {v8}, Ljava/util/List;->size()I
move-result v9
.line 3110
const/4 v2, 0x3
if-ge v9, v2, :cond_e8
.line 3112
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v2
throw v2
.line 3118
:cond_e8
const/4 v2, 0x3
if-ne v9, v2, :cond_12c
.line 3119
const/4 v2, 0x1
new-array v3, v2, [[Lcom/google/zxing/qrcode/a/d;
const/4 v4, 0x0
const/4 v2, 0x3
new-array v5, v2, [Lcom/google/zxing/qrcode/a/d;
const/4 v6, 0x0
const/4 v2, 0x0
.line 3121
invoke-interface {v8, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/zxing/qrcode/a/d;
aput-object v2, v5, v6
const/4 v6, 0x1
const/4 v2, 0x1
.line 3122
invoke-interface {v8, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/zxing/qrcode/a/d;
aput-object v2, v5, v6
const/4 v6, 0x2
const/4 v2, 0x2
.line 3123
invoke-interface {v8, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/zxing/qrcode/a/d;
aput-object v2, v5, v6
aput-object v5, v3, v4
move-object v2, v3
.line 298
:goto_113
new-instance v4, Ljava/util/ArrayList;
invoke-direct {v4}, Ljava/util/ArrayList;-><init>()V
.line 299
array-length v5, v2
const/4 v3, 0x0
:goto_11a
if-ge v3, v5, :cond_248
aget-object v6, v2, v3
.line 300
invoke-static {v6}, Lcom/google/zxing/f;->a([Lcom/google/zxing/f;)V
.line 301
new-instance v7, Lcom/google/zxing/qrcode/a/f;
invoke-direct {v7, v6}, Lcom/google/zxing/qrcode/a/f;-><init>([Lcom/google/zxing/qrcode/a/d;)V
invoke-interface {v4, v7}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 299
add-int/lit8 v3, v3, 0x1
goto :goto_11a
.line 3129
:cond_12c
new-instance v2, Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder$ModuleSizeComparator;
const/4 v3, 0x0
invoke-direct {v2, v3}, Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder$ModuleSizeComparator;-><init>(Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder$1;)V
invoke-static {v8, v2}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
.line 3146
new-instance v10, Ljava/util/ArrayList;
invoke-direct {v10}, Ljava/util/ArrayList;-><init>()V
.line 3148
const/4 v2, 0x0
move v5, v2
:goto_13c
add-int/lit8 v2, v9, -0x2
if-ge v5, v2, :cond_22f
.line 3149
invoke-interface {v8, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
move-object v4, v2
check-cast v4, Lcom/google/zxing/qrcode/a/d;
.line 3150
if-eqz v4, :cond_22a
.line 3154
add-int/lit8 v2, v5, 0x1
move v6, v2
:goto_14c
add-int/lit8 v2, v9, -0x1
if-ge v6, v2, :cond_22a
.line 3155
invoke-interface {v8, v6}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
move-object v3, v2
check-cast v3, Lcom/google/zxing/qrcode/a/d;
.line 3156
if-eqz v3, :cond_225
.line 5044
iget v2, v4, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 6044
iget v7, v3, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 3161
sub-float/2addr v2, v7
.line 7044
iget v7, v4, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 8044
iget v11, v3, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 3162
invoke-static {v7, v11}, Ljava/lang/Math;->min(FF)F
move-result v7
div-float/2addr v2, v7
.line 9044
iget v7, v4, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 10044
iget v11, v3, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 3163
sub-float/2addr v7, v11
invoke-static {v7}, Ljava/lang/Math;->abs(F)F
move-result v7
.line 3164
const/high16 v11, 0x3f000000 # 0.5f
cmpl-float v7, v7, v11
if-lez v7, :cond_17d
const v7, 0x3d4ccccd # 0.05f
cmpl-float v2, v2, v7
if-gez v2, :cond_22a
.line 3170
:cond_17d
add-int/lit8 v2, v6, 0x1
move v7, v2
:goto_180
if-ge v7, v9, :cond_225
.line 3171
invoke-interface {v8, v7}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/zxing/qrcode/a/d;
.line 3172
if-eqz v2, :cond_220
.line 11044
iget v11, v3, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 12044
iget v12, v2, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 3177
sub-float/2addr v11, v12
.line 13044
iget v12, v3, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 14044
iget v13, v2, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 3178
invoke-static {v12, v13}, Ljava/lang/Math;->min(FF)F
move-result v12
div-float/2addr v11, v12
.line 15044
iget v12, v3, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 16044
iget v13, v2, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 3179
sub-float/2addr v12, v13
invoke-static {v12}, Ljava/lang/Math;->abs(F)F
move-result v12
.line 3180
const/high16 v13, 0x3f000000 # 0.5f
cmpl-float v12, v12, v13
if-lez v12, :cond_1ae
const v12, 0x3d4ccccd # 0.05f
cmpl-float v11, v11, v12
if-gez v11, :cond_225
.line 3186
:cond_1ae
const/4 v11, 0x3
new-array v11, v11, [Lcom/google/zxing/qrcode/a/d;
const/4 v12, 0x0
aput-object v4, v11, v12
const/4 v12, 0x1
aput-object v3, v11, v12
const/4 v12, 0x2
aput-object v2, v11, v12
.line 3187
invoke-static {v11}, Lcom/google/zxing/f;->a([Lcom/google/zxing/f;)V
.line 3190
new-instance v2, Lcom/google/zxing/qrcode/a/f;
invoke-direct {v2, v11}, Lcom/google/zxing/qrcode/a/f;-><init>([Lcom/google/zxing/qrcode/a/d;)V
.line 17042
iget-object v12, v2, Lcom/google/zxing/qrcode/a/f;->bpV:Lcom/google/zxing/qrcode/a/d;
.line 18038
iget-object v13, v2, Lcom/google/zxing/qrcode/a/f;->bpU:Lcom/google/zxing/qrcode/a/d;
.line 3191
invoke-static {v12, v13}, Lcom/google/zxing/f;->a(Lcom/google/zxing/f;Lcom/google/zxing/f;)F
move-result v12
.line 18046
iget-object v13, v2, Lcom/google/zxing/qrcode/a/f;->bpW:Lcom/google/zxing/qrcode/a/d;
.line 19038
iget-object v14, v2, Lcom/google/zxing/qrcode/a/f;->bpU:Lcom/google/zxing/qrcode/a/d;
.line 3192
invoke-static {v13, v14}, Lcom/google/zxing/f;->a(Lcom/google/zxing/f;Lcom/google/zxing/f;)F
move-result v13
.line 19042
iget-object v14, v2, Lcom/google/zxing/qrcode/a/f;->bpV:Lcom/google/zxing/qrcode/a/d;
.line 19046
iget-object v2, v2, Lcom/google/zxing/qrcode/a/f;->bpW:Lcom/google/zxing/qrcode/a/d;
.line 3193
invoke-static {v14, v2}, Lcom/google/zxing/f;->a(Lcom/google/zxing/f;Lcom/google/zxing/f;)F
move-result v2
.line 3196
add-float v14, v12, v2
.line 20044
iget v15, v4, Lcom/google/zxing/qrcode/a/d;->bpN:F
.line 3196
const/high16 v16, 0x40000000 # 2.0f
mul-float v15, v15, v16
div-float/2addr v14, v15
.line 3197
const/high16 v15, 0x43340000 # 180.0f
cmpl-float v15, v14, v15
if-gtz v15, :cond_220
const/high16 v15, 0x41100000 # 9.0f
cmpg-float v14, v14, v15
if-ltz v14, :cond_220
.line 3203
sub-float v14, v12, v2
invoke-static {v12, v2}, Ljava/lang/Math;->min(FF)F
move-result v15
div-float/2addr v14, v15
invoke-static {v14}, Ljava/lang/Math;->abs(F)F
move-result v14
.line 3204
const v15, 0x3dcccccd # 0.1f
cmpl-float v14, v14, v15
if-gez v14, :cond_220
.line 3209
mul-float/2addr v12, v12
mul-float/2addr v2, v2
add-float/2addr v2, v12
float-to-double v14, v2
invoke-static {v14, v15}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v14
double-to-float v2, v14
.line 3211
sub-float v12, v13, v2
invoke-static {v13, v2}, Ljava/lang/Math;->min(FF)F
move-result v2
div-float v2, v12, v2
invoke-static {v2}, Ljava/lang/Math;->abs(F)F
move-result v2
.line 3213
const v12, 0x3dcccccd # 0.1f
cmpl-float v2, v2, v12
if-gez v2, :cond_220
.line 3218
invoke-interface {v10, v11}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 3170
:cond_220
add-int/lit8 v2, v7, 0x1
move v7, v2
goto/16 :goto_180
.line 3154
:cond_225
add-int/lit8 v2, v6, 0x1
move v6, v2
goto/16 :goto_14c
.line 3148
:cond_22a
add-int/lit8 v2, v5, 0x1
move v5, v2
goto/16 :goto_13c
.line 3223
:cond_22f
invoke-interface {v10}, Ljava/util/List;->isEmpty()Z
move-result v2
if-nez v2, :cond_243
.line 3224
invoke-interface {v10}, Ljava/util/List;->size()I
move-result v2
new-array v2, v2, [[Lcom/google/zxing/qrcode/a/d;
invoke-interface {v10, v2}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v2
check-cast v2, [[Lcom/google/zxing/qrcode/a/d;
goto/16 :goto_113
.line 3228
:cond_243
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v2
throw v2
.line 304
:cond_248
invoke-interface {v4}, Ljava/util/List;->isEmpty()Z
move-result v2
if-eqz v2, :cond_251
.line 305
sget-object v2, Lcom/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder;->bpn:[Lcom/google/zxing/qrcode/a/f;
.line 307
:goto_250
return-object v2
:cond_251
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v2
new-array v2, v2, [Lcom/google/zxing/qrcode/a/f;
invoke-interface {v4, v2}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v2
check-cast v2, [Lcom/google/zxing/qrcode/a/f;
goto :goto_250
.end method