EdgeEffect.smali

.class public Lit/sephiroth/android/library/widget/EdgeEffect;
.super Ljava/lang/Object;


# static fields
.field public static final DIRECTION_HORIZONTAL:I = 0x1

.field public static final DIRECTION_VERTICAL:I = 0x0

.field private static final EPSILON:F = 0.001f

.field private static final HELD_EDGE_SCALE_Y:F = 0.5f

.field private static final MAX_ALPHA:F = 1.0f

.field private static final MAX_GLOW_HEIGHT:F = 4.0f

.field private static final MIN_VELOCITY:I = 0x64

.field private static final MIN_WIDTH:I = 0x12c

.field private static final PULL_DECAY_TIME:I = 0x3e8

.field private static final PULL_DISTANCE_ALPHA_GLOW_FACTOR:F = 1.1f

.field private static final PULL_DISTANCE_EDGE_FACTOR:I = 0x7

.field private static final PULL_DISTANCE_GLOW_FACTOR:I = 0x7

.field private static final PULL_EDGE_BEGIN:F = 0.6f

.field private static final PULL_GLOW_BEGIN:F = 1.0f

.field private static final PULL_TIME:I = 0xa7

.field private static final RECEDE_TIME:I = 0x3e8

.field private static final STATE_ABSORB:I = 0x2

.field private static final STATE_IDLE:I = 0x0

.field private static final STATE_PULL:I = 0x1

.field private static final STATE_PULL_DECAY:I = 0x4

.field private static final STATE_RECEDE:I = 0x3

.field private static final TAG:Ljava/lang/String; = "EdgeEffect"

.field private static final VELOCITY_EDGE_FACTOR:I = 0x8

.field private static final VELOCITY_GLOW_FACTOR:I = 0x10


# instance fields
.field private final mBounds:Landroid/graphics/Rect;

.field private final mDirection:I

.field private mDuration:F

.field private final mEdge:Landroid/graphics/drawable/Drawable;

.field private mEdgeAlpha:F

.field private mEdgeAlphaFinish:F

.field private mEdgeAlphaStart:F

.field private final mEdgeHeight:I

.field private mEdgeScaleY:F

.field private mEdgeScaleYFinish:F

.field private mEdgeScaleYStart:F

.field private final mGlow:Landroid/graphics/drawable/Drawable;

.field private mGlowAlpha:F

.field private mGlowAlphaFinish:F

.field private mGlowAlphaStart:F

.field private final mGlowHeight:I

.field private mGlowScaleY:F

.field private mGlowScaleYFinish:F

.field private mGlowScaleYStart:F

.field private final mGlowWidth:I

.field private mHeight:I

.field private final mInterpolator:Landroid/view/animation/Interpolator;

.field private final mMaxEffectHeight:I

.field private final mMinWidth:I

.field private mPullDistance:F

.field private mStartTime:J

.field private mState:I

.field private mWidth:I

.field private mX:I

.field private mY:I


# direct methods
.method public constructor <init>(Landroid/content/Context;I)V
    .registers 7

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    const/4 v0, 0x0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    new-instance v0, Landroid/graphics/Rect;

    invoke-direct {v0}, Landroid/graphics/Rect;-><init>()V

    iput-object v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mBounds:Landroid/graphics/Rect;

    invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

    move-result-object p1

    sget v0, Lit/sephiroth/android/library/R$drawable;->hlv_overscroll_edge:I

    invoke-virtual {p1, v0}, Landroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable;

    move-result-object v0

    iput-object v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdge:Landroid/graphics/drawable/Drawable;

    sget v0, Lit/sephiroth/android/library/R$drawable;->hlv_overscroll_glow:I

    invoke-virtual {p1, v0}, Landroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable;

    move-result-object v0

    iput-object v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlow:Landroid/graphics/drawable/Drawable;

    iput p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDirection:I

    iget-object p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdge:Landroid/graphics/drawable/Drawable;

    invoke-virtual {p2}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I

    move-result p2

    iput p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeHeight:I

    iget-object p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlow:Landroid/graphics/drawable/Drawable;

    invoke-virtual {p2}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I

    move-result p2

    iput p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowHeight:I

    iget-object p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlow:Landroid/graphics/drawable/Drawable;

    invoke-virtual {p2}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I

    move-result p2

    iput p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowWidth:I

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowHeight:I

    int-to-float v1, v0

    const/high16 v2, 0x40800000    # 4.0f

    mul-float v1, v1, v2

    int-to-float v3, v0

    mul-float v1, v1, v3

    int-to-float p2, p2

    div-float/2addr v1, p2

    const p2, 0x3f19999a    # 0.6f

    mul-float v1, v1, p2

    int-to-float p2, v0

    mul-float p2, p2, v2

    invoke-static {v1, p2}, Ljava/lang/Math;->min(FF)F

    move-result p2

    const/high16 v0, 0x3f000000    # 0.5f

    add-float/2addr p2, v0

    float-to-int p2, p2

    iput p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mMaxEffectHeight:I

    invoke-virtual {p1}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics;

    move-result-object p1

    iget p1, p1, Landroid/util/DisplayMetrics;->density:F

    const/high16 p2, 0x43960000    # 300.0f

    mul-float p1, p1, p2

    add-float/2addr p1, v0

    float-to-int p1, p1

    iput p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mMinWidth:I

    new-instance p1, Landroid/view/animation/DecelerateInterpolator;

    invoke-direct {p1}, Landroid/view/animation/DecelerateInterpolator;-><init>()V

    iput-object p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mInterpolator:Landroid/view/animation/Interpolator;

    return-void
.end method

.method private update()V
    .registers 10

    invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J

    move-result-wide v0

    iget-wide v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mStartTime:J

    sub-long/2addr v0, v2

    long-to-float v0, v0

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDuration:F

    div-float/2addr v0, v1

    const/high16 v1, 0x3f800000    # 1.0f

    invoke-static {v0, v1}, Ljava/lang/Math;->min(FF)F

    move-result v0

    iget-object v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mInterpolator:Landroid/view/animation/Interpolator;

    invoke-interface {v2, v0}, Landroid/view/animation/Interpolator;->getInterpolation(F)F

    move-result v2

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaStart:F

    iget v4, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaFinish:F

    sub-float/2addr v4, v3

    mul-float v4, v4, v2

    add-float/2addr v3, v4

    iput v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlpha:F

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYStart:F

    iget v4, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYFinish:F

    sub-float/2addr v4, v3

    mul-float v4, v4, v2

    add-float/2addr v3, v4

    iput v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaStart:F

    iget v4, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaFinish:F

    sub-float/2addr v4, v3

    mul-float v4, v4, v2

    add-float/2addr v3, v4

    iput v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlpha:F

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYStart:F

    iget v4, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYFinish:F

    sub-float v5, v4, v3

    mul-float v5, v5, v2

    add-float/2addr v3, v5

    iput v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    const v3, 0x3f7fbe77    # 0.999f

    cmpl-float v0, v0, v3

    if-ltz v0, :cond_bc

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    const/4 v3, 0x1

    const/high16 v5, 0x447a0000    # 1000.0f

    const/4 v6, 0x4

    const/4 v7, 0x0

    if-eq v0, v3, :cond_9a

    const/4 v3, 0x2

    const/4 v8, 0x3

    if-eq v0, v3, :cond_77

    if-eq v0, v8, :cond_73

    if-eq v0, v6, :cond_59

    goto :goto_bc

    :cond_59
    cmpl-float v0, v4, v7

    if-eqz v0, :cond_61

    mul-float v4, v4, v4

    div-float/2addr v1, v4

    goto :goto_64

    :cond_61
    const v1, 0x7f7fffff    # Float.MAX_VALUE

    :goto_64
    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYStart:F

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYFinish:F

    sub-float/2addr v3, v0

    mul-float v3, v3, v2

    mul-float v3, v3, v1

    add-float/2addr v0, v3

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    iput v8, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    goto :goto_bc

    :cond_73
    const/4 v0, 0x0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    goto :goto_bc

    :cond_77
    iput v8, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J

    move-result-wide v0

    iput-wide v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mStartTime:J

    iput v5, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDuration:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlpha:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaStart:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYStart:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlpha:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaStart:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYStart:F

    iput v7, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaFinish:F

    iput v7, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYFinish:F

    iput v7, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaFinish:F

    iput v7, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYFinish:F

    goto :goto_bc

    :cond_9a
    iput v6, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J

    move-result-wide v0

    iput-wide v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mStartTime:J

    iput v5, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDuration:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlpha:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaStart:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYStart:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlpha:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaStart:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYStart:F

    iput v7, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaFinish:F

    iput v7, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYFinish:F

    iput v7, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaFinish:F

    iput v7, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYFinish:F

    :cond_bc
    :goto_bc
    return-void
.end method


# virtual methods
.method public draw(Landroid/graphics/Canvas;)Z
    .registers 9

    invoke-direct {p0}, Lit/sephiroth/android/library/widget/EdgeEffect;->update()V

    iget-object v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlow:Landroid/graphics/drawable/Drawable;

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlpha:F

    const/high16 v2, 0x3f800000    # 1.0f

    invoke-static {v1, v2}, Ljava/lang/Math;->min(FF)F

    move-result v1

    const/4 v3, 0x0

    invoke-static {v3, v1}, Ljava/lang/Math;->max(FF)F

    move-result v1

    const/high16 v4, 0x437f0000    # 255.0f

    mul-float v1, v1, v4

    float-to-int v1, v1

    invoke-virtual {v0, v1}, Landroid/graphics/drawable/Drawable;->setAlpha(I)V

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowHeight:I

    int-to-float v1, v0

    iget v5, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    mul-float v1, v1, v5

    int-to-float v5, v0

    mul-float v1, v1, v5

    iget v5, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowWidth:I

    int-to-float v5, v5

    div-float/2addr v1, v5

    const v5, 0x3f19999a    # 0.6f

    mul-float v1, v1, v5

    int-to-float v0, v0

    const/high16 v5, 0x40800000    # 4.0f

    mul-float v0, v0, v5

    invoke-static {v1, v0}, Ljava/lang/Math;->min(FF)F

    move-result v0

    float-to-int v0, v0

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDirection:I

    const/4 v5, 0x0

    if-nez v1, :cond_44

    iget-object v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlow:Landroid/graphics/drawable/Drawable;

    iget v6, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mWidth:I

    invoke-virtual {v1, v5, v5, v6, v0}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V

    goto :goto_4b

    :cond_44
    iget-object v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlow:Landroid/graphics/drawable/Drawable;

    iget v6, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mWidth:I

    invoke-virtual {v1, v5, v5, v6, v0}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V

    :goto_4b
    iget-object v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlow:Landroid/graphics/drawable/Drawable;

    invoke-virtual {v1, p1}, Landroid/graphics/drawable/Drawable;->draw(Landroid/graphics/Canvas;)V

    iget-object v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdge:Landroid/graphics/drawable/Drawable;

    iget v6, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlpha:F

    invoke-static {v6, v2}, Ljava/lang/Math;->min(FF)F

    move-result v2

    invoke-static {v3, v2}, Ljava/lang/Math;->max(FF)F

    move-result v2

    mul-float v2, v2, v4

    float-to-int v2, v2

    invoke-virtual {v1, v2}, Landroid/graphics/drawable/Drawable;->setAlpha(I)V

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeHeight:I

    int-to-float v1, v1

    iget v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    mul-float v1, v1, v2

    float-to-int v1, v1

    iget v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDirection:I

    if-nez v2, :cond_76

    iget-object v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdge:Landroid/graphics/drawable/Drawable;

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mWidth:I

    invoke-virtual {v2, v5, v5, v3, v1}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V

    goto :goto_7d

    :cond_76
    iget-object v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdge:Landroid/graphics/drawable/Drawable;

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mWidth:I

    invoke-virtual {v2, v5, v5, v3, v1}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V

    :goto_7d
    iget-object v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdge:Landroid/graphics/drawable/Drawable;

    invoke-virtual {v2, p1}, Landroid/graphics/drawable/Drawable;->draw(Landroid/graphics/Canvas;)V

    iget p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    const/4 v2, 0x3

    if-ne p1, v2, :cond_8d

    if-nez v0, :cond_8d

    if-nez v1, :cond_8d

    iput v5, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    :cond_8d
    iget p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    if-eqz p1, :cond_92

    const/4 v5, 0x1

    :cond_92
    return v5
.end method

.method public finish()V
    .registers 2

    const/4 v0, 0x0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    return-void
.end method

.method public getBounds(Z)Landroid/graphics/Rect;
    .registers 6

    iget-object v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mBounds:Landroid/graphics/Rect;

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mWidth:I

    iget v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mMaxEffectHeight:I

    const/4 v3, 0x0

    invoke-virtual {v0, v3, v3, v1, v2}, Landroid/graphics/Rect;->set(IIII)V

    iget-object v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mBounds:Landroid/graphics/Rect;

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mX:I

    iget v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mY:I

    if-eqz p1, :cond_14

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mMaxEffectHeight:I

    :cond_14
    sub-int/2addr v2, v3

    invoke-virtual {v0, v1, v2}, Landroid/graphics/Rect;->offset(II)V

    iget-object p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mBounds:Landroid/graphics/Rect;

    return-object p1
.end method

.method public isFinished()Z
    .registers 2

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    if-nez v0, :cond_6

    const/4 v0, 0x1

    goto :goto_7

    :cond_6
    const/4 v0, 0x0

    :goto_7
    return v0
.end method

.method public onAbsorb(I)V
    .registers 6

    const/4 v0, 0x2

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    invoke-static {p1}, Ljava/lang/Math;->abs(I)I

    move-result p1

    const/16 v0, 0x64

    invoke-static {v0, p1}, Ljava/lang/Math;->max(II)I

    move-result p1

    invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J

    move-result-wide v0

    iput-wide v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mStartTime:J

    int-to-float v0, p1

    const v1, 0x3cf5c28f    # 0.03f

    mul-float v0, v0, v1

    const v1, 0x3dcccccd    # 0.1f

    add-float/2addr v0, v1

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDuration:F

    const/4 v0, 0x0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaStart:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYStart:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    const/high16 v1, 0x3f000000    # 0.5f

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaStart:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYStart:F

    mul-int/lit8 v0, p1, 0x8

    const/4 v2, 0x1

    invoke-static {v0, v2}, Ljava/lang/Math;->min(II)I

    move-result v2

    const/4 v3, 0x0

    invoke-static {v3, v2}, Ljava/lang/Math;->max(II)I

    move-result v2

    int-to-float v2, v2

    iput v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaFinish:F

    int-to-float v0, v0

    const/high16 v2, 0x3f800000    # 1.0f

    invoke-static {v0, v2}, Ljava/lang/Math;->min(FF)F

    move-result v0

    invoke-static {v1, v0}, Ljava/lang/Math;->max(FF)F

    move-result v0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYFinish:F

    div-int/lit8 v0, p1, 0x64

    mul-int v0, v0, p1

    int-to-float v0, v0

    const v1, 0x391d4952    # 1.5E-4f

    mul-float v0, v0, v1

    const v1, 0x3ccccccd    # 0.025f

    add-float/2addr v0, v1

    const/high16 v1, 0x3fe00000    # 1.75f

    invoke-static {v0, v1}, Ljava/lang/Math;->min(FF)F

    move-result v0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYFinish:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaStart:F

    mul-int/lit8 p1, p1, 0x10

    int-to-float p1, p1

    const v1, 0x3727c5ac    # 1.0E-5f

    mul-float p1, p1, v1

    invoke-static {p1, v2}, Ljava/lang/Math;->min(FF)F

    move-result p1

    invoke-static {v0, p1}, Ljava/lang/Math;->max(FF)F

    move-result p1

    iput p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaFinish:F

    return-void
.end method

.method public onPull(F)V
    .registers 7

    invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J

    move-result-wide v0

    iget v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    const/4 v3, 0x4

    if-ne v2, v3, :cond_15

    iget-wide v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mStartTime:J

    sub-long v2, v0, v2

    long-to-float v2, v2

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDuration:F

    cmpg-float v2, v2, v3

    if-gez v2, :cond_15

    return-void

    :cond_15
    iget v2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    const/4 v3, 0x1

    const/high16 v4, 0x3f800000    # 1.0f

    if-eq v2, v3, :cond_1e

    iput v4, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    :cond_1e
    iput v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    iput-wide v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mStartTime:J

    const/high16 v0, 0x43270000    # 167.0f

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDuration:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mPullDistance:F

    add-float/2addr v0, p1

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mPullDistance:F

    invoke-static {v0}, Ljava/lang/Math;->abs(F)F

    move-result v0

    const v1, 0x3f19999a    # 0.6f

    invoke-static {v0, v4}, Ljava/lang/Math;->min(FF)F

    move-result v2

    invoke-static {v1, v2}, Ljava/lang/Math;->max(FF)F

    move-result v1

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaStart:F

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlpha:F

    const/high16 v1, 0x3f000000    # 0.5f

    const/high16 v2, 0x40e00000    # 7.0f

    mul-float v0, v0, v2

    invoke-static {v0, v4}, Ljava/lang/Math;->min(FF)F

    move-result v0

    invoke-static {v1, v0}, Ljava/lang/Math;->max(FF)F

    move-result v0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYStart:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlpha:F

    invoke-static {p1}, Ljava/lang/Math;->abs(F)F

    move-result v1

    const v3, 0x3f8ccccd    # 1.1f

    mul-float v1, v1, v3

    add-float/2addr v0, v1

    invoke-static {v4, v0}, Ljava/lang/Math;->min(FF)F

    move-result v0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaStart:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlpha:F

    invoke-static {p1}, Ljava/lang/Math;->abs(F)F

    move-result v0

    const/4 v1, 0x0

    cmpl-float p1, p1, v1

    if-lez p1, :cond_74

    iget p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mPullDistance:F

    cmpg-float p1, p1, v1

    if-gez p1, :cond_74

    neg-float v0, v0

    :cond_74
    iget p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mPullDistance:F

    cmpl-float p1, p1, v1

    if-nez p1, :cond_7c

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    :cond_7c
    const/high16 p1, 0x40800000    # 4.0f

    iget v3, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    mul-float v0, v0, v2

    add-float/2addr v3, v0

    invoke-static {v1, v3}, Ljava/lang/Math;->max(FF)F

    move-result v0

    invoke-static {p1, v0}, Ljava/lang/Math;->min(FF)F

    move-result p1

    iput p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYStart:F

    iput p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlpha:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaFinish:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYFinish:F

    iget v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlpha:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaFinish:F

    iput p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYFinish:F

    return-void
.end method

.method public onRelease()V
    .registers 4

    const/4 v0, 0x0

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mPullDistance:F

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    const/4 v2, 0x1

    if-eq v1, v2, :cond_c

    const/4 v2, 0x4

    if-eq v1, v2, :cond_c

    return-void

    :cond_c
    const/4 v1, 0x3

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mState:I

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlpha:F

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaStart:F

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleY:F

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYStart:F

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlpha:F

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaStart:F

    iget v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleY:F

    iput v1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYStart:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeAlphaFinish:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mEdgeScaleYFinish:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowAlphaFinish:F

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mGlowScaleYFinish:F

    invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J

    move-result-wide v0

    iput-wide v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mStartTime:J

    const/high16 v0, 0x447a0000    # 1000.0f

    iput v0, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mDuration:F

    return-void
.end method

.method public setPosition(II)V
    .registers 3

    iput p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mX:I

    iput p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mY:I

    return-void
.end method

.method public setSize(II)V
    .registers 3

    iput p1, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mWidth:I

    iput p2, p0, Lit/sephiroth/android/library/widget/EdgeEffect;->mHeight:I

    return-void
.end method