.class final Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer; .super Ljava/lang/Object; .source "ViewTarget.java" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lcom/bumptech/glide/request/target/ViewTarget; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x18 name = "SizeDeterminer" .end annotation .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/bumptech/glide/request/target/ViewTarget$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/ViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; .field private final view:Landroid/view/View; .field waitForLayout:Z # direct methods .method constructor (Landroid/view/View;)V .registers 3 .line 342 invoke-direct {p0}, Ljava/lang/Object;->()V .line 337 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V iput-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->cbs:Ljava/util/List; .line 343 iput-object p1, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->view:Landroid/view/View; return-void .end method .method private static getMaxDisplayLength(Landroid/content/Context;)I .registers 2 .line 348 sget-object v0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->maxDisplayLength:Ljava/lang/Integer; if-nez v0, :cond_2c .line 349 const-string v0, "window" .line 350 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 351 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 352 new-instance v0, Landroid/graphics/Point; invoke-direct {v0}, Landroid/graphics/Point;->()V .line 353 invoke-virtual {p0, v0}, Landroid/view/Display;->getSize(Landroid/graphics/Point;)V .line 354 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/ViewTarget$SizeDeterminer;->maxDisplayLength:Ljava/lang/Integer; .line 356 :cond_2c sget-object p0, Lcom/bumptech/glide/request/target/ViewTarget$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 460 :cond_5 iget-boolean v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->waitForLayout:Z const/4 v1, 0x0 if-eqz v0, :cond_13 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$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 487 :cond_17 iget-object p1, p0, Lcom/bumptech/glide/request/target/ViewTarget$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 488 const-string p2, "ViewTarget" invoke-static {p2, p1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result p1 if-eqz p1, :cond_30 .line 489 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 496 :cond_30 iget-object p1, p0, Lcom/bumptech/glide/request/target/ViewTarget$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/ViewTarget$SizeDeterminer;->getMaxDisplayLength(Landroid/content/Context;)I move-result p1 return p1 :cond_3b return v1 .end method .method private getTargetHeight()I .registers 4 .line 435 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$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/ViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v1}, Landroid/view/View;->getPaddingBottom()I move-result v1 add-int/2addr v0, v1 .line 436 iget-object v1, p0, Lcom/bumptech/glide/request/target/ViewTarget$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 437 iget v1, v1, Landroid/view/ViewGroup$LayoutParams;->height:I goto :goto_19 :cond_18 const/4 v1, 0x0 .line 438 :goto_19 iget-object v2, p0, Lcom/bumptech/glide/request/target/ViewTarget$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/ViewTarget$SizeDeterminer;->getTargetDimen(III)I move-result v0 return v0 .end method .method private getTargetWidth()I .registers 4 .line 442 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$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/ViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v1}, Landroid/view/View;->getPaddingRight()I move-result v1 add-int/2addr v0, v1 .line 443 iget-object v1, p0, Lcom/bumptech/glide/request/target/ViewTarget$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 444 iget v1, v1, Landroid/view/ViewGroup$LayoutParams;->width:I goto :goto_19 :cond_18 const/4 v1, 0x0 .line 445 :goto_19 iget-object v2, p0, Lcom/bumptech/glide/request/target/ViewTarget$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/ViewTarget$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 431 invoke-direct {p0, p1}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->isDimensionValid(I)Z move-result p1 if-eqz p1, :cond_e invoke-direct {p0, p2}, Lcom/bumptech/glide/request/target/ViewTarget$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 364 new-instance v0, Ljava/util/ArrayList; iget-object v1, p0, Lcom/bumptech/glide/request/target/ViewTarget$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 365 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 371 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->isEmpty()Z move-result v0 if-eqz v0, :cond_9 return-void .line 375 :cond_9 invoke-direct {p0}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->getTargetWidth()I move-result v0 .line 376 invoke-direct {p0}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->getTargetHeight()I move-result v1 .line 377 invoke-direct {p0, v0, v1}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->isViewStateAndSizeValid(II)Z move-result v2 if-nez v2, :cond_18 return-void .line 381 :cond_18 invoke-direct {p0, v0, v1}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->notifyCbs(II)V .line 382 invoke-virtual {p0}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->clearCallbacksAndListener()V return-void .end method .method clearCallbacksAndListener()V .registers 3 .line 422 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {v0}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; move-result-object v0 .line 423 invoke-virtual {v0}, Landroid/view/ViewTreeObserver;->isAlive()Z move-result v1 if-eqz v1, :cond_11 .line 424 iget-object v1, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->layoutListener:Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; invoke-virtual {v0, v1}, Landroid/view/ViewTreeObserver;->removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V :cond_11 const/4 v0, 0x0 .line 426 iput-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->layoutListener:Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; .line 427 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$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 386 invoke-direct {p0}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->getTargetWidth()I move-result v0 .line 387 invoke-direct {p0}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->getTargetHeight()I move-result v1 .line 388 invoke-direct {p0, v0, v1}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->isViewStateAndSizeValid(II)Z move-result v2 if-eqz v2, :cond_12 .line 389 invoke-interface {p1, v0, v1}, Lcom/bumptech/glide/request/target/SizeReadyCallback;->onSizeReady(II)V return-void .line 395 :cond_12 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$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 396 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 398 :cond_1f iget-object p1, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->layoutListener:Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; if-nez p1, :cond_33 .line 399 iget-object p1, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->view:Landroid/view/View; invoke-virtual {p1}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; move-result-object p1 .line 400 new-instance v0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; invoke-direct {v0, p0}, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer$SizeDeterminerLayoutListener;->(Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;)V iput-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->layoutListener:Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer$SizeDeterminerLayoutListener; .line 401 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 412 iget-object v0, p0, Lcom/bumptech/glide/request/target/ViewTarget$SizeDeterminer;->cbs:Ljava/util/List; invoke-interface {v0, p1}, Ljava/util/List;->remove(Ljava/lang/Object;)Z return-void .end method