MultiFormatUPCEANReader.smali
.class public final Lcom/google/zxing/oned/MultiFormatUPCEANReader;
.super Lcom/google/zxing/oned/OneDReader;
.source "MultiFormatUPCEANReader.java"
# instance fields
.field private final readers:[Lcom/google/zxing/oned/UPCEANReader;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Ljava/util/Map;)V
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Map<",
"Lcom/google/zxing/DecodeHintType;",
"*>;)V"
}
.end annotation
.line 42
.local p1, "hints":Ljava/util/Map;, "Ljava/util/Map<Lcom/google/zxing/DecodeHintType;*>;"
invoke-direct {p0}, Lcom/google/zxing/oned/OneDReader;-><init>()V
.line 44
if-nez p1, :cond_7
const/4 v0, 0x0
goto :goto_f
:cond_7
sget-object v0, Lcom/google/zxing/DecodeHintType;->POSSIBLE_FORMATS:Lcom/google/zxing/DecodeHintType;
.line 45
invoke-interface {p1, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/Collection;
:goto_f
nop
.line 46
.local v0, "possibleFormats":Ljava/util/Collection;, "Ljava/util/Collection<Lcom/google/zxing/BarcodeFormat;>;"
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 47
.local v1, "readers":Ljava/util/Collection;, "Ljava/util/Collection<Lcom/google/zxing/oned/UPCEANReader;>;"
if-eqz v0, :cond_58
.line 48
sget-object v2, Lcom/google/zxing/BarcodeFormat;->EAN_13:Lcom/google/zxing/BarcodeFormat;
invoke-interface {v0, v2}, Ljava/util/Collection;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_28
.line 49
new-instance v2, Lcom/google/zxing/oned/EAN13Reader;
invoke-direct {v2}, Lcom/google/zxing/oned/EAN13Reader;-><init>()V
invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
goto :goto_38
.line 50
:cond_28
sget-object v2, Lcom/google/zxing/BarcodeFormat;->UPC_A:Lcom/google/zxing/BarcodeFormat;
invoke-interface {v0, v2}, Ljava/util/Collection;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_38
.line 51
new-instance v2, Lcom/google/zxing/oned/UPCAReader;
invoke-direct {v2}, Lcom/google/zxing/oned/UPCAReader;-><init>()V
invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 53
:cond_38
:goto_38
sget-object v2, Lcom/google/zxing/BarcodeFormat;->EAN_8:Lcom/google/zxing/BarcodeFormat;
invoke-interface {v0, v2}, Ljava/util/Collection;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_48
.line 54
new-instance v2, Lcom/google/zxing/oned/EAN8Reader;
invoke-direct {v2}, Lcom/google/zxing/oned/EAN8Reader;-><init>()V
invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 56
:cond_48
sget-object v2, Lcom/google/zxing/BarcodeFormat;->UPC_E:Lcom/google/zxing/BarcodeFormat;
invoke-interface {v0, v2}, Ljava/util/Collection;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_58
.line 57
new-instance v2, Lcom/google/zxing/oned/UPCEReader;
invoke-direct {v2}, Lcom/google/zxing/oned/UPCEReader;-><init>()V
invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 60
:cond_58
invoke-interface {v1}, Ljava/util/Collection;->isEmpty()Z
move-result v2
if-eqz v2, :cond_76
.line 61
new-instance v2, Lcom/google/zxing/oned/EAN13Reader;
invoke-direct {v2}, Lcom/google/zxing/oned/EAN13Reader;-><init>()V
invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 63
new-instance v2, Lcom/google/zxing/oned/EAN8Reader;
invoke-direct {v2}, Lcom/google/zxing/oned/EAN8Reader;-><init>()V
invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 64
new-instance v2, Lcom/google/zxing/oned/UPCEReader;
invoke-direct {v2}, Lcom/google/zxing/oned/UPCEReader;-><init>()V
invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 66
:cond_76
invoke-interface {v1}, Ljava/util/Collection;->size()I
move-result v2
new-array v2, v2, [Lcom/google/zxing/oned/UPCEANReader;
invoke-interface {v1, v2}, Ljava/util/Collection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v2
check-cast v2, [Lcom/google/zxing/oned/UPCEANReader;
iput-object v2, p0, Lcom/google/zxing/oned/MultiFormatUPCEANReader;->readers:[Lcom/google/zxing/oned/UPCEANReader;
.line 67
return-void
.end method
# virtual methods
.method public decodeRow(ILcom/google/zxing/common/BitArray;Ljava/util/Map;)Lcom/google/zxing/Result;
.registers 22
.param p1, "rowNumber" # I
.param p2, "row" # Lcom/google/zxing/common/BitArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Lcom/google/zxing/common/BitArray;",
"Ljava/util/Map<",
"Lcom/google/zxing/DecodeHintType;",
"*>;)",
"Lcom/google/zxing/Result;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/NotFoundException;
}
.end annotation
.line 74
.local p3, "hints":Ljava/util/Map;, "Ljava/util/Map<Lcom/google/zxing/DecodeHintType;*>;"
move-object/from16 v1, p3
invoke-static/range {p2 .. p2}, Lcom/google/zxing/oned/UPCEANReader;->findStartGuardPattern(Lcom/google/zxing/common/BitArray;)[I
move-result-object v2
.line 75
.local v2, "startGuardPattern":[I
move-object/from16 v3, p0
iget-object v4, v3, Lcom/google/zxing/oned/MultiFormatUPCEANReader;->readers:[Lcom/google/zxing/oned/UPCEANReader;
array-length v5, v4
const/4 v6, 0x0
const/4 v8, 0x0
const/4 v9, 0x0
const/4 v10, 0x0
const/4 v11, 0x0
:goto_10
if-ge v8, v5, :cond_90
aget-object v12, v4, v8
.line 77
.local v12, "reader":Lcom/google/zxing/oned/UPCEANReader;
move/from16 v13, p1
move-object/from16 v14, p2
:try_start_18
invoke-virtual {v12, v13, v14, v2, v1}, Lcom/google/zxing/oned/UPCEANReader;->decodeRow(ILcom/google/zxing/common/BitArray;[ILjava/util/Map;)Lcom/google/zxing/Result;
move-result-object v0
.line 90
.local v9, "result":Lcom/google/zxing/Result;
move-object v9, v0
.line 91
invoke-virtual {v0}, Lcom/google/zxing/Result;->getBarcodeFormat()Lcom/google/zxing/BarcodeFormat;
move-result-object v0
sget-object v15, Lcom/google/zxing/BarcodeFormat;->EAN_13:Lcom/google/zxing/BarcodeFormat;
:try_end_23
.catch Lcom/google/zxing/ReaderException; {:try_start_18 .. :try_end_23} :catch_85
if-ne v0, v15, :cond_33
.line 92
:try_start_25
invoke-virtual {v9}, Lcom/google/zxing/Result;->getText()Ljava/lang/String;
move-result-object v0
invoke-virtual {v0, v6}, Ljava/lang/String;->charAt(I)C
move-result v0
:try_end_2d
.catch Lcom/google/zxing/ReaderException; {:try_start_25 .. :try_end_2d} :catch_4f
const/16 v15, 0x30
if-ne v0, v15, :cond_33
const/4 v0, 0x1
goto :goto_34
.end local v9 # "result":Lcom/google/zxing/Result;
:cond_33
const/4 v0, 0x0
.line 94
.local v0, "ean13MayBeUPCA":Z
:goto_34
if-nez v1, :cond_38
const/4 v15, 0x0
goto :goto_40
:cond_38
:try_start_38
sget-object v15, Lcom/google/zxing/DecodeHintType;->POSSIBLE_FORMATS:Lcom/google/zxing/DecodeHintType;
.line 95
invoke-interface {v1, v15}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v15
check-cast v15, Ljava/util/Collection;
:try_end_40
.catch Lcom/google/zxing/ReaderException; {:try_start_38 .. :try_end_40} :catch_85
:goto_40
nop
.line 96
.local v10, "possibleFormats":Ljava/util/Collection;, "Ljava/util/Collection<Lcom/google/zxing/BarcodeFormat;>;"
move-object v10, v15
if-eqz v15, :cond_53
:try_start_44
sget-object v15, Lcom/google/zxing/BarcodeFormat;->UPC_A:Lcom/google/zxing/BarcodeFormat;
invoke-interface {v10, v15}, Ljava/util/Collection;->contains(Ljava/lang/Object;)Z
move-result v15
:try_end_4a
.catch Lcom/google/zxing/ReaderException; {:try_start_44 .. :try_end_4a} :catch_4f
if-eqz v15, :cond_4d
goto :goto_53
:cond_4d
const/4 v15, 0x0
goto :goto_54
.line 108
.end local v0 # "ean13MayBeUPCA":Z
.end local v10 # "possibleFormats":Ljava/util/Collection;, "Ljava/util/Collection<Lcom/google/zxing/BarcodeFormat;>;"
:catch_4f
move-exception v0
move-object/from16 v16, v2
goto :goto_88
.line 96
.restart local v0 # "ean13MayBeUPCA":Z
:cond_53
:goto_53
const/4 v15, 0x1
.line 98
.local v15, "canReturnUPCA":Z
:goto_54
if-eqz v0, :cond_80
if-eqz v15, :cond_80
.line 100
:try_start_58
new-instance v6, Lcom/google/zxing/Result;
invoke-virtual {v9}, Lcom/google/zxing/Result;->getText()Ljava/lang/String;
move-result-object v7
move/from16 v17, v0
const/4 v0, 0x1
.end local v0 # "ean13MayBeUPCA":Z
.local v17, "ean13MayBeUPCA":Z
invoke-virtual {v7, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
.line 101
invoke-virtual {v9}, Lcom/google/zxing/Result;->getRawBytes()[B
move-result-object v7
.line 102
invoke-virtual {v9}, Lcom/google/zxing/Result;->getResultPoints()[Lcom/google/zxing/ResultPoint;
move-result-object v1
:try_end_6d
.catch Lcom/google/zxing/ReaderException; {:try_start_58 .. :try_end_6d} :catch_85
move-object/from16 v16, v2
.end local v2 # "startGuardPattern":[I
.local v16, "startGuardPattern":[I
:try_start_6f
sget-object v2, Lcom/google/zxing/BarcodeFormat;->UPC_A:Lcom/google/zxing/BarcodeFormat;
invoke-direct {v6, v0, v7, v1, v2}, Lcom/google/zxing/Result;-><init>(Ljava/lang/String;[B[Lcom/google/zxing/ResultPoint;Lcom/google/zxing/BarcodeFormat;)V
move-object v0, v11
.line 104
.local v0, "resultUPCA":Lcom/google/zxing/Result;
move-object v11, v6
.end local v0 # "resultUPCA":Lcom/google/zxing/Result;
.local v11, "resultUPCA":Lcom/google/zxing/Result;
invoke-virtual {v9}, Lcom/google/zxing/Result;->getResultMetadata()Ljava/util/Map;
move-result-object v0
invoke-virtual {v6, v0}, Lcom/google/zxing/Result;->putAllMetadata(Ljava/util/Map;)V
:try_end_7d
.catch Lcom/google/zxing/ReaderException; {:try_start_6f .. :try_end_7d} :catch_7e
.line 105
return-object v11
.line 108
.end local v11 # "resultUPCA":Lcom/google/zxing/Result;
.end local v15 # "canReturnUPCA":Z
.end local v17 # "ean13MayBeUPCA":Z
:catch_7e
move-exception v0
goto :goto_88
.line 98
.end local v16 # "startGuardPattern":[I
.local v0, "ean13MayBeUPCA":Z
.restart local v2 # "startGuardPattern":[I
.restart local v15 # "canReturnUPCA":Z
:cond_80
move/from16 v17, v0
move-object/from16 v16, v2
.line 107
.end local v0 # "ean13MayBeUPCA":Z
.end local v2 # "startGuardPattern":[I
.restart local v16 # "startGuardPattern":[I
.restart local v17 # "ean13MayBeUPCA":Z
return-object v9
.line 108
.end local v15 # "canReturnUPCA":Z
.end local v16 # "startGuardPattern":[I
.end local v17 # "ean13MayBeUPCA":Z
.restart local v2 # "startGuardPattern":[I
:catch_85
move-exception v0
move-object/from16 v16, v2
.line 75
.end local v2 # "startGuardPattern":[I
.end local v12 # "reader":Lcom/google/zxing/oned/UPCEANReader;
.restart local v16 # "startGuardPattern":[I
:goto_88
add-int/lit8 v8, v8, 0x1
move-object/from16 v1, p3
move-object/from16 v2, v16
const/4 v6, 0x0
goto :goto_10
.line 113
.end local v16 # "startGuardPattern":[I
.restart local v2 # "startGuardPattern":[I
:cond_90
invoke-static {}, Lcom/google/zxing/NotFoundException;->getNotFoundInstance()Lcom/google/zxing/NotFoundException;
move-result-object v0
goto :goto_96
:goto_95
throw v0
:goto_96
goto :goto_95
.end method
.method public reset()V
.registers 5
.line 118
iget-object v0, p0, Lcom/google/zxing/oned/MultiFormatUPCEANReader;->readers:[Lcom/google/zxing/oned/UPCEANReader;
array-length v1, v0
const/4 v2, 0x0
:goto_4
if-ge v2, v1, :cond_e
aget-object v3, v0, v2
.line 119
invoke-interface {v3}, Lcom/google/zxing/Reader;->reset()V
.line 118
add-int/lit8 v2, v2, 0x1
goto :goto_4
.line 121
:cond_e
return-void
.end method