Weather/smali_classes3/com/moji/tool/FastBlur.smali
2021-05-10 10:13:34 +02:00

1041 lines
15 KiB
Smali

.class public Lcom/moji/tool/FastBlur;
.super Ljava/lang/Object;
.source "FastBlur.java"
# direct methods
.method public constructor <init>()V
.locals 0
.line 12
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static a(Landroid/graphics/Bitmap;IFZ)Landroid/graphics/Bitmap;
.locals 4
.line 16
:try_start_0
invoke-virtual {p0}, Landroid/graphics/Bitmap;->getWidth()I
move-result v0
int-to-float v0, v0
div-float/2addr v0, p2
float-to-int v0, v0
invoke-virtual {p0}, Landroid/graphics/Bitmap;->getHeight()I
move-result v1
int-to-float v1, v1
div-float/2addr v1, p2
float-to-int v1, v1
sget-object v2, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config;
invoke-static {v0, v1, v2}, Landroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
move-result-object v0
.line 17
new-instance v1, Landroid/graphics/Canvas;
invoke-direct {v1, v0}, Landroid/graphics/Canvas;-><init>(Landroid/graphics/Bitmap;)V
const/high16 v2, 0x3f800000 # 1.0f
div-float/2addr v2, p2
.line 18
invoke-virtual {v1, v2, v2}, Landroid/graphics/Canvas;->scale(FF)V
.line 19
new-instance v2, Landroid/graphics/Paint;
const/4 v3, 0x2
invoke-direct {v2, v3}, Landroid/graphics/Paint;-><init>(I)V
const/4 v3, 0x0
.line 20
invoke-virtual {v1, p0, v3, v3, v2}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V
if-eqz p3, :cond_0
const/high16 p3, -0x67000000
.line 22
invoke-virtual {v1, p3}, Landroid/graphics/Canvas;->drawColor(I)V
:cond_0
int-to-float p1, p1
div-float/2addr p1, p2
float-to-int p1, p1
const/4 p2, 0x1
.line 24
invoke-static {v0, p1, p2}, Lcom/moji/tool/FastBlur;->a(Landroid/graphics/Bitmap;IZ)Landroid/graphics/Bitmap;
move-result-object p1
:try_end_0
.catch Ljava/lang/OutOfMemoryError; {:try_start_0 .. :try_end_0} :catch_0
return-object p1
:catch_0
move-exception p1
const-string p2, "FASTBLUR"
.line 26
invoke-static {p2, p1}, Lcom/moji/tool/log/MJLogger;->a(Ljava/lang/String;Ljava/lang/Throwable;)V
return-object p0
.end method
.method public static a(Landroid/graphics/Bitmap;IZ)Landroid/graphics/Bitmap;
.locals 38
move-object/from16 v1, p0
move/from16 v0, p1
const/4 v2, 0x1
if-eqz p2, :cond_0
move-object v3, v1
goto :goto_0
.line 38
:cond_0
:try_start_0
invoke-virtual/range {p0 .. p0}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config;
move-result-object v3
invoke-virtual {v1, v3, v2}, Landroid/graphics/Bitmap;->copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;
move-result-object v3
:goto_0
if-ge v0, v2, :cond_1
const/4 v0, 0x0
return-object v0
.line 45
:cond_1
invoke-virtual {v3}, Landroid/graphics/Bitmap;->getWidth()I
move-result v12
.line 46
invoke-virtual {v3}, Landroid/graphics/Bitmap;->getHeight()I
move-result v13
mul-int v14, v12, v13
.line 48
new-array v15, v14, [I
const/4 v6, 0x0
const/4 v8, 0x0
const/4 v9, 0x0
move-object v4, v3
move-object v5, v15
move v7, v12
move v10, v12
move v11, v13
.line 49
invoke-virtual/range {v4 .. v11}, Landroid/graphics/Bitmap;->getPixels([IIIIIII)V
add-int/lit8 v4, v12, -0x1
add-int/lit8 v5, v13, -0x1
add-int v6, v0, v0
add-int/2addr v6, v2
.line 56
new-array v7, v14, [I
.line 57
new-array v8, v14, [I
.line 58
new-array v9, v14, [I
.line 60
invoke-static {v12, v13}, Ljava/lang/Math;->max(II)I
move-result v10
new-array v10, v10, [I
add-int/lit8 v11, v6, 0x1
shr-int/2addr v11, v2
mul-int v11, v11, v11
mul-int/lit16 v14, v11, 0x100
.line 64
new-array v2, v14, [I
const/4 v1, 0x0
:goto_1
if-ge v1, v14, :cond_2
.line 66
div-int v18, v1, v11
aput v18, v2, v1
add-int/lit8 v1, v1, 0x1
goto :goto_1
:cond_2
const/4 v1, 0x3
.line 71
filled-new-array {v6, v1}, [I
move-result-object v1
const-class v11, I
invoke-static {v11, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v1
check-cast v1, [[I
add-int/lit8 v11, v0, 0x1
const/4 v14, 0x0
const/16 v18, 0x0
const/16 v19, 0x0
:goto_2
const/16 v20, 0x2
if-ge v14, v13, :cond_7
move-object/from16 v21, v3
neg-int v3, v0
const/16 v22, 0x0
const/16 v23, 0x0
const/16 v24, 0x0
const/16 v25, 0x0
const/16 v26, 0x0
const/16 v27, 0x0
const/16 v28, 0x0
const/16 v29, 0x0
const/16 v30, 0x0
:goto_3
const v31, 0xff00
const/high16 v32, 0xff0000
if-gt v3, v0, :cond_4
move/from16 v34, v5
move/from16 v33, v13
const/4 v13, 0x0
.line 83
invoke-static {v3, v13}, Ljava/lang/Math;->max(II)I
move-result v5
invoke-static {v4, v5}, Ljava/lang/Math;->min(II)I
move-result v5
add-int v5, v18, v5
aget v5, v15, v5
add-int v13, v3, v0
.line 84
aget-object v13, v1, v13
and-int v32, v5, v32
shr-int/lit8 v32, v32, 0x10
const/16 v17, 0x0
.line 85
aput v32, v13, v17
and-int v31, v5, v31
shr-int/lit8 v31, v31, 0x8
const/16 v16, 0x1
.line 86
aput v31, v13, v16
and-int/lit16 v5, v5, 0xff
.line 87
aput v5, v13, v20
.line 88
invoke-static {v3}, Ljava/lang/Math;->abs(I)I
move-result v5
sub-int v5, v11, v5
const/16 v17, 0x0
.line 89
aget v31, v13, v17
mul-int v31, v31, v5
add-int v22, v22, v31
const/16 v16, 0x1
.line 90
aget v31, v13, v16
mul-int v31, v31, v5
add-int v23, v23, v31
.line 91
aget v31, v13, v20
mul-int v31, v31, v5
add-int v24, v24, v31
if-lez v3, :cond_3
const/4 v5, 0x0
.line 93
aget v31, v13, v5
add-int v25, v25, v31
const/4 v5, 0x1
.line 94
aget v31, v13, v5
add-int v27, v27, v31
.line 95
aget v5, v13, v20
add-int v29, v29, v5
goto :goto_4
:cond_3
const/4 v5, 0x0
.line 97
aget v31, v13, v5
add-int v26, v26, v31
const/4 v5, 0x1
.line 98
aget v31, v13, v5
add-int v28, v28, v31
.line 99
aget v5, v13, v20
add-int v30, v30, v5
:goto_4
add-int/lit8 v3, v3, 0x1
move/from16 v13, v33
move/from16 v5, v34
goto :goto_3
:cond_4
move/from16 v34, v5
move/from16 v33, v13
move v5, v0
const/4 v3, 0x0
:goto_5
if-ge v3, v12, :cond_6
.line 106
aget v13, v2, v22
aput v13, v7, v18
.line 107
aget v13, v2, v23
aput v13, v8, v18
.line 108
aget v13, v2, v24
aput v13, v9, v18
sub-int v22, v22, v26
sub-int v23, v23, v28
sub-int v24, v24, v30
sub-int v13, v5, v0
add-int/2addr v13, v6
.line 115
rem-int/2addr v13, v6
aget-object v13, v1, v13
const/16 v17, 0x0
.line 117
aget v35, v13, v17
sub-int v26, v26, v35
const/16 v16, 0x1
.line 118
aget v35, v13, v16
sub-int v28, v28, v35
.line 119
aget v35, v13, v20
sub-int v30, v30, v35
if-nez v14, :cond_5
add-int v35, v3, v0
move-object/from16 v36, v2
add-int/lit8 v2, v35, 0x1
.line 122
invoke-static {v2, v4}, Ljava/lang/Math;->min(II)I
move-result v2
aput v2, v10, v3
goto :goto_6
:cond_5
move-object/from16 v36, v2
.line 124
:goto_6
aget v2, v10, v3
add-int v2, v19, v2
aget v2, v15, v2
and-int v35, v2, v32
shr-int/lit8 v35, v35, 0x10
const/16 v17, 0x0
.line 126
aput v35, v13, v17
and-int v35, v2, v31
shr-int/lit8 v35, v35, 0x8
const/16 v16, 0x1
.line 127
aput v35, v13, v16
and-int/lit16 v2, v2, 0xff
.line 128
aput v2, v13, v20
.line 130
aget v2, v13, v17
add-int v25, v25, v2
.line 131
aget v2, v13, v16
add-int v27, v27, v2
.line 132
aget v2, v13, v20
add-int v29, v29, v2
add-int v22, v22, v25
add-int v23, v23, v27
add-int v24, v24, v29
add-int/lit8 v5, v5, 0x1
.line 138
rem-int/2addr v5, v6
.line 139
rem-int v2, v5, v6
aget-object v2, v1, v2
const/4 v13, 0x0
.line 141
aget v17, v2, v13
add-int v26, v26, v17
const/16 v16, 0x1
.line 142
aget v17, v2, v16
add-int v28, v28, v17
.line 143
aget v17, v2, v20
add-int v30, v30, v17
.line 145
aget v35, v2, v13
sub-int v25, v25, v35
.line 146
aget v13, v2, v16
sub-int v27, v27, v13
.line 147
aget v2, v2, v20
sub-int v29, v29, v2
add-int/lit8 v18, v18, 0x1
add-int/lit8 v3, v3, 0x1
move-object/from16 v2, v36
goto/16 :goto_5
:cond_6
move-object/from16 v36, v2
add-int v19, v19, v12
add-int/lit8 v14, v14, 0x1
move-object/from16 v3, v21
move/from16 v13, v33
move/from16 v5, v34
goto/16 :goto_2
:cond_7
move-object/from16 v36, v2
move-object/from16 v21, v3
move/from16 v34, v5
move/from16 v33, v13
const/4 v2, 0x0
:goto_7
if-ge v2, v12, :cond_d
neg-int v3, v0
mul-int v4, v3, v12
const/4 v5, 0x0
const/4 v13, 0x0
const/4 v14, 0x0
const/16 v18, 0x0
const/16 v19, 0x0
const/16 v22, 0x0
const/16 v23, 0x0
const/16 v24, 0x0
const/16 v25, 0x0
:goto_8
if-gt v3, v0, :cond_a
move-object/from16 v37, v10
const/4 v10, 0x0
.line 157
invoke-static {v10, v4}, Ljava/lang/Math;->max(II)I
move-result v17
add-int v26, v17, v2
add-int v17, v3, v0
.line 159
aget-object v27, v1, v17
.line 161
aget v17, v7, v26
aput v17, v27, v10
.line 162
aget v10, v8, v26
const/16 v16, 0x1
aput v10, v27, v16
.line 163
aget v10, v9, v26
aput v10, v27, v20
.line 165
invoke-static {v3}, Ljava/lang/Math;->abs(I)I
move-result v10
sub-int v10, v11, v10
.line 167
aget v28, v7, v26
mul-int v28, v28, v10
add-int v5, v5, v28
.line 168
aget v28, v8, v26
mul-int v28, v28, v10
add-int v13, v13, v28
.line 169
aget v26, v9, v26
mul-int v26, v26, v10
add-int v14, v14, v26
if-lez v3, :cond_8
const/4 v10, 0x0
.line 172
aget v26, v27, v10
add-int v18, v18, v26
const/4 v10, 0x1
.line 173
aget v26, v27, v10
add-int v22, v22, v26
.line 174
aget v10, v27, v20
add-int v24, v24, v10
:goto_9
move/from16 v10, v34
goto :goto_a
:cond_8
const/4 v10, 0x0
.line 176
aget v26, v27, v10
add-int v19, v19, v26
const/4 v10, 0x1
.line 177
aget v26, v27, v10
add-int v23, v23, v26
.line 178
aget v10, v27, v20
add-int v25, v25, v10
goto :goto_9
:goto_a
if-ge v3, v10, :cond_9
add-int/2addr v4, v12
:cond_9
add-int/lit8 v3, v3, 0x1
move/from16 v34, v10
move-object/from16 v10, v37
goto :goto_8
:cond_a
move-object/from16 v37, v10
move/from16 v10, v34
move/from16 v26, v22
move/from16 v27, v24
move/from16 v3, v33
const/4 v4, 0x0
move/from16 v22, v0
move/from16 v24, v18
move/from16 v18, v14
move v14, v13
move v13, v5
move v5, v2
:goto_b
if-ge v4, v3, :cond_c
const/high16 v28, -0x1000000
.line 189
aget v29, v15, v5
and-int v28, v29, v28
aget v29, v36, v13
shl-int/lit8 v29, v29, 0x10
or-int v28, v28, v29
aget v29, v36, v14
shl-int/lit8 v29, v29, 0x8
or-int v28, v28, v29
aget v29, v36, v18
or-int v28, v28, v29
aput v28, v15, v5
sub-int v13, v13, v19
sub-int v14, v14, v23
sub-int v18, v18, v25
sub-int v28, v22, v0
add-int v28, v28, v6
.line 197
rem-int v28, v28, v6
aget-object v28, v1, v28
const/16 v17, 0x0
.line 199
aget v29, v28, v17
sub-int v19, v19, v29
const/16 v16, 0x1
.line 200
aget v29, v28, v16
sub-int v23, v23, v29
.line 201
aget v29, v28, v20
sub-int v25, v25, v29
if-nez v2, :cond_b
add-int v0, v4, v11
.line 204
invoke-static {v0, v10}, Ljava/lang/Math;->min(II)I
move-result v0
mul-int v0, v0, v12
aput v0, v37, v4
.line 206
:cond_b
aget v0, v37, v4
add-int/2addr v0, v2
.line 208
aget v29, v7, v0
const/16 v17, 0x0
aput v29, v28, v17
.line 209
aget v29, v8, v0
const/16 v16, 0x1
aput v29, v28, v16
.line 210
aget v0, v9, v0
aput v0, v28, v20
.line 212
aget v0, v28, v17
add-int v24, v24, v0
.line 213
aget v0, v28, v16
add-int v26, v26, v0
.line 214
aget v0, v28, v20
add-int v27, v27, v0
add-int v13, v13, v24
add-int v14, v14, v26
add-int v18, v18, v27
add-int/lit8 v22, v22, 0x1
.line 220
rem-int v22, v22, v6
.line 221
aget-object v0, v1, v22
const/16 v17, 0x0
.line 223
aget v28, v0, v17
add-int v19, v19, v28
const/16 v16, 0x1
.line 224
aget v28, v0, v16
add-int v23, v23, v28
.line 225
aget v28, v0, v20
add-int v25, v25, v28
.line 227
aget v28, v0, v17
sub-int v24, v24, v28
.line 228
aget v28, v0, v16
sub-int v26, v26, v28
.line 229
aget v0, v0, v20
sub-int v27, v27, v0
add-int/2addr v5, v12
add-int/lit8 v4, v4, 0x1
move/from16 v0, p1
goto/16 :goto_b
:cond_c
const/16 v16, 0x1
const/16 v17, 0x0
add-int/lit8 v2, v2, 0x1
move/from16 v33, v3
move/from16 v34, v10
move-object/from16 v10, v37
move/from16 v0, p1
goto/16 :goto_7
:cond_d
move/from16 v3, v33
const/4 v6, 0x0
const/4 v8, 0x0
const/4 v9, 0x0
move-object/from16 v4, v21
move-object v5, v15
move v7, v12
move v10, v12
move v11, v3
.line 235
invoke-virtual/range {v4 .. v11}, Landroid/graphics/Bitmap;->setPixels([IIIIIII)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1
.catch Ljava/lang/OutOfMemoryError; {:try_start_0 .. :try_end_0} :catch_0
return-object v21
:catch_0
move-exception v0
const-string v1, "FASTBLUR"
.line 241
invoke-static {v1, v0}, Lcom/moji/tool/log/MJLogger;->a(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 242
invoke-static {}, Ljava/lang/System;->gc()V
goto :goto_c
:catch_1
move-exception v0
const-string v1, "FASTBLUR"
.line 239
invoke-static {v1, v0}, Lcom/moji/tool/log/MJLogger;->a(Ljava/lang/String;Ljava/lang/Throwable;)V
:goto_c
move-object/from16 v1, p0
return-object v1
.end method