.class final Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer; .super Ljava/lang/Object; .source "CustomViewTarget.java" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lcom/bumptech/glide/request/target/CustomViewTarget; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x18 name = "SizeDeterminer" .end annotation .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; } .end annotation # static fields .field private static final PENDING_SIZE:I .field static maxDisplayLength:Ljava/lang/Integer; # instance fields .field private final cbs:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Lcom/bumptech/glide/request/target/SizeReadyCallback;", ">;" } .end annotation .end field .field private layoutListener:Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; .field private final view:Landroid/view/View; .field waitForLayout:Z # direct methods .method constructor (Landroid/view/View;)V .registers 3 .line 308 invoke-direct {p0}, Ljava/lang/Object;->()V .line 303 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V iput-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->cbs:Ljava/util/List; .line 309 iput-object p1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; return-void .end method .method private static getMaxDisplayLength(Landroid/content/Context;)I .registers 2 .line 314 sget-object v0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->maxDisplayLength:Ljava/lang/Integer; if-nez v0, :cond_2c .line 315 const-string v0, "window" .line 316 invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object p0 check-cast p0, Landroid/view/WindowManager; .line 317 invoke-static {p0}, Lcom/bumptech/glide/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p0 check-cast p0, Landroid/view/WindowManager; invoke-interface {p0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display; move-result-object p0 .line 318 new-instance v0, Landroid/graphics/Point; invoke-direct {v0}, Landroid/graphics/Point;->()V .line 319 invoke-virtual {p0, v0}, Landroid/view/Display;->getSize(Landroid/graphics/Point;)V .line 320 iget p0, v0, Landroid/graphics/Point;->x:I iget v0, v0, Landroid/graphics/Point;->y:I invoke-static {p0, v0}, Ljava/lang/Math;->max(II)I move-result p0 invoke-static {p0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object p0 sput-object p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->maxDisplayLength:Ljava/lang/Integer; .line 322 :cond_2c sget-object p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->maxDisplayLength:Ljava/lang/Integer; invoke-virtual {p0}, Ljava/lang/Integer;->intValue()I move-result p0 return p0 .end method .method private getTargetDimen(III)I .registers 6 sub-int v0, p2, p3 if-lez v0, :cond_5 return v0 .line 426 :cond_5 iget-boolean v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->waitForLayout:Z const/4 v1, 0x0 if-eqz v0, :cond_13 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v0}, Landroid/view/View;->isLayoutRequested()Z move-result v0 if-eqz v0, :cond_13 return v1 :cond_13 sub-int/2addr p1, p3 if-lez p1, :cond_17 return p1 .line 453 :cond_17 iget-object p1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {p1}, Landroid/view/View;->isLayoutRequested()Z move-result p1 if-nez p1, :cond_3b const/4 p1, -0x2 if-ne p2, p1, :cond_3b const/4 p1, 0x4 .line 454 const-string p2, "CustomViewTarget" invoke-static {p2, p1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result p1 if-eqz p1, :cond_30 .line 455 const-string p1, "Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device\'s screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions." invoke-static {p2, p1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I .line 462 :cond_30 iget-object p1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {p1}, Landroid/view/View;->getContext()Landroid/content/Context; move-result-object p1 invoke-static {p1}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->getMaxDisplayLength(Landroid/content/Context;)I move-result p1 return p1 :cond_3b return v1 .end method .method private getTargetHeight()I .registers 4 .line 401 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v0}, Landroid/view/View;->getPaddingTop()I move-result v0 iget-object v1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v1}, Landroid/view/View;->getPaddingBottom()I move-result v1 add-int/2addr v0, v1 .line 402 iget-object v1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v1}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; move-result-object v1 if-eqz v1, :cond_18 .line 403 iget v1, v1, Landroid/view/ViewGroup$LayoutParams;->height:I goto :goto_19 :cond_18 const/4 v1, 0x0 .line 404 :goto_19 iget-object v2, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v2}, Landroid/view/View;->getHeight()I move-result v2 invoke-direct {p0, v2, v1, v0}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->getTargetDimen(III)I move-result v0 return v0 .end method .method private getTargetWidth()I .registers 4 .line 408 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v0}, Landroid/view/View;->getPaddingLeft()I move-result v0 iget-object v1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v1}, Landroid/view/View;->getPaddingRight()I move-result v1 add-int/2addr v0, v1 .line 409 iget-object v1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v1}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; move-result-object v1 if-eqz v1, :cond_18 .line 410 iget v1, v1, Landroid/view/ViewGroup$LayoutParams;->width:I goto :goto_19 :cond_18 const/4 v1, 0x0 .line 411 :goto_19 iget-object v2, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v2}, Landroid/view/View;->getWidth()I move-result v2 invoke-direct {p0, v2, v1, v0}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->getTargetDimen(III)I move-result v0 return v0 .end method .method private isDimensionValid(I)Z .registers 3 if-gtz p1, :cond_9 const/high16 v0, -0x80000000 if-ne p1, v0, :cond_7 goto :goto_9 :cond_7 const/4 p1, 0x0 goto :goto_a :cond_9 :goto_9 const/4 p1, 0x1 :goto_a return p1 .end method .method private isViewStateAndSizeValid(II)Z .registers 3 .line 397 invoke-direct {p0, p1}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->isDimensionValid(I)Z move-result p1 if-eqz p1, :cond_e invoke-direct {p0, p2}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->isDimensionValid(I)Z move-result p1 if-eqz p1, :cond_e const/4 p1, 0x1 goto :goto_f :cond_e const/4 p1, 0x0 :goto_f return p1 .end method .method private notifyCbs(II)V .registers 5 .line 330 new-instance v0, Ljava/util/ArrayList; iget-object v1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-direct {v0, v1}, Ljava/util/ArrayList;->(Ljava/util/Collection;)V invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; move-result-object v0 :goto_b invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_1b invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 check-cast v1, Lcom/bumptech/glide/request/target/SizeReadyCallback; .line 331 invoke-interface {v1, p1, p2}, Lcom/bumptech/glide/request/target/SizeReadyCallback;->onSizeReady(II)V goto :goto_b :cond_1b return-void .end method # virtual methods .method checkCurrentDimens()V .registers 4 .line 337 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->isEmpty()Z move-result v0 if-eqz v0, :cond_9 return-void .line 341 :cond_9 invoke-direct {p0}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->getTargetWidth()I move-result v0 .line 342 invoke-direct {p0}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->getTargetHeight()I move-result v1 .line 343 invoke-direct {p0, v0, v1}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->isViewStateAndSizeValid(II)Z move-result v2 if-nez v2, :cond_18 return-void .line 347 :cond_18 invoke-direct {p0, v0, v1}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->notifyCbs(II)V .line 348 invoke-virtual {p0}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->clearCallbacksAndListener()V return-void .end method .method clearCallbacksAndListener()V .registers 3 .line 388 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v0}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; move-result-object v0 .line 389 invoke-virtual {v0}, Landroid/view/ViewTreeObserver;->isAlive()Z move-result v1 if-eqz v1, :cond_11 .line 390 iget-object v1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->layoutListener:Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; invoke-virtual {v0, v1}, Landroid/view/ViewTreeObserver;->removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V :cond_11 const/4 v0, 0x0 .line 392 iput-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->layoutListener:Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; .line 393 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->clear()V return-void .end method .method getSize(Lcom/bumptech/glide/request/target/SizeReadyCallback;)V .registers 5 .line 352 invoke-direct {p0}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->getTargetWidth()I move-result v0 .line 353 invoke-direct {p0}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->getTargetHeight()I move-result v1 .line 354 invoke-direct {p0, v0, v1}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->isViewStateAndSizeValid(II)Z move-result v2 if-eqz v2, :cond_12 .line 355 invoke-interface {p1, v0, v1}, Lcom/bumptech/glide/request/target/SizeReadyCallback;->onSizeReady(II)V return-void .line 361 :cond_12 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-interface {v0, p1}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_1f .line 362 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 364 :cond_1f iget-object p1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->layoutListener:Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; if-nez p1, :cond_33 .line 365 iget-object p1, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {p1}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; move-result-object p1 .line 366 new-instance v0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; invoke-direct {v0, p0}, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer$SizeDeterminerLayoutListener;->(Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;)V iput-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->layoutListener:Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; .line 367 invoke-virtual {p1, v0}, Landroid/view/ViewTreeObserver;->addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V :cond_33 return-void .end method .method removeCallback(Lcom/bumptech/glide/request/target/SizeReadyCallback;)V .registers 3 .line 378 iget-object v0, p0, Lcom/bumptech/glide/request/target/CustomViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-interface {v0, p1}, Ljava/util/List;->remove(Ljava/lang/Object;)Z return-void .end method