.class public final Lcom/bumptech/glide/load/resource/bitmap/Downsampler; .super Ljava/lang/Object; .source "Downsampler.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks; } .end annotation # static fields .field public static final ALLOW_HARDWARE_CONFIG:Lcom/bumptech/glide/load/Option; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/bumptech/glide/load/Option<", "Ljava/lang/Boolean;", ">;" } .end annotation .end field .field public static final DECODE_FORMAT:Lcom/bumptech/glide/load/Option; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/bumptech/glide/load/Option<", "Lcom/bumptech/glide/load/DecodeFormat;", ">;" } .end annotation .end field .field public static final DOWNSAMPLE_STRATEGY:Lcom/bumptech/glide/load/Option; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/bumptech/glide/load/Option<", "Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;", ">;" } .end annotation .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field private static final EMPTY_CALLBACKS:Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks; .field public static final FIX_BITMAP_SIZE_TO_REQUESTED_DIMENSIONS:Lcom/bumptech/glide/load/Option; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/bumptech/glide/load/Option<", "Ljava/lang/Boolean;", ">;" } .end annotation .end field .field private static final ICO_MIME_TYPE:Ljava/lang/String; = "image/x-ico" .field private static final MARK_POSITION:I = 0xa00000 .field private static final NO_DOWNSAMPLE_PRE_N_MIME_TYPES:Ljava/util/Set; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "Ljava/lang/String;", ">;" } .end annotation .end field .field private static final OPTIONS_QUEUE:Ljava/util/Queue; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Queue<", "Landroid/graphics/BitmapFactory$Options;", ">;" } .end annotation .end field .field static final TAG:Ljava/lang/String; = "Downsampler" .field private static final TYPES_THAT_USE_POOL_PRE_KITKAT:Ljava/util/Set; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;", ">;" } .end annotation .end field .field private static final WBMP_MIME_TYPE:Ljava/lang/String; = "image/vnd.wap.wbmp" # instance fields .field private final bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; .field private final byteArrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; .field private final displayMetrics:Landroid/util/DisplayMetrics; .field private final hardwareConfigState:Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; .field private final parsers:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Lcom/bumptech/glide/load/ImageHeaderParser;", ">;" } .end annotation .end field # direct methods .method static constructor ()V .registers 5 .line 47 const-string v0, "com.bumptech.glide.load.resource.bitmap.Downsampler.DecodeFormat" sget-object v1, Lcom/bumptech/glide/load/DecodeFormat;->DEFAULT:Lcom/bumptech/glide/load/DecodeFormat; invoke-static {v0, v1}, Lcom/bumptech/glide/load/Option;->memory(Ljava/lang/String;Ljava/lang/Object;)Lcom/bumptech/glide/load/Option; move-result-object v0 sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->DECODE_FORMAT:Lcom/bumptech/glide/load/Option; .line 57 sget-object v0, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;->OPTION:Lcom/bumptech/glide/load/Option; sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->DOWNSAMPLE_STRATEGY:Lcom/bumptech/glide/load/Option; const/4 v0, 0x0 .line 71 invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; move-result-object v1 const-string v2, "com.bumptech.glide.load.resource.bitmap.Downsampler.FixBitmapSize" invoke-static {v2, v1}, Lcom/bumptech/glide/load/Option;->memory(Ljava/lang/String;Ljava/lang/Object;)Lcom/bumptech/glide/load/Option; move-result-object v2 sput-object v2, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->FIX_BITMAP_SIZE_TO_REQUESTED_DIMENSIONS:Lcom/bumptech/glide/load/Option; .line 90 const-string v2, "com.bumptech.glide.load.resource.bitmap.Downsampler.AllowHardwareDecode" .line 91 invoke-static {v2, v1}, Lcom/bumptech/glide/load/Option;->memory(Ljava/lang/String;Ljava/lang/Object;)Lcom/bumptech/glide/load/Option; move-result-object v1 sput-object v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->ALLOW_HARDWARE_CONFIG:Lcom/bumptech/glide/load/Option; .line 96 new-instance v1, Ljava/util/HashSet; const/4 v2, 0x2 new-array v2, v2, [Ljava/lang/String; const-string v3, "image/vnd.wap.wbmp" aput-object v3, v2, v0 const/4 v3, 0x1 const-string v4, "image/x-ico" aput-object v4, v2, v3 .line 99 invoke-static {v2}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; move-result-object v2 invoke-direct {v1, v2}, Ljava/util/HashSet;->(Ljava/util/Collection;)V .line 97 invoke-static {v1}, Ljava/util/Collections;->unmodifiableSet(Ljava/util/Set;)Ljava/util/Set; move-result-object v1 sput-object v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->NO_DOWNSAMPLE_PRE_N_MIME_TYPES:Ljava/util/Set; .line 105 new-instance v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler$1; invoke-direct {v1}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler$1;->()V sput-object v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->EMPTY_CALLBACKS:Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks; .line 116 sget-object v1, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->JPEG:Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; sget-object v2, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->PNG_A:Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; sget-object v3, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->PNG:Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; .line 118 invoke-static {v1, v2, v3}, Ljava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet; move-result-object v1 .line 117 invoke-static {v1}, Ljava/util/Collections;->unmodifiableSet(Ljava/util/Set;)Ljava/util/Set; move-result-object v1 sput-object v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->TYPES_THAT_USE_POOL_PRE_KITKAT:Ljava/util/Set; .line 124 invoke-static {v0}, Lcom/bumptech/glide/util/Util;->createQueue(I)Ljava/util/Queue; move-result-object v0 sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->OPTIONS_QUEUE:Ljava/util/Queue; return-void .end method .method public constructor (Ljava/util/List;Landroid/util/DisplayMetrics;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;)V .registers 6 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/List<", "Lcom/bumptech/glide/load/ImageHeaderParser;", ">;", "Landroid/util/DisplayMetrics;", "Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;", "Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;", ")V" } .end annotation .line 136 invoke-direct {p0}, Ljava/lang/Object;->()V .line 133 invoke-static {}, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->getInstance()Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; move-result-object v0 iput-object v0, p0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->hardwareConfigState:Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; .line 137 iput-object p1, p0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->parsers:Ljava/util/List; .line 138 invoke-static {p2}, Lcom/bumptech/glide/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 check-cast p1, Landroid/util/DisplayMetrics; iput-object p1, p0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->displayMetrics:Landroid/util/DisplayMetrics; .line 139 invoke-static {p3}, Lcom/bumptech/glide/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 check-cast p1, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; iput-object p1, p0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; .line 140 invoke-static {p4}, Lcom/bumptech/glide/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 check-cast p1, Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; iput-object p1, p0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->byteArrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; return-void .end method .method private static adjustTargetDensityForError(D)I .registers 6 .line 472 invoke-static {p0, p1}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getDensityMultiplier(D)I move-result v0 int-to-double v1, v0 mul-double/2addr v1, p0 .line 473 invoke-static {v1, v2}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->round(D)I move-result v1 int-to-float v2, v1 int-to-float v0, v0 div-float/2addr v2, v0 float-to-double v2, v2 div-double/2addr p0, v2 int-to-double v0, v1 mul-double/2addr p0, v0 .line 476 invoke-static {p0, p1}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->round(D)I move-result p0 return p0 .end method .method private calculateConfig(Ljava/io/InputStream;Lcom/bumptech/glide/load/DecodeFormat;ZZLandroid/graphics/BitmapFactory$Options;II)V .registers 15 .line 513 iget-object v0, p0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->hardwareConfigState:Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; move v1, p6 move v2, p7 move-object v3, p5 move-object v4, p2 move v5, p3 move v6, p4 invoke-virtual/range {v0 .. v6}, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->setHardwareConfigIfAllowed(IILandroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/DecodeFormat;ZZ)Z move-result p3 if-eqz p3, :cond_f return-void .line 524 :cond_f sget-object p3, Lcom/bumptech/glide/load/DecodeFormat;->PREFER_ARGB_8888:Lcom/bumptech/glide/load/DecodeFormat; if-eq p2, p3, :cond_50 .line 532 :try_start_13 iget-object p3, p0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->parsers:Ljava/util/List; iget-object p4, p0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->byteArrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; invoke-static {p3, p1, p4}, Lcom/bumptech/glide/load/ImageHeaderParserUtils;->getType(Ljava/util/List;Ljava/io/InputStream;Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;)Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; move-result-object p1 invoke-virtual {p1}, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->hasAlpha()Z move-result p1 :try_end_1f .catch Ljava/io/IOException; {:try_start_13 .. :try_end_1f} :catch_20 goto :goto_3d :catch_20 move-exception p1 const/4 p3, 0x3 .line 534 const-string p4, "Downsampler" invoke-static {p4, p3}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result p3 if-eqz p3, :cond_3c .line 535 new-instance p3, Ljava/lang/StringBuilder; const-string p6, "Cannot determine whether the image has alpha or not from header, format " invoke-direct {p3, p6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-static {p4, p2, p1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I :cond_3c const/4 p1, 0x0 :goto_3d if-eqz p1, :cond_42 .line 541 sget-object p1, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config; goto :goto_44 :cond_42 sget-object p1, Landroid/graphics/Bitmap$Config;->RGB_565:Landroid/graphics/Bitmap$Config; :goto_44 iput-object p1, p5, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config; .line 542 iget-object p1, p5, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config; sget-object p2, Landroid/graphics/Bitmap$Config;->RGB_565:Landroid/graphics/Bitmap$Config; if-ne p1, p2, :cond_4f const/4 p1, 0x1 .line 543 iput-boolean p1, p5, Landroid/graphics/BitmapFactory$Options;->inDither:Z :cond_4f return-void .line 526 :cond_50 sget-object p1, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config; iput-object p1, p5, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config; return-void .end method .method private static calculateScaling(Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;Ljava/io/InputStream;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;IIIIILandroid/graphics/BitmapFactory$Options;)V .registers 29 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation move-object/from16 v0, p0 move-object/from16 v1, p4 move/from16 v2, p5 move/from16 v3, p6 move/from16 v4, p7 move/from16 v5, p8 move/from16 v6, p9 move-object/from16 v7, p10 .line 335 const-string v8, "]" const-string v9, "Downsampler" const-string v10, "x" if-lez v3, :cond_1d0 if-gtz v4, :cond_1c goto/16 :goto_1d0 :cond_1c const/16 v11, 0x5a if-eq v2, v11, :cond_2a const/16 v11, 0x10e if-ne v2, v11, :cond_25 goto :goto_2a .line 353 :cond_25 invoke-virtual {v1, v3, v4, v5, v6}, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;->getScaleFactor(IIII)F move-result v2 goto :goto_2e .line 349 :cond_2a :goto_2a invoke-virtual {v1, v4, v3, v5, v6}, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;->getScaleFactor(IIII)F move-result v2 :goto_2e const/4 v11, 0x0 cmpg-float v11, v2, v11 .line 356 const-string v12, "], target: [" if-lez v11, :cond_18a .line 362 invoke-virtual {v1, v3, v4, v5, v6}, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;->getSampleSizeRounding(IIII)Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy$SampleSizeRounding; move-result-object v8 if-eqz v8, :cond_182 int-to-float v11, v3 mul-float v13, v2, v11 float-to-double v13, v13 .line 368 invoke-static {v13, v14}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->round(D)I move-result v13 int-to-float v14, v4 mul-float v15, v2, v14 move-object/from16 v16, v9 move-object/from16 v17, v10 float-to-double v9, v15 .line 369 invoke-static {v9, v10}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->round(D)I move-result v9 .line 371 div-int v10, v3, v13 .line 372 div-int v9, v4, v9 .line 374 sget-object v13, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy$SampleSizeRounding;->MEMORY:Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy$SampleSizeRounding; if-ne v8, v13, :cond_5c .line 375 invoke-static {v10, v9}, Ljava/lang/Math;->max(II)I move-result v9 goto :goto_60 .line 376 :cond_5c invoke-static {v10, v9}, Ljava/lang/Math;->min(II)I move-result v9 .line 384 :goto_60 invoke-static {v9}, Ljava/lang/Integer;->highestOneBit(I)I move-result v9 const/4 v10, 0x1 invoke-static {v10, v9}, Ljava/lang/Math;->max(II)I move-result v9 .line 385 sget-object v13, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy$SampleSizeRounding;->MEMORY:Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy$SampleSizeRounding; if-ne v8, v13, :cond_77 int-to-float v8, v9 const/high16 v13, 0x3f800000 # 1.0f div-float/2addr v13, v2 cmpg-float v8, v8, v13 if-gez v8, :cond_77 shl-int/lit8 v9, v9, 0x1 .line 396 :cond_77 iput v9, v7, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I .line 399 sget-object v8, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->JPEG:Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; const/4 v13, 0x0 if-ne v0, v8, :cond_9a const/16 v0, 0x8 .line 403 invoke-static {v9, v0}, Ljava/lang/Math;->min(II)I move-result v0 int-to-float v0, v0 div-float/2addr v11, v0 float-to-double v10, v11 .line 404 invoke-static {v10, v11}, Ljava/lang/Math;->ceil(D)D move-result-wide v10 double-to-int v8, v10 div-float/2addr v14, v0 float-to-double v10, v14 .line 405 invoke-static {v10, v11}, Ljava/lang/Math;->ceil(D)D move-result-wide v10 double-to-int v0, v10 .line 406 div-int/lit8 v10, v9, 0x8 if-lez v10, :cond_e5 .line 408 div-int/2addr v8, v10 .line 409 div-int/2addr v0, v10 goto :goto_e5 .line 411 :cond_9a sget-object v8, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->PNG:Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; if-eq v0, v8, :cond_d6 sget-object v8, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->PNG_A:Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; if-ne v0, v8, :cond_a3 goto :goto_d6 .line 414 :cond_a3 sget-object v8, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->WEBP:Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; if-eq v0, v8, :cond_ca sget-object v8, Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;->WEBP_A:Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; if-ne v0, v8, :cond_ac goto :goto_ca .line 422 :cond_ac rem-int v0, v3, v9 if-nez v0, :cond_ba rem-int v0, v4, v9 if-eqz v0, :cond_b5 goto :goto_ba .line 434 :cond_b5 div-int v8, v3, v9 .line 435 div-int v0, v4, v9 goto :goto_e5 :cond_ba :goto_ba move-object/from16 v0, p1 move-object/from16 v8, p2 move-object/from16 v10, p3 .line 426 invoke-static {v0, v7, v8, v10}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getDimensions(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;)[I move-result-object v0 .line 431 aget v8, v0, v13 const/4 v10, 0x1 .line 432 aget v0, v0, v10 goto :goto_e5 :cond_ca :goto_ca int-to-float v0, v9 div-float/2addr v11, v0 .line 416 invoke-static {v11}, Ljava/lang/Math;->round(F)I move-result v8 div-float/2addr v14, v0 .line 417 invoke-static {v14}, Ljava/lang/Math;->round(F)I move-result v0 goto :goto_e5 :cond_d6 :goto_d6 int-to-float v0, v9 div-float/2addr v11, v0 float-to-double v10, v11 .line 412 invoke-static {v10, v11}, Ljava/lang/Math;->floor(D)D move-result-wide v10 double-to-int v8, v10 div-float/2addr v14, v0 float-to-double v10, v14 .line 413 invoke-static {v10, v11}, Ljava/lang/Math;->floor(D)D move-result-wide v10 double-to-int v0, v10 .line 438 :cond_e5 :goto_e5 invoke-virtual {v1, v8, v0, v5, v6}, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;->getScaleFactor(IIII)F move-result v1 float-to-double v10, v1 .line 444 invoke-static {v10, v11}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->adjustTargetDensityForError(D)I move-result v1 iput v1, v7, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I .line 445 invoke-static {v10, v11}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getDensityMultiplier(D)I move-result v1 iput v1, v7, Landroid/graphics/BitmapFactory$Options;->inDensity:I .line 447 invoke-static/range {p10 .. p10}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->isScaling(Landroid/graphics/BitmapFactory$Options;)Z move-result v1 if-eqz v1, :cond_100 const/4 v1, 0x1 .line 448 iput-boolean v1, v7, Landroid/graphics/BitmapFactory$Options;->inScaled:Z goto :goto_104 .line 450 :cond_100 iput v13, v7, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I iput v13, v7, Landroid/graphics/BitmapFactory$Options;->inDensity:I :goto_104 const/4 v1, 0x2 move-object/from16 v13, v16 .line 453 invoke-static {v13, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v1 if-eqz v1, :cond_181 .line 454 new-instance v1, Ljava/lang/StringBuilder; const-string v14, "Calculate scaling, source: [" invoke-direct {v1, v14}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 move-object/from16 v14, v17 invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 const-string v3, "], power of two scaled: [" invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, "], exact scale factor: " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ", power of 2 sample size: " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ", adjusted scale factor: " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v10, v11}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ", target density: " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 iget v1, v7, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ", density: " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 iget v1, v7, Landroid/graphics/BitmapFactory$Options;->inDensity:I invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-static {v13, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I :cond_181 return-void .line 365 :cond_182 new-instance v0, Ljava/lang/IllegalArgumentException; const-string v1, "Cannot round with null rounding" invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw v0 :cond_18a move-object v14, v10 .line 357 new-instance v0, Ljava/lang/IllegalArgumentException; new-instance v7, Ljava/lang/StringBuilder; const-string v9, "Cannot scale with factor: " invoke-direct {v7, v9}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v7, v2}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder; move-result-object v2 const-string v7, " from: " invoke-virtual {v2, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v1 const-string v2, ", source: [" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw v0 :cond_1d0 :goto_1d0 move-object v13, v9 move-object v14, v10 const/4 v1, 0x3 .line 336 invoke-static {v13, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v1 if-eqz v1, :cond_201 .line 337 new-instance v1, Ljava/lang/StringBuilder; const-string v2, "Unable to determine dimensions for: " invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " with target [" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-static {v13, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I :cond_201 return-void .end method .method private decodeFromWrappedStreams(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;Lcom/bumptech/glide/load/DecodeFormat;ZIIZLcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;)Landroid/graphics/Bitmap; .registers 36 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation move-object/from16 v8, p0 move-object/from16 v7, p1 move-object/from16 v6, p2 move-object/from16 v5, p9 .line 221 invoke-static {}, Lcom/bumptech/glide/util/LogTime;->getLogTime()J move-result-wide v20 .line 223 iget-object v0, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; invoke-static {v7, v6, v5, v0}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getDimensions(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;)[I move-result-object v0 const/4 v1, 0x0 .line 224 aget v4, v0, v1 const/4 v2, 0x1 .line 225 aget v3, v0, v2 .line 226 iget-object v2, v6, Landroid/graphics/BitmapFactory$Options;->outMimeType:Ljava/lang/String; const/4 v0, -0x1 if-eq v4, v0, :cond_23 if-ne v3, v0, :cond_20 goto :goto_23 :cond_20 move/from16 v22, p5 goto :goto_25 :cond_23 :goto_23 move/from16 v22, v1 .line 236 :goto_25 iget-object v0, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->parsers:Ljava/util/List; iget-object v1, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->byteArrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; invoke-static {v0, v7, v1}, Lcom/bumptech/glide/load/ImageHeaderParserUtils;->getOrientation(Ljava/util/List;Ljava/io/InputStream;Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;)I move-result v1 .line 237 invoke-static {v1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getExifOrientationDegrees(I)I move-result v14 .line 238 invoke-static {v1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->isExifOrientationRequired(I)Z move-result v23 const/high16 v0, -0x80000000 move/from16 v15, p6 move/from16 v13, p7 if-ne v15, v0, :cond_40 move/from16 v24, v4 goto :goto_42 :cond_40 move/from16 v24, v15 :goto_42 if-ne v13, v0, :cond_47 move/from16 v25, v3 goto :goto_49 :cond_47 move/from16 v25, v13 .line 243 :goto_49 iget-object v0, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->parsers:Ljava/util/List; iget-object v9, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->byteArrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; invoke-static {v0, v7, v9}, Lcom/bumptech/glide/load/ImageHeaderParserUtils;->getType(Ljava/util/List;Ljava/io/InputStream;Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;)Lcom/bumptech/glide/load/ImageHeaderParser$ImageType; move-result-object v0 .line 245 iget-object v12, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; move-object v9, v0 move-object/from16 v10, p1 move-object/from16 v11, p9 move-object/from16 v13, p3 move v15, v4 move/from16 v16, v3 move/from16 v17, v24 move/from16 v18, v25 move-object/from16 v19, p2 invoke-static/range {v9 .. v19}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->calculateScaling(Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;Ljava/io/InputStream;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;IIIIILandroid/graphics/BitmapFactory$Options;)V move-object/from16 v0, p0 move v15, v1 move-object/from16 v1, p1 move-object v11, v2 move-object/from16 v2, p4 move v10, v3 move/from16 v3, v22 move v12, v4 move/from16 v4, v23 move-object v13, v5 move-object/from16 v5, p2 move-object v14, v6 move/from16 v6, v24 move/from16 p3, v15 move-object v15, v7 move/from16 v7, v25 .line 257 invoke-direct/range {v0 .. v7}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->calculateConfig(Ljava/io/InputStream;Lcom/bumptech/glide/load/DecodeFormat;ZZLandroid/graphics/BitmapFactory$Options;II)V .line 268 iget v0, v14, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I invoke-direct {v8, v9}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->shouldUsePool(Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;)Z move-result v0 const/4 v1, 0x2 const-string v2, "Downsampler" if-eqz v0, :cond_131 if-ltz v12, :cond_99 if-ltz v10, :cond_99 if-eqz p8, :cond_99 move/from16 v4, v24 move/from16 v5, v25 goto/16 :goto_128 .line 276 :cond_99 invoke-static/range {p2 .. p2}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->isScaling(Landroid/graphics/BitmapFactory$Options;)Z move-result v0 if-eqz v0, :cond_a7 .line 277 iget v0, v14, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I int-to-float v0, v0 iget v3, v14, Landroid/graphics/BitmapFactory$Options;->inDensity:I int-to-float v3, v3 div-float/2addr v0, v3 goto :goto_a9 :cond_a7 const/high16 v0, 0x3f800000 # 1.0f .line 278 :goto_a9 iget v3, v14, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I int-to-float v4, v12 int-to-float v5, v3 div-float/2addr v4, v5 float-to-double v6, v4 .line 279 invoke-static {v6, v7}, Ljava/lang/Math;->ceil(D)D move-result-wide v6 double-to-int v4, v6 int-to-float v6, v10 div-float/2addr v6, v5 float-to-double v5, v6 .line 280 invoke-static {v5, v6}, Ljava/lang/Math;->ceil(D)D move-result-wide v5 double-to-int v5, v5 int-to-float v4, v4 mul-float/2addr v4, v0 .line 281 invoke-static {v4}, Ljava/lang/Math;->round(F)I move-result v4 int-to-float v5, v5 mul-float/2addr v5, v0 .line 282 invoke-static {v5}, Ljava/lang/Math;->round(F)I move-result v5 .line 284 invoke-static {v2, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v6 if-eqz v6, :cond_128 .line 285 new-instance v6, Ljava/lang/StringBuilder; const-string v7, "Calculated target [" invoke-direct {v6, v7}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v6 const-string v7, "x" invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v6 const-string v9, "] for source [" invoke-virtual {v6, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v12}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v6 const-string v7, "], sampleSize: " invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v3 const-string v6, ", targetDensity: " invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v3 iget v6, v14, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v3 const-string v6, ", density: " invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v3 iget v6, v14, Landroid/graphics/BitmapFactory$Options;->inDensity:I invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v3 const-string v6, ", density multiplier: " invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v3 invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-static {v2, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I :cond_128 :goto_128 if-lez v4, :cond_131 if-lez v5, :cond_131 .line 296 iget-object v0, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; invoke-static {v14, v0, v4, v5}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->setInBitmap(Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;II)V .line 299 :cond_131 iget-object v0, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; invoke-static {v15, v14, v13, v0}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->decodeStream(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;)Landroid/graphics/Bitmap; move-result-object v0 .line 300 iget-object v3, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; invoke-interface {v13, v3, v0}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;->onDecodeComplete(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;)V .line 302 invoke-static {v2, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v1 if-eqz v1, :cond_152 move v9, v12 move-object/from16 v12, p2 move-object v13, v0 move/from16 v14, p6 move/from16 v1, p3 move/from16 v15, p7 move-wide/from16 v16, v20 .line 303 invoke-static/range {v9 .. v17}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->logDecode(IILjava/lang/String;Landroid/graphics/BitmapFactory$Options;Landroid/graphics/Bitmap;IIJ)V goto :goto_154 :cond_152 move/from16 v1, p3 :goto_154 if-eqz v0, :cond_16f .line 311 iget-object v2, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->displayMetrics:Landroid/util/DisplayMetrics; iget v2, v2, Landroid/util/DisplayMetrics;->densityDpi:I invoke-virtual {v0, v2}, Landroid/graphics/Bitmap;->setDensity(I)V .line 313 iget-object v2, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; invoke-static {v2, v0, v1}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->rotateImageExif(Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; move-result-object v1 .line 314 invoke-virtual {v0, v1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v2 if-nez v2, :cond_170 .line 315 iget-object v2, v8, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; invoke-interface {v2, v0}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->put(Landroid/graphics/Bitmap;)V goto :goto_170 :cond_16f const/4 v1, 0x0 :cond_170 :goto_170 return-object v1 .end method .method private static decodeStream(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;)Landroid/graphics/Bitmap; .registers 10 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 565 const-string v0, "Downsampler" iget-boolean v1, p1, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z if-eqz v1, :cond_c const/high16 v1, 0xa00000 .line 566 invoke-virtual {p0, v1}, Ljava/io/InputStream;->mark(I)V goto :goto_f .line 573 :cond_c invoke-interface {p2}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;->onObtainBounds()V .line 577 :goto_f iget v1, p1, Landroid/graphics/BitmapFactory$Options;->outWidth:I .line 578 iget v2, p1, Landroid/graphics/BitmapFactory$Options;->outHeight:I .line 579 iget-object v3, p1, Landroid/graphics/BitmapFactory$Options;->outMimeType:Ljava/lang/String; .line 581 invoke-static {}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getBitmapDrawableLock()Ljava/util/concurrent/locks/Lock; move-result-object v4 invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->lock()V const/4 v4, 0x0 .line 583 :try_start_1d invoke-static {p0, v4, p1}, Landroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; move-result-object p2 :try_end_21 .catch Ljava/lang/IllegalArgumentException; {:try_start_1d .. :try_end_21} :catch_32 .catchall {:try_start_1d .. :try_end_21} :catchall_30 .line 603 invoke-static {}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getBitmapDrawableLock()Ljava/util/concurrent/locks/Lock; move-result-object p3 invoke-interface {p3}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 606 iget-boolean p1, p1, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z if-eqz p1, :cond_2f .line 607 invoke-virtual {p0}, Ljava/io/InputStream;->reset()V :cond_2f return-object p2 :catchall_30 move-exception p0 goto :goto_5f :catch_32 move-exception v5 .line 586 :try_start_33 invoke-static {v5, v1, v2, v3, p1}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->newIoExceptionForInBitmapAssertion(Ljava/lang/IllegalArgumentException;IILjava/lang/String;Landroid/graphics/BitmapFactory$Options;)Ljava/io/IOException; move-result-object v1 const/4 v2, 0x3 .line 587 invoke-static {v0, v2}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v2 if-eqz v2, :cond_43 .line 588 const-string v2, "Failed to decode with inBitmap, trying again without Bitmap re-use" invoke-static {v0, v2, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I .line 591 :cond_43 iget-object v0, p1, Landroid/graphics/BitmapFactory$Options;->inBitmap:Landroid/graphics/Bitmap; :try_end_45 .catchall {:try_start_33 .. :try_end_45} :catchall_30 if-eqz v0, :cond_5e .line 593 :try_start_47 invoke-virtual {p0}, Ljava/io/InputStream;->reset()V .line 594 iget-object v0, p1, Landroid/graphics/BitmapFactory$Options;->inBitmap:Landroid/graphics/Bitmap; invoke-interface {p3, v0}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->put(Landroid/graphics/Bitmap;)V .line 595 iput-object v4, p1, Landroid/graphics/BitmapFactory$Options;->inBitmap:Landroid/graphics/Bitmap; .line 596 invoke-static {p0, p1, p2, p3}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->decodeStream(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;)Landroid/graphics/Bitmap; move-result-object p0 :try_end_55 .catch Ljava/io/IOException; {:try_start_47 .. :try_end_55} :catch_5d .catchall {:try_start_47 .. :try_end_55} :catchall_30 .line 603 invoke-static {}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getBitmapDrawableLock()Ljava/util/concurrent/locks/Lock; move-result-object p1 invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V return-object p0 .line 598 :catch_5d :try_start_5d throw v1 .line 601 :cond_5e throw v1 :try_end_5f .catchall {:try_start_5d .. :try_end_5f} :catchall_30 .line 603 :goto_5f invoke-static {}, Lcom/bumptech/glide/load/resource/bitmap/TransformationUtils;->getBitmapDrawableLock()Ljava/util/concurrent/locks/Lock; move-result-object p1 invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V throw p0 .end method .method private static getBitmapString(Landroid/graphics/Bitmap;)Ljava/lang/String; .registers 4 if-nez p0, :cond_4 const/4 p0, 0x0 return-object p0 .line 644 :cond_4 new-instance v0, Ljava/lang/StringBuilder; const-string v1, " (" invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p0}, Landroid/graphics/Bitmap;->getAllocationByteCount()I move-result v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ")" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 .line 645 new-instance v1, Ljava/lang/StringBuilder; const-string v2, "[" invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p0}, Landroid/graphics/Bitmap;->getWidth()I move-result v2 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 const-string v2, "x" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {p0}, Landroid/graphics/Bitmap;->getHeight()I move-result v2 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 const-string v2, "] " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {p0}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config; move-result-object p0 invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 return-object p0 .end method .method private static declared-synchronized getDefaultOptions()Landroid/graphics/BitmapFactory$Options; .registers 3 const-class v0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler; monitor-enter v0 .line 691 :try_start_3 sget-object v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->OPTIONS_QUEUE:Ljava/util/Queue; monitor-enter v1 :try_end_6 .catchall {:try_start_3 .. :try_end_6} :catchall_1c .line 692 :try_start_6 invoke-interface {v1}, Ljava/util/Queue;->poll()Ljava/lang/Object; move-result-object v2 check-cast v2, Landroid/graphics/BitmapFactory$Options; .line 693 monitor-exit v1 :try_end_d .catchall {:try_start_6 .. :try_end_d} :catchall_19 if-nez v2, :cond_17 .line 695 :try_start_f new-instance v2, Landroid/graphics/BitmapFactory$Options; invoke-direct {v2}, Landroid/graphics/BitmapFactory$Options;->()V .line 696 invoke-static {v2}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->resetOptions(Landroid/graphics/BitmapFactory$Options;)V :try_end_17 .catchall {:try_start_f .. :try_end_17} :catchall_1c .line 699 :cond_17 monitor-exit v0 return-object v2 :catchall_19 move-exception v2 .line 693 :try_start_1a monitor-exit v1 :try_end_1b .catchall {:try_start_1a .. :try_end_1b} :catchall_19 :try_start_1b throw v2 :catchall_1c move-exception v1 monitor-exit v0 :try_end_1e .catchall {:try_start_1b .. :try_end_1e} :catchall_1c throw v1 .end method .method private static getDensityMultiplier(D)I .registers 5 const-wide/high16 v0, 0x3ff0000000000000L # 1.0 cmpg-double v2, p0, v0 if-gtz v2, :cond_7 goto :goto_9 :cond_7 div-double p0, v0, p0 :goto_9 const-wide v0, 0x41dfffffffc00000L # 2.147483647E9 mul-double/2addr p0, v0 .line 480 invoke-static {p0, p1}, Ljava/lang/Math;->round(D)J move-result-wide p0 long-to-int p0, p0 return p0 .end method .method private static getDimensions(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;)[I .registers 5 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation const/4 v0, 0x1 .line 557 iput-boolean v0, p1, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z .line 558 invoke-static {p0, p1, p2, p3}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->decodeStream(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;)Landroid/graphics/Bitmap; const/4 p0, 0x0 .line 559 iput-boolean p0, p1, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z .line 560 iget p0, p1, Landroid/graphics/BitmapFactory$Options;->outWidth:I iget p1, p1, Landroid/graphics/BitmapFactory$Options;->outHeight:I filled-new-array {p0, p1}, [I move-result-object p0 return-object p0 .end method .method private static getInBitmapString(Landroid/graphics/BitmapFactory$Options;)Ljava/lang/String; .registers 1 .line 633 iget-object p0, p0, Landroid/graphics/BitmapFactory$Options;->inBitmap:Landroid/graphics/Bitmap; invoke-static {p0}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getBitmapString(Landroid/graphics/Bitmap;)Ljava/lang/String; move-result-object p0 return-object p0 .end method .method private static isScaling(Landroid/graphics/BitmapFactory$Options;)Z .registers 2 .line 614 iget v0, p0, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I if-lez v0, :cond_10 iget v0, p0, Landroid/graphics/BitmapFactory$Options;->inDensity:I if-lez v0, :cond_10 iget v0, p0, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I iget p0, p0, Landroid/graphics/BitmapFactory$Options;->inDensity:I if-eq v0, p0, :cond_10 const/4 p0, 0x1 goto :goto_11 :cond_10 const/4 p0, 0x0 :goto_11 return p0 .end method .method private static logDecode(IILjava/lang/String;Landroid/graphics/BitmapFactory$Options;Landroid/graphics/Bitmap;IIJ)V .registers 11 .line 621 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "Decoded " invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-static {p4}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getBitmapString(Landroid/graphics/Bitmap;)Ljava/lang/String; move-result-object p4 invoke-virtual {v0, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p4 const-string v0, " from [" invoke-virtual {p4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p4 invoke-virtual {p4, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p0 const-string p4, "x" invoke-virtual {p0, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, "] " invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, " with inBitmap " invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 .line 623 invoke-static {p3}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getInBitmapString(Landroid/graphics/BitmapFactory$Options;)Ljava/lang/String; move-result-object p1 invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, " for [" invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0, p5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0, p6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, "], sample size: " invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 iget p1, p3, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, ", density: " invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 iget p1, p3, Landroid/graphics/BitmapFactory$Options;->inDensity:I invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, ", target density: " invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 iget p1, p3, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, ", thread: " invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 .line 628 invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread; move-result-object p1 invoke-virtual {p1}, Ljava/lang/Thread;->getName()Ljava/lang/String; move-result-object p1 invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, ", duration: " invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 .line 629 invoke-static {p7, p8}, Lcom/bumptech/glide/util/LogTime;->getElapsedMillis(J)D move-result-wide p1 invoke-virtual {p0, p1, p2}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 .line 621 const-string p1, "Downsampler" invoke-static {p1, p0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I return-void .end method .method private static newIoExceptionForInBitmapAssertion(Ljava/lang/IllegalArgumentException;IILjava/lang/String;Landroid/graphics/BitmapFactory$Options;)Ljava/io/IOException; .registers 8 .line 655 new-instance v0, Ljava/io/IOException; new-instance v1, Ljava/lang/StringBuilder; const-string v2, "Exception decoding bitmap, outWidth: " invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p1 const-string v1, ", outHeight: " invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object p1 const-string p2, ", outMimeType: " invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 const-string p2, ", inBitmap: " invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 .line 659 invoke-static {p4}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getInBitmapString(Landroid/graphics/BitmapFactory$Options;)Ljava/lang/String; move-result-object p2 invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-direct {v0, p1, p0}, Ljava/io/IOException;->(Ljava/lang/String;Ljava/lang/Throwable;)V return-object v0 .end method .method private static releaseOptions(Landroid/graphics/BitmapFactory$Options;)V .registers 2 .line 703 invoke-static {p0}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->resetOptions(Landroid/graphics/BitmapFactory$Options;)V .line 704 sget-object v0, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->OPTIONS_QUEUE:Ljava/util/Queue; monitor-enter v0 .line 705 :try_start_6 invoke-interface {v0, p0}, Ljava/util/Queue;->offer(Ljava/lang/Object;)Z .line 706 monitor-exit v0 return-void :catchall_b move-exception p0 monitor-exit v0 :try_end_d .catchall {:try_start_6 .. :try_end_d} :catchall_b throw p0 .end method .method private static resetOptions(Landroid/graphics/BitmapFactory$Options;)V .registers 4 const/4 v0, 0x0 .line 711 iput-object v0, p0, Landroid/graphics/BitmapFactory$Options;->inTempStorage:[B const/4 v1, 0x0 .line 712 iput-boolean v1, p0, Landroid/graphics/BitmapFactory$Options;->inDither:Z .line 713 iput-boolean v1, p0, Landroid/graphics/BitmapFactory$Options;->inScaled:Z const/4 v2, 0x1 .line 714 iput v2, p0, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I .line 715 iput-object v0, p0, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config; .line 716 iput-boolean v1, p0, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z .line 717 iput v1, p0, Landroid/graphics/BitmapFactory$Options;->inDensity:I .line 718 iput v1, p0, Landroid/graphics/BitmapFactory$Options;->inTargetDensity:I .line 719 iput v1, p0, Landroid/graphics/BitmapFactory$Options;->outWidth:I .line 720 iput v1, p0, Landroid/graphics/BitmapFactory$Options;->outHeight:I .line 721 iput-object v0, p0, Landroid/graphics/BitmapFactory$Options;->outMimeType:Ljava/lang/String; .line 722 iput-object v0, p0, Landroid/graphics/BitmapFactory$Options;->inBitmap:Landroid/graphics/Bitmap; .line 723 iput-boolean v2, p0, Landroid/graphics/BitmapFactory$Options;->inMutable:Z return-void .end method .method private static round(D)I .registers 4 const-wide/high16 v0, 0x3fe0000000000000L # 0.5 add-double/2addr p0, v0 double-to-int p0, p0 return p0 .end method .method private static setInBitmap(Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;II)V .registers 6 .line 668 sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1a if-lt v0, v1, :cond_10 .line 669 iget-object v0, p0, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config; sget-object v1, Landroid/graphics/Bitmap$Config;->HARDWARE:Landroid/graphics/Bitmap$Config; if-ne v0, v1, :cond_d return-void .line 674 :cond_d iget-object v0, p0, Landroid/graphics/BitmapFactory$Options;->outConfig:Landroid/graphics/Bitmap$Config; goto :goto_11 :cond_10 const/4 v0, 0x0 :goto_11 if-nez v0, :cond_15 .line 683 iget-object v0, p0, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config; .line 686 :cond_15 invoke-interface {p1, p2, p3, v0}, Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool;->getDirty(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object p1 iput-object p1, p0, Landroid/graphics/BitmapFactory$Options;->inBitmap:Landroid/graphics/Bitmap; return-void .end method .method private shouldUsePool(Lcom/bumptech/glide/load/ImageHeaderParser$ImageType;)Z .registers 2 const/4 p1, 0x1 return p1 .end method # virtual methods .method public decode(Ljava/io/InputStream;IILcom/bumptech/glide/load/Options;)Lcom/bumptech/glide/load/engine/Resource; .registers 11 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/io/InputStream;", "II", "Lcom/bumptech/glide/load/Options;", ")", "Lcom/bumptech/glide/load/engine/Resource<", "Landroid/graphics/Bitmap;", ">;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 162 sget-object v5, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->EMPTY_CALLBACKS:Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks; move-object v0, p0 move-object v1, p1 move v2, p2 move v3, p3 move-object v4, p4 invoke-virtual/range {v0 .. v5}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->decode(Ljava/io/InputStream;IILcom/bumptech/glide/load/Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;)Lcom/bumptech/glide/load/engine/Resource; move-result-object p1 return-object p1 .end method .method public decode(Ljava/io/InputStream;IILcom/bumptech/glide/load/Options;Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;)Lcom/bumptech/glide/load/engine/Resource; .registers 20 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/io/InputStream;", "II", "Lcom/bumptech/glide/load/Options;", "Lcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;", ")", "Lcom/bumptech/glide/load/engine/Resource<", "Landroid/graphics/Bitmap;", ">;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation move-object v11, p0 move-object/from16 v0, p4 .line 192 invoke-virtual {p1}, Ljava/io/InputStream;->markSupported()Z move-result v1 const-string v2, "You must provide an InputStream that supports mark()" invoke-static {v1, v2}, Lcom/bumptech/glide/util/Preconditions;->checkArgument(ZLjava/lang/String;)V .line 195 iget-object v1, v11, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->byteArrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; const/high16 v2, 0x10000 const-class v3, [B invoke-interface {v1, v2, v3}, Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;->get(ILjava/lang/Class;)Ljava/lang/Object; move-result-object v1 move-object v12, v1 check-cast v12, [B .line 196 invoke-static {}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->getDefaultOptions()Landroid/graphics/BitmapFactory$Options; move-result-object v13 .line 197 iput-object v12, v13, Landroid/graphics/BitmapFactory$Options;->inTempStorage:[B .line 199 sget-object v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->DECODE_FORMAT:Lcom/bumptech/glide/load/Option; invoke-virtual {v0, v1}, Lcom/bumptech/glide/load/Options;->get(Lcom/bumptech/glide/load/Option;)Ljava/lang/Object; move-result-object v1 move-object v5, v1 check-cast v5, Lcom/bumptech/glide/load/DecodeFormat; .line 200 sget-object v1, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;->OPTION:Lcom/bumptech/glide/load/Option; invoke-virtual {v0, v1}, Lcom/bumptech/glide/load/Options;->get(Lcom/bumptech/glide/load/Option;)Ljava/lang/Object; move-result-object v1 move-object v4, v1 check-cast v4, Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy; .line 201 sget-object v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->FIX_BITMAP_SIZE_TO_REQUESTED_DIMENSIONS:Lcom/bumptech/glide/load/Option; invoke-virtual {v0, v1}, Lcom/bumptech/glide/load/Options;->get(Lcom/bumptech/glide/load/Option;)Ljava/lang/Object; move-result-object v1 check-cast v1, Ljava/lang/Boolean; invoke-virtual {v1}, Ljava/lang/Boolean;->booleanValue()Z move-result v9 .line 202 sget-object v1, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->ALLOW_HARDWARE_CONFIG:Lcom/bumptech/glide/load/Option; .line 203 invoke-virtual {v0, v1}, Lcom/bumptech/glide/load/Options;->get(Lcom/bumptech/glide/load/Option;)Ljava/lang/Object; move-result-object v2 if-eqz v2, :cond_53 invoke-virtual {v0, v1}, Lcom/bumptech/glide/load/Options;->get(Lcom/bumptech/glide/load/Option;)Ljava/lang/Object; move-result-object v0 check-cast v0, Ljava/lang/Boolean; invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z move-result v0 if-eqz v0, :cond_53 const/4 v0, 0x1 goto :goto_54 :cond_53 const/4 v0, 0x0 :goto_54 move v6, v0 move-object v1, p0 move-object v2, p1 move-object v3, v13 move/from16 v7, p2 move/from16 v8, p3 move-object/from16 v10, p5 .line 206 :try_start_5e invoke-direct/range {v1 .. v10}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->decodeFromWrappedStreams(Ljava/io/InputStream;Landroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/resource/bitmap/DownsampleStrategy;Lcom/bumptech/glide/load/DecodeFormat;ZIIZLcom/bumptech/glide/load/resource/bitmap/Downsampler$DecodeCallbacks;)Landroid/graphics/Bitmap; move-result-object v0 .line 209 iget-object v1, v11, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->bitmapPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/BitmapPool; invoke-static {v0, v1}, 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 v0 :try_end_68 .catchall {:try_start_5e .. :try_end_68} :catchall_71 .line 211 invoke-static {v13}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->releaseOptions(Landroid/graphics/BitmapFactory$Options;)V .line 212 iget-object v1, v11, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->byteArrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; invoke-interface {v1, v12}, Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;->put(Ljava/lang/Object;)V return-object v0 :catchall_71 move-exception v0 .line 211 invoke-static {v13}, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->releaseOptions(Landroid/graphics/BitmapFactory$Options;)V .line 212 iget-object v1, v11, Lcom/bumptech/glide/load/resource/bitmap/Downsampler;->byteArrayPool:Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool; invoke-interface {v1, v12}, Lcom/bumptech/glide/load/engine/bitmap_recycle/ArrayPool;->put(Ljava/lang/Object;)V throw v0 .end method .method public handles(Ljava/io/InputStream;)Z .registers 2 const/4 p1, 0x1 return p1 .end method .method public handles(Ljava/nio/ByteBuffer;)Z .registers 2 const/4 p1, 0x1 return p1 .end method