GifView.smali

.class public Lcom/dianxinos/optimizer/ui/GifView;
.super Landroid/widget/ImageView;
.source "GifView.java"


# instance fields
.field private a:I

.field private b:Landroid/graphics/Movie;

.field private c:J

.field private d:I

.field private e:F

.field private f:F

.field private g:F

.field private h:I

.field private i:I

.field private j:Z

.field private volatile k:Z


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

    .prologue
    .line 49
    const/4 v0, 0x0

    invoke-direct {p0, p1, v0}, Lcom/dianxinos/optimizer/ui/GifView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V

    .line 50
    return-void
.end method

.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
    .registers 4

    .prologue
    .line 53
    const/4 v0, 0x0

    invoke-direct {p0, p1, p2, v0}, Lcom/dianxinos/optimizer/ui/GifView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V

    .line 54
    return-void
.end method

.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
    .registers 6

    .prologue
    const/4 v1, 0x0

    .line 57
    invoke-direct {p0, p1, p2, p3}, Landroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V

    .line 32
    iput v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->d:I

    .line 44
    const/4 v0, 0x1

    iput-boolean v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->j:Z

    .line 46
    iput-boolean v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->k:Z

    .line 58
    invoke-direct {p0, p1, p2, p3}, Lcom/dianxinos/optimizer/ui/GifView;->a(Landroid/content/Context;Landroid/util/AttributeSet;I)V

    .line 59
    return-void
.end method

.method private a()V
    .registers 3
    .annotation build Landroid/annotation/SuppressLint;
        value = {
            "NewApi"
        }
    .end annotation

    .prologue
    .line 203
    iget-boolean v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->j:Z

    if-eqz v0, :cond_d

    .line 204
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x10

    if-lt v0, v1, :cond_e

    .line 205
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->postInvalidateOnAnimation()V

    .line 210
    :cond_d
    :goto_d
    return-void

    .line 207
    :cond_e
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->invalidate()V

    goto :goto_d
.end method

.method private a(Landroid/content/Context;Landroid/util/AttributeSet;I)V
    .registers 9
    .annotation build Landroid/annotation/SuppressLint;
        value = {
            "NewApi"
        }
    .end annotation

    .prologue
    const/4 v4, 0x1

    const/4 v3, 0x0

    const/4 v2, -0x1

    .line 64
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0xb

    if-lt v0, v1, :cond_d

    .line 65
    const/4 v0, 0x0

    invoke-virtual {p0, v4, v0}, Lcom/dianxinos/optimizer/ui/GifView;->setLayerType(ILandroid/graphics/Paint;)V

    .line 68
    :cond_d
    sget-object v0, Ldxoptimizer/pm$a;->GifView:[I

    const v1, 0x7f0a025f

    invoke-virtual {p1, p2, v0, p3, v1}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;

    move-result-object v0

    .line 70
    invoke-virtual {v0, v3, v2}, Landroid/content/res/TypedArray;->getResourceId(II)I

    move-result v1

    iput v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->a:I

    .line 71
    invoke-virtual {v0, v4, v3}, Landroid/content/res/TypedArray;->getBoolean(IZ)Z

    move-result v1

    iput-boolean v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->k:Z

    .line 72
    invoke-virtual {v0}, Landroid/content/res/TypedArray;->recycle()V

    .line 73
    iget v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->a:I

    if-eq v0, v2, :cond_39

    .line 74
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->getResources()Landroid/content/res/Resources;

    move-result-object v0

    iget v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->a:I

    invoke-virtual {v0, v1}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;

    move-result-object v0

    invoke-static {v0}, Landroid/graphics/Movie;->decodeStream(Ljava/io/InputStream;)Landroid/graphics/Movie;

    move-result-object v0

    iput-object v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    .line 76
    :cond_39
    return-void
.end method

.method private a(Landroid/graphics/Canvas;)V
    .registers 6

    .prologue
    .line 229
    iget-object v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    iget v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->d:I

    invoke-virtual {v0, v1}, Landroid/graphics/Movie;->setTime(I)Z

    .line 230
    const/4 v0, 0x1

    invoke-virtual {p1, v0}, Landroid/graphics/Canvas;->save(I)I

    .line 231
    iget v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->g:F

    iget v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->g:F

    invoke-virtual {p1, v0, v1}, Landroid/graphics/Canvas;->scale(FF)V

    .line 232
    iget-object v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    iget v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->e:F

    iget v2, p0, Lcom/dianxinos/optimizer/ui/GifView;->g:F

    div-float/2addr v1, v2

    iget v2, p0, Lcom/dianxinos/optimizer/ui/GifView;->f:F

    iget v3, p0, Lcom/dianxinos/optimizer/ui/GifView;->g:F

    div-float/2addr v2, v3

    invoke-virtual {v0, p1, v1, v2}, Landroid/graphics/Movie;->draw(Landroid/graphics/Canvas;FF)V

    .line 233
    invoke-virtual {p1}, Landroid/graphics/Canvas;->restore()V

    .line 234
    return-void
.end method

.method private b()V
    .registers 7

    .prologue
    .line 213
    invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J

    move-result-wide v2

    .line 215
    iget-wide v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->c:J

    const-wide/16 v4, 0x0

    cmp-long v0, v0, v4

    if-nez v0, :cond_e

    .line 216
    iput-wide v2, p0, Lcom/dianxinos/optimizer/ui/GifView;->c:J

    .line 219
    :cond_e
    iget-object v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    invoke-virtual {v0}, Landroid/graphics/Movie;->duration()I

    move-result v0

    .line 220
    if-nez v0, :cond_18

    .line 221
    const/16 v0, 0x3e8

    .line 224
    :cond_18
    iget-wide v4, p0, Lcom/dianxinos/optimizer/ui/GifView;->c:J

    sub-long/2addr v2, v4

    int-to-long v0, v0

    rem-long v0, v2, v0

    long-to-int v0, v0

    iput v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->d:I

    .line 225
    return-void
.end method


# virtual methods
.method public getMovie()Landroid/graphics/Movie;
    .registers 2

    .prologue
    .line 102
    iget-object v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    return-object v0
.end method

.method protected onDraw(Landroid/graphics/Canvas;)V
    .registers 3

    .prologue
    .line 190
    iget-object v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    if-eqz v0, :cond_11

    .line 191
    iget-boolean v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->k:Z

    if-nez v0, :cond_12

    .line 192
    invoke-direct {p0}, Lcom/dianxinos/optimizer/ui/GifView;->b()V

    .line 193
    invoke-direct {p0, p1}, Lcom/dianxinos/optimizer/ui/GifView;->a(Landroid/graphics/Canvas;)V

    .line 194
    invoke-direct {p0}, Lcom/dianxinos/optimizer/ui/GifView;->a()V

    .line 199
    :cond_11
    :goto_11
    return-void

    .line 196
    :cond_12
    invoke-direct {p0, p1}, Lcom/dianxinos/optimizer/ui/GifView;->a(Landroid/graphics/Canvas;)V

    goto :goto_11
.end method

.method protected onLayout(ZIIII)V
    .registers 9

    .prologue
    const/high16 v2, 0x40000000    # 2.0f

    .line 182
    invoke-super/range {p0 .. p5}, Landroid/widget/ImageView;->onLayout(ZIIII)V

    .line 183
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->getWidth()I

    move-result v0

    iget v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->h:I

    sub-int/2addr v0, v1

    int-to-float v0, v0

    div-float/2addr v0, v2

    iput v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->e:F

    .line 184
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->getHeight()I

    move-result v0

    iget v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->i:I

    sub-int/2addr v0, v1

    int-to-float v0, v0

    div-float/2addr v0, v2

    iput v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->f:F

    .line 185
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->getVisibility()I

    move-result v0

    if-nez v0, :cond_25

    const/4 v0, 0x1

    :goto_22
    iput-boolean v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->j:Z

    .line 186
    return-void

    .line 185
    :cond_25
    const/4 v0, 0x0

    goto :goto_22
.end method

.method protected onMeasure(II)V
    .registers 12

    .prologue
    const/high16 v8, 0x40000000    # 2.0f

    const/high16 v7, -0x80000000

    .line 135
    iget-object v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    if-eqz v0, :cond_5a

    .line 136
    invoke-static {p1}, Landroid/view/View$MeasureSpec;->getMode(I)I

    move-result v0

    .line 137
    invoke-static {p2}, Landroid/view/View$MeasureSpec;->getMode(I)I

    move-result v1

    .line 139
    iget-object v2, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    invoke-virtual {v2}, Landroid/graphics/Movie;->width()I

    move-result v2

    .line 140
    iget-object v3, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    invoke-virtual {v3}, Landroid/graphics/Movie;->height()I

    move-result v3

    .line 142
    invoke-static {p1}, Landroid/view/View$MeasureSpec;->getSize(I)I

    move-result v4

    .line 143
    int-to-float v5, v2

    int-to-float v6, v4

    div-float/2addr v5, v6

    .line 144
    const/high16 v6, 0x3f800000    # 1.0f

    div-float v5, v6, v5

    iput v5, p0, Lcom/dianxinos/optimizer/ui/GifView;->g:F

    .line 145
    iput v4, p0, Lcom/dianxinos/optimizer/ui/GifView;->h:I

    .line 146
    int-to-float v5, v3

    iget v6, p0, Lcom/dianxinos/optimizer/ui/GifView;->g:F

    mul-float/2addr v5, v6

    float-to-int v5, v5

    iput v5, p0, Lcom/dianxinos/optimizer/ui/GifView;->i:I

    .line 148
    if-ne v0, v8, :cond_40

    .line 150
    iput v4, p0, Lcom/dianxinos/optimizer/ui/GifView;->h:I

    .line 160
    :goto_36
    if-ne v1, v8, :cond_4c

    .line 173
    :goto_38
    iget v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->h:I

    iget v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->i:I

    invoke-virtual {p0, v0, v1}, Lcom/dianxinos/optimizer/ui/GifView;->setMeasuredDimension(II)V

    .line 178
    :goto_3f
    return-void

    .line 151
    :cond_40
    if-ne v0, v7, :cond_49

    .line 153
    invoke-static {v2, v4}, Ljava/lang/Math;->min(II)I

    move-result v0

    iput v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->h:I

    goto :goto_36

    .line 156
    :cond_49
    iput v2, p0, Lcom/dianxinos/optimizer/ui/GifView;->h:I

    goto :goto_36

    .line 165
    :cond_4c
    if-ne v1, v7, :cond_57

    .line 167
    iget v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->i:I

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

    move-result v0

    iput v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->i:I

    goto :goto_38

    .line 170
    :cond_57
    iput v3, p0, Lcom/dianxinos/optimizer/ui/GifView;->i:I

    goto :goto_38

    .line 175
    :cond_5a
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->getSuggestedMinimumWidth()I

    move-result v0

    .line 176
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->getSuggestedMinimumHeight()I

    move-result v1

    .line 175
    invoke-virtual {p0, v0, v1}, Lcom/dianxinos/optimizer/ui/GifView;->setMeasuredDimension(II)V

    goto :goto_3f
.end method

.method public onScreenStateChanged(I)V
    .registers 3
    .annotation build Landroid/annotation/SuppressLint;
        value = {
            "NewApi"
        }
    .end annotation

    .prologue
    const/4 v0, 0x1

    .line 239
    invoke-super {p0, p1}, Landroid/widget/ImageView;->onScreenStateChanged(I)V

    .line 240
    if-ne p1, v0, :cond_c

    :goto_6
    iput-boolean v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->j:Z

    .line 241
    invoke-direct {p0}, Lcom/dianxinos/optimizer/ui/GifView;->a()V

    .line 242
    return-void

    .line 240
    :cond_c
    const/4 v0, 0x0

    goto :goto_6
.end method

.method protected onVisibilityChanged(Landroid/view/View;I)V
    .registers 4
    .annotation build Landroid/annotation/SuppressLint;
        value = {
            "NewApi"
        }
    .end annotation

    .prologue
    .line 247
    invoke-super {p0, p1, p2}, Landroid/widget/ImageView;->onVisibilityChanged(Landroid/view/View;I)V

    .line 248
    if-nez p2, :cond_c

    const/4 v0, 0x1

    :goto_6
    iput-boolean v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->j:Z

    .line 249
    invoke-direct {p0}, Lcom/dianxinos/optimizer/ui/GifView;->a()V

    .line 250
    return-void

    .line 248
    :cond_c
    const/4 v0, 0x0

    goto :goto_6
.end method

.method protected onWindowVisibilityChanged(I)V
    .registers 3

    .prologue
    .line 254
    invoke-super {p0, p1}, Landroid/widget/ImageView;->onWindowVisibilityChanged(I)V

    .line 255
    if-nez p1, :cond_c

    const/4 v0, 0x1

    :goto_6
    iput-boolean v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->j:Z

    .line 256
    invoke-direct {p0}, Lcom/dianxinos/optimizer/ui/GifView;->a()V

    .line 257
    return-void

    .line 255
    :cond_c
    const/4 v0, 0x0

    goto :goto_6
.end method

.method public setMovie(Landroid/graphics/Movie;)V
    .registers 2

    .prologue
    .line 97
    iput-object p1, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    .line 98
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->requestLayout()V

    .line 99
    return-void
.end method

.method public setMovieResource(I)V
    .registers 4

    .prologue
    .line 85
    :try_start_0
    iput p1, p0, Lcom/dianxinos/optimizer/ui/GifView;->a:I

    .line 86
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->getResources()Landroid/content/res/Resources;

    move-result-object v0

    iget v1, p0, Lcom/dianxinos/optimizer/ui/GifView;->a:I

    invoke-virtual {v0, v1}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;

    move-result-object v0

    invoke-static {v0}, Landroid/graphics/Movie;->decodeStream(Ljava/io/InputStream;)Landroid/graphics/Movie;

    move-result-object v0

    iput-object v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->b:Landroid/graphics/Movie;

    .line 87
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->requestLayout()V
    :try_end_15
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_15} :catch_16

    .line 94
    :goto_15
    return-void

    .line 88
    :catch_16
    move-exception v0

    goto :goto_15
.end method

.method public setMovieTime(I)V
    .registers 2

    .prologue
    .line 106
    iput p1, p0, Lcom/dianxinos/optimizer/ui/GifView;->d:I

    .line 107
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->invalidate()V

    .line 108
    return-void
.end method

.method public setPaused(Z)V
    .registers 6

    .prologue
    .line 116
    iput-boolean p1, p0, Lcom/dianxinos/optimizer/ui/GifView;->k:Z

    .line 117
    if-nez p1, :cond_e

    .line 118
    invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J

    move-result-wide v0

    iget v2, p0, Lcom/dianxinos/optimizer/ui/GifView;->d:I

    int-to-long v2, v2

    sub-long/2addr v0, v2

    iput-wide v0, p0, Lcom/dianxinos/optimizer/ui/GifView;->c:J

    .line 121
    :cond_e
    invoke-virtual {p0}, Lcom/dianxinos/optimizer/ui/GifView;->invalidate()V

    .line 122
    return-void
.end method