.class public final Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils; .super Ljava/lang/Object; .source "TransformationUtils.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils$NoLock; } .end annotation # static fields .field private static final BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; .field private static final CIRCLE_CROP_BITMAP_PAINT:Landroid/graphics/Paint; .field private static final CIRCLE_CROP_PAINT_FLAGS:I = 0x7 .field private static final CIRCLE_CROP_SHAPE_PAINT:Landroid/graphics/Paint; .field private static final DEFAULT_PAINT:Landroid/graphics/Paint; .field private static final MODELS_REQUIRING_BITMAP_LOCK:Ljava/util/Set; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "Ljava/lang/String;", ">;" } .end annotation .end field .field public static final PAINT_FLAGS:I = 0x6 .field private static final TAG:Ljava/lang/String; = "TransformationUtils" # direct methods .method static constructor ()V .registers 6 .line 39 new-instance v0, Landroid/graphics/Paint; const/4 v1, 0x6 invoke-direct {v0, v1}, Landroid/graphics/Paint;->(I)V sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->DEFAULT_PAINT:Landroid/graphics/Paint; .line 41 new-instance v0, Landroid/graphics/Paint; const/4 v2, 0x7 invoke-direct {v0, v2}, Landroid/graphics/Paint;->(I)V sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->CIRCLE_CROP_SHAPE_PAINT:Landroid/graphics/Paint; .line 45 new-instance v0, Ljava/util/HashSet; const/16 v3, 0x1d new-array v3, v3, [Ljava/lang/String; const/4 v4, 0x0 const-string v5, "XT1085" aput-object v5, v3, v4 const/4 v4, 0x1 const-string v5, "XT1092" aput-object v5, v3, v4 const/4 v4, 0x2 const-string v5, "XT1093" aput-object v5, v3, v4 const/4 v4, 0x3 const-string v5, "XT1094" aput-object v5, v3, v4 const/4 v4, 0x4 const-string v5, "XT1095" aput-object v5, v3, v4 const/4 v4, 0x5 const-string v5, "XT1096" aput-object v5, v3, v4 const-string v4, "XT1097" aput-object v4, v3, v1 const-string v1, "XT1098" aput-object v1, v3, v2 const/16 v1, 0x8 const-string v4, "XT1031" aput-object v4, v3, v1 const/16 v1, 0x9 const-string v4, "XT1028" aput-object v4, v3, v1 const/16 v1, 0xa const-string v4, "XT937C" aput-object v4, v3, v1 const/16 v1, 0xb const-string v4, "XT1032" aput-object v4, v3, v1 const/16 v1, 0xc const-string v4, "XT1008" aput-object v4, v3, v1 const/16 v1, 0xd const-string v4, "XT1033" aput-object v4, v3, v1 const/16 v1, 0xe const-string v4, "XT1035" aput-object v4, v3, v1 const/16 v1, 0xf const-string v4, "XT1034" aput-object v4, v3, v1 const/16 v1, 0x10 const-string v4, "XT939G" aput-object v4, v3, v1 const/16 v1, 0x11 const-string v4, "XT1039" aput-object v4, v3, v1 const/16 v1, 0x12 const-string v4, "XT1040" aput-object v4, v3, v1 const/16 v1, 0x13 const-string v4, "XT1042" aput-object v4, v3, v1 const/16 v1, 0x14 const-string v4, "XT1045" aput-object v4, v3, v1 const/16 v1, 0x15 const-string v4, "XT1063" aput-object v4, v3, v1 const/16 v1, 0x16 const-string v4, "XT1064" aput-object v4, v3, v1 const/16 v1, 0x17 const-string v4, "XT1068" aput-object v4, v3, v1 const/16 v1, 0x18 const-string v4, "XT1069" aput-object v4, v3, v1 const/16 v1, 0x19 const-string v4, "XT1072" aput-object v4, v3, v1 const/16 v1, 0x1a const-string v4, "XT1077" aput-object v4, v3, v1 const/16 v1, 0x1b const-string v4, "XT1078" aput-object v4, v3, v1 const/16 v1, 0x1c const-string v4, "XT1079" aput-object v4, v3, v1 .line 47 invoke-static {v3}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; move-result-object v1 invoke-direct {v0, v1}, Ljava/util/HashSet;->(Ljava/util/Collection;)V sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->MODELS_REQUIRING_BITMAP_LOCK:Ljava/util/Set; .line 90 sget-object v1, Landroid/os/Build;->MODEL:Ljava/lang/String; invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_d1 .line 91 new-instance v0, Ljava/util/concurrent/locks/ReentrantLock; invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantLock;->()V goto :goto_d6 :cond_d1 new-instance v0, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils$NoLock; invoke-direct {v0}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils$NoLock;->()V :goto_d6 sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; .line 94 new-instance v0, Landroid/graphics/Paint; invoke-direct {v0, v2}, Landroid/graphics/Paint;->(I)V sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->CIRCLE_CROP_BITMAP_PAINT:Landroid/graphics/Paint; .line 95 new-instance v1, Landroid/graphics/PorterDuffXfermode; sget-object v2, Landroid/graphics/PorterDuff$Mode;->SRC_IN:Landroid/graphics/PorterDuff$Mode; invoke-direct {v1, v2}, Landroid/graphics/PorterDuffXfermode;->(Landroid/graphics/PorterDuff$Mode;)V invoke-virtual {v0, v1}, Landroid/graphics/Paint;->setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode; return-void .end method .method private constructor ()V .registers 1 .line 98 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method private static applyMatrix(Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Matrix;)V .registers 5 .line 523 sget-object v0, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V .line 525 :try_start_5 new-instance v1, Landroid/graphics/Canvas; invoke-direct {v1, p1}, Landroid/graphics/Canvas;->(Landroid/graphics/Bitmap;)V .line 526 sget-object p1, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->DEFAULT_PAINT:Landroid/graphics/Paint; invoke-virtual {v1, p0, p2, p1}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V .line 527 invoke-static {v1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->clear(Landroid/graphics/Canvas;)V :try_end_12 .catchall {:try_start_5 .. :try_end_12} :catchall_16 .line 529 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V return-void :catchall_16 move-exception p0 sget-object p1, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V throw p0 .end method .method public static centerCrop(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; .registers 11 .line 120 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v0 if-ne v0, p2, :cond_d invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v0 if-ne v0, p3, :cond_d return-object p1 .line 127 :cond_d new-instance v0, Landroid/graphics/Matrix; invoke-direct {v0}, Landroid/graphics/Matrix;->()V .line 128 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v1 mul-int/2addr v1, p3 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v2 mul-int/2addr v2, p2 const/4 v3, 0x0 const/high16 v4, 0x3f000000 # 0.5f if-le v1, v2, :cond_35 int-to-float v1, p3 .line 129 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v2 int-to-float v2, v2 div-float/2addr v1, v2 int-to-float v2, p2 .line 130 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v5 int-to-float v5, v5 mul-float/2addr v5, v1 sub-float/2addr v2, v5 mul-float/2addr v2, v4 move v6, v3 move v3, v2 move v2, v6 goto :goto_45 :cond_35 int-to-float v1, p2 .line 133 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v2 int-to-float v2, v2 div-float/2addr v1, v2 int-to-float v2, p3 .line 135 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v5 int-to-float v5, v5 mul-float/2addr v5, v1 sub-float/2addr v2, v5 mul-float/2addr v2, v4 .line 138 :goto_45 invoke-virtual {v0, v1, v1}, Landroid/graphics/Matrix;->setScale(FF)V add-float/2addr v3, v4 float-to-int v1, v3 int-to-float v1, v1 add-float/2addr v2, v4 float-to-int v2, v2 int-to-float v2, v2 .line 139 invoke-virtual {v0, v1, v2}, Landroid/graphics/Matrix;->postTranslate(FF)Z .line 141 invoke-static {p1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getNonNullConfig(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap$Config; move-result-object v1 invoke-interface {p0, p2, p3, v1}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->get(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object p0 .line 143 invoke-static {p1, p0}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->setAlpha(Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;)V .line 145 invoke-static {p1, p0, v0}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->applyMatrix(Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Matrix;)V return-object p0 .end method .method public static centerInside(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; .registers 7 .line 223 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v0 const/4 v1, 0x2 const-string v2, "TransformationUtils" if-gt v0, p2, :cond_1b invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v0 if-gt v0, p3, :cond_1b .line 224 invoke-static {v2, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result p0 if-eqz p0, :cond_1a .line 225 const-string p0, "requested target size larger or equal to input, returning input" invoke-static {v2, p0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I :cond_1a return-object p1 .line 229 :cond_1b invoke-static {v2, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v0 if-eqz v0, :cond_26 .line 230 const-string v0, "requested target size too big for input, fit centering instead" invoke-static {v2, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I .line 232 :cond_26 invoke-static {p0, p1, p2, p3}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->fitCenter(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; move-result-object p0 return-object p0 .end method .method public static circleCrop(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; .registers 10 .line 370 invoke-static {p2, p3}, Ljava/lang/Math;->min(II)I move-result p2 int-to-float p3, p2 const/high16 v0, 0x40000000 # 2.0f div-float v1, p3, v0 .line 373 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v2 .line 374 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v3 int-to-float v2, v2 div-float v4, p3, v2 int-to-float v3, v3 div-float v5, p3, v3 .line 378 invoke-static {v4, v5}, Ljava/lang/Math;->max(FF)F move-result v4 mul-float/2addr v2, v4 mul-float/2addr v4, v3 sub-float v3, p3, v2 div-float/2addr v3, v0 sub-float/2addr p3, v4 div-float/2addr p3, v0 .line 385 new-instance v0, Landroid/graphics/RectF; add-float/2addr v2, v3 add-float/2addr v4, p3 invoke-direct {v0, v3, p3, v2, v4}, Landroid/graphics/RectF;->(FFFF)V .line 388 invoke-static {p0, p1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getAlphaSafeBitmap(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; move-result-object p3 .line 390 invoke-static {p1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getAlphaSafeConfig(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap$Config; move-result-object v2 .line 391 invoke-interface {p0, p2, p2, v2}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->get(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object p2 const/4 v2, 0x1 .line 392 invoke-virtual {p2, v2}, Landroid/graphics/Bitmap;->setHasAlpha(Z)V .line 394 sget-object v2, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->lock()V .line 396 :try_start_3e new-instance v3, Landroid/graphics/Canvas; invoke-direct {v3, p2}, Landroid/graphics/Canvas;->(Landroid/graphics/Bitmap;)V .line 398 sget-object v4, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->CIRCLE_CROP_SHAPE_PAINT:Landroid/graphics/Paint; invoke-virtual {v3, v1, v1, v1, v4}, Landroid/graphics/Canvas;->drawCircle(FFFLandroid/graphics/Paint;)V .line 400 sget-object v1, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->CIRCLE_CROP_BITMAP_PAINT:Landroid/graphics/Paint; const/4 v4, 0x0 invoke-virtual {v3, p3, v4, v0, v1}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V .line 401 invoke-static {v3}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->clear(Landroid/graphics/Canvas;)V :try_end_51 .catchall {:try_start_3e .. :try_end_51} :catchall_5e .line 403 invoke-interface {v2}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 406 invoke-virtual {p3, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result p1 if-nez p1, :cond_5d .line 407 invoke-interface {p0, p3}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->put(Landroid/graphics/Bitmap;)V :cond_5d return-object p2 :catchall_5e move-exception p0 .line 403 sget-object p1, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V throw p0 .end method .method private static clear(Landroid/graphics/Canvas;)V .registers 2 const/4 v0, 0x0 .line 513 invoke-virtual {p0, v0}, Landroid/graphics/Canvas;->setBitmap(Landroid/graphics/Bitmap;)V return-void .end method .method public static fitCenter(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; .registers 10 .line 162 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v0 const/4 v1, 0x2 const-string v2, "TransformationUtils" if-ne v0, p2, :cond_1b invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v0 if-ne v0, p3, :cond_1b .line 163 invoke-static {v2, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result p0 if-eqz p0, :cond_1a .line 164 const-string p0, "requested target size matches input, returning input" invoke-static {v2, p0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I :cond_1a return-object p1 :cond_1b int-to-float v0, p2 .line 168 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v3 int-to-float v3, v3 div-float/2addr v0, v3 int-to-float v3, p3 .line 169 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v4 int-to-float v4, v4 div-float/2addr v3, v4 .line 170 invoke-static {v0, v3}, Ljava/lang/Math;->min(FF)F move-result v0 .line 174 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v3 int-to-float v3, v3 mul-float/2addr v3, v0 invoke-static {v3}, Ljava/lang/Math;->round(F)I move-result v3 .line 175 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v4 int-to-float v4, v4 mul-float/2addr v4, v0 invoke-static {v4}, Ljava/lang/Math;->round(F)I move-result v4 .line 177 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v5 if-ne v5, v3, :cond_59 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v3 if-ne v3, v4, :cond_59 .line 178 invoke-static {v2, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result p0 if-eqz p0, :cond_58 .line 179 const-string p0, "adjusted target size matches input, returning input" invoke-static {v2, p0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I :cond_58 return-object p1 .line 187 :cond_59 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v3 int-to-float v3, v3 mul-float/2addr v3, v0 float-to-int v3, v3 .line 188 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v4 int-to-float v4, v4 mul-float/2addr v4, v0 float-to-int v4, v4 .line 190 invoke-static {p1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getNonNullConfig(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap$Config; move-result-object v5 .line 191 invoke-interface {p0, v3, v4, v5}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->get(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object p0 .line 194 invoke-static {p1, p0}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->setAlpha(Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;)V .line 196 invoke-static {v2, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v1 if-eqz v1, :cond_ea .line 197 new-instance v1, Ljava/lang/StringBuilder; const-string v3, "request: " invoke-direct {v1, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p2 const-string v1, "x" invoke-virtual {p2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-static {v2, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I .line 198 new-instance p2, Ljava/lang/StringBuilder; const-string p3, "toFit: " invoke-direct {p2, p3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result p3 invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result p3 invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-static {v2, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I .line 199 new-instance p2, Ljava/lang/StringBuilder; const-string p3, "toReuse: " invoke-direct {p2, p3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p0}, Landroid/graphics/Bitmap;->getWidth()I move-result p3 invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p0}, Landroid/graphics/Bitmap;->getHeight()I move-result p3 invoke-virtual {p2, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-static {v2, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I .line 200 new-instance p2, Ljava/lang/StringBuilder; const-string p3, "minPct: " invoke-direct {p2, p3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-static {v2, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I .line 203 :cond_ea new-instance p2, Landroid/graphics/Matrix; invoke-direct {p2}, Landroid/graphics/Matrix;->()V .line 204 invoke-virtual {p2, v0, v0}, Landroid/graphics/Matrix;->setScale(FF)V .line 205 invoke-static {p1, p0, p2}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->applyMatrix(Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Matrix;)V return-object p0 .end method .method private static getAlphaSafeBitmap(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; .registers 5 .line 415 invoke-static {p1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getAlphaSafeConfig(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap$Config; move-result-object v0 .line 416 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config; move-result-object v1 invoke-virtual {v0, v1}, Landroid/graphics/Bitmap$Config;->equals(Ljava/lang/Object;)Z move-result v1 if-eqz v1, :cond_f return-object p1 .line 421 :cond_f invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v1 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v2 invoke-interface {p0, v1, v2, v0}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->get(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object p0 .line 422 new-instance v0, Landroid/graphics/Canvas; invoke-direct {v0, p0}, Landroid/graphics/Canvas;->(Landroid/graphics/Bitmap;)V const/4 v1, 0x0 const/4 v2, 0x0 invoke-virtual {v0, p1, v2, v2, v1}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V return-object p0 .end method .method private static getAlphaSafeConfig(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap$Config; .registers 3 .line 431 sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1a if-lt v0, v1, :cond_15 .line 433 sget-object v0, Landroid/graphics/Bitmap$Config;->RGBA_F16:Landroid/graphics/Bitmap$Config; invoke-virtual {p0}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config; move-result-object p0 invoke-virtual {v0, p0}, Landroid/graphics/Bitmap$Config;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_15 .line 434 sget-object p0, Landroid/graphics/Bitmap$Config;->RGBA_F16:Landroid/graphics/Bitmap$Config; return-object p0 .line 438 :cond_15 sget-object p0, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config; return-object p0 .end method .method public static getBitmapDrawableLock()Ljava/util/concurrent/locks/Lock; .registers 1 .line 104 sget-object v0, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; return-object v0 .end method .method public static getExifOrientationDegrees(I)I .registers 1 packed-switch p0, :pswitch_data_e const/4 p0, 0x0 goto :goto_d :pswitch_5 const/16 p0, 0x10e goto :goto_d :pswitch_8 const/16 p0, 0x5a goto :goto_d :pswitch_b const/16 p0, 0xb4 :goto_d return p0 :pswitch_data_e .packed-switch 0x3 :pswitch_b :pswitch_b :pswitch_8 :pswitch_8 :pswitch_5 :pswitch_5 .end packed-switch .end method .method private static getNonNullConfig(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap$Config; .registers 2 .line 518 invoke-virtual {p0}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config; move-result-object v0 if-eqz v0, :cond_b invoke-virtual {p0}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config; move-result-object p0 goto :goto_d :cond_b sget-object p0, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config; :goto_d return-object p0 .end method .method static initializeMatrixForRotation(ILandroid/graphics/Matrix;)V .registers 7 const/high16 v0, -0x3d4c0000 # -90.0f const/high16 v1, 0x42b40000 # 90.0f const/high16 v2, 0x43340000 # 180.0f const/high16 v3, 0x3f800000 # 1.0f const/high16 v4, -0x40800000 # -1.0f packed-switch p0, :pswitch_data_34 goto :goto_32 .line 558 :pswitch_e invoke-virtual {p1, v0}, Landroid/graphics/Matrix;->setRotate(F)V goto :goto_32 .line 554 :pswitch_12 invoke-virtual {p1, v0}, Landroid/graphics/Matrix;->setRotate(F)V .line 555 invoke-virtual {p1, v4, v3}, Landroid/graphics/Matrix;->postScale(FF)Z goto :goto_32 .line 551 :pswitch_19 invoke-virtual {p1, v1}, Landroid/graphics/Matrix;->setRotate(F)V goto :goto_32 .line 547 :pswitch_1d invoke-virtual {p1, v1}, Landroid/graphics/Matrix;->setRotate(F)V .line 548 invoke-virtual {p1, v4, v3}, Landroid/graphics/Matrix;->postScale(FF)Z goto :goto_32 .line 543 :pswitch_24 invoke-virtual {p1, v2}, Landroid/graphics/Matrix;->setRotate(F)V .line 544 invoke-virtual {p1, v4, v3}, Landroid/graphics/Matrix;->postScale(FF)Z goto :goto_32 .line 540 :pswitch_2b invoke-virtual {p1, v2}, Landroid/graphics/Matrix;->setRotate(F)V goto :goto_32 .line 537 :pswitch_2f invoke-virtual {p1, v4, v3}, Landroid/graphics/Matrix;->setScale(FF)V :goto_32 return-void nop :pswitch_data_34 .packed-switch 0x2 :pswitch_2f :pswitch_2b :pswitch_24 :pswitch_1d :pswitch_19 :pswitch_12 :pswitch_e .end packed-switch .end method .method public static isExifOrientationRequired(I)Z .registers 1 packed-switch p0, :pswitch_data_8 const/4 p0, 0x0 return p0 :pswitch_5 const/4 p0, 0x1 return p0 nop :pswitch_data_8 .packed-switch 0x2 :pswitch_5 :pswitch_5 :pswitch_5 :pswitch_5 :pswitch_5 :pswitch_5 :pswitch_5 .end packed-switch .end method .method public static rotateImage(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; .registers 9 if-eqz p1, :cond_2b .line 262 :try_start_2 new-instance v5, Landroid/graphics/Matrix; invoke-direct {v5}, Landroid/graphics/Matrix;->()V int-to-float p1, p1 .line 263 invoke-virtual {v5, p1}, Landroid/graphics/Matrix;->setRotate(F)V .line 264 invoke-virtual {p0}, Landroid/graphics/Bitmap;->getWidth()I move-result v3 .line 265 invoke-virtual {p0}, Landroid/graphics/Bitmap;->getHeight()I move-result v4 const/4 v6, 0x1 const/4 v1, 0x0 const/4 v2, 0x0 move-object v0, p0 .line 264 invoke-static/range {v0 .. v6}, Landroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap; move-result-object p0 :try_end_1b .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_1b} :catch_1c goto :goto_2b :catch_1c move-exception p1 const/4 v0, 0x6 .line 268 const-string v1, "TransformationUtils" invoke-static {v1, v0}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v0 if-eqz v0, :cond_2b .line 269 const-string v0, "Exception when trying to orient image" invoke-static {v1, v0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I :cond_2b :goto_2b return-object p0 .end method .method public static rotateImageExif(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; .registers 7 .line 314 invoke-static {p2}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->isExifOrientationRequired(I)Z move-result v0 if-nez v0, :cond_7 return-object p1 .line 318 :cond_7 new-instance v0, Landroid/graphics/Matrix; invoke-direct {v0}, Landroid/graphics/Matrix;->()V .line 319 invoke-static {p2, v0}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->initializeMatrixForRotation(ILandroid/graphics/Matrix;)V .line 322 new-instance p2, Landroid/graphics/RectF; invoke-virtual {p1}, Landroid/graphics/Bitmap;->getWidth()I move-result v1 int-to-float v1, v1 invoke-virtual {p1}, Landroid/graphics/Bitmap;->getHeight()I move-result v2 int-to-float v2, v2 const/4 v3, 0x0 invoke-direct {p2, v3, v3, v1, v2}, Landroid/graphics/RectF;->(FFFF)V .line 323 invoke-virtual {v0, p2}, Landroid/graphics/Matrix;->mapRect(Landroid/graphics/RectF;)Z .line 325 invoke-virtual {p2}, Landroid/graphics/RectF;->width()F move-result v1 invoke-static {v1}, Ljava/lang/Math;->round(F)I move-result v1 .line 326 invoke-virtual {p2}, Landroid/graphics/RectF;->height()F move-result v2 invoke-static {v2}, Ljava/lang/Math;->round(F)I move-result v2 .line 328 invoke-static {p1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getNonNullConfig(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap$Config; move-result-object v3 .line 329 invoke-interface {p0, v1, v2, v3}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->get(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object p0 .line 331 iget v1, p2, Landroid/graphics/RectF;->left:F neg-float v1, v1 iget p2, p2, Landroid/graphics/RectF;->top:F neg-float p2, p2 invoke-virtual {v0, v1, p2}, Landroid/graphics/Matrix;->postTranslate(FF)Z .line 333 invoke-virtual {p1}, Landroid/graphics/Bitmap;->hasAlpha()Z move-result p2 invoke-virtual {p0, p2}, Landroid/graphics/Bitmap;->setHasAlpha(Z)V .line 335 invoke-static {p1, p0, v0}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->applyMatrix(Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Matrix;)V return-object p0 .end method .method public static roundedCorners(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; .registers 11 const/4 v0, 0x0 const/4 v1, 0x1 if-lez p2, :cond_6 move v2, v1 goto :goto_7 :cond_6 move v2, v0 .line 479 :goto_7 const-string v3, "roundingRadius must be greater than 0." invoke-static {v2, v3}, Lcom/bumptech/glide/util/Preconditions;->checkArgument(ZLjava/lang/String;)V .line 482 invoke-static {p1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getAlphaSafeConfig(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap$Config; move-result-object v2 .line 483 invoke-static {p0, p1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getAlphaSafeBitmap(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; move-result-object v3 .line 484 invoke-virtual {v3}, Landroid/graphics/Bitmap;->getWidth()I move-result v4 invoke-virtual {v3}, Landroid/graphics/Bitmap;->getHeight()I move-result v5 invoke-interface {p0, v4, v5, v2}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->get(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object v2 .line 486 invoke-virtual {v2, v1}, Landroid/graphics/Bitmap;->setHasAlpha(Z)V .line 488 new-instance v4, Landroid/graphics/BitmapShader; sget-object v5, Landroid/graphics/Shader$TileMode;->CLAMP:Landroid/graphics/Shader$TileMode; sget-object v6, Landroid/graphics/Shader$TileMode;->CLAMP:Landroid/graphics/Shader$TileMode; invoke-direct {v4, v3, v5, v6}, Landroid/graphics/BitmapShader;->(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V .line 490 new-instance v5, Landroid/graphics/Paint; invoke-direct {v5}, Landroid/graphics/Paint;->()V .line 491 invoke-virtual {v5, v1}, Landroid/graphics/Paint;->setAntiAlias(Z)V .line 492 invoke-virtual {v5, v4}, Landroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader; .line 493 new-instance v1, Landroid/graphics/RectF; invoke-virtual {v2}, Landroid/graphics/Bitmap;->getWidth()I move-result v4 int-to-float v4, v4 invoke-virtual {v2}, Landroid/graphics/Bitmap;->getHeight()I move-result v6 int-to-float v6, v6 const/4 v7, 0x0 invoke-direct {v1, v7, v7, v4, v6}, Landroid/graphics/RectF;->(FFFF)V .line 494 sget-object v4, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->lock()V .line 496 :try_start_4c new-instance v6, Landroid/graphics/Canvas; invoke-direct {v6, v2}, Landroid/graphics/Canvas;->(Landroid/graphics/Bitmap;)V .line 497 sget-object v7, Landroid/graphics/PorterDuff$Mode;->CLEAR:Landroid/graphics/PorterDuff$Mode; invoke-virtual {v6, v0, v7}, Landroid/graphics/Canvas;->drawColor(ILandroid/graphics/PorterDuff$Mode;)V int-to-float p2, p2 .line 498 invoke-virtual {v6, v1, p2, p2, v5}, Landroid/graphics/Canvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V .line 499 invoke-static {v6}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->clear(Landroid/graphics/Canvas;)V :try_end_5d .catchall {:try_start_4c .. :try_end_5d} :catchall_6a .line 501 invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 504 invoke-virtual {v3, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result p1 if-nez p1, :cond_69 .line 505 invoke-interface {p0, v3}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->put(Landroid/graphics/Bitmap;)V :cond_69 return-object v2 :catchall_6a move-exception p0 .line 501 sget-object p1, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->BITMAP_DRAWABLE_LOCK:Ljava/util/concurrent/locks/Lock; invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V throw p0 .end method .method public static roundedCorners(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap; .registers 5 .annotation runtime Ljava/lang/Deprecated; .end annotation .line 461 invoke-static {p0, p1, p4}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->roundedCorners(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; move-result-object p0 return-object p0 .end method .method public static setAlpha(Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;)V .registers 2 .line 246 invoke-virtual {p0}, Landroid/graphics/Bitmap;->hasAlpha()Z move-result p0 invoke-virtual {p1, p0}, Landroid/graphics/Bitmap;->setHasAlpha(Z)V return-void .end method