FrameSequence.smali
.class public Landroid/support/rastermill/FrameSequence;
.super Ljava/lang/Object;
# interfaces
.implements Ljava/io/Serializable;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroid/support/rastermill/FrameSequence$State;
}
.end annotation
# static fields
.field private static final ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
# instance fields
.field private mDefaultLoopCount:I
.field private mFrameCount:I
.field private mHeight:I
.field private mNativeFrameSequence:J
.field private mOpaque:Z
.field private mWidth:I
# direct methods
.method static constructor <clinit>()V
.registers 3
const/4 v2, 0x0
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
sput-object v0, Landroid/support/rastermill/FrameSequence;->ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
:try_start_8
const-string v0, "framesequence"
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
sget-object v0, Landroid/support/rastermill/FrameSequence;->ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v1, 0x1
invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
:try_end_13
.catch Ljava/lang/Throwable; {:try_start_8 .. :try_end_13} :catch_14
:goto_13
return-void
:catch_14
move-exception v0
sget-object v0, Landroid/support/rastermill/FrameSequence;->ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
goto :goto_13
.end method
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private constructor <init>(JIIZII)V
.registers 9
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-wide p1, p0, Landroid/support/rastermill/FrameSequence;->mNativeFrameSequence:J
iput p3, p0, Landroid/support/rastermill/FrameSequence;->mWidth:I
iput p4, p0, Landroid/support/rastermill/FrameSequence;->mHeight:I
iput-boolean p5, p0, Landroid/support/rastermill/FrameSequence;->mOpaque:Z
iput p6, p0, Landroid/support/rastermill/FrameSequence;->mFrameCount:I
iput p7, p0, Landroid/support/rastermill/FrameSequence;->mDefaultLoopCount:I
return-void
.end method
.method static synthetic access$000(J)V
.registers 2
invoke-static {p0, p1}, Landroid/support/rastermill/FrameSequence;->nativeDestroyState(J)V
return-void
.end method
.method static synthetic access$100(JILandroid/graphics/Bitmap;I)J
.registers 7
invoke-static {p0, p1, p2, p3, p4}, Landroid/support/rastermill/FrameSequence;->nativeGetFrame(JILandroid/graphics/Bitmap;I)J
move-result-wide v0
return-wide v0
.end method
.method public static decodeByteArray([B)Landroid/support/rastermill/FrameSequence;
.registers 3
.annotation build Landroid/support/annotation/Nullable;
.end annotation
sget-object v0, Landroid/support/rastermill/FrameSequence;->ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
if-nez v0, :cond_a
const/4 v0, 0x0
:goto_9
return-object v0
:cond_a
const/4 v0, 0x0
array-length v1, p0
invoke-static {p0, v0, v1}, Landroid/support/rastermill/FrameSequence;->decodeByteArray([BII)Landroid/support/rastermill/FrameSequence;
move-result-object v0
goto :goto_9
.end method
.method public static decodeByteArray([BII)Landroid/support/rastermill/FrameSequence;
.registers 5
.annotation build Landroid/support/annotation/Nullable;
.end annotation
sget-object v0, Landroid/support/rastermill/FrameSequence;->ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
if-nez v0, :cond_a
const/4 v0, 0x0
:goto_9
return-object v0
:cond_a
if-nez p0, :cond_12
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V
throw v0
:cond_12
if-ltz p1, :cond_1b
if-ltz p2, :cond_1b
add-int v0, p1, p2
array-length v1, p0
if-le v0, v1, :cond_23
:cond_1b
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "invalid offset/length parameters"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_23
invoke-static {p0, p1, p2}, Landroid/support/rastermill/FrameSequence;->nativeDecodeByteArray([BII)Landroid/support/rastermill/FrameSequence;
move-result-object v0
goto :goto_9
.end method
.method public static decodeByteBuffer(Ljava/nio/ByteBuffer;)Landroid/support/rastermill/FrameSequence;
.registers 4
.annotation build Landroid/support/annotation/Nullable;
.end annotation
sget-object v0, Landroid/support/rastermill/FrameSequence;->ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
if-nez v0, :cond_a
const/4 v0, 0x0
:goto_9
return-object v0
:cond_a
if-nez p0, :cond_12
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V
throw v0
:cond_12
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->isDirect()Z
move-result v0
if-nez v0, :cond_37
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->hasArray()Z
move-result v0
if-eqz v0, :cond_2f
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v0
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->position()I
move-result v1
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v2
invoke-static {v0, v1, v2}, Landroid/support/rastermill/FrameSequence;->decodeByteArray([BII)Landroid/support/rastermill/FrameSequence;
move-result-object v0
goto :goto_9
:cond_2f
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Cannot have non-direct ByteBuffer with no byte array"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_37
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->position()I
move-result v0
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v1
invoke-static {p0, v0, v1}, Landroid/support/rastermill/FrameSequence;->nativeDecodeByteBuffer(Ljava/nio/ByteBuffer;II)Landroid/support/rastermill/FrameSequence;
move-result-object v0
goto :goto_9
.end method
.method public static decodeStream(Ljava/io/InputStream;)Landroid/support/rastermill/FrameSequence;
.registers 2
.annotation build Landroid/support/annotation/Nullable;
.end annotation
sget-object v0, Landroid/support/rastermill/FrameSequence;->ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
if-nez v0, :cond_a
const/4 v0, 0x0
:goto_9
return-object v0
:cond_a
if-nez p0, :cond_12
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V
throw v0
:cond_12
const/16 v0, 0x4000
new-array v0, v0, [B
invoke-static {p0, v0}, Landroid/support/rastermill/FrameSequence;->nativeDecodeStream(Ljava/io/InputStream;[B)Landroid/support/rastermill/FrameSequence;
move-result-object v0
goto :goto_9
.end method
.method public static isEnable()Z
.registers 1
sget-object v0, Landroid/support/rastermill/FrameSequence;->ISLOADED:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
return v0
.end method
.method private static native nativeCreateState(J)J
.end method
.method private static native nativeDecodeByteArray([BII)Landroid/support/rastermill/FrameSequence;
.end method
.method private static native nativeDecodeByteBuffer(Ljava/nio/ByteBuffer;II)Landroid/support/rastermill/FrameSequence;
.end method
.method private static native nativeDecodeStream(Ljava/io/InputStream;[B)Landroid/support/rastermill/FrameSequence;
.end method
.method private static native nativeDestroyFrameSequence(J)V
.end method
.method private static native nativeDestroyState(J)V
.end method
.method private static native nativeGetFrame(JILandroid/graphics/Bitmap;I)J
.end method
# virtual methods
.method createState()Landroid/support/rastermill/FrameSequence$State;
.registers 7
const-wide/16 v4, 0x0
iget-wide v0, p0, Landroid/support/rastermill/FrameSequence;->mNativeFrameSequence:J
cmp-long v0, v0, v4
if-nez v0, :cond_10
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "attempted to use incorrectly built FrameSequence"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:cond_10
iget-wide v0, p0, Landroid/support/rastermill/FrameSequence;->mNativeFrameSequence:J
invoke-static {v0, v1}, Landroid/support/rastermill/FrameSequence;->nativeCreateState(J)J
move-result-wide v2
cmp-long v0, v2, v4
if-nez v0, :cond_1c
const/4 v0, 0x0
:goto_1b
return-object v0
:cond_1c
new-instance v0, Landroid/support/rastermill/FrameSequence$State;
invoke-direct {v0, v2, v3}, Landroid/support/rastermill/FrameSequence$State;-><init>(J)V
goto :goto_1b
.end method
.method protected finalize()V
.registers 5
:try_start_0
iget-wide v0, p0, Landroid/support/rastermill/FrameSequence;->mNativeFrameSequence:J
const-wide/16 v2, 0x0
cmp-long v0, v0, v2
if-eqz v0, :cond_d
iget-wide v0, p0, Landroid/support/rastermill/FrameSequence;->mNativeFrameSequence:J
invoke-static {v0, v1}, Landroid/support/rastermill/FrameSequence;->nativeDestroyFrameSequence(J)V
:try_end_d
.catchall {:try_start_0 .. :try_end_d} :catchall_11
:cond_d
invoke-super {p0}, Ljava/lang/Object;->finalize()V
return-void
:catchall_11
move-exception v0
invoke-super {p0}, Ljava/lang/Object;->finalize()V
throw v0
.end method
.method public getDefaultLoopCount()I
.registers 2
iget v0, p0, Landroid/support/rastermill/FrameSequence;->mDefaultLoopCount:I
return v0
.end method
.method public getFrameCount()I
.registers 2
iget v0, p0, Landroid/support/rastermill/FrameSequence;->mFrameCount:I
return v0
.end method
.method public getHeight()I
.registers 2
iget v0, p0, Landroid/support/rastermill/FrameSequence;->mHeight:I
return v0
.end method
.method public getWidth()I
.registers 2
iget v0, p0, Landroid/support/rastermill/FrameSequence;->mWidth:I
return v0
.end method
.method public isOpaque()Z
.registers 2
iget-boolean v0, p0, Landroid/support/rastermill/FrameSequence;->mOpaque:Z
return v0
.end method