Checker.smali
.class final enum Lim/tpelyyftgw/ui/components/compress/Checker;
.super Ljava/lang/Enum;
.source "Checker.java"
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Enum<",
"Lim/tpelyyftgw/ui/components/compress/Checker;",
">;"
}
.end annotation
# static fields
.field private static final synthetic $VALUES:[Lim/tpelyyftgw/ui/components/compress/Checker;
.field private static final JPG:Ljava/lang/String; = ".jpg"
.field public static final enum SINGLE:Lim/tpelyyftgw/ui/components/compress/Checker;
.field private static final TAG:Ljava/lang/String; = "Luban"
# instance fields
.field private final JPEG_SIGNATURE:[B
# direct methods
.method static constructor <clinit>()V
.registers 3
.line 23
new-instance v0, Lim/tpelyyftgw/ui/components/compress/Checker;
const/4 v1, 0x0
const-string v2, "SINGLE"
invoke-direct {v0, v2, v1}, Lim/tpelyyftgw/ui/components/compress/Checker;-><init>(Ljava/lang/String;I)V
sput-object v0, Lim/tpelyyftgw/ui/components/compress/Checker;->SINGLE:Lim/tpelyyftgw/ui/components/compress/Checker;
.line 22
const/4 v2, 0x1
new-array v2, v2, [Lim/tpelyyftgw/ui/components/compress/Checker;
aput-object v0, v2, v1
sput-object v2, Lim/tpelyyftgw/ui/components/compress/Checker;->$VALUES:[Lim/tpelyyftgw/ui/components/compress/Checker;
return-void
.end method
.method private constructor <init>(Ljava/lang/String;I)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()V"
}
.end annotation
.line 22
invoke-direct {p0, p1, p2}, Ljava/lang/Enum;-><init>(Ljava/lang/String;I)V
.line 29
const/4 p1, 0x3
new-array p1, p1, [B
fill-array-data p1, :array_c
iput-object p1, p0, Lim/tpelyyftgw/ui/components/compress/Checker;->JPEG_SIGNATURE:[B
return-void
:array_c
.array-data 1
-0x1t
-0x28t
-0x1t
.end array-data
.end method
.method private getOrientation([B)I
.registers 13
.param p1, "jpeg" # [B
.line 56
const/4 v0, 0x0
if-nez p1, :cond_4
.line 57
return v0
.line 60
:cond_4
const/4 v1, 0x0
.line 61
.local v1, "offset":I
const/4 v2, 0x0
.line 64
.local v2, "length":I
:goto_6
add-int/lit8 v3, v1, 0x3
array-length v4, p1
const/4 v5, 0x4
const-string v6, "Luban"
const/4 v7, 0x1
const/16 v8, 0x8
const/4 v9, 0x2
if-ge v3, v4, :cond_6e
add-int/lit8 v3, v1, 0x1
.end local v1 # "offset":I
.local v3, "offset":I
aget-byte v1, p1, v1
const/16 v4, 0xff
and-int/2addr v1, v4
if-ne v1, v4, :cond_6d
.line 65
aget-byte v1, p1, v3
and-int/2addr v1, v4
.line 68
.local v1, "marker":I
if-ne v1, v4, :cond_22
.line 69
move v1, v3
goto :goto_6
.line 71
:cond_22
add-int/lit8 v3, v3, 0x1
.line 74
const/16 v4, 0xd8
if-eq v1, v4, :cond_6b
if-ne v1, v7, :cond_2b
.line 75
goto :goto_6b
.line 78
:cond_2b
const/16 v4, 0xd9
if-eq v1, v4, :cond_69
const/16 v4, 0xda
if-ne v1, v4, :cond_34
.line 79
goto :goto_69
.line 83
:cond_34
invoke-direct {p0, p1, v3, v9, v0}, Lim/tpelyyftgw/ui/components/compress/Checker;->pack([BIIZ)I
move-result v2
.line 84
if-lt v2, v9, :cond_63
add-int v4, v3, v2
array-length v10, p1
if-le v4, v10, :cond_40
goto :goto_63
.line 90
:cond_40
const/16 v4, 0xe1
if-ne v1, v4, :cond_5f
if-lt v2, v8, :cond_5f
add-int/lit8 v4, v3, 0x2
.line 91
invoke-direct {p0, p1, v4, v5, v0}, Lim/tpelyyftgw/ui/components/compress/Checker;->pack([BIIZ)I
move-result v4
const v10, 0x45786966
if-ne v4, v10, :cond_5f
add-int/lit8 v4, v3, 0x6
.line 92
invoke-direct {p0, p1, v4, v9, v0}, Lim/tpelyyftgw/ui/components/compress/Checker;->pack([BIIZ)I
move-result v4
if-nez v4, :cond_5f
.line 93
add-int/lit8 v3, v3, 0x8
.line 94
add-int/lit8 v2, v2, -0x8
.line 95
move v1, v3
goto :goto_6e
.line 99
:cond_5f
add-int/2addr v3, v2
.line 100
const/4 v2, 0x0
.line 101
.end local v1 # "marker":I
move v1, v3
goto :goto_6
.line 85
.restart local v1 # "marker":I
:cond_63
:goto_63
const-string v4, "Invalid length"
invoke-static {v6, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 86
return v0
.line 104
.end local v1 # "marker":I
:cond_69
:goto_69
move v1, v3
goto :goto_6e
.line 64
:cond_6b
:goto_6b
move v1, v3
goto :goto_6
:cond_6d
move v1, v3
.line 104
.end local v3 # "offset":I
.local v1, "offset":I
:cond_6e
:goto_6e
if-le v2, v8, :cond_db
.line 106
invoke-direct {p0, p1, v1, v5, v0}, Lim/tpelyyftgw/ui/components/compress/Checker;->pack([BIIZ)I
move-result v3
.line 107
.local v3, "tag":I
const v4, 0x49492a00 # 823968.0f
if-eq v3, v4, :cond_84
const v10, 0x4d4d002a # 2.14958752E8f
if-eq v3, v10, :cond_84
.line 108
const-string v4, "Invalid byte order"
invoke-static {v6, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 109
return v0
.line 111
:cond_84
if-ne v3, v4, :cond_88
const/4 v4, 0x1
goto :goto_89
:cond_88
const/4 v4, 0x0
.line 114
.local v4, "littleEndian":Z
:goto_89
add-int/lit8 v10, v1, 0x4
invoke-direct {p0, p1, v10, v5, v4}, Lim/tpelyyftgw/ui/components/compress/Checker;->pack([BIIZ)I
move-result v5
add-int/2addr v5, v9
.line 115
.local v5, "count":I
const/16 v10, 0xa
if-lt v5, v10, :cond_d5
if-le v5, v2, :cond_97
goto :goto_d5
.line 119
:cond_97
add-int/2addr v1, v5
.line 120
sub-int/2addr v2, v5
.line 123
add-int/lit8 v10, v1, -0x2
invoke-direct {p0, p1, v10, v9, v4}, Lim/tpelyyftgw/ui/components/compress/Checker;->pack([BIIZ)I
move-result v5
.line 124
:goto_9f
add-int/lit8 v10, v5, -0x1
.end local v5 # "count":I
.local v10, "count":I
if-lez v5, :cond_db
const/16 v5, 0xc
if-lt v2, v5, :cond_db
.line 126
invoke-direct {p0, p1, v1, v9, v4}, Lim/tpelyyftgw/ui/components/compress/Checker;->pack([BIIZ)I
move-result v3
.line 127
const/16 v5, 0x112
if-ne v3, v5, :cond_cf
.line 128
add-int/lit8 v5, v1, 0x8
invoke-direct {p0, p1, v5, v9, v4}, Lim/tpelyyftgw/ui/components/compress/Checker;->pack([BIIZ)I
move-result v5
.line 129
.local v5, "orientation":I
if-eq v5, v7, :cond_ce
const/4 v7, 0x3
if-eq v5, v7, :cond_cb
const/4 v7, 0x6
if-eq v5, v7, :cond_c8
if-eq v5, v8, :cond_c5
.line 139
const-string v7, "Unsupported orientation"
invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 140
return v0
.line 137
:cond_c5
const/16 v0, 0x10e
return v0
.line 135
:cond_c8
const/16 v0, 0x5a
return v0
.line 133
:cond_cb
const/16 v0, 0xb4
return v0
.line 131
:cond_ce
return v0
.line 142
.end local v5 # "orientation":I
:cond_cf
add-int/lit8 v1, v1, 0xc
.line 143
add-int/lit8 v2, v2, -0xc
move v5, v10
goto :goto_9f
.line 116
.end local v10 # "count":I
.local v5, "count":I
:cond_d5
:goto_d5
const-string v7, "Invalid offset"
invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 117
return v0
.line 147
.end local v3 # "tag":I
.end local v4 # "littleEndian":Z
.end local v5 # "count":I
:cond_db
const-string v3, "Orientation not found"
invoke-static {v6, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 148
return v0
.end method
.method private isJPG([B)Z
.registers 5
.param p1, "data" # [B
.line 48
const/4 v0, 0x0
if-eqz p1, :cond_20
array-length v1, p1
const/4 v2, 0x3
if-ge v1, v2, :cond_8
goto :goto_20
.line 51
:cond_8
new-array v1, v2, [B
aget-byte v2, p1, v0
aput-byte v2, v1, v0
const/4 v0, 0x1
aget-byte v2, p1, v0
aput-byte v2, v1, v0
const/4 v0, 0x2
aget-byte v2, p1, v0
aput-byte v2, v1, v0
move-object v0, v1
.line 52
.local v0, "signatureB":[B
iget-object v1, p0, Lim/tpelyyftgw/ui/components/compress/Checker;->JPEG_SIGNATURE:[B
invoke-static {v1, v0}, Ljava/util/Arrays;->equals([B[B)Z
move-result v1
return v1
.line 49
.end local v0 # "signatureB":[B
:cond_20
:goto_20
return v0
.end method
.method private pack([BIIZ)I
.registers 9
.param p1, "bytes" # [B
.param p2, "offset" # I
.param p3, "length" # I
.param p4, "littleEndian" # Z
.line 171
const/4 v0, 0x1
.line 172
.local v0, "step":I
if-eqz p4, :cond_7
.line 173
add-int/lit8 v1, p3, -0x1
add-int/2addr p2, v1
.line 174
const/4 v0, -0x1
.line 177
:cond_7
const/4 v1, 0x0
.line 178
.local v1, "value":I
:goto_8
add-int/lit8 v2, p3, -0x1
.end local p3 # "length":I
.local v2, "length":I
if-lez p3, :cond_17
.line 179
shl-int/lit8 p3, v1, 0x8
aget-byte v3, p1, p2
and-int/lit16 v3, v3, 0xff
or-int v1, p3, v3
.line 180
add-int/2addr p2, v0
move p3, v2
goto :goto_8
.line 182
:cond_17
return v1
.end method
.method private toByteArray(Ljava/io/InputStream;)[B
.registers 8
.param p1, "is" # Ljava/io/InputStream;
.line 186
const/4 v0, 0x0
if-nez p1, :cond_6
.line 187
new-array v0, v0, [B
return-object v0
.line 190
:cond_6
new-instance v1, Ljava/io/ByteArrayOutputStream;
invoke-direct {v1}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 193
.local v1, "buffer":Ljava/io/ByteArrayOutputStream;
const/16 v2, 0x1000
new-array v2, v2, [B
.line 196
.local v2, "data":[B
:goto_f
:try_start_f
array-length v3, v2
invoke-virtual {p1, v2, v0, v3}, Ljava/io/InputStream;->read([BII)I
move-result v3
move v4, v3
.local v4, "read":I
const/4 v5, -0x1
if-eq v3, v5, :cond_1c
.line 197
invoke-virtual {v1, v2, v0, v4}, Ljava/io/ByteArrayOutputStream;->write([BII)V
:try_end_1b
.catch Ljava/lang/Exception; {:try_start_f .. :try_end_1b} :catch_29
.catchall {:try_start_f .. :try_end_1b} :catchall_27
goto :goto_f
.line 203
:cond_1c
:try_start_1c
invoke-virtual {v1}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_1f
.catch Ljava/io/IOException; {:try_start_1c .. :try_end_1f} :catch_20
.line 205
goto :goto_22
.line 204
:catch_20
move-exception v0
.line 206
nop
.line 208
:goto_22
invoke-virtual {v1}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
return-object v0
.line 202
.end local v4 # "read":I
:catchall_27
move-exception v0
goto :goto_32
.line 199
:catch_29
move-exception v3
.line 200
.local v3, "ignored":Ljava/lang/Exception;
:try_start_2a
new-array v0, v0, [B
:try_end_2c
.catchall {:try_start_2a .. :try_end_2c} :catchall_27
.line 203
:try_start_2c
invoke-virtual {v1}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_2f
.catch Ljava/io/IOException; {:try_start_2c .. :try_end_2f} :catch_30
.line 205
goto :goto_31
.line 204
:catch_30
move-exception v4
.line 200
:goto_31
return-object v0
.line 203
.end local v3 # "ignored":Ljava/lang/Exception;
:goto_32
:try_start_32
invoke-virtual {v1}, Ljava/io/ByteArrayOutputStream;->close()V
:try_end_35
.catch Ljava/io/IOException; {:try_start_32 .. :try_end_35} :catch_36
.line 205
goto :goto_37
.line 204
:catch_36
move-exception v3
.line 206
:goto_37
goto :goto_39
:goto_38
throw v0
:goto_39
goto :goto_38
.end method
.method public static valueOf(Ljava/lang/String;)Lim/tpelyyftgw/ui/components/compress/Checker;
.registers 2
.param p0, "name" # Ljava/lang/String;
.line 22
const-class v0, Lim/tpelyyftgw/ui/components/compress/Checker;
invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
move-result-object v0
check-cast v0, Lim/tpelyyftgw/ui/components/compress/Checker;
return-object v0
.end method
.method public static values()[Lim/tpelyyftgw/ui/components/compress/Checker;
.registers 1
.line 22
sget-object v0, Lim/tpelyyftgw/ui/components/compress/Checker;->$VALUES:[Lim/tpelyyftgw/ui/components/compress/Checker;
invoke-virtual {v0}, [Lim/tpelyyftgw/ui/components/compress/Checker;->clone()Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lim/tpelyyftgw/ui/components/compress/Checker;
return-object v0
.end method
# virtual methods
.method extSuffix(Lim/tpelyyftgw/ui/components/compress/InputStreamProvider;)Ljava/lang/String;
.registers 6
.param p1, "input" # Lim/tpelyyftgw/ui/components/compress/InputStreamProvider;
.line 153
:try_start_0
new-instance v0, Landroid/graphics/BitmapFactory$Options;
invoke-direct {v0}, Landroid/graphics/BitmapFactory$Options;-><init>()V
.line 154
.local v0, "options":Landroid/graphics/BitmapFactory$Options;
const/4 v1, 0x1
iput-boolean v1, v0, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z
.line 155
invoke-interface {p1}, Lim/tpelyyftgw/ui/components/compress/InputStreamProvider;->open()Ljava/io/InputStream;
move-result-object v1
const/4 v2, 0x0
invoke-static {v1, v2, v0}, Landroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
.line 156
iget-object v1, v0, Landroid/graphics/BitmapFactory$Options;->outMimeType:Ljava/lang/String;
const-string v2, "image/"
const-string v3, "."
invoke-virtual {v1, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
move-result-object v1
:try_end_1a
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_1a} :catch_1b
return-object v1
.line 157
.end local v0 # "options":Landroid/graphics/BitmapFactory$Options;
:catch_1b
move-exception v0
.line 158
.local v0, "e":Ljava/lang/Exception;
const-string v1, ".jpg"
return-object v1
.end method
.method getOrientation(Ljava/io/InputStream;)I
.registers 3
.param p1, "is" # Ljava/io/InputStream;
.line 44
invoke-direct {p0, p1}, Lim/tpelyyftgw/ui/components/compress/Checker;->toByteArray(Ljava/io/InputStream;)[B
move-result-object v0
invoke-direct {p0, v0}, Lim/tpelyyftgw/ui/components/compress/Checker;->getOrientation([B)I
move-result v0
return v0
.end method
.method isJPG(Ljava/io/InputStream;)Z
.registers 3
.param p1, "is" # Ljava/io/InputStream;
.line 37
invoke-direct {p0, p1}, Lim/tpelyyftgw/ui/components/compress/Checker;->toByteArray(Ljava/io/InputStream;)[B
move-result-object v0
invoke-direct {p0, v0}, Lim/tpelyyftgw/ui/components/compress/Checker;->isJPG([B)Z
move-result v0
return v0
.end method
.method needCompress(ILjava/lang/String;)Z
.registers 10
.param p1, "leastCompressSize" # I
.param p2, "path" # Ljava/lang/String;
.line 163
const/4 v0, 0x1
if-lez p1, :cond_1c
.line 164
new-instance v1, Ljava/io/File;
invoke-direct {v1, p2}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 165
.local v1, "source":Ljava/io/File;
invoke-virtual {v1}, Ljava/io/File;->exists()Z
move-result v2
if-eqz v2, :cond_1a
invoke-virtual {v1}, Ljava/io/File;->length()J
move-result-wide v2
shl-int/lit8 v4, p1, 0xa
int-to-long v4, v4
cmp-long v6, v2, v4
if-lez v6, :cond_1a
goto :goto_1b
:cond_1a
const/4 v0, 0x0
:goto_1b
return v0
.line 167
.end local v1 # "source":Ljava/io/File;
:cond_1c
return v0
.end method