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