QRCodeWriter.smali
.class public final Lcom/google/zxing/qrcode/QRCodeWriter;
.super Ljava/lang/Object;
.source "QRCodeWriter.java"
# interfaces
.implements Lcom/google/zxing/Writer;
# static fields
.field private static final QUIET_ZONE_SIZE:I
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x156b
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/zxing/qrcode/QRCodeWriter;->QUIET_ZONE_SIZE:I
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 36
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static renderResult(Lcom/google/zxing/qrcode/encoder/QRCode;III)Lcom/google/zxing/common/BitMatrix;
.registers 24
.param p0, "code" # Lcom/google/zxing/qrcode/encoder/QRCode;
.param p1, "width" # I
.param p2, "height" # I
.param p3, "quietZone" # I
.line 85
invoke-virtual/range {p0 .. p0}, Lcom/google/zxing/qrcode/encoder/QRCode;->getMatrix()Lcom/google/zxing/qrcode/encoder/ByteMatrix;
move-result-object v0
const/4 v1, 0x0
.line 86
.local v1, "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
move-object v1, v0
if-eqz v0, :cond_6b
.line 89
invoke-virtual {v1}, Lcom/google/zxing/qrcode/encoder/ByteMatrix;->getWidth()I
move-result v0
.line 90
.local v0, "inputWidth":I
invoke-virtual {v1}, Lcom/google/zxing/qrcode/encoder/ByteMatrix;->getHeight()I
move-result v2
.line 91
.local v2, "inputHeight":I
shl-int/lit8 v3, p3, 0x1
add-int/2addr v3, v0
.line 92
.local v3, "qrWidth":I
shl-int/lit8 v4, p3, 0x1
add-int/2addr v4, v2
.line 93
.local v4, "qrHeight":I
move/from16 v5, p1
invoke-static {v5, v3}, Ljava/lang/Math;->max(II)I
move-result v6
.line 94
.local v6, "outputWidth":I
move/from16 v7, p2
invoke-static {v7, v4}, Ljava/lang/Math;->max(II)I
move-result v8
.line 96
.local v8, "outputHeight":I
div-int v9, v6, v3
div-int v10, v8, v4
invoke-static {v9, v10}, Ljava/lang/Math;->min(II)I
move-result v9
.line 101
.local v9, "multiple":I
mul-int v10, v0, v9
sub-int v10, v6, v10
div-int/lit8 v10, v10, 0x2
.line 102
.local v10, "leftPadding":I
mul-int v11, v2, v9
sub-int v11, v8, v11
div-int/lit8 v11, v11, 0x2
.line 104
.local v11, "topPadding":I
new-instance v12, Lcom/google/zxing/common/BitMatrix;
invoke-direct {v12, v6, v8}, Lcom/google/zxing/common/BitMatrix;-><init>(II)V
.line 106
.local v12, "output":Lcom/google/zxing/common/BitMatrix;
const/4 v13, 0x0
.local v13, "inputY":I
move v14, v11
.local v14, "outputY":I
:goto_3d
if-ge v13, v2, :cond_6a
.line 108
const/4 v15, 0x0
.local v15, "inputX":I
move/from16 v16, v10
move/from16 v19, v16
move/from16 v16, v2
move/from16 v2, v19
.local v2, "outputX":I
.local v16, "inputHeight":I
:goto_48
if-ge v15, v0, :cond_60
.line 109
move/from16 v17, v0
.end local v0 # "inputWidth":I
.local v17, "inputWidth":I
invoke-virtual {v1, v15, v13}, Lcom/google/zxing/qrcode/encoder/ByteMatrix;->get(II)B
move-result v0
move-object/from16 v18, v1
.end local v1 # "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
.local v18, "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
const/4 v1, 0x1
if-ne v0, v1, :cond_58
.line 110
invoke-virtual {v12, v2, v14, v9, v9}, Lcom/google/zxing/common/BitMatrix;->setRegion(IIII)V
.line 108
:cond_58
add-int/lit8 v15, v15, 0x1
add-int/2addr v2, v9
move/from16 v0, v17
move-object/from16 v1, v18
goto :goto_48
.end local v17 # "inputWidth":I
.end local v18 # "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
.restart local v0 # "inputWidth":I
.restart local v1 # "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
:cond_60
move/from16 v17, v0
move-object/from16 v18, v1
.line 106
.end local v0 # "inputWidth":I
.end local v1 # "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
.end local v2 # "outputX":I
.end local v15 # "inputX":I
.restart local v17 # "inputWidth":I
.restart local v18 # "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
add-int/lit8 v13, v13, 0x1
add-int/2addr v14, v9
move/from16 v2, v16
goto :goto_3d
.line 115
.end local v13 # "inputY":I
.end local v14 # "outputY":I
.end local v16 # "inputHeight":I
.end local v17 # "inputWidth":I
.end local v18 # "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
.restart local v0 # "inputWidth":I
.restart local v1 # "input":Lcom/google/zxing/qrcode/encoder/ByteMatrix;
.local v2, "inputHeight":I
:cond_6a
return-object v12
.line 87
.end local v0 # "inputWidth":I
.end local v2 # "inputHeight":I
.end local v3 # "qrWidth":I
.end local v4 # "qrHeight":I
.end local v6 # "outputWidth":I
.end local v8 # "outputHeight":I
.end local v9 # "multiple":I
.end local v10 # "leftPadding":I
.end local v11 # "topPadding":I
.end local v12 # "output":Lcom/google/zxing/common/BitMatrix;
:cond_6b
new-instance v0, Ljava/lang/IllegalStateException;
invoke-direct {v0}, Ljava/lang/IllegalStateException;-><init>()V
goto :goto_72
:goto_71
throw v0
:goto_72
goto :goto_71
.end method
# virtual methods
.method public encode(Ljava/lang/String;Lcom/google/zxing/BarcodeFormat;II)Lcom/google/zxing/common/BitMatrix;
.registers 11
.param p1, "contents" # Ljava/lang/String;
.param p2, "format" # Lcom/google/zxing/BarcodeFormat;
.param p3, "width" # I
.param p4, "height" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/WriterException;
}
.end annotation
.line 44
const/4 v5, 0x0
move-object v0, p0
move-object v1, p1
move-object v2, p2
move v3, p3
move v4, p4
invoke-virtual/range {v0 .. v5}, Lcom/google/zxing/qrcode/QRCodeWriter;->encode(Ljava/lang/String;Lcom/google/zxing/BarcodeFormat;IILjava/util/Map;)Lcom/google/zxing/common/BitMatrix;
move-result-object v0
return-object v0
.end method
.method public encode(Ljava/lang/String;Lcom/google/zxing/BarcodeFormat;IILjava/util/Map;)Lcom/google/zxing/common/BitMatrix;
.registers 9
.param p1, "contents" # Ljava/lang/String;
.param p2, "format" # Lcom/google/zxing/BarcodeFormat;
.param p3, "width" # I
.param p4, "height" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Lcom/google/zxing/BarcodeFormat;",
"II",
"Ljava/util/Map<",
"Lcom/google/zxing/EncodeHintType;",
"*>;)",
"Lcom/google/zxing/common/BitMatrix;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/zxing/WriterException;
}
.end annotation
.line 54
.local p5, "hints":Ljava/util/Map;, "Ljava/util/Map<Lcom/google/zxing/EncodeHintType;*>;"
invoke-virtual {p1}, Ljava/lang/String;->isEmpty()Z
move-result v0
if-nez v0, :cond_74
.line 58
sget-object v0, Lcom/google/zxing/BarcodeFormat;->QR_CODE:Lcom/google/zxing/BarcodeFormat;
if-ne p2, v0, :cond_64
.line 62
if-ltz p3, :cond_48
if-ltz p4, :cond_48
.line 67
sget-object v0, Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;->L:Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;
.line 68
.local v0, "errorCorrectionLevel":Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;
const/4 v1, 0x4
.line 69
.local v1, "quietZone":I
if-eqz p5, :cond_3f
.line 70
sget-object v2, Lcom/google/zxing/EncodeHintType;->ERROR_CORRECTION:Lcom/google/zxing/EncodeHintType;
invoke-interface {p5, v2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_29
.line 71
sget-object v2, Lcom/google/zxing/EncodeHintType;->ERROR_CORRECTION:Lcom/google/zxing/EncodeHintType;
invoke-interface {p5, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v2}, Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;->valueOf(Ljava/lang/String;)Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;
move-result-object v0
.line 73
:cond_29
sget-object v2, Lcom/google/zxing/EncodeHintType;->MARGIN:Lcom/google/zxing/EncodeHintType;
invoke-interface {p5, v2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_3f
.line 74
sget-object v2, Lcom/google/zxing/EncodeHintType;->MARGIN:Lcom/google/zxing/EncodeHintType;
invoke-interface {p5, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v2}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v1
.line 78
:cond_3f
invoke-static {p1, v0, p5}, Lcom/google/zxing/qrcode/encoder/Encoder;->encode(Ljava/lang/String;Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;Ljava/util/Map;)Lcom/google/zxing/qrcode/encoder/QRCode;
move-result-object v2
.line 79
invoke-static {v2, p3, p4, v1}, Lcom/google/zxing/qrcode/QRCodeWriter;->renderResult(Lcom/google/zxing/qrcode/encoder/QRCode;III)Lcom/google/zxing/common/BitMatrix;
move-result-object v2
return-object v2
.line 63
.end local v0 # "errorCorrectionLevel":Lcom/google/zxing/qrcode/decoder/ErrorCorrectionLevel;
.end local v1 # "quietZone":I
:cond_48
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Requested dimensions are too small: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const/16 v2, 0x78
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v1, p4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 59
:cond_64
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-static {p2}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
const-string v2, "Can only encode QR_CODE, but got "
invoke-virtual {v2, v1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 55
:cond_74
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Found empty contents"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method