.class public Lcom/yalantis/ucrop/view/CropImageView; .super Lcom/yalantis/ucrop/view/TransformImageView; .source "CropImageView.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/yalantis/ucrop/view/CropImageView$WrapCropBoundsRunnable;, Lcom/yalantis/ucrop/view/CropImageView$ZoomImageToPosition; } .end annotation # static fields .field public static final DEFAULT_ASPECT_RATIO:F = 0.0f .field public static final DEFAULT_IMAGE_TO_CROP_BOUNDS_ANIM_DURATION:I = 0x1f4 .field public static final DEFAULT_MAX_BITMAP_SIZE:I = 0x0 .field public static final DEFAULT_MAX_SCALE_MULTIPLIER:F = 10.0f .field public static final SOURCE_IMAGE_ASPECT_RATIO:F # instance fields .field private mCropBoundsChangeListener:Lcom/yalantis/ucrop/callback/CropBoundsChangeListener; .field private final mCropRect:Landroid/graphics/RectF; .field private mImageToWrapCropBoundsAnimDuration:J .field private mMaxResultImageSizeX:I .field private mMaxResultImageSizeY:I .field private mMaxScale:F .field private mMaxScaleMultiplier:F .field private mMinScale:F .field private mTargetAspectRatio:F .field private final mTempMatrix:Landroid/graphics/Matrix; .field private mWrapCropBoundsRunnable:Ljava/lang/Runnable; .field private mZoomImageToPositionRunnable:Ljava/lang/Runnable; # direct methods .method public constructor (Landroid/content/Context;)V .registers 3 const/4 v0, 0x0 .line 57 invoke-direct {p0, p1, v0}, Lcom/yalantis/ucrop/view/CropImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V return-void .end method .method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;)V .registers 4 const/4 v0, 0x0 .line 61 invoke-direct {p0, p1, p2, v0}, Lcom/yalantis/ucrop/view/CropImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V return-void .end method .method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;I)V .registers 4 .line 65 invoke-direct {p0, p1, p2, p3}, Lcom/yalantis/ucrop/view/TransformImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V .line 41 new-instance p1, Landroid/graphics/RectF; invoke-direct {p1}, Landroid/graphics/RectF;->()V iput-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; .line 43 new-instance p1, Landroid/graphics/Matrix; invoke-direct {p1}, Landroid/graphics/Matrix;->()V iput-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; const/high16 p1, 0x41200000 # 10.0f .line 46 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxScaleMultiplier:F const/4 p1, 0x0 .line 50 iput-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mZoomImageToPositionRunnable:Ljava/lang/Runnable; const/4 p1, 0x0 .line 53 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxResultImageSizeX:I iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxResultImageSizeY:I const-wide/16 p1, 0x1f4 .line 54 iput-wide p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mImageToWrapCropBoundsAnimDuration:J return-void .end method .method static synthetic access$000(Lcom/yalantis/ucrop/view/CropImageView;)Landroid/graphics/RectF; .registers 1 .line 33 iget-object p0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; return-object p0 .end method .method private calculateImageIndents()[F .registers 7 .line 333 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v0}, Landroid/graphics/Matrix;->reset()V .line 334 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentAngle()F move-result v1 neg-float v1, v1 invoke-virtual {v0, v1}, Landroid/graphics/Matrix;->setRotate(F)V .line 336 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCorners:[F iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCorners:[F array-length v1, v1 invoke-static {v0, v1}, Ljava/util/Arrays;->copyOf([FI)[F move-result-object v0 .line 337 iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-static {v1}, Lcom/yalantis/ucrop/util/RectUtils;->getCornersFromRect(Landroid/graphics/RectF;)[F move-result-object v1 .line 339 iget-object v2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v2, v0}, Landroid/graphics/Matrix;->mapPoints([F)V .line 340 iget-object v2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v2, v1}, Landroid/graphics/Matrix;->mapPoints([F)V .line 342 invoke-static {v0}, Lcom/yalantis/ucrop/util/RectUtils;->trapToRect([F)Landroid/graphics/RectF; move-result-object v0 .line 343 invoke-static {v1}, Lcom/yalantis/ucrop/util/RectUtils;->trapToRect([F)Landroid/graphics/RectF; move-result-object v1 .line 345 iget v2, v0, Landroid/graphics/RectF;->left:F iget v3, v1, Landroid/graphics/RectF;->left:F sub-float/2addr v2, v3 .line 346 iget v3, v0, Landroid/graphics/RectF;->top:F iget v4, v1, Landroid/graphics/RectF;->top:F sub-float/2addr v3, v4 .line 347 iget v4, v0, Landroid/graphics/RectF;->right:F iget v5, v1, Landroid/graphics/RectF;->right:F sub-float/2addr v4, v5 .line 348 iget v0, v0, Landroid/graphics/RectF;->bottom:F iget v1, v1, Landroid/graphics/RectF;->bottom:F sub-float/2addr v0, v1 const/4 v1, 0x0 cmpl-float v5, v2, v1 if-lez v5, :cond_4a goto :goto_4b :cond_4a move v2, v1 :goto_4b cmpl-float v5, v3, v1 if-lez v5, :cond_50 goto :goto_51 :cond_50 move v3, v1 :goto_51 cmpg-float v5, v4, v1 if-gez v5, :cond_56 goto :goto_57 :cond_56 move v4, v1 :goto_57 cmpg-float v5, v0, v1 if-gez v5, :cond_5c goto :goto_5d :cond_5c move v0, v1 :goto_5d const/4 v1, 0x4 .line 354 new-array v1, v1, [F const/4 v5, 0x0 aput v2, v1, v5 const/4 v2, 0x1 aput v3, v1, v2 const/4 v2, 0x2 aput v4, v1, v2 const/4 v2, 0x3 aput v0, v1, v2 .line 356 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v0}, Landroid/graphics/Matrix;->reset()V .line 357 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentAngle()F move-result v2 invoke-virtual {v0, v2}, Landroid/graphics/Matrix;->setRotate(F)V .line 358 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v0, v1}, Landroid/graphics/Matrix;->mapPoints([F)V return-object v1 .end method .method private calculateImageScaleBounds()V .registers 3 .line 451 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getDrawable()Landroid/graphics/drawable/Drawable; move-result-object v0 if-nez v0, :cond_7 return-void .line 455 :cond_7 invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I move-result v1 int-to-float v1, v1 invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I move-result v0 int-to-float v0, v0 invoke-direct {p0, v1, v0}, Lcom/yalantis/ucrop/view/CropImageView;->calculateImageScaleBounds(FF)V return-void .end method .method private calculateImageScaleBounds(FF)V .registers 5 .line 465 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v0}, Landroid/graphics/RectF;->width()F move-result v0 div-float/2addr v0, p1 iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v1}, Landroid/graphics/RectF;->width()F move-result v1 div-float/2addr v1, p2 invoke-static {v0, v1}, Ljava/lang/Math;->min(FF)F move-result v0 .line 466 iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v1}, Landroid/graphics/RectF;->height()F move-result v1 div-float/2addr v1, p2 iget-object p2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {p2}, Landroid/graphics/RectF;->height()F move-result p2 div-float/2addr p2, p1 invoke-static {v1, p2}, Ljava/lang/Math;->min(FF)F move-result p1 .line 468 invoke-static {v0, p1}, Ljava/lang/Math;->min(FF)F move-result p1 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMinScale:F .line 469 iget p2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxScaleMultiplier:F mul-float/2addr p1, p2 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxScale:F return-void .end method .method private setupInitialImagePosition(FF)V .registers 7 .line 480 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v0}, Landroid/graphics/RectF;->width()F move-result v0 .line 481 iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v1}, Landroid/graphics/RectF;->height()F move-result v1 .line 483 iget-object v2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v2}, Landroid/graphics/RectF;->width()F move-result v2 div-float/2addr v2, p1 .line 484 iget-object v3, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v3}, Landroid/graphics/RectF;->height()F move-result v3 div-float/2addr v3, p2 .line 486 invoke-static {v2, v3}, Ljava/lang/Math;->max(FF)F move-result v2 mul-float/2addr p1, v2 sub-float/2addr v0, p1 const/high16 p1, 0x40000000 # 2.0f div-float/2addr v0, p1 .line 488 iget-object v3, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; iget v3, v3, Landroid/graphics/RectF;->left:F add-float/2addr v0, v3 mul-float/2addr p2, v2 sub-float/2addr v1, p2 div-float/2addr v1, p1 .line 489 iget-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; iget p1, p1, Landroid/graphics/RectF;->top:F add-float/2addr v1, p1 .line 491 iget-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageMatrix:Landroid/graphics/Matrix; invoke-virtual {p1}, Landroid/graphics/Matrix;->reset()V .line 492 iget-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageMatrix:Landroid/graphics/Matrix; invoke-virtual {p1, v2, v2}, Landroid/graphics/Matrix;->postScale(FF)Z .line 493 iget-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageMatrix:Landroid/graphics/Matrix; invoke-virtual {p1, v0, v1}, Landroid/graphics/Matrix;->postTranslate(FF)Z .line 494 iget-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageMatrix:Landroid/graphics/Matrix; invoke-virtual {p0, p1}, Lcom/yalantis/ucrop/view/CropImageView;->setImageMatrix(Landroid/graphics/Matrix;)V return-void .end method # virtual methods .method public cancelAllAnimations()V .registers 2 .line 259 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mWrapCropBoundsRunnable:Ljava/lang/Runnable; invoke-virtual {p0, v0}, Lcom/yalantis/ucrop/view/CropImageView;->removeCallbacks(Ljava/lang/Runnable;)Z .line 260 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mZoomImageToPositionRunnable:Ljava/lang/Runnable; invoke-virtual {p0, v0}, Lcom/yalantis/ucrop/view/CropImageView;->removeCallbacks(Ljava/lang/Runnable;)Z return-void .end method .method public cropAndSaveImage(Landroid/graphics/Bitmap$CompressFormat;ILcom/yalantis/ucrop/callback/BitmapCropCallback;)V .registers 19 move-object v0, p0 .line 74 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->cancelAllAnimations()V const/4 v1, 0x0 .line 75 invoke-virtual {p0, v1}, Lcom/yalantis/ucrop/view/CropImageView;->setImageToWrapCropBounds(Z)V .line 77 new-instance v5, Lcom/yalantis/ucrop/model/ImageState; iget-object v2, v0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; iget-object v3, v0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCorners:[F .line 78 invoke-static {v3}, Lcom/yalantis/ucrop/util/RectUtils;->trapToRect([F)Landroid/graphics/RectF; move-result-object v3 .line 79 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentScale()F move-result v4 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentAngle()F move-result v6 invoke-direct {v5, v2, v3, v4, v6}, Lcom/yalantis/ucrop/model/ImageState;->(Landroid/graphics/RectF;Landroid/graphics/RectF;FF)V .line 81 new-instance v6, Lcom/yalantis/ucrop/model/CropParameters; iget v8, v0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxResultImageSizeX:I iget v9, v0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxResultImageSizeY:I .line 84 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getImageInputUri()Landroid/net/Uri; move-result-object v12 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getImageOutputPath()Ljava/lang/String; move-result-object v13 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getExifInfo()Lcom/yalantis/ucrop/model/ExifInfo; move-result-object v14 move-object v7, v6 move-object/from16 v10, p1 move/from16 v11, p2 invoke-direct/range {v7 .. v14}, Lcom/yalantis/ucrop/model/CropParameters;->(IILandroid/graphics/Bitmap$CompressFormat;ILandroid/net/Uri;Ljava/lang/String;Lcom/yalantis/ucrop/model/ExifInfo;)V .line 86 new-instance v8, Lcom/yalantis/ucrop/task/BitmapCropTask; invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getContext()Landroid/content/Context; move-result-object v3 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getViewBitmap()Landroid/graphics/Bitmap; move-result-object v4 move-object v2, v8 move-object/from16 v7, p3 invoke-direct/range {v2 .. v7}, Lcom/yalantis/ucrop/task/BitmapCropTask;->(Landroid/content/Context;Landroid/graphics/Bitmap;Lcom/yalantis/ucrop/model/ImageState;Lcom/yalantis/ucrop/model/CropParameters;Lcom/yalantis/ucrop/callback/BitmapCropCallback;)V new-array v1, v1, [Ljava/lang/Void; invoke-virtual {v8, v1}, Lcom/yalantis/ucrop/task/BitmapCropTask;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; return-void .end method .method public getCropBoundsChangeListener()Lcom/yalantis/ucrop/callback/CropBoundsChangeListener; .registers 2 .line 151 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropBoundsChangeListener:Lcom/yalantis/ucrop/callback/CropBoundsChangeListener; return-object v0 .end method .method public getMaxScale()F .registers 2 .line 93 iget v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxScale:F return v0 .end method .method public getMinScale()F .registers 2 .line 100 iget v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMinScale:F return v0 .end method .method public getTargetAspectRatio()F .registers 2 .line 107 iget v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F return v0 .end method .method protected isImageWrapCropBounds()Z .registers 2 .line 407 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCorners:[F invoke-virtual {p0, v0}, Lcom/yalantis/ucrop/view/CropImageView;->isImageWrapCropBounds([F)Z move-result v0 return v0 .end method .method protected isImageWrapCropBounds([F)Z .registers 4 .line 418 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v0}, Landroid/graphics/Matrix;->reset()V .line 419 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentAngle()F move-result v1 neg-float v1, v1 invoke-virtual {v0, v1}, Landroid/graphics/Matrix;->setRotate(F)V .line 421 array-length v0, p1 invoke-static {p1, v0}, Ljava/util/Arrays;->copyOf([FI)[F move-result-object p1 .line 422 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v0, p1}, Landroid/graphics/Matrix;->mapPoints([F)V .line 424 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-static {v0}, Lcom/yalantis/ucrop/util/RectUtils;->getCornersFromRect(Landroid/graphics/RectF;)[F move-result-object v0 .line 425 iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v1, v0}, Landroid/graphics/Matrix;->mapPoints([F)V .line 427 invoke-static {p1}, Lcom/yalantis/ucrop/util/RectUtils;->trapToRect([F)Landroid/graphics/RectF; move-result-object p1 invoke-static {v0}, Lcom/yalantis/ucrop/util/RectUtils;->trapToRect([F)Landroid/graphics/RectF; move-result-object v0 invoke-virtual {p1, v0}, Landroid/graphics/RectF;->contains(Landroid/graphics/RectF;)Z move-result p1 return p1 .end method .method protected onImageLaidOut()V .registers 9 .line 368 invoke-super {p0}, Lcom/yalantis/ucrop/view/TransformImageView;->onImageLaidOut()V .line 369 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getDrawable()Landroid/graphics/drawable/Drawable; move-result-object v0 if-nez v0, :cond_a return-void .line 374 :cond_a invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I move-result v1 int-to-float v1, v1 .line 375 invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I move-result v0 int-to-float v0, v0 .line 377 iget v2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F const/4 v3, 0x0 cmpl-float v2, v2, v3 if-nez v2, :cond_1f div-float v2, v1, v0 .line 378 iput v2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F .line 381 :cond_1f iget v2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mThisWidth:I int-to-float v2, v2 iget v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F div-float/2addr v2, v4 float-to-int v2, v2 .line 382 iget v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mThisHeight:I if-le v2, v4, :cond_42 .line 383 iget v2, p0, Lcom/yalantis/ucrop/view/CropImageView;->mThisHeight:I int-to-float v2, v2 iget v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F mul-float/2addr v2, v4 float-to-int v2, v2 .line 384 iget v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mThisWidth:I sub-int/2addr v4, v2 div-int/lit8 v4, v4, 0x2 .line 385 iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; int-to-float v6, v4 add-int/2addr v2, v4 int-to-float v2, v2 iget v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mThisHeight:I int-to-float v4, v4 invoke-virtual {v5, v6, v3, v2, v4}, Landroid/graphics/RectF;->set(FFFF)V goto :goto_52 .line 387 :cond_42 iget v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mThisHeight:I sub-int/2addr v4, v2 div-int/lit8 v4, v4, 0x2 .line 388 iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; int-to-float v6, v4 iget v7, p0, Lcom/yalantis/ucrop/view/CropImageView;->mThisWidth:I int-to-float v7, v7 add-int/2addr v2, v4 int-to-float v2, v2 invoke-virtual {v5, v3, v6, v7, v2}, Landroid/graphics/RectF;->set(FFFF)V .line 391 :goto_52 invoke-direct {p0, v1, v0}, Lcom/yalantis/ucrop/view/CropImageView;->calculateImageScaleBounds(FF)V .line 392 invoke-direct {p0, v1, v0}, Lcom/yalantis/ucrop/view/CropImageView;->setupInitialImagePosition(FF)V .line 394 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropBoundsChangeListener:Lcom/yalantis/ucrop/callback/CropBoundsChangeListener; if-eqz v0, :cond_61 .line 395 iget v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F invoke-interface {v0, v1}, Lcom/yalantis/ucrop/callback/CropBoundsChangeListener;->onCropAspectRatioChanged(F)V .line 397 :cond_61 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTransformImageListener:Lcom/yalantis/ucrop/view/TransformImageView$TransformImageListener; if-eqz v0, :cond_77 .line 398 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTransformImageListener:Lcom/yalantis/ucrop/view/TransformImageView$TransformImageListener; invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentScale()F move-result v1 invoke-interface {v0, v1}, Lcom/yalantis/ucrop/view/TransformImageView$TransformImageListener;->onScale(F)V .line 399 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTransformImageListener:Lcom/yalantis/ucrop/view/TransformImageView$TransformImageListener; invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentAngle()F move-result v1 invoke-interface {v0, v1}, Lcom/yalantis/ucrop/view/TransformImageView$TransformImageListener;->onRotate(F)V :cond_77 return-void .end method .method public postRotate(F)V .registers 4 .line 252 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v0}, Landroid/graphics/RectF;->centerX()F move-result v0 iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v1}, Landroid/graphics/RectF;->centerY()F move-result v1 invoke-virtual {p0, p1, v0, v1}, Lcom/yalantis/ucrop/view/CropImageView;->postRotate(FFF)V return-void .end method .method public postScale(FFF)V .registers 7 const/high16 v0, 0x3f800000 # 1.0f cmpl-float v1, p1, v0 if-lez v1, :cond_17 .line 239 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentScale()F move-result v1 mul-float/2addr v1, p1 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getMaxScale()F move-result v2 cmpg-float v1, v1, v2 if-gtz v1, :cond_17 .line 240 invoke-super {p0, p1, p2, p3}, Lcom/yalantis/ucrop/view/TransformImageView;->postScale(FFF)V goto :goto_2b :cond_17 cmpg-float v0, p1, v0 if-gez v0, :cond_2b .line 241 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentScale()F move-result v0 mul-float/2addr v0, p1 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getMinScale()F move-result v1 cmpl-float v0, v0, v1 if-ltz v0, :cond_2b .line 242 invoke-super {p0, p1, p2, p3}, Lcom/yalantis/ucrop/view/TransformImageView;->postScale(FFF)V :cond_2b :goto_2b return-void .end method .method protected processStyledAttributes(Landroid/content/res/TypedArray;)V .registers 5 .line 503 sget v0, Lcom/yalantis/ucrop/R$styleable;->ucrop_UCropView_ucrop_aspect_ratio_x:I const/4 v1, 0x0 invoke-virtual {p1, v0, v1}, Landroid/content/res/TypedArray;->getFloat(IF)F move-result v0 invoke-static {v0}, Ljava/lang/Math;->abs(F)F move-result v0 .line 504 sget v2, Lcom/yalantis/ucrop/R$styleable;->ucrop_UCropView_ucrop_aspect_ratio_y:I invoke-virtual {p1, v2, v1}, Landroid/content/res/TypedArray;->getFloat(IF)F move-result p1 invoke-static {p1}, Ljava/lang/Math;->abs(F)F move-result p1 cmpl-float v2, v0, v1 if-eqz v2, :cond_22 cmpl-float v2, p1, v1 if-nez v2, :cond_1e goto :goto_22 :cond_1e div-float/2addr v0, p1 .line 509 iput v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F goto :goto_24 .line 507 :cond_22 :goto_22 iput v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F :goto_24 return-void .end method .method public setCropBoundsChangeListener(Lcom/yalantis/ucrop/callback/CropBoundsChangeListener;)V .registers 2 .line 155 iput-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropBoundsChangeListener:Lcom/yalantis/ucrop/callback/CropBoundsChangeListener; return-void .end method .method public setCropRect(Landroid/graphics/RectF;)V .registers 7 .line 117 invoke-virtual {p1}, Landroid/graphics/RectF;->width()F move-result v0 invoke-virtual {p1}, Landroid/graphics/RectF;->height()F move-result v1 div-float/2addr v0, v1 iput v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F .line 118 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; iget v1, p1, Landroid/graphics/RectF;->left:F invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getPaddingLeft()I move-result v2 int-to-float v2, v2 sub-float/2addr v1, v2 iget v2, p1, Landroid/graphics/RectF;->top:F invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getPaddingTop()I move-result v3 int-to-float v3, v3 sub-float/2addr v2, v3 iget v3, p1, Landroid/graphics/RectF;->right:F .line 119 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getPaddingRight()I move-result v4 int-to-float v4, v4 sub-float/2addr v3, v4 iget p1, p1, Landroid/graphics/RectF;->bottom:F invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getPaddingBottom()I move-result v4 int-to-float v4, v4 sub-float/2addr p1, v4 .line 118 invoke-virtual {v0, v1, v2, v3, p1}, Landroid/graphics/RectF;->set(FFFF)V .line 120 invoke-direct {p0}, Lcom/yalantis/ucrop/view/CropImageView;->calculateImageScaleBounds()V .line 121 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->setImageToWrapCropBounds()V return-void .end method .method public setImageToWrapCropBounds()V .registers 2 const/4 v0, 0x1 .line 264 invoke-virtual {p0, v0}, Lcom/yalantis/ucrop/view/CropImageView;->setImageToWrapCropBounds(Z)V return-void .end method .method public setImageToWrapCropBounds(Z)V .registers 15 .line 276 iget-boolean v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mBitmapLaidOut:Z if-eqz v0, :cond_b8 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->isImageWrapCropBounds()Z move-result v0 if-nez v0, :cond_b8 .line 278 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCenter:[F const/4 v1, 0x0 aget v6, v0, v1 .line 279 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCenter:[F const/4 v2, 0x1 aget v7, v0, v2 .line 280 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentScale()F move-result v10 .line 282 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v0}, Landroid/graphics/RectF;->centerX()F move-result v0 sub-float/2addr v0, v6 .line 283 iget-object v3, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v3}, Landroid/graphics/RectF;->centerY()F move-result v3 sub-float/2addr v3, v7 .line 286 iget-object v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v4}, Landroid/graphics/Matrix;->reset()V .line 287 iget-object v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v4, v0, v3}, Landroid/graphics/Matrix;->setTranslate(FF)V .line 289 iget-object v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCorners:[F iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCorners:[F array-length v5, v5 invoke-static {v4, v5}, Ljava/util/Arrays;->copyOf([FI)[F move-result-object v4 .line 290 iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v5, v4}, Landroid/graphics/Matrix;->mapPoints([F)V .line 292 invoke-virtual {p0, v4}, Lcom/yalantis/ucrop/view/CropImageView;->isImageWrapCropBounds([F)Z move-result v12 if-eqz v12, :cond_5b .line 295 invoke-direct {p0}, Lcom/yalantis/ucrop/view/CropImageView;->calculateImageIndents()[F move-result-object v0 .line 296 aget v1, v0, v1 const/4 v3, 0x2 aget v3, v0, v3 add-float/2addr v1, v3 neg-float v1, v1 .line 297 aget v2, v0, v2 const/4 v3, 0x3 aget v0, v0, v3 add-float/2addr v2, v0 neg-float v0, v2 const/4 v2, 0x0 move v9, v0 move v8, v1 move v11, v2 goto :goto_92 .line 299 :cond_5b new-instance v4, Landroid/graphics/RectF; iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-direct {v4, v5}, Landroid/graphics/RectF;->(Landroid/graphics/RectF;)V .line 300 iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v5}, Landroid/graphics/Matrix;->reset()V .line 301 iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentAngle()F move-result v8 invoke-virtual {v5, v8}, Landroid/graphics/Matrix;->setRotate(F)V .line 302 iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTempMatrix:Landroid/graphics/Matrix; invoke-virtual {v5, v4}, Landroid/graphics/Matrix;->mapRect(Landroid/graphics/RectF;)Z .line 304 iget-object v5, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCurrentImageCorners:[F invoke-static {v5}, Lcom/yalantis/ucrop/util/RectUtils;->getRectSidesFromCorners([F)[F move-result-object v5 .line 306 invoke-virtual {v4}, Landroid/graphics/RectF;->width()F move-result v8 aget v1, v5, v1 div-float/2addr v8, v1 .line 307 invoke-virtual {v4}, Landroid/graphics/RectF;->height()F move-result v1 aget v2, v5, v2 div-float/2addr v1, v2 .line 306 invoke-static {v8, v1}, Ljava/lang/Math;->max(FF)F move-result v1 mul-float/2addr v1, v10 sub-float/2addr v1, v10 move v8, v0 move v11, v1 move v9, v3 :goto_92 if-eqz p1, :cond_a3 .line 312 new-instance p1, Lcom/yalantis/ucrop/view/CropImageView$WrapCropBoundsRunnable; iget-wide v4, p0, Lcom/yalantis/ucrop/view/CropImageView;->mImageToWrapCropBoundsAnimDuration:J move-object v2, p1 move-object v3, p0 invoke-direct/range {v2 .. v12}, Lcom/yalantis/ucrop/view/CropImageView$WrapCropBoundsRunnable;->(Lcom/yalantis/ucrop/view/CropImageView;JFFFFFFZ)V iput-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mWrapCropBoundsRunnable:Ljava/lang/Runnable; invoke-virtual {p0, p1}, Lcom/yalantis/ucrop/view/CropImageView;->post(Ljava/lang/Runnable;)Z goto :goto_b8 .line 316 :cond_a3 invoke-virtual {p0, v8, v9}, Lcom/yalantis/ucrop/view/CropImageView;->postTranslate(FF)V if-nez v12, :cond_b8 add-float/2addr v10, v11 .line 318 iget-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {p1}, Landroid/graphics/RectF;->centerX()F move-result p1 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v0}, Landroid/graphics/RectF;->centerY()F move-result v0 invoke-virtual {p0, v10, p1, v0}, Lcom/yalantis/ucrop/view/CropImageView;->zoomInImage(FFF)V :cond_b8 :goto_b8 return-void .end method .method public setImageToWrapCropBoundsAnimDuration(J)V .registers 5 const-wide/16 v0, 0x0 cmp-long v0, p1, v0 if-lez v0, :cond_9 .line 183 iput-wide p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mImageToWrapCropBoundsAnimDuration:J return-void .line 185 :cond_9 new-instance p1, Ljava/lang/IllegalArgumentException; const-string p2, "Animation duration cannot be negative value." invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method .method public setMaxResultImageSizeX(I)V .registers 2 .line 164 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxResultImageSizeX:I return-void .end method .method public setMaxResultImageSizeY(I)V .registers 2 .line 173 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxResultImageSizeY:I return-void .end method .method public setMaxScaleMultiplier(F)V .registers 2 .line 195 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mMaxScaleMultiplier:F return-void .end method .method public setTargetAspectRatio(F)V .registers 4 .line 132 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getDrawable()Landroid/graphics/drawable/Drawable; move-result-object v0 if-nez v0, :cond_9 .line 134 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F return-void :cond_9 const/4 v1, 0x0 cmpl-float v1, p1, v1 if-nez v1, :cond_1c .line 139 invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I move-result p1 int-to-float p1, p1 invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I move-result v0 int-to-float v0, v0 div-float/2addr p1, v0 iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F goto :goto_1e .line 141 :cond_1c iput p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F .line 144 :goto_1e iget-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropBoundsChangeListener:Lcom/yalantis/ucrop/callback/CropBoundsChangeListener; if-eqz p1, :cond_27 .line 145 iget v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mTargetAspectRatio:F invoke-interface {p1, v0}, Lcom/yalantis/ucrop/callback/CropBoundsChangeListener;->onCropAspectRatioChanged(F)V :cond_27 return-void .end method .method protected zoomImageToPosition(FFFJ)V .registers 14 .line 439 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getMaxScale()F move-result v0 cmpl-float v0, p1, v0 if-lez v0, :cond_c .line 440 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getMaxScale()F move-result p1 .line 443 :cond_c invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentScale()F move-result v4 sub-float v5, p1, v4 .line 446 new-instance p1, Lcom/yalantis/ucrop/view/CropImageView$ZoomImageToPosition; move-object v0, p1 move-object v1, p0 move-wide v2, p4 move v6, p2 move v7, p3 invoke-direct/range {v0 .. v7}, Lcom/yalantis/ucrop/view/CropImageView$ZoomImageToPosition;->(Lcom/yalantis/ucrop/view/CropImageView;JFFFF)V iput-object p1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mZoomImageToPositionRunnable:Ljava/lang/Runnable; invoke-virtual {p0, p1}, Lcom/yalantis/ucrop/view/CropImageView;->post(Ljava/lang/Runnable;)Z return-void .end method .method public zoomInImage(F)V .registers 4 .line 218 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v0}, Landroid/graphics/RectF;->centerX()F move-result v0 iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v1}, Landroid/graphics/RectF;->centerY()F move-result v1 invoke-virtual {p0, p1, v0, v1}, Lcom/yalantis/ucrop/view/CropImageView;->zoomInImage(FFF)V return-void .end method .method public zoomInImage(FFF)V .registers 5 .line 225 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getMaxScale()F move-result v0 cmpg-float v0, p1, v0 if-gtz v0, :cond_10 .line 226 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentScale()F move-result v0 div-float/2addr p1, v0 invoke-virtual {p0, p1, p2, p3}, Lcom/yalantis/ucrop/view/CropImageView;->postScale(FFF)V :cond_10 return-void .end method .method public zoomOutImage(F)V .registers 4 .line 202 iget-object v0, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v0}, Landroid/graphics/RectF;->centerX()F move-result v0 iget-object v1, p0, Lcom/yalantis/ucrop/view/CropImageView;->mCropRect:Landroid/graphics/RectF; invoke-virtual {v1}, Landroid/graphics/RectF;->centerY()F move-result v1 invoke-virtual {p0, p1, v0, v1}, Lcom/yalantis/ucrop/view/CropImageView;->zoomOutImage(FFF)V return-void .end method .method public zoomOutImage(FFF)V .registers 5 .line 209 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getMinScale()F move-result v0 cmpl-float v0, p1, v0 if-ltz v0, :cond_10 .line 210 invoke-virtual {p0}, Lcom/yalantis/ucrop/view/CropImageView;->getCurrentScale()F move-result v0 div-float/2addr p1, v0 invoke-virtual {p0, p1, p2, p3}, Lcom/yalantis/ucrop/view/CropImageView;->postScale(FFF)V :cond_10 return-void .end method