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