AutoCropImageView.smali

.class public Lcom/cm/plugincluster/skin/ui/AutoCropImageView;
.super Landroid/widget/ImageView;
.source "AutoCropImageView.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/cm/plugincluster/skin/ui/AutoCropImageView$CropType;
    }
.end annotation


# instance fields
.field private mCropType:I


# direct methods
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
    .registers 4

    .prologue
    .line 34
    const/4 v0, 0x0

    invoke-direct {p0, p1, p2, v0}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V

    .line 35
    return-void
.end method

.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
    .registers 5

    .prologue
    .line 38
    invoke-direct {p0, p1, p2, p3}, Landroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V

    .line 31
    const/4 v0, 0x2

    iput v0, p0, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->mCropType:I

    .line 39
    invoke-direct {p0, p1, p2}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->init(Landroid/content/Context;Landroid/util/AttributeSet;)V

    .line 40
    return-void
.end method

.method private calculateMatrix(II)V
    .registers 14

    .prologue
    const/high16 v10, 0x40000000    # 2.0f

    const/4 v1, 0x0

    .line 63
    invoke-virtual {p0}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->getDrawable()Landroid/graphics/drawable/Drawable;

    move-result-object v0

    .line 64
    if-nez v0, :cond_a

    .line 94
    :goto_9
    return-void

    .line 68
    :cond_a
    int-to-float v2, p1

    .line 69
    int-to-float v3, p2

    .line 70
    div-float v4, v2, v3

    .line 72
    invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I

    move-result v5

    int-to-float v5, v5

    .line 73
    invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I

    move-result v0

    int-to-float v6, v0

    .line 74
    div-float v7, v5, v6

    .line 76
    cmpl-float v0, v7, v4

    if-lez v0, :cond_3d

    div-float v0, v3, v6

    .line 79
    :goto_20
    iget v8, p0, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->mCropType:I

    const/4 v9, 0x1

    if-ne v8, v9, :cond_47

    .line 80
    cmpl-float v8, v7, v4

    if-lez v8, :cond_40

    mul-float/2addr v5, v0

    sub-float/2addr v2, v5

    .line 81
    :goto_2b
    cmpl-float v4, v7, v4

    if-lez v4, :cond_42

    .line 90
    :cond_2f
    :goto_2f
    invoke-virtual {p0}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->getImageMatrix()Landroid/graphics/Matrix;

    move-result-object v3

    .line 91
    invoke-virtual {v3, v0, v0}, Landroid/graphics/Matrix;->setScale(FF)V

    .line 92
    invoke-virtual {v3, v2, v1}, Landroid/graphics/Matrix;->postTranslate(FF)Z

    .line 93
    invoke-virtual {p0, v3}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->setImageMatrix(Landroid/graphics/Matrix;)V

    goto :goto_9

    .line 76
    :cond_3d
    div-float v0, v2, v5

    goto :goto_20

    :cond_40
    move v2, v1

    .line 80
    goto :goto_2b

    .line 81
    :cond_42
    mul-float v1, v6, v0

    sub-float v1, v3, v1

    goto :goto_2f

    .line 82
    :cond_47
    iget v8, p0, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->mCropType:I

    const/4 v9, 0x2

    if-ne v8, v9, :cond_5f

    .line 83
    cmpl-float v8, v7, v4

    if-lez v8, :cond_5d

    mul-float/2addr v5, v0

    sub-float/2addr v2, v5

    div-float/2addr v2, v10

    .line 84
    :goto_53
    cmpl-float v4, v7, v4

    if-gtz v4, :cond_2f

    mul-float v1, v6, v0

    sub-float v1, v3, v1

    div-float/2addr v1, v10

    goto :goto_2f

    :cond_5d
    move v2, v1

    .line 83
    goto :goto_53

    :cond_5f
    move v2, v1

    .line 87
    goto :goto_2f
.end method

.method private init(Landroid/content/Context;Landroid/util/AttributeSet;)V
    .registers 6

    .prologue
    .line 43
    sget-object v0, Lcom/cm/plugincluster/R$styleable;->AutoCropImageView:[I

    invoke-virtual {p1, p2, v0}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;

    move-result-object v0

    .line 44
    sget v1, Lcom/cm/plugincluster/R$styleable;->AutoCropImageView_cropType:I

    const/4 v2, 0x2

    invoke-virtual {v0, v1, v2}, Landroid/content/res/TypedArray;->getInt(II)I

    move-result v1

    iput v1, p0, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->mCropType:I

    .line 45
    invoke-virtual {v0}, Landroid/content/res/TypedArray;->recycle()V

    .line 46
    return-void
.end method


# virtual methods
.method public setCropType(I)V
    .registers 2

    .prologue
    .line 49
    iput p1, p0, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->mCropType:I

    .line 50
    invoke-virtual {p0}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->requestLayout()V

    .line 51
    invoke-virtual {p0}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->invalidate()V

    .line 52
    return-void
.end method

.method protected setFrame(IIII)Z
    .registers 7

    .prologue
    .line 56
    invoke-virtual {p0}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->getScaleType()Landroid/widget/ImageView$ScaleType;

    move-result-object v0

    sget-object v1, Landroid/widget/ImageView$ScaleType;->MATRIX:Landroid/widget/ImageView$ScaleType;

    if-ne v0, v1, :cond_f

    .line 57
    sub-int v0, p3, p1

    sub-int v1, p4, p2

    invoke-direct {p0, v0, v1}, Lcom/cm/plugincluster/skin/ui/AutoCropImageView;->calculateMatrix(II)V

    .line 59
    :cond_f
    invoke-super {p0, p1, p2, p3, p4}, Landroid/widget/ImageView;->setFrame(IIII)Z

    move-result v0

    return v0
.end method