Scroller.smali
.class public Lim/tpelyyftgw/ui/components/Scroller;
.super Ljava/lang/Object;
.source "Scroller.java"
# static fields
.field private static DECELERATION_RATE:F = 0.0f
.field private static final DEFAULT_DURATION:I = 0xfa
.field private static END_TENSION:F = 0.0f
.field private static final FLING_MODE:I = 0x1
.field private static final NB_SAMPLES:I = 0x64
.field private static final SCROLL_MODE:I
.field private static final SPLINE:[F
.field private static START_TENSION:F
.field private static sViscousFluidNormalize:F
.field private static sViscousFluidScale:F
# instance fields
.field private mCurrX:I
.field private mCurrY:I
.field private mDeceleration:F
.field private mDeltaX:F
.field private mDeltaY:F
.field private mDuration:I
.field private mDurationReciprocal:F
.field private mFinalX:I
.field private mFinalY:I
.field private mFinished:Z
.field private mFlywheel:Z
.field private mInterpolator:Landroid/view/animation/Interpolator;
.field private mMaxX:I
.field private mMaxY:I
.field private mMinX:I
.field private mMinY:I
.field private mMode:I
.field private final mPpi:F
.field private mStartTime:J
.field private mStartX:I
.field private mStartY:I
.field private mVelocity:F
# direct methods
.method static constructor <clinit>()V
.registers 13
.line 63
const-wide/high16 v0, 0x3fe8000000000000L # 0.75
invoke-static {v0, v1}, Ljava/lang/Math;->log(D)D
move-result-wide v0
const-wide v2, 0x3feccccccccccccdL # 0.9
invoke-static {v2, v3}, Ljava/lang/Math;->log(D)D
move-result-wide v2
div-double/2addr v0, v2
double-to-float v0, v0
sput v0, Lim/tpelyyftgw/ui/components/Scroller;->DECELERATION_RATE:F
.line 64
const v0, 0x3ecccccd # 0.4f
sput v0, Lim/tpelyyftgw/ui/components/Scroller;->START_TENSION:F
.line 65
const/high16 v1, 0x3f800000 # 1.0f
sub-float v0, v1, v0
sput v0, Lim/tpelyyftgw/ui/components/Scroller;->END_TENSION:F
.line 67
const/16 v0, 0x65
new-array v0, v0, [F
sput-object v0, Lim/tpelyyftgw/ui/components/Scroller;->SPLINE:[F
.line 73
const/4 v0, 0x0
.line 74
.local v0, "x_min":F
const/4 v2, 0x0
.local v2, "i":I
:goto_26
const/16 v3, 0x64
if-gt v2, v3, :cond_75
.line 75
int-to-float v3, v2
const/high16 v4, 0x42c80000 # 100.0f
div-float v4, v3, v4
.line 76
.local v4, "t":F
const/high16 v3, 0x3f800000 # 1.0f
.line 79
.local v3, "x_max":F
:goto_31
sub-float v5, v3, v0
const/high16 v6, 0x40000000 # 2.0f
div-float/2addr v5, v6
add-float/2addr v5, v0
.line 80
.local v5, "x":F
const/high16 v6, 0x40400000 # 3.0f
mul-float v6, v6, v5
sub-float v7, v1, v5
mul-float v6, v6, v7
.line 81
.local v6, "coef":F
sub-float v7, v1, v5
sget v8, Lim/tpelyyftgw/ui/components/Scroller;->START_TENSION:F
mul-float v7, v7, v8
sget v8, Lim/tpelyyftgw/ui/components/Scroller;->END_TENSION:F
mul-float v8, v8, v5
add-float/2addr v7, v8
mul-float v7, v7, v6
mul-float v8, v5, v5
mul-float v8, v8, v5
add-float/2addr v7, v8
.line 82
.local v7, "tx":F
sub-float v8, v7, v4
invoke-static {v8}, Ljava/lang/Math;->abs(F)F
move-result v8
float-to-double v8, v8
const-wide v10, 0x3ee4f8b588e368f1L # 1.0E-5
cmpg-double v12, v8, v10
if-gez v12, :cond_6d
.line 86
mul-float v8, v5, v5
mul-float v8, v8, v5
add-float/2addr v8, v6
.line 87
.local v8, "d":F
sget-object v9, Lim/tpelyyftgw/ui/components/Scroller;->SPLINE:[F
aput v8, v9, v2
.line 74
.end local v3 # "x_max":F
.end local v4 # "t":F
.end local v5 # "x":F
.end local v6 # "coef":F
.end local v7 # "tx":F
.end local v8 # "d":F
add-int/lit8 v2, v2, 0x1
goto :goto_26
.line 83
.restart local v3 # "x_max":F
.restart local v4 # "t":F
.restart local v5 # "x":F
.restart local v6 # "coef":F
.restart local v7 # "tx":F
:cond_6d
cmpl-float v8, v7, v4
if-lez v8, :cond_73
move v3, v5
goto :goto_31
.line 84
:cond_73
move v0, v5
goto :goto_31
.line 89
.end local v2 # "i":I
.end local v3 # "x_max":F
.end local v4 # "t":F
.end local v5 # "x":F
.end local v6 # "coef":F
.end local v7 # "tx":F
:cond_75
sget-object v2, Lim/tpelyyftgw/ui/components/Scroller;->SPLINE:[F
aput v1, v2, v3
.line 92
const/high16 v2, 0x41000000 # 8.0f
sput v2, Lim/tpelyyftgw/ui/components/Scroller;->sViscousFluidScale:F
.line 94
sput v1, Lim/tpelyyftgw/ui/components/Scroller;->sViscousFluidNormalize:F
.line 95
invoke-static {v1}, Lim/tpelyyftgw/ui/components/Scroller;->viscousFluid(F)F
move-result v2
div-float/2addr v1, v2
sput v1, Lim/tpelyyftgw/ui/components/Scroller;->sViscousFluidNormalize:F
.line 96
.end local v0 # "x_min":F
return-void
.end method
.method public constructor <init>(Landroid/content/Context;)V
.registers 3
.param p1, "context" # Landroid/content/Context;
.line 105
const/4 v0, 0x0
invoke-direct {p0, p1, v0}, Lim/tpelyyftgw/ui/components/Scroller;-><init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V
.line 106
return-void
.end method
.method public constructor <init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V
.registers 4
.param p1, "context" # Landroid/content/Context;
.param p2, "interpolator" # Landroid/view/animation/Interpolator;
.line 114
const/4 v0, 0x1
invoke-direct {p0, p1, p2, v0}, Lim/tpelyyftgw/ui/components/Scroller;-><init>(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V
.line 115
return-void
.end method
.method public constructor <init>(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V
.registers 6
.param p1, "context" # Landroid/content/Context;
.param p2, "interpolator" # Landroid/view/animation/Interpolator;
.param p3, "flywheel" # Z
.line 122
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 123
const/4 v0, 0x1
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 124
iput-object p2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mInterpolator:Landroid/view/animation/Interpolator;
.line 125
invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
move-result-object v0
invoke-virtual {v0}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics;
move-result-object v0
iget v0, v0, Landroid/util/DisplayMetrics;->density:F
const/high16 v1, 0x43200000 # 160.0f
mul-float v0, v0, v1
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mPpi:F
.line 126
invoke-static {}, Landroid/view/ViewConfiguration;->getScrollFriction()F
move-result v0
invoke-direct {p0, v0}, Lim/tpelyyftgw/ui/components/Scroller;->computeDeceleration(F)F
move-result v0
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeceleration:F
.line 127
iput-boolean p3, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFlywheel:Z
.line 128
return-void
.end method
.method private computeDeceleration(F)F
.registers 4
.param p1, "friction" # F
.line 142
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mPpi:F
const v1, 0x43c10b3d
mul-float v0, v0, v1
mul-float v0, v0, p1
return v0
.end method
.method static viscousFluid(F)F
.registers 5
.param p0, "x" # F
.line 422
sget v0, Lim/tpelyyftgw/ui/components/Scroller;->sViscousFluidScale:F
mul-float p0, p0, v0
.line 423
const/high16 v0, 0x3f800000 # 1.0f
cmpg-float v1, p0, v0
if-gez v1, :cond_14
.line 424
neg-float v1, p0
float-to-double v1, v1
invoke-static {v1, v2}, Ljava/lang/Math;->exp(D)D
move-result-wide v1
double-to-float v1, v1
sub-float/2addr v0, v1
sub-float/2addr p0, v0
goto :goto_26
.line 426
:cond_14
const v1, 0x3ebc5ab2
.line 427
.local v1, "start":F
sub-float v2, v0, p0
float-to-double v2, v2
invoke-static {v2, v3}, Ljava/lang/Math;->exp(D)D
move-result-wide v2
double-to-float v2, v2
sub-float p0, v0, v2
.line 428
sub-float/2addr v0, v1
mul-float v0, v0, p0
add-float p0, v1, v0
.line 430
.end local v1 # "start":F
:goto_26
sget v0, Lim/tpelyyftgw/ui/components/Scroller;->sViscousFluidNormalize:F
mul-float p0, p0, v0
.line 431
return p0
.end method
# virtual methods
.method public abortAnimation()V
.registers 2
.line 442
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrX:I
.line 443
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrY:I
.line 444
const/4 v0, 0x1
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 445
return-void
.end method
.method public computeScrollOffset()Z
.registers 13
.line 246
iget-boolean v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
if-eqz v0, :cond_6
.line 247
const/4 v0, 0x0
return v0
.line 250
:cond_6
invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
move-result-wide v0
iget-wide v2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartTime:J
sub-long/2addr v0, v2
long-to-int v1, v0
.line 252
.local v1, "timePassed":I
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDuration:I
const/4 v2, 0x1
if-ge v1, v0, :cond_b4
.line 253
iget v3, p0, Lim/tpelyyftgw/ui/components/Scroller;->mMode:I
if-eqz v3, :cond_86
if-eq v3, v2, :cond_1b
goto/16 :goto_b3
.line 266
:cond_1b
int-to-float v3, v1
int-to-float v0, v0
div-float/2addr v3, v0
.line 267
.local v3, "t":F
const/high16 v0, 0x42c80000 # 100.0f
mul-float v4, v3, v0
float-to-int v4, v4
.line 268
.local v4, "index":I
int-to-float v5, v4
div-float/2addr v5, v0
.line 269
.local v5, "t_inf":F
add-int/lit8 v6, v4, 0x1
int-to-float v6, v6
div-float/2addr v6, v0
.line 270
.local v6, "t_sup":F
sget-object v0, Lim/tpelyyftgw/ui/components/Scroller;->SPLINE:[F
aget v7, v0, v4
.line 271
.local v7, "d_inf":F
add-int/lit8 v8, v4, 0x1
aget v0, v0, v8
.line 272
.local v0, "d_sup":F
sub-float v8, v3, v5
sub-float v9, v6, v5
div-float/2addr v8, v9
sub-float v9, v0, v7
mul-float v8, v8, v9
add-float/2addr v8, v7
.line 274
.local v8, "distanceCoef":F
iget v9, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartX:I
iget v10, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
sub-int/2addr v10, v9
int-to-float v10, v10
mul-float v10, v10, v8
invoke-static {v10}, Ljava/lang/Math;->round(F)I
move-result v10
add-int/2addr v9, v10
iput v9, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrX:I
.line 276
iget v10, p0, Lim/tpelyyftgw/ui/components/Scroller;->mMaxX:I
invoke-static {v9, v10}, Ljava/lang/Math;->min(II)I
move-result v9
iput v9, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrX:I
.line 277
iget v10, p0, Lim/tpelyyftgw/ui/components/Scroller;->mMinX:I
invoke-static {v9, v10}, Ljava/lang/Math;->max(II)I
move-result v9
iput v9, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrX:I
.line 279
iget v9, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartY:I
iget v10, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
sub-int/2addr v10, v9
int-to-float v10, v10
mul-float v10, v10, v8
invoke-static {v10}, Ljava/lang/Math;->round(F)I
move-result v10
add-int/2addr v9, v10
iput v9, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrY:I
.line 281
iget v10, p0, Lim/tpelyyftgw/ui/components/Scroller;->mMaxY:I
invoke-static {v9, v10}, Ljava/lang/Math;->min(II)I
move-result v9
iput v9, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrY:I
.line 282
iget v10, p0, Lim/tpelyyftgw/ui/components/Scroller;->mMinY:I
invoke-static {v9, v10}, Ljava/lang/Math;->max(II)I
move-result v9
iput v9, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrY:I
.line 284
iget v10, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrX:I
iget v11, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
if-ne v10, v11, :cond_b3
iget v10, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
if-ne v9, v10, :cond_b3
.line 285
iput-boolean v2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
goto :goto_b3
.line 255
.end local v0 # "d_sup":F
.end local v3 # "t":F
.end local v4 # "index":I
.end local v5 # "t_inf":F
.end local v6 # "t_sup":F
.end local v7 # "d_inf":F
.end local v8 # "distanceCoef":F
:cond_86
int-to-float v0, v1
iget v3, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDurationReciprocal:F
mul-float v0, v0, v3
.line 257
.local v0, "x":F
iget-object v3, p0, Lim/tpelyyftgw/ui/components/Scroller;->mInterpolator:Landroid/view/animation/Interpolator;
if-nez v3, :cond_94
.line 258
invoke-static {v0}, Lim/tpelyyftgw/ui/components/Scroller;->viscousFluid(F)F
move-result v0
goto :goto_98
.line 260
:cond_94
invoke-interface {v3, v0}, Landroid/view/animation/Interpolator;->getInterpolation(F)F
move-result v0
.line 262
:goto_98
iget v3, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartX:I
iget v4, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeltaX:F
mul-float v4, v4, v0
invoke-static {v4}, Ljava/lang/Math;->round(F)I
move-result v4
add-int/2addr v3, v4
iput v3, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrX:I
.line 263
iget v3, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartY:I
iget v4, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeltaY:F
mul-float v4, v4, v0
invoke-static {v4}, Ljava/lang/Math;->round(F)I
move-result v4
add-int/2addr v3, v4
iput v3, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrY:I
.line 264
nop
.line 288
.end local v0 # "x":F
:cond_b3
:goto_b3
goto :goto_be
.line 292
:cond_b4
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrX:I
.line 293
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrY:I
.line 294
iput-boolean v2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 296
:goto_be
return v2
.end method
.method public extendDuration(I)V
.registers 5
.param p1, "extend" # I
.line 456
invoke-virtual {p0}, Lim/tpelyyftgw/ui/components/Scroller;->timePassed()I
move-result v0
.line 457
.local v0, "passed":I
add-int v1, v0, p1
iput v1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDuration:I
.line 458
int-to-float v1, v1
const/high16 v2, 0x3f800000 # 1.0f
div-float/2addr v2, v1
iput v2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDurationReciprocal:F
.line 459
const/4 v1, 0x0
iput-boolean v1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 460
return-void
.end method
.method public fling(IIIIIIII)V
.registers 29
.param p1, "startX" # I
.param p2, "startY" # I
.param p3, "velocityX" # I
.param p4, "velocityY" # I
.param p5, "minX" # I
.param p6, "maxX" # I
.param p7, "minY" # I
.param p8, "maxY" # I
.line 366
move-object/from16 v0, p0
move/from16 v1, p1
move/from16 v2, p2
move/from16 v3, p3
move/from16 v4, p4
iget-boolean v5, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFlywheel:Z
if-eqz v5, :cond_55
iget-boolean v5, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
if-nez v5, :cond_55
.line 367
invoke-virtual/range {p0 .. p0}, Lim/tpelyyftgw/ui/components/Scroller;->getCurrVelocity()F
move-result v5
.line 369
.local v5, "oldVel":F
iget v6, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
iget v7, v0, Lim/tpelyyftgw/ui/components/Scroller;->mStartX:I
sub-int/2addr v6, v7
int-to-float v6, v6
.line 370
.local v6, "dx":F
iget v7, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
iget v8, v0, Lim/tpelyyftgw/ui/components/Scroller;->mStartY:I
sub-int/2addr v7, v8
int-to-float v7, v7
.line 371
.local v7, "dy":F
mul-float v8, v6, v6
mul-float v9, v7, v7
add-float/2addr v8, v9
float-to-double v8, v8
invoke-static {v8, v9}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v8
double-to-float v8, v8
.line 373
.local v8, "hyp":F
div-float v9, v6, v8
.line 374
.local v9, "ndx":F
div-float v10, v7, v8
.line 376
.local v10, "ndy":F
mul-float v11, v9, v5
.line 377
.local v11, "oldVelocityX":F
mul-float v12, v10, v5
.line 378
.local v12, "oldVelocityY":F
int-to-float v13, v3
invoke-static {v13}, Ljava/lang/Math;->signum(F)F
move-result v13
invoke-static {v11}, Ljava/lang/Math;->signum(F)F
move-result v14
cmpl-float v13, v13, v14
if-nez v13, :cond_55
int-to-float v13, v4
.line 379
invoke-static {v13}, Ljava/lang/Math;->signum(F)F
move-result v13
invoke-static {v12}, Ljava/lang/Math;->signum(F)F
move-result v14
cmpl-float v13, v13, v14
if-nez v13, :cond_55
.line 380
int-to-float v13, v3
add-float/2addr v13, v11
float-to-int v3, v13
.line 381
.end local p3 # "velocityX":I
.local v3, "velocityX":I
int-to-float v13, v4
add-float/2addr v13, v12
float-to-int v4, v13
.line 385
.end local v5 # "oldVel":F
.end local v6 # "dx":F
.end local v7 # "dy":F
.end local v8 # "hyp":F
.end local v9 # "ndx":F
.end local v10 # "ndy":F
.end local v11 # "oldVelocityX":F
.end local v12 # "oldVelocityY":F
.end local p4 # "velocityY":I
.local v4, "velocityY":I
:cond_55
const/4 v5, 0x1
iput v5, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMode:I
.line 386
const/4 v5, 0x0
iput-boolean v5, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 388
mul-int v5, v3, v3
mul-int v6, v4, v4
add-int/2addr v5, v6
int-to-double v5, v5
invoke-static {v5, v6}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v5
double-to-float v5, v5
.line 390
.local v5, "velocity":F
iput v5, v0, Lim/tpelyyftgw/ui/components/Scroller;->mVelocity:F
.line 391
const/high16 v6, 0x44480000 # 800.0f
.line 392
.local v6, "ALPHA":F
sget v7, Lim/tpelyyftgw/ui/components/Scroller;->START_TENSION:F
mul-float v7, v7, v5
div-float/2addr v7, v6
float-to-double v7, v7
invoke-static {v7, v8}, Ljava/lang/Math;->log(D)D
move-result-wide v7
.line 393
.local v7, "l":D
const-wide v9, 0x408f400000000000L # 1000.0
sget v11, Lim/tpelyyftgw/ui/components/Scroller;->DECELERATION_RATE:F
float-to-double v11, v11
const-wide/high16 v13, 0x3ff0000000000000L # 1.0
invoke-static {v11, v12}, Ljava/lang/Double;->isNaN(D)Z
sub-double/2addr v11, v13
div-double v11, v7, v11
invoke-static {v11, v12}, Ljava/lang/Math;->exp(D)D
move-result-wide v11
mul-double v11, v11, v9
double-to-int v9, v11
iput v9, v0, Lim/tpelyyftgw/ui/components/Scroller;->mDuration:I
.line 394
invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
move-result-wide v9
iput-wide v9, v0, Lim/tpelyyftgw/ui/components/Scroller;->mStartTime:J
.line 395
iput v1, v0, Lim/tpelyyftgw/ui/components/Scroller;->mStartX:I
.line 396
iput v2, v0, Lim/tpelyyftgw/ui/components/Scroller;->mStartY:I
.line 398
const/high16 v9, 0x3f800000 # 1.0f
const/4 v10, 0x0
cmpl-float v11, v5, v10
if-nez v11, :cond_a1
const/high16 v11, 0x3f800000 # 1.0f
goto :goto_a3
:cond_a1
int-to-float v11, v3
div-float/2addr v11, v5
.line 399
.local v11, "coeffX":F
:goto_a3
cmpl-float v10, v5, v10
if-nez v10, :cond_a8
goto :goto_aa
:cond_a8
int-to-float v9, v4
div-float/2addr v9, v5
.line 401
.local v9, "coeffY":F
:goto_aa
float-to-double v13, v6
sget v10, Lim/tpelyyftgw/ui/components/Scroller;->DECELERATION_RATE:F
move v12, v3
move v15, v4
.end local v3 # "velocityX":I
.end local v4 # "velocityY":I
.local v12, "velocityX":I
.local v15, "velocityY":I
float-to-double v3, v10
move/from16 v16, v5
move/from16 v17, v6
.end local v5 # "velocity":F
.end local v6 # "ALPHA":F
.local v16, "velocity":F
.local v17, "ALPHA":F
float-to-double v5, v10
invoke-static {v5, v6}, Ljava/lang/Double;->isNaN(D)Z
const-wide/high16 v18, 0x3ff0000000000000L # 1.0
sub-double v5, v5, v18
invoke-static {v3, v4}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v3, v5
mul-double v3, v3, v7
.line 402
invoke-static {v3, v4}, Ljava/lang/Math;->exp(D)D
move-result-wide v3
invoke-static {v13, v14}, Ljava/lang/Double;->isNaN(D)Z
mul-double v13, v13, v3
double-to-int v3, v13
.line 404
.local v3, "totalDistance":I
move/from16 v4, p5
iput v4, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMinX:I
.line 405
move/from16 v5, p6
iput v5, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMaxX:I
.line 406
move/from16 v6, p7
iput v6, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMinY:I
.line 407
move/from16 v10, p8
iput v10, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMaxY:I
.line 409
int-to-float v13, v3
mul-float v13, v13, v11
invoke-static {v13}, Ljava/lang/Math;->round(F)I
move-result v13
add-int/2addr v13, v1
iput v13, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
.line 411
iget v14, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMaxX:I
invoke-static {v13, v14}, Ljava/lang/Math;->min(II)I
move-result v13
iput v13, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
.line 412
iget v14, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMinX:I
invoke-static {v13, v14}, Ljava/lang/Math;->max(II)I
move-result v13
iput v13, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
.line 414
int-to-float v13, v3
mul-float v13, v13, v9
invoke-static {v13}, Ljava/lang/Math;->round(F)I
move-result v13
add-int/2addr v13, v2
iput v13, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
.line 416
iget v14, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMaxY:I
invoke-static {v13, v14}, Ljava/lang/Math;->min(II)I
move-result v13
iput v13, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
.line 417
iget v14, v0, Lim/tpelyyftgw/ui/components/Scroller;->mMinY:I
invoke-static {v13, v14}, Ljava/lang/Math;->max(II)I
move-result v13
iput v13, v0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
.line 418
return-void
.end method
.method public final forceFinished(Z)V
.registers 2
.param p1, "finished" # Z
.line 164
iput-boolean p1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 165
return-void
.end method
.method public getCurrVelocity()F
.registers 4
.line 201
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mVelocity:F
iget v1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeceleration:F
invoke-virtual {p0}, Lim/tpelyyftgw/ui/components/Scroller;->timePassed()I
move-result v2
int-to-float v2, v2
mul-float v1, v1, v2
const/high16 v2, 0x44fa0000 # 2000.0f
div-float/2addr v1, v2
sub-float/2addr v0, v1
return v0
.end method
.method public final getCurrX()I
.registers 2
.line 182
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrX:I
return v0
.end method
.method public final getCurrY()I
.registers 2
.line 191
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mCurrY:I
return v0
.end method
.method public final getDuration()I
.registers 2
.line 173
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDuration:I
return v0
.end method
.method public final getFinalX()I
.registers 2
.line 228
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
return v0
.end method
.method public final getFinalY()I
.registers 2
.line 237
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
return v0
.end method
.method public final getStartX()I
.registers 2
.line 210
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartX:I
return v0
.end method
.method public final getStartY()I
.registers 2
.line 219
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartY:I
return v0
.end method
.method public final isFinished()Z
.registers 2
.line 155
iget-boolean v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
return v0
.end method
.method public isScrollingInDirection(FF)Z
.registers 6
.param p1, "xvel" # F
.param p2, "yvel" # F
.line 498
iget-boolean v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
if-nez v0, :cond_2a
invoke-static {p1}, Ljava/lang/Math;->signum(F)F
move-result v0
iget v1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
iget v2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartX:I
sub-int/2addr v1, v2
int-to-float v1, v1
invoke-static {v1}, Ljava/lang/Math;->signum(F)F
move-result v1
cmpl-float v0, v0, v1
if-nez v0, :cond_2a
.line 499
invoke-static {p2}, Ljava/lang/Math;->signum(F)F
move-result v0
iget v1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
iget v2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartY:I
sub-int/2addr v1, v2
int-to-float v1, v1
invoke-static {v1}, Ljava/lang/Math;->signum(F)F
move-result v1
cmpl-float v0, v0, v1
if-nez v0, :cond_2a
const/4 v0, 0x1
goto :goto_2b
:cond_2a
const/4 v0, 0x0
.line 498
:goto_2b
return v0
.end method
.method public setFinalX(I)V
.registers 3
.param p1, "newX" # I
.line 479
iput p1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
.line 480
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartX:I
sub-int v0, p1, v0
int-to-float v0, v0
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeltaX:F
.line 481
const/4 v0, 0x0
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 482
return-void
.end method
.method public setFinalY(I)V
.registers 3
.param p1, "newY" # I
.line 492
iput p1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
.line 493
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartY:I
sub-int v0, p1, v0
int-to-float v0, v0
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeltaY:F
.line 494
const/4 v0, 0x0
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 495
return-void
.end method
.method public final setFriction(F)V
.registers 3
.param p1, "friction" # F
.line 138
invoke-direct {p0, p1}, Lim/tpelyyftgw/ui/components/Scroller;->computeDeceleration(F)F
move-result v0
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeceleration:F
.line 139
return-void
.end method
.method public startScroll(IIII)V
.registers 11
.param p1, "startX" # I
.param p2, "startY" # I
.param p3, "dx" # I
.param p4, "dy" # I
.line 314
const/16 v5, 0xfa
move-object v0, p0
move v1, p1
move v2, p2
move v3, p3
move v4, p4
invoke-virtual/range {v0 .. v5}, Lim/tpelyyftgw/ui/components/Scroller;->startScroll(IIIII)V
.line 315
return-void
.end method
.method public startScroll(IIIII)V
.registers 8
.param p1, "startX" # I
.param p2, "startY" # I
.param p3, "dx" # I
.param p4, "dy" # I
.param p5, "duration" # I
.line 331
const/4 v0, 0x0
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mMode:I
.line 332
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinished:Z
.line 333
iput p5, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDuration:I
.line 334
invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
move-result-wide v0
iput-wide v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartTime:J
.line 335
iput p1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartX:I
.line 336
iput p2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartY:I
.line 337
add-int v0, p1, p3
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalX:I
.line 338
add-int v0, p2, p4
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mFinalY:I
.line 339
int-to-float v0, p3
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeltaX:F
.line 340
int-to-float v0, p4
iput v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDeltaY:F
.line 341
iget v0, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDuration:I
int-to-float v0, v0
const/high16 v1, 0x3f800000 # 1.0f
div-float/2addr v1, v0
iput v1, p0, Lim/tpelyyftgw/ui/components/Scroller;->mDurationReciprocal:F
.line 342
return-void
.end method
.method public timePassed()I
.registers 5
.line 468
invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
move-result-wide v0
iget-wide v2, p0, Lim/tpelyyftgw/ui/components/Scroller;->mStartTime:J
sub-long/2addr v0, v2
long-to-int v1, v0
return v1
.end method