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