.class public Lcom/forum/adapter/TouchImageView; .super Landroid/widget/ImageView; .source "TouchImageView.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/forum/adapter/TouchImageView$ScaleListener; } .end annotation # static fields .field static final CLICK:I = 0x3 .field static final DRAG:I = 0x1 .field static final NONE:I = 0x0 .field private static final TAG:Ljava/lang/String; = "TouchImageView" .field static final ZOOM:I = 0x2 # instance fields .field context:Landroid/content/Context; .field last:Landroid/graphics/PointF; .field m:[F .field mScaleDetector:Landroid/view/ScaleGestureDetector; .field matrix:Landroid/graphics/Matrix; .field maxScale:F .field minScale:F .field mode:I .field oldMeasuredHeight:I .field oldMeasuredWidth:I .field protected origHeight:F .field protected origWidth:F .field saveScale:F .field start:Landroid/graphics/PointF; .field viewHeight:I .field viewWidth:I # direct methods .method public constructor (Landroid/content/Context;)V .registers 4 .line 44 invoke-direct {p0, p1}, Landroid/widget/ImageView;->(Landroid/content/Context;)V const/4 v0, 0x0 .line 23 iput v0, p0, Lcom/forum/adapter/TouchImageView;->mode:I .line 26 new-instance v0, Landroid/graphics/PointF; invoke-direct {v0}, Landroid/graphics/PointF;->()V iput-object v0, p0, Lcom/forum/adapter/TouchImageView;->last:Landroid/graphics/PointF; .line 27 new-instance v0, Landroid/graphics/PointF; invoke-direct {v0}, Landroid/graphics/PointF;->()V iput-object v0, p0, Lcom/forum/adapter/TouchImageView;->start:Landroid/graphics/PointF; const/high16 v0, 0x3f800000 # 1.0f .line 28 iput v0, p0, Lcom/forum/adapter/TouchImageView;->minScale:F const/high16 v1, 0x40400000 # 3.0f .line 29 iput v1, p0, Lcom/forum/adapter/TouchImageView;->maxScale:F .line 34 iput v0, p0, Lcom/forum/adapter/TouchImageView;->saveScale:F .line 45 invoke-direct {p0, p1}, Lcom/forum/adapter/TouchImageView;->sharedConstructing(Landroid/content/Context;)V return-void .end method .method public constructor (Landroid/content/Context;Landroid/util/AttributeSet;)V .registers 4 .line 49 invoke-direct {p0, p1, p2}, Landroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V const/4 p2, 0x0 .line 23 iput p2, p0, Lcom/forum/adapter/TouchImageView;->mode:I .line 26 new-instance p2, Landroid/graphics/PointF; invoke-direct {p2}, Landroid/graphics/PointF;->()V iput-object p2, p0, Lcom/forum/adapter/TouchImageView;->last:Landroid/graphics/PointF; .line 27 new-instance p2, Landroid/graphics/PointF; invoke-direct {p2}, Landroid/graphics/PointF;->()V iput-object p2, p0, Lcom/forum/adapter/TouchImageView;->start:Landroid/graphics/PointF; const/high16 p2, 0x3f800000 # 1.0f .line 28 iput p2, p0, Lcom/forum/adapter/TouchImageView;->minScale:F const/high16 v0, 0x40400000 # 3.0f .line 29 iput v0, p0, Lcom/forum/adapter/TouchImageView;->maxScale:F .line 34 iput p2, p0, Lcom/forum/adapter/TouchImageView;->saveScale:F .line 50 invoke-direct {p0, p1}, Lcom/forum/adapter/TouchImageView;->sharedConstructing(Landroid/content/Context;)V return-void .end method .method private sharedConstructing(Landroid/content/Context;)V .registers 5 const/4 v0, 0x1 .line 54 invoke-super {p0, v0}, Landroid/widget/ImageView;->setClickable(Z)V .line 55 iput-object p1, p0, Lcom/forum/adapter/TouchImageView;->context:Landroid/content/Context; .line 56 new-instance v0, Landroid/view/ScaleGestureDetector; new-instance v1, Lcom/forum/adapter/TouchImageView$ScaleListener; const/4 v2, 0x0 invoke-direct {v1, p0, v2}, Lcom/forum/adapter/TouchImageView$ScaleListener;->(Lcom/forum/adapter/TouchImageView;Lcom/forum/adapter/TouchImageView-IA;)V invoke-direct {v0, p1, v1}, Landroid/view/ScaleGestureDetector;->(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;)V iput-object v0, p0, Lcom/forum/adapter/TouchImageView;->mScaleDetector:Landroid/view/ScaleGestureDetector; .line 57 new-instance p1, Landroid/graphics/Matrix; invoke-direct {p1}, Landroid/graphics/Matrix;->()V iput-object p1, p0, Lcom/forum/adapter/TouchImageView;->matrix:Landroid/graphics/Matrix; const/16 v0, 0x9 .line 58 new-array v0, v0, [F iput-object v0, p0, Lcom/forum/adapter/TouchImageView;->m:[F .line 59 invoke-virtual {p0, p1}, Lcom/forum/adapter/TouchImageView;->setImageMatrix(Landroid/graphics/Matrix;)V .line 60 sget-object p1, Landroid/widget/ImageView$ScaleType;->MATRIX:Landroid/widget/ImageView$ScaleType; invoke-virtual {p0, p1}, Lcom/forum/adapter/TouchImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V .line 62 new-instance p1, Lcom/forum/adapter/TouchImageView$1; invoke-direct {p1, p0}, Lcom/forum/adapter/TouchImageView$1;->(Lcom/forum/adapter/TouchImageView;)V invoke-virtual {p0, p1}, Lcom/forum/adapter/TouchImageView;->setOnTouchListener(Landroid/view/View$OnTouchListener;)V return-void .end method # virtual methods .method fixTrans()V .registers 6 .line 147 iget-object v0, p0, Lcom/forum/adapter/TouchImageView;->matrix:Landroid/graphics/Matrix; iget-object v1, p0, Lcom/forum/adapter/TouchImageView;->m:[F invoke-virtual {v0, v1}, Landroid/graphics/Matrix;->getValues([F)V .line 148 iget-object v0, p0, Lcom/forum/adapter/TouchImageView;->m:[F const/4 v1, 0x2 aget v1, v0, v1 const/4 v2, 0x5 .line 149 aget v0, v0, v2 .line 151 iget v2, p0, Lcom/forum/adapter/TouchImageView;->viewWidth:I int-to-float v2, v2 iget v3, p0, Lcom/forum/adapter/TouchImageView;->origWidth:F iget v4, p0, Lcom/forum/adapter/TouchImageView;->saveScale:F mul-float/2addr v3, v4 invoke-virtual {p0, v1, v2, v3}, Lcom/forum/adapter/TouchImageView;->getFixTrans(FFF)F move-result v1 .line 152 iget v2, p0, Lcom/forum/adapter/TouchImageView;->viewHeight:I int-to-float v2, v2 iget v3, p0, Lcom/forum/adapter/TouchImageView;->origHeight:F iget v4, p0, Lcom/forum/adapter/TouchImageView;->saveScale:F mul-float/2addr v3, v4 invoke-virtual {p0, v0, v2, v3}, Lcom/forum/adapter/TouchImageView;->getFixTrans(FFF)F move-result v0 const/4 v2, 0x0 cmpl-float v3, v1, v2 if-nez v3, :cond_30 cmpl-float v2, v0, v2 if-eqz v2, :cond_35 .line 155 :cond_30 iget-object v2, p0, Lcom/forum/adapter/TouchImageView;->matrix:Landroid/graphics/Matrix; invoke-virtual {v2, v1, v0}, Landroid/graphics/Matrix;->postTranslate(FF)Z :cond_35 return-void .end method .method getFixDragTrans(FFF)F .registers 4 cmpg-float p2, p3, p2 if-gtz p2, :cond_5 const/4 p1, 0x0 :cond_5 return p1 .end method .method getFixTrans(FFF)F .registers 6 cmpg-float v0, p3, p2 const/4 v1, 0x0 if-gtz v0, :cond_9 sub-float/2addr p2, p3 move p3, p2 move p2, v1 goto :goto_b :cond_9 sub-float/2addr p2, p3 move p3, v1 :goto_b cmpg-float v0, p1, p2 if-gez v0, :cond_12 neg-float p1, p1 add-float/2addr p1, p2 return p1 :cond_12 cmpl-float p2, p1, p3 if-lez p2, :cond_19 neg-float p1, p1 add-float/2addr p1, p3 return p1 :cond_19 return v1 .end method .method protected onMeasure(II)V .registers 5 .line 185 invoke-super {p0, p1, p2}, Landroid/widget/ImageView;->onMeasure(II)V .line 186 invoke-static {p1}, Landroid/view/View$MeasureSpec;->getSize(I)I move-result p1 iput p1, p0, Lcom/forum/adapter/TouchImageView;->viewWidth:I .line 187 invoke-static {p2}, Landroid/view/View$MeasureSpec;->getSize(I)I move-result p1 iput p1, p0, Lcom/forum/adapter/TouchImageView;->viewHeight:I .line 192 iget p2, p0, Lcom/forum/adapter/TouchImageView;->oldMeasuredHeight:I iget v0, p0, Lcom/forum/adapter/TouchImageView;->viewWidth:I if-ne p2, v0, :cond_17 if-eq p2, p1, :cond_a0 :cond_17 if-eqz v0, :cond_a0 if-nez p1, :cond_1d goto/16 :goto_a0 .line 195 :cond_1d iput p1, p0, Lcom/forum/adapter/TouchImageView;->oldMeasuredHeight:I .line 196 iput v0, p0, Lcom/forum/adapter/TouchImageView;->oldMeasuredWidth:I .line 198 iget p1, p0, Lcom/forum/adapter/TouchImageView;->saveScale:F const/high16 p2, 0x3f800000 # 1.0f cmpl-float p1, p1, p2 if-nez p1, :cond_9d .line 202 invoke-virtual {p0}, Lcom/forum/adapter/TouchImageView;->getDrawable()Landroid/graphics/drawable/Drawable; move-result-object p1 if-eqz p1, :cond_9c .line 203 invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I move-result p2 if-eqz p2, :cond_9c invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I move-result p2 if-nez p2, :cond_3c goto :goto_9c .line 205 :cond_3c invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I move-result p2 .line 206 invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I move-result p1 .line 208 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "bmWidth: " invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, " bmHeight : " invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 const-string v1, "bmSize" invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I .line 210 iget v0, p0, Lcom/forum/adapter/TouchImageView;->viewWidth:I int-to-float v0, v0 int-to-float p2, p2 div-float/2addr v0, p2 .line 211 iget v1, p0, Lcom/forum/adapter/TouchImageView;->viewHeight:I int-to-float v1, v1 int-to-float p1, p1 div-float/2addr v1, p1 .line 212 invoke-static {v0, v1}, Ljava/lang/Math;->min(FF)F move-result v0 .line 213 iget-object v1, p0, Lcom/forum/adapter/TouchImageView;->matrix:Landroid/graphics/Matrix; invoke-virtual {v1, v0, v0}, Landroid/graphics/Matrix;->setScale(FF)V .line 216 iget v1, p0, Lcom/forum/adapter/TouchImageView;->viewHeight:I int-to-float v1, v1 mul-float/2addr p1, v0 sub-float/2addr v1, p1 .line 217 iget p1, p0, Lcom/forum/adapter/TouchImageView;->viewWidth:I int-to-float p1, p1 mul-float/2addr v0, p2 sub-float/2addr p1, v0 const/high16 p2, 0x40000000 # 2.0f div-float/2addr v1, p2 div-float/2addr p1, p2 .line 221 iget-object v0, p0, Lcom/forum/adapter/TouchImageView;->matrix:Landroid/graphics/Matrix; invoke-virtual {v0, p1, v1}, Landroid/graphics/Matrix;->postTranslate(FF)Z .line 223 iget v0, p0, Lcom/forum/adapter/TouchImageView;->viewWidth:I int-to-float v0, v0 mul-float/2addr p1, p2 sub-float/2addr v0, p1 iput v0, p0, Lcom/forum/adapter/TouchImageView;->origWidth:F .line 224 iget p1, p0, Lcom/forum/adapter/TouchImageView;->viewHeight:I int-to-float p1, p1 mul-float/2addr v1, p2 sub-float/2addr p1, v1 iput p1, p0, Lcom/forum/adapter/TouchImageView;->origHeight:F .line 225 iget-object p1, p0, Lcom/forum/adapter/TouchImageView;->matrix:Landroid/graphics/Matrix; invoke-virtual {p0, p1}, Lcom/forum/adapter/TouchImageView;->setImageMatrix(Landroid/graphics/Matrix;)V goto :goto_9d :cond_9c :goto_9c return-void .line 227 :cond_9d :goto_9d invoke-virtual {p0}, Lcom/forum/adapter/TouchImageView;->fixTrans()V :cond_a0 :goto_a0 return-void .end method .method public setMaxZoom(F)V .registers 2 .line 113 iput p1, p0, Lcom/forum/adapter/TouchImageView;->maxScale:F return-void .end method