BlurKit.smali
.class public Lim/tpelyyftgw/messenger/utils/BlurKit;
.super Ljava/lang/Object;
.source "BlurKit.java"
# static fields
.field private static instance:Lim/tpelyyftgw/messenger/utils/BlurKit;
# instance fields
.field private rs:Landroid/renderscript/RenderScript;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 25
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private getBitmapForView(Landroid/view/View;F)Landroid/graphics/Bitmap;
.registers 6
.param p1, "src" # Landroid/view/View;
.param p2, "downscaleFactor" # F
.line 63
nop
.line 64
invoke-virtual {p1}, Landroid/view/View;->getWidth()I
move-result v0
int-to-float v0, v0
mul-float v0, v0, p2
float-to-int v0, v0
.line 65
invoke-virtual {p1}, Landroid/view/View;->getHeight()I
move-result v1
int-to-float v1, v1
mul-float v1, v1, p2
float-to-int v1, v1
sget-object v2, Landroid/graphics/Bitmap$Config;->ARGB_4444:Landroid/graphics/Bitmap$Config;
.line 63
invoke-static {v0, v1, v2}, Landroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
move-result-object v0
.line 69
.local v0, "bitmap":Landroid/graphics/Bitmap;
new-instance v1, Landroid/graphics/Canvas;
invoke-direct {v1, v0}, Landroid/graphics/Canvas;-><init>(Landroid/graphics/Bitmap;)V
.line 70
.local v1, "canvas":Landroid/graphics/Canvas;
new-instance v2, Landroid/graphics/Matrix;
invoke-direct {v2}, Landroid/graphics/Matrix;-><init>()V
.line 71
.local v2, "matrix":Landroid/graphics/Matrix;
invoke-virtual {v2, p2, p2}, Landroid/graphics/Matrix;->preScale(FF)Z
.line 72
invoke-virtual {v1, v2}, Landroid/graphics/Canvas;->setMatrix(Landroid/graphics/Matrix;)V
.line 73
invoke-virtual {p1, v1}, Landroid/view/View;->draw(Landroid/graphics/Canvas;)V
.line 75
return-object v0
.end method
.method public static getInstance()Lim/tpelyyftgw/messenger/utils/BlurKit;
.registers 2
.line 79
sget-object v0, Lim/tpelyyftgw/messenger/utils/BlurKit;->instance:Lim/tpelyyftgw/messenger/utils/BlurKit;
if-eqz v0, :cond_5
.line 83
return-object v0
.line 80
:cond_5
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "BlurKit not initialized!"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static init(Landroid/content/Context;)V
.registers 3
.param p0, "context" # Landroid/content/Context;
.line 32
sget-object v0, Lim/tpelyyftgw/messenger/utils/BlurKit;->instance:Lim/tpelyyftgw/messenger/utils/BlurKit;
if-eqz v0, :cond_5
.line 33
return-void
.line 36
:cond_5
new-instance v0, Lim/tpelyyftgw/messenger/utils/BlurKit;
invoke-direct {v0}, Lim/tpelyyftgw/messenger/utils/BlurKit;-><init>()V
sput-object v0, Lim/tpelyyftgw/messenger/utils/BlurKit;->instance:Lim/tpelyyftgw/messenger/utils/BlurKit;
.line 37
invoke-static {p0}, Landroid/renderscript/RenderScript;->create(Landroid/content/Context;)Landroid/renderscript/RenderScript;
move-result-object v1
iput-object v1, v0, Lim/tpelyyftgw/messenger/utils/BlurKit;->rs:Landroid/renderscript/RenderScript;
.line 38
return-void
.end method
# virtual methods
.method public blur(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
.registers 7
.param p1, "src" # Landroid/graphics/Bitmap;
.param p2, "radius" # I
.line 41
iget-object v0, p0, Lim/tpelyyftgw/messenger/utils/BlurKit;->rs:Landroid/renderscript/RenderScript;
invoke-static {v0, p1}, Landroid/renderscript/Allocation;->createFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;
move-result-object v0
.line 42
.local v0, "input":Landroid/renderscript/Allocation;
iget-object v1, p0, Lim/tpelyyftgw/messenger/utils/BlurKit;->rs:Landroid/renderscript/RenderScript;
invoke-virtual {v0}, Landroid/renderscript/Allocation;->getType()Landroid/renderscript/Type;
move-result-object v2
invoke-static {v1, v2}, Landroid/renderscript/Allocation;->createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;)Landroid/renderscript/Allocation;
move-result-object v1
.line 43
.local v1, "output":Landroid/renderscript/Allocation;
iget-object v2, p0, Lim/tpelyyftgw/messenger/utils/BlurKit;->rs:Landroid/renderscript/RenderScript;
invoke-static {v2}, Landroid/renderscript/Element;->U8_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;
move-result-object v3
invoke-static {v2, v3}, Landroid/renderscript/ScriptIntrinsicBlur;->create(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)Landroid/renderscript/ScriptIntrinsicBlur;
move-result-object v2
.line 44
.local v2, "script":Landroid/renderscript/ScriptIntrinsicBlur;
int-to-float v3, p2
invoke-virtual {v2, v3}, Landroid/renderscript/ScriptIntrinsicBlur;->setRadius(F)V
.line 45
invoke-virtual {v2, v0}, Landroid/renderscript/ScriptIntrinsicBlur;->setInput(Landroid/renderscript/Allocation;)V
.line 46
invoke-virtual {v2, v1}, Landroid/renderscript/ScriptIntrinsicBlur;->forEach(Landroid/renderscript/Allocation;)V
.line 47
invoke-virtual {v1, p1}, Landroid/renderscript/Allocation;->copyTo(Landroid/graphics/Bitmap;)V
.line 48
return-object p1
.end method
.method public blur(Landroid/view/View;I)Landroid/graphics/Bitmap;
.registers 5
.param p1, "src" # Landroid/view/View;
.param p2, "radius" # I
.line 53
const/high16 v0, 0x3f800000 # 1.0f
invoke-direct {p0, p1, v0}, Lim/tpelyyftgw/messenger/utils/BlurKit;->getBitmapForView(Landroid/view/View;F)Landroid/graphics/Bitmap;
move-result-object v0
.line 54
.local v0, "bitmap":Landroid/graphics/Bitmap;
invoke-virtual {p0, v0, p2}, Lim/tpelyyftgw/messenger/utils/BlurKit;->blur(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
move-result-object v1
return-object v1
.end method
.method public fastBlur(Landroid/view/View;IF)Landroid/graphics/Bitmap;
.registers 6
.param p1, "src" # Landroid/view/View;
.param p2, "radius" # I
.param p3, "downscaleFactor" # F
.line 58
invoke-direct {p0, p1, p3}, Lim/tpelyyftgw/messenger/utils/BlurKit;->getBitmapForView(Landroid/view/View;F)Landroid/graphics/Bitmap;
move-result-object v0
.line 59
.local v0, "bitmap":Landroid/graphics/Bitmap;
invoke-virtual {p0, v0, p2}, Lim/tpelyyftgw/messenger/utils/BlurKit;->blur(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
move-result-object v1
return-object v1
.end method