DrawableToBitmapConverter.smali
.class final Lcom/bumptech/glide/load/resource/bitmap/DrawableToBitmapConverter;
.super Ljava/lang/Object;
.source "DrawableToBitmapConverter.java"
# static fields
.field private static final NO_RECYCLE_BITMAP_POOL:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;
.field private static final TAG:Ljava/lang/String; = "DrawableToBitmap"
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 18
new-instance v0, Lcom/bumptech/glide/load/resource/bitmap/DrawableToBitmapConverter$1;
invoke-direct {v0}, Lcom/bumptech/glide/load/resource/bitmap/DrawableToBitmapConverter$1;-><init>()V
sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/DrawableToBitmapConverter;->NO_RECYCLE_BITMAP_POOL:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 26
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 28
return-void
.end method
.method static convert(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/drawable/Drawable;II)Lcom/bumptech/glide/load/engine/Resource;
.registers 8
.param p0, "bitmapPool" # Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;
.param p1, "drawable" # Landroid/graphics/drawable/Drawable;
.param p2, "width" # I
.param p3, "height" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;",
"Landroid/graphics/drawable/Drawable;",
"II)",
"Lcom/bumptech/glide/load/engine/Resource<",
"Landroid/graphics/Bitmap;",
">;"
}
.end annotation
.line 33
invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getCurrent()Landroid/graphics/drawable/Drawable;
move-result-object p1
.line 34
const/4 v0, 0x0
.line 35
.local v0, "result":Landroid/graphics/Bitmap;
const/4 v1, 0x0
.line 36
.local v1, "isRecycleable":Z
instance-of v2, p1, Landroid/graphics/drawable/BitmapDrawable;
if-eqz v2, :cond_12
.line 37
move-object v2, p1
check-cast v2, Landroid/graphics/drawable/BitmapDrawable;
invoke-virtual {v2}, Landroid/graphics/drawable/BitmapDrawable;->getBitmap()Landroid/graphics/Bitmap;
move-result-object v0
goto :goto_1b
.line 38
:cond_12
instance-of v2, p1, Landroid/graphics/drawable/Animatable;
if-nez v2, :cond_1b
.line 39
invoke-static {p0, p1, p2, p3}, Lcom/bumptech/glide/load/resource/bitmap/DrawableToBitmapConverter;->drawToBitmap(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/drawable/Drawable;II)Landroid/graphics/Bitmap;
move-result-object v0
.line 41
const/4 v1, 0x1
.line 44
:cond_1b
:goto_1b
if-eqz v1, :cond_1f
move-object v2, p0
goto :goto_21
:cond_1f
sget-object v2, Lcom/bumptech/glide/load/resource/bitmap/DrawableToBitmapConverter;->NO_RECYCLE_BITMAP_POOL:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;
.line 45
.local v2, "toUse":Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;
:goto_21
invoke-static {v0, v2}, Lcom/bumptech/glide/load/resource/bitmap/BitmapResource;->obtain(Landroid/graphics/Bitmap;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;)Lcom/bumptech/glide/load/resource/bitmap/BitmapResource;
move-result-object v3
return-object v3
.end method
.method private static drawToBitmap(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/drawable/Drawable;II)Landroid/graphics/Bitmap;
.registers 11
.param p0, "bitmapPool" # Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;
.param p1, "drawable" # Landroid/graphics/drawable/Drawable;
.param p2, "width" # I
.param p3, "height" # I
.line 51
const-string v0, "Unable to draw "
const/4 v1, 0x5
const/high16 v2, -0x80000000
const/4 v3, 0x0
const-string v4, "DrawableToBitmap"
if-ne p2, v2, :cond_2e
invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I
move-result v5
if-gtz v5, :cond_2e
.line 52
invoke-static {v4, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
move-result v1
if-eqz v1, :cond_2d
.line 53
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v0, " to Bitmap with Target.SIZE_ORIGINAL because the Drawable has no intrinsic width"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v4, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
.line 60
:cond_2d
return-object v3
.line 62
:cond_2e
if-ne p3, v2, :cond_54
invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I
move-result v2
if-gtz v2, :cond_54
.line 63
invoke-static {v4, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
move-result v1
if-eqz v1, :cond_53
.line 64
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v0, " to Bitmap with Target.SIZE_ORIGINAL because the Drawable has no intrinsic height"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v4, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
.line 71
:cond_53
return-object v3
.line 73
:cond_54
invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I
move-result v0
if-lez v0, :cond_5f
invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I
move-result v0
goto :goto_60
:cond_5f
move v0, p2
.line 74
.local v0, "targetWidth":I
:goto_60
invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I
move-result v1
if-lez v1, :cond_6b
invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I
move-result v1
goto :goto_6c
:cond_6b
move v1, p3
.line 76
.local v1, "targetHeight":I
:goto_6c
invoke-static {}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getBitmapDrawableLock()Ljava/util/concurrent/locks/Lock;
move-result-object v2
.line 77
.local v2, "lock":Ljava/util/concurrent/locks/Lock;
invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->lock()V
.line 78
sget-object v4, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config;
invoke-interface {p0, v0, v1, v4}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->get(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
move-result-object v4
.line 80
.local v4, "result":Landroid/graphics/Bitmap;
:try_start_79
new-instance v5, Landroid/graphics/Canvas;
invoke-direct {v5, v4}, Landroid/graphics/Canvas;-><init>(Landroid/graphics/Bitmap;)V
.line 81
.local v5, "canvas":Landroid/graphics/Canvas;
const/4 v6, 0x0
invoke-virtual {p1, v6, v6, v0, v1}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
.line 82
invoke-virtual {p1, v5}, Landroid/graphics/drawable/Drawable;->draw(Landroid/graphics/Canvas;)V
.line 83
invoke-virtual {v5, v3}, Landroid/graphics/Canvas;->setBitmap(Landroid/graphics/Bitmap;)V
:try_end_88
.catchall {:try_start_79 .. :try_end_88} :catchall_8d
.line 85
.end local v5 # "canvas":Landroid/graphics/Canvas;
invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 86
nop
.line 87
return-object v4
.line 85
:catchall_8d
move-exception v3
invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->unlock()V
throw v3
.end method