.class public Lpl/droidsonroids/gif/GifDrawable; .super Landroid/graphics/drawable/Drawable; .source "GifDrawable.java" # interfaces .implements Landroid/graphics/drawable/Animatable; .implements Landroid/widget/MediaController$MediaPlayerControl; # instance fields .field final mBuffer:Landroid/graphics/Bitmap; .field private final mDstRect:Landroid/graphics/Rect; .field final mExecutor:Ljava/util/concurrent/ScheduledThreadPoolExecutor; .field final mInvalidationHandler:Lpl/droidsonroids/gif/InvalidationHandler; .field final mIsRenderingTriggeredOnDraw:Z .field volatile mIsRunning:Z .field final mListeners:Ljava/util/concurrent/ConcurrentLinkedQueue; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/concurrent/ConcurrentLinkedQueue<", "Lpl/droidsonroids/gif/AnimationListener;", ">;" } .end annotation .end field .field final mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; .field mNextFrameRenderTime:J .field protected final mPaint:Landroid/graphics/Paint; .field private final mRenderTask:Lpl/droidsonroids/gif/RenderTask; .field mRenderTaskSchedule:Ljava/util/concurrent/ScheduledFuture; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/concurrent/ScheduledFuture<", "*>;" } .end annotation .end field .field private mScaledHeight:I .field private mScaledWidth:I .field private final mSrcRect:Landroid/graphics/Rect; .field private mTint:Landroid/content/res/ColorStateList; .field private mTintFilter:Landroid/graphics/PorterDuffColorFilter; .field private mTintMode:Landroid/graphics/PorterDuff$Mode; .field private mTransform:Lpl/droidsonroids/gif/transforms/Transform; # direct methods .method public constructor (Landroid/content/ContentResolver;Landroid/net/Uri;)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 209 invoke-static {p1, p2}, Lpl/droidsonroids/gif/GifInfoHandle;->openUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Lpl/droidsonroids/gif/GifInfoHandle; move-result-object p1 const/4 p2, 0x0 const/4 v0, 0x1 invoke-direct {p0, p1, p2, p2, v0}, Lpl/droidsonroids/gif/GifDrawable;->(Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V return-void .end method .method public constructor (Landroid/content/res/AssetFileDescriptor;)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 161 new-instance v0, Lpl/droidsonroids/gif/GifInfoHandle; invoke-direct {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->(Landroid/content/res/AssetFileDescriptor;)V const/4 p1, 0x0 const/4 v1, 0x1 invoke-direct {p0, v0, p1, p1, v1}, Lpl/droidsonroids/gif/GifDrawable;->(Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V return-void .end method .method public constructor (Landroid/content/res/AssetManager;Ljava/lang/String;)V .registers 3 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 111 invoke-virtual {p1, p2}, Landroid/content/res/AssetManager;->openFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor; move-result-object p1 invoke-direct {p0, p1}, Lpl/droidsonroids/gif/GifDrawable;->(Landroid/content/res/AssetFileDescriptor;)V return-void .end method .method public constructor (Landroid/content/res/Resources;I)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Landroid/content/res/Resources$NotFoundException;, Ljava/io/IOException; } .end annotation .line 96 invoke-virtual {p1, p2}, Landroid/content/res/Resources;->openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor; move-result-object v0 invoke-direct {p0, v0}, Lpl/droidsonroids/gif/GifDrawable;->(Landroid/content/res/AssetFileDescriptor;)V .line 97 invoke-static {p1, p2}, Lpl/droidsonroids/gif/GifViewUtils;->getDensityScale(Landroid/content/res/Resources;I)F move-result p1 .line 98 iget-object p2, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {p2}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result p2 int-to-float p2, p2 mul-float/2addr p2, p1 float-to-int p2, p2 iput p2, p0, Lpl/droidsonroids/gif/GifDrawable;->mScaledHeight:I .line 99 iget-object p2, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {p2}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result p2 int-to-float p2, p2 mul-float/2addr p2, p1 float-to-int p1, p2 iput p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mScaledWidth:I return-void .end method .method public constructor (Ljava/io/File;)V .registers 2 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 136 invoke-virtual {p1}, Ljava/io/File;->getPath()Ljava/lang/String; move-result-object p1 invoke-direct {p0, p1}, Lpl/droidsonroids/gif/GifDrawable;->(Ljava/lang/String;)V return-void .end method .method public constructor (Ljava/io/FileDescriptor;)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 172 new-instance v0, Lpl/droidsonroids/gif/GifInfoHandle; invoke-direct {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->(Ljava/io/FileDescriptor;)V const/4 p1, 0x0 const/4 v1, 0x1 invoke-direct {p0, v0, p1, p1, v1}, Lpl/droidsonroids/gif/GifDrawable;->(Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V return-void .end method .method public constructor (Ljava/io/InputStream;)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 149 new-instance v0, Lpl/droidsonroids/gif/GifInfoHandle; invoke-direct {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->(Ljava/io/InputStream;)V const/4 p1, 0x0 const/4 v1, 0x1 invoke-direct {p0, v0, p1, p1, v1}, Lpl/droidsonroids/gif/GifDrawable;->(Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V return-void .end method .method public constructor (Ljava/lang/String;)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 125 new-instance v0, Lpl/droidsonroids/gif/GifInfoHandle; invoke-direct {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->(Ljava/lang/String;)V const/4 p1, 0x0 const/4 v1, 0x1 invoke-direct {p0, v0, p1, p1, v1}, Lpl/droidsonroids/gif/GifDrawable;->(Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V return-void .end method .method public constructor (Ljava/nio/ByteBuffer;)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 196 new-instance v0, Lpl/droidsonroids/gif/GifInfoHandle; invoke-direct {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->(Ljava/nio/ByteBuffer;)V const/4 p1, 0x0 const/4 v1, 0x1 invoke-direct {p0, v0, p1, p1, v1}, Lpl/droidsonroids/gif/GifDrawable;->(Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V return-void .end method .method constructor (Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V .registers 10 .line 231 invoke-direct {p0}, Landroid/graphics/drawable/Drawable;->()V const/4 v0, 0x1 .line 59 iput-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z const-wide/high16 v1, -0x8000000000000000L .line 60 iput-wide v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNextFrameRenderTime:J .line 62 new-instance v1, Landroid/graphics/Rect; invoke-direct {v1}, Landroid/graphics/Rect;->()V iput-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mDstRect:Landroid/graphics/Rect; .line 66 new-instance v1, Landroid/graphics/Paint; const/4 v2, 0x6 invoke-direct {v1, v2}, Landroid/graphics/Paint;->(I)V iput-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; .line 72 new-instance v1, Ljava/util/concurrent/ConcurrentLinkedQueue; invoke-direct {v1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->()V iput-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mListeners:Ljava/util/concurrent/ConcurrentLinkedQueue; .line 79 new-instance v1, Lpl/droidsonroids/gif/RenderTask; invoke-direct {v1, p0}, Lpl/droidsonroids/gif/RenderTask;->(Lpl/droidsonroids/gif/GifDrawable;)V iput-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mRenderTask:Lpl/droidsonroids/gif/RenderTask; .line 232 iput-boolean p4, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRenderingTriggeredOnDraw:Z if-eqz p3, :cond_2c goto :goto_30 .line 233 :cond_2c invoke-static {}, Lpl/droidsonroids/gif/GifRenderingExecutor;->getInstance()Lpl/droidsonroids/gif/GifRenderingExecutor; move-result-object p3 :goto_30 iput-object p3, p0, Lpl/droidsonroids/gif/GifDrawable;->mExecutor:Ljava/util/concurrent/ScheduledThreadPoolExecutor; .line 234 iput-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; const/4 p3, 0x0 const/4 p4, 0x0 if-eqz p2, :cond_69 .line 237 iget-object v2, p2, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; monitor-enter v2 .line 238 :try_start_3b iget-object v3, p2, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v3}, Lpl/droidsonroids/gif/GifInfoHandle;->isRecycled()Z move-result v3 if-nez v3, :cond_64 iget-object v3, p2, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; .line 239 invoke-virtual {v3}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result v3 invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result v4 if-lt v3, v4, :cond_64 iget-object v3, p2, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; .line 240 invoke-virtual {v3}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result v3 invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result v4 if-lt v3, v4, :cond_64 .line 241 invoke-direct {p2}, Lpl/droidsonroids/gif/GifDrawable;->shutdown()V .line 242 iget-object p2, p2, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; .line 243 invoke-virtual {p2, p3}, Landroid/graphics/Bitmap;->eraseColor(I)V move-object p4, p2 .line 245 :cond_64 monitor-exit v2 goto :goto_69 :catchall_66 move-exception p1 monitor-exit v2 :try_end_68 .catchall {:try_start_3b .. :try_end_68} :catchall_66 throw p1 :cond_69 :goto_69 if-nez p4, :cond_7c .line 249 invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result p2 invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result p4 sget-object v2, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config; invoke-static {p2, p4, v2}, Landroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object p2 iput-object p2, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; goto :goto_7e .line 251 :cond_7c iput-object p4, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; .line 253 :goto_7e iget-object p2, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->isOpaque()Z move-result p4 xor-int/2addr p4, v0 invoke-virtual {p2, p4}, Landroid/graphics/Bitmap;->setHasAlpha(Z)V .line 254 new-instance p2, Landroid/graphics/Rect; invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result p4 invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result v0 invoke-direct {p2, p3, p3, p4, v0}, Landroid/graphics/Rect;->(IIII)V iput-object p2, p0, Lpl/droidsonroids/gif/GifDrawable;->mSrcRect:Landroid/graphics/Rect; .line 255 new-instance p2, Lpl/droidsonroids/gif/InvalidationHandler; invoke-direct {p2, p0}, Lpl/droidsonroids/gif/InvalidationHandler;->(Lpl/droidsonroids/gif/GifDrawable;)V iput-object p2, p0, Lpl/droidsonroids/gif/GifDrawable;->mInvalidationHandler:Lpl/droidsonroids/gif/InvalidationHandler; .line 256 invoke-virtual {v1}, Lpl/droidsonroids/gif/RenderTask;->doWork()V .line 257 invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result p2 iput p2, p0, Lpl/droidsonroids/gif/GifDrawable;->mScaledWidth:I .line 258 invoke-virtual {p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result p1 iput p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mScaledHeight:I return-void .end method .method protected constructor (Lpl/droidsonroids/gif/InputSource;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;ZLpl/droidsonroids/gif/GifOptions;)V .registers 6 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 228 invoke-virtual {p1, p5}, Lpl/droidsonroids/gif/InputSource;->createHandleWith(Lpl/droidsonroids/gif/GifOptions;)Lpl/droidsonroids/gif/GifInfoHandle; move-result-object p1 invoke-direct {p0, p1, p2, p3, p4}, Lpl/droidsonroids/gif/GifDrawable;->(Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V return-void .end method .method public constructor ([B)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 184 new-instance v0, Lpl/droidsonroids/gif/GifInfoHandle; invoke-direct {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->([B)V const/4 p1, 0x0 const/4 v1, 0x1 invoke-direct {p0, v0, p1, p1, v1}, Lpl/droidsonroids/gif/GifDrawable;->(Lpl/droidsonroids/gif/GifInfoHandle;Lpl/droidsonroids/gif/GifDrawable;Ljava/util/concurrent/ScheduledThreadPoolExecutor;Z)V return-void .end method .method private cancelPendingRenderTask()V .registers 3 .line 387 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mRenderTaskSchedule:Ljava/util/concurrent/ScheduledFuture; if-eqz v0, :cond_8 const/4 v1, 0x0 .line 388 invoke-interface {v0, v1}, Ljava/util/concurrent/ScheduledFuture;->cancel(Z)Z .line 390 :cond_8 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mInvalidationHandler:Lpl/droidsonroids/gif/InvalidationHandler; const/4 v1, -0x1 invoke-virtual {v0, v1}, Lpl/droidsonroids/gif/InvalidationHandler;->removeMessages(I)V return-void .end method .method public static createFromResource(Landroid/content/res/Resources;I)Lpl/droidsonroids/gif/GifDrawable; .registers 3 .line 465 :try_start_0 new-instance v0, Lpl/droidsonroids/gif/GifDrawable; invoke-direct {v0, p0, p1}, Lpl/droidsonroids/gif/GifDrawable;->(Landroid/content/res/Resources;I)V :try_end_5 .catch Ljava/io/IOException; {:try_start_0 .. :try_end_5} :catch_6 return-object v0 :catch_6 const/4 p0, 0x0 return-object p0 .end method .method private scheduleNextRender()V .registers 7 .line 792 iget-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRenderingTriggeredOnDraw:Z if-eqz v0, :cond_30 iget-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z if-eqz v0, :cond_30 iget-wide v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNextFrameRenderTime:J const-wide/high16 v2, -0x8000000000000000L cmp-long v4, v0, v2 if-eqz v4, :cond_30 .line 793 invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J move-result-wide v4 sub-long/2addr v0, v4 const-wide/16 v4, 0x0 invoke-static {v4, v5, v0, v1}, Ljava/lang/Math;->max(JJ)J move-result-wide v0 .line 794 iput-wide v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mNextFrameRenderTime:J .line 795 iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mExecutor:Ljava/util/concurrent/ScheduledThreadPoolExecutor; iget-object v3, p0, Lpl/droidsonroids/gif/GifDrawable;->mRenderTask:Lpl/droidsonroids/gif/RenderTask; invoke-virtual {v2, v3}, Ljava/util/concurrent/ScheduledThreadPoolExecutor;->remove(Ljava/lang/Runnable;)Z .line 796 iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mExecutor:Ljava/util/concurrent/ScheduledThreadPoolExecutor; iget-object v3, p0, Lpl/droidsonroids/gif/GifDrawable;->mRenderTask:Lpl/droidsonroids/gif/RenderTask; sget-object v4, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v2, v3, v0, v1, v4}, Ljava/util/concurrent/ScheduledThreadPoolExecutor;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; move-result-object v0 iput-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mRenderTaskSchedule:Ljava/util/concurrent/ScheduledFuture; :cond_30 return-void .end method .method private shutdown()V .registers 3 const/4 v0, 0x0 .line 274 iput-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z .line 275 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mInvalidationHandler:Lpl/droidsonroids/gif/InvalidationHandler; const/4 v1, -0x1 invoke-virtual {v0, v1}, Lpl/droidsonroids/gif/InvalidationHandler;->removeMessages(I)V .line 276 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->recycle()V return-void .end method .method private updateTintFilter(Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; .registers 5 if-eqz p1, :cond_14 if-nez p2, :cond_5 goto :goto_14 .line 867 :cond_5 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->getState()[I move-result-object v0 const/4 v1, 0x0 invoke-virtual {p1, v0, v1}, Landroid/content/res/ColorStateList;->getColorForState([II)I move-result p1 .line 868 new-instance v0, Landroid/graphics/PorterDuffColorFilter; invoke-direct {v0, p1, p2}, Landroid/graphics/PorterDuffColorFilter;->(ILandroid/graphics/PorterDuff$Mode;)V return-object v0 :cond_14 :goto_14 const/4 p1, 0x0 return-object p1 .end method # virtual methods .method public addAnimationListener(Lpl/droidsonroids/gif/AnimationListener;)V .registers 3 .line 833 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mListeners:Ljava/util/concurrent/ConcurrentLinkedQueue; invoke-virtual {v0, p1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->add(Ljava/lang/Object;)Z return-void .end method .method public canPause()Z .registers 2 const/4 v0, 0x1 return v0 .end method .method public canSeekBackward()Z .registers 3 .line 657 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->getNumberOfFrames()I move-result v0 const/4 v1, 0x1 if-le v0, v1, :cond_8 goto :goto_9 :cond_8 const/4 v1, 0x0 :goto_9 return v1 .end method .method public canSeekForward()Z .registers 3 .line 667 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->getNumberOfFrames()I move-result v0 const/4 v1, 0x1 if-le v0, v1, :cond_8 goto :goto_9 :cond_8 const/4 v1, 0x0 :goto_9 return v1 .end method .method public draw(Landroid/graphics/Canvas;)V .registers 7 .line 774 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTintFilter:Landroid/graphics/PorterDuffColorFilter; if-eqz v0, :cond_15 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {v0}, Landroid/graphics/Paint;->getColorFilter()Landroid/graphics/ColorFilter; move-result-object v0 if-nez v0, :cond_15 .line 775 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTintFilter:Landroid/graphics/PorterDuffColorFilter; invoke-virtual {v0, v1}, Landroid/graphics/Paint;->setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter; const/4 v0, 0x1 goto :goto_16 :cond_15 const/4 v0, 0x0 .line 780 :goto_16 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTransform:Lpl/droidsonroids/gif/transforms/Transform; if-nez v1, :cond_26 .line 781 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mSrcRect:Landroid/graphics/Rect; iget-object v3, p0, Lpl/droidsonroids/gif/GifDrawable;->mDstRect:Landroid/graphics/Rect; iget-object v4, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {p1, v1, v2, v3, v4}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V goto :goto_2d .line 783 :cond_26 iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; iget-object v3, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-interface {v1, p1, v2, v3}, Lpl/droidsonroids/gif/transforms/Transform;->onDraw(Landroid/graphics/Canvas;Landroid/graphics/Paint;Landroid/graphics/Bitmap;)V :goto_2d if-eqz v0, :cond_35 .line 786 iget-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; const/4 v0, 0x0 invoke-virtual {p1, v0}, Landroid/graphics/Paint;->setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter; :cond_35 return-void .end method .method public getAllocationByteCount()J .registers 5 .line 701 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getAllocationByteCount()J move-result-wide v0 iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v2}, Landroid/graphics/Bitmap;->getAllocationByteCount()I move-result v2 int-to-long v2, v2 add-long/2addr v0, v2 return-wide v0 .end method .method public getAlpha()I .registers 2 .line 810 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {v0}, Landroid/graphics/Paint;->getAlpha()I move-result v0 return v0 .end method .method public getAudioSessionId()I .registers 2 const/4 v0, 0x0 return v0 .end method .method public getBufferPercentage()I .registers 2 const/16 v0, 0x64 return v0 .end method .method public getColorFilter()Landroid/graphics/ColorFilter; .registers 2 .line 848 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {v0}, Landroid/graphics/Paint;->getColorFilter()Landroid/graphics/ColorFilter; move-result-object v0 return-object v0 .end method .method public getComment()Ljava/lang/String; .registers 2 .line 405 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getComment()Ljava/lang/String; move-result-object v0 return-object v0 .end method .method public getCornerRadius()F .registers 3 .line 993 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTransform:Lpl/droidsonroids/gif/transforms/Transform; instance-of v1, v0, Lpl/droidsonroids/gif/transforms/CornerRadiusTransform; if-eqz v1, :cond_d .line 994 check-cast v0, Lpl/droidsonroids/gif/transforms/CornerRadiusTransform; invoke-virtual {v0}, Lpl/droidsonroids/gif/transforms/CornerRadiusTransform;->getCornerRadius()F move-result v0 return v0 :cond_d const/4 v0, 0x0 return v0 .end method .method public getCurrentFrame()Landroid/graphics/Bitmap; .registers 4 .line 857 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v0}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config; move-result-object v1 iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v2}, Landroid/graphics/Bitmap;->isMutable()Z move-result v2 invoke-virtual {v0, v1, v2}, Landroid/graphics/Bitmap;->copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap; move-result-object v0 .line 858 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v1}, Landroid/graphics/Bitmap;->hasAlpha()Z move-result v1 invoke-virtual {v0, v1}, Landroid/graphics/Bitmap;->setHasAlpha(Z)V return-object v0 .end method .method public getCurrentFrameIndex()I .registers 2 .line 937 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getCurrentFrameIndex()I move-result v0 return v0 .end method .method public getCurrentLoop()I .registers 3 .line 947 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getCurrentLoop()I move-result v0 if-eqz v0, :cond_13 .line 948 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v1}, Lpl/droidsonroids/gif/GifInfoHandle;->getLoopCount()I move-result v1 if-ge v0, v1, :cond_11 goto :goto_13 :cond_11 add-int/lit8 v0, v0, -0x1 :cond_13 :goto_13 return v0 .end method .method public getCurrentPosition()I .registers 2 .line 513 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getCurrentPosition()I move-result v0 return v0 .end method .method public getDuration()I .registers 2 .line 502 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getDuration()I move-result v0 return v0 .end method .method public getError()Lpl/droidsonroids/gif/GifError; .registers 2 .line 451 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getNativeErrorCode()I move-result v0 invoke-static {v0}, Lpl/droidsonroids/gif/GifError;->fromCode(I)Lpl/droidsonroids/gif/GifError; move-result-object v0 return-object v0 .end method .method public getFrameByteCount()I .registers 3 .line 690 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v0}, Landroid/graphics/Bitmap;->getRowBytes()I move-result v0 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v1}, Landroid/graphics/Bitmap;->getHeight()I move-result v1 mul-int/2addr v0, v1 return v0 .end method .method public getFrameDuration(I)I .registers 3 .line 973 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->getFrameDuration(I)I move-result p1 return p1 .end method .method public getInputSourceByteCount()J .registers 3 .line 724 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getSourceLength()J move-result-wide v0 return-wide v0 .end method .method public getIntrinsicHeight()I .registers 2 .line 294 iget v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mScaledHeight:I return v0 .end method .method public getIntrinsicWidth()I .registers 2 .line 299 iget v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mScaledWidth:I return v0 .end method .method public getLoopCount()I .registers 2 .line 415 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getLoopCount()I move-result v0 return v0 .end method .method public getMetadataAllocationByteCount()J .registers 3 .line 711 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getMetadataByteCount()J move-result-wide v0 return-wide v0 .end method .method public getNumberOfFrames()I .registers 2 .line 441 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getNumberOfFrames()I move-result v0 return v0 .end method .method public getOpacity()I .registers 3 .line 321 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->isOpaque()Z move-result v0 if-eqz v0, :cond_15 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {v0}, Landroid/graphics/Paint;->getAlpha()I move-result v0 const/16 v1, 0xff if-ge v0, v1, :cond_13 goto :goto_15 :cond_13 const/4 v0, -0x1 return v0 :cond_15 :goto_15 const/4 v0, -0x2 return v0 .end method .method public final getPaint()Landroid/graphics/Paint; .registers 2 .line 805 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; return-object v0 .end method .method public getPixel(II)I .registers 4 .line 749 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result v0 if-ge p1, v0, :cond_1f .line 752 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result v0 if-ge p2, v0, :cond_17 .line 755 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v0, p1, p2}, Landroid/graphics/Bitmap;->getPixel(II)I move-result p1 return p1 .line 753 :cond_17 new-instance p1, Ljava/lang/IllegalArgumentException; const-string p2, "y must be < height" invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .line 750 :cond_1f new-instance p1, Ljava/lang/IllegalArgumentException; const-string p2, "x must be < width" invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method .method public getPixels([I)V .registers 10 .line 734 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v1}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result v3 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v1}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result v6 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v1}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result v7 const/4 v2, 0x0 const/4 v4, 0x0 const/4 v5, 0x0 move-object v1, p1 invoke-virtual/range {v0 .. v7}, Landroid/graphics/Bitmap;->getPixels([IIIIIII)V return-void .end method .method public getTransform()Lpl/droidsonroids/gif/transforms/Transform; .registers 2 .line 1017 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTransform:Lpl/droidsonroids/gif/transforms/Transform; return-object v0 .end method .method public invalidateSelf()V .registers 1 .line 288 invoke-super {p0}, Landroid/graphics/drawable/Drawable;->invalidateSelf()V .line 289 invoke-direct {p0}, Lpl/droidsonroids/gif/GifDrawable;->scheduleNextRender()V return-void .end method .method public isAnimationCompleted()Z .registers 2 .line 961 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->isAnimationCompleted()Z move-result v0 return v0 .end method .method public isPlaying()Z .registers 2 .line 626 iget-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z return v0 .end method .method public isRecycled()Z .registers 2 .line 283 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->isRecycled()Z move-result v0 return v0 .end method .method public isRunning()Z .registers 2 .line 395 iget-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z return v0 .end method .method public isStateful()Z .registers 2 .line 896 invoke-super {p0}, Landroid/graphics/drawable/Drawable;->isStateful()Z move-result v0 if-nez v0, :cond_13 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTint:Landroid/content/res/ColorStateList; if-eqz v0, :cond_11 invoke-virtual {v0}, Landroid/content/res/ColorStateList;->isStateful()Z move-result v0 if-eqz v0, :cond_11 goto :goto_13 :cond_11 const/4 v0, 0x0 goto :goto_14 :cond_13 :goto_13 const/4 v0, 0x1 :goto_14 return v0 .end method .method protected onBoundsChange(Landroid/graphics/Rect;)V .registers 3 .line 760 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mDstRect:Landroid/graphics/Rect; invoke-virtual {v0, p1}, Landroid/graphics/Rect;->set(Landroid/graphics/Rect;)V .line 761 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTransform:Lpl/droidsonroids/gif/transforms/Transform; if-eqz v0, :cond_c .line 762 invoke-interface {v0, p1}, Lpl/droidsonroids/gif/transforms/Transform;->onBoundsChange(Landroid/graphics/Rect;)V :cond_c return-void .end method .method protected onStateChange([I)Z .registers 3 .line 887 iget-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTint:Landroid/content/res/ColorStateList; if-eqz p1, :cond_10 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTintMode:Landroid/graphics/PorterDuff$Mode; if-eqz v0, :cond_10 .line 888 invoke-direct {p0, p1, v0}, Lpl/droidsonroids/gif/GifDrawable;->updateTintFilter(Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; move-result-object p1 iput-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTintFilter:Landroid/graphics/PorterDuffColorFilter; const/4 p1, 0x1 return p1 :cond_10 const/4 p1, 0x0 return p1 .end method .method public pause()V .registers 1 .line 489 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->stop()V return-void .end method .method public recycle()V .registers 2 .line 269 invoke-direct {p0}, Lpl/droidsonroids/gif/GifDrawable;->shutdown()V .line 270 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v0}, Landroid/graphics/Bitmap;->recycle()V return-void .end method .method public removeAnimationListener(Lpl/droidsonroids/gif/AnimationListener;)Z .registers 3 .line 843 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mListeners:Ljava/util/concurrent/ConcurrentLinkedQueue; invoke-virtual {v0, p1}, Ljava/util/concurrent/ConcurrentLinkedQueue;->remove(Ljava/lang/Object;)Z move-result p1 return p1 .end method .method public reset()V .registers 3 .line 359 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mExecutor:Ljava/util/concurrent/ScheduledThreadPoolExecutor; new-instance v1, Lpl/droidsonroids/gif/GifDrawable$1; invoke-direct {v1, p0, p0}, Lpl/droidsonroids/gif/GifDrawable$1;->(Lpl/droidsonroids/gif/GifDrawable;Lpl/droidsonroids/gif/GifDrawable;)V invoke-virtual {v0, v1}, Ljava/util/concurrent/ScheduledThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V return-void .end method .method public seekTo(I)V .registers 4 if-ltz p1, :cond_d .line 533 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mExecutor:Ljava/util/concurrent/ScheduledThreadPoolExecutor; new-instance v1, Lpl/droidsonroids/gif/GifDrawable$2; invoke-direct {v1, p0, p0, p1}, Lpl/droidsonroids/gif/GifDrawable$2;->(Lpl/droidsonroids/gif/GifDrawable;Lpl/droidsonroids/gif/GifDrawable;I)V invoke-virtual {v0, v1}, Ljava/util/concurrent/ScheduledThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V return-void .line 531 :cond_d new-instance p1, Ljava/lang/IllegalArgumentException; const-string v0, "Position is not positive" invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method .method public seekToBlocking(I)V .registers 5 if-ltz p1, :cond_19 .line 553 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; monitor-enter v0 .line 554 :try_start_5 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v1, p1, v2}, Lpl/droidsonroids/gif/GifInfoHandle;->seekToTime(ILandroid/graphics/Bitmap;)V .line 555 monitor-exit v0 :try_end_d .catchall {:try_start_5 .. :try_end_d} :catchall_16 .line 556 iget-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mInvalidationHandler:Lpl/droidsonroids/gif/InvalidationHandler; const/4 v0, -0x1 const-wide/16 v1, 0x0 invoke-virtual {p1, v0, v1, v2}, Lpl/droidsonroids/gif/InvalidationHandler;->sendEmptyMessageAtTime(IJ)Z return-void :catchall_16 move-exception p1 .line 555 :try_start_17 monitor-exit v0 :try_end_18 .catchall {:try_start_17 .. :try_end_18} :catchall_16 throw p1 .line 550 :cond_19 new-instance p1, Ljava/lang/IllegalArgumentException; const-string v0, "Position is not positive" invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method .method public seekToFrame(I)V .registers 4 if-ltz p1, :cond_d .line 570 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mExecutor:Ljava/util/concurrent/ScheduledThreadPoolExecutor; new-instance v1, Lpl/droidsonroids/gif/GifDrawable$3; invoke-direct {v1, p0, p0, p1}, Lpl/droidsonroids/gif/GifDrawable$3;->(Lpl/droidsonroids/gif/GifDrawable;Lpl/droidsonroids/gif/GifDrawable;I)V invoke-virtual {v0, v1}, Ljava/util/concurrent/ScheduledThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V return-void .line 568 :cond_d new-instance p1, Ljava/lang/IndexOutOfBoundsException; const-string v0, "Frame index is not positive" invoke-direct {p1, v0}, Ljava/lang/IndexOutOfBoundsException;->(Ljava/lang/String;)V throw p1 .end method .method public seekToFrameAndGet(I)Landroid/graphics/Bitmap; .registers 6 if-ltz p1, :cond_1d .line 591 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; monitor-enter v0 .line 592 :try_start_5 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v1, p1, v2}, Lpl/droidsonroids/gif/GifInfoHandle;->seekToFrame(ILandroid/graphics/Bitmap;)V .line 593 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->getCurrentFrame()Landroid/graphics/Bitmap; move-result-object p1 .line 594 monitor-exit v0 :try_end_11 .catchall {:try_start_5 .. :try_end_11} :catchall_1a .line 595 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mInvalidationHandler:Lpl/droidsonroids/gif/InvalidationHandler; const/4 v1, -0x1 const-wide/16 v2, 0x0 invoke-virtual {v0, v1, v2, v3}, Lpl/droidsonroids/gif/InvalidationHandler;->sendEmptyMessageAtTime(IJ)Z return-object p1 :catchall_1a move-exception p1 .line 594 :try_start_1b monitor-exit v0 :try_end_1c .catchall {:try_start_1b .. :try_end_1c} :catchall_1a throw p1 .line 588 :cond_1d new-instance p1, Ljava/lang/IndexOutOfBoundsException; const-string v0, "Frame index is not positive" invoke-direct {p1, v0}, Ljava/lang/IndexOutOfBoundsException;->(Ljava/lang/String;)V throw p1 .end method .method public seekToPositionAndGet(I)Landroid/graphics/Bitmap; .registers 6 if-ltz p1, :cond_1d .line 611 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; monitor-enter v0 .line 612 :try_start_5 iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mBuffer:Landroid/graphics/Bitmap; invoke-virtual {v1, p1, v2}, Lpl/droidsonroids/gif/GifInfoHandle;->seekToTime(ILandroid/graphics/Bitmap;)V .line 613 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->getCurrentFrame()Landroid/graphics/Bitmap; move-result-object p1 .line 614 monitor-exit v0 :try_end_11 .catchall {:try_start_5 .. :try_end_11} :catchall_1a .line 615 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mInvalidationHandler:Lpl/droidsonroids/gif/InvalidationHandler; const/4 v1, -0x1 const-wide/16 v2, 0x0 invoke-virtual {v0, v1, v2, v3}, Lpl/droidsonroids/gif/InvalidationHandler;->sendEmptyMessageAtTime(IJ)Z return-object p1 :catchall_1a move-exception p1 .line 614 :try_start_1b monitor-exit v0 :try_end_1c .catchall {:try_start_1b .. :try_end_1c} :catchall_1a throw p1 .line 608 :cond_1d new-instance p1, Ljava/lang/IllegalArgumentException; const-string v0, "Position is not positive" invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method .method public setAlpha(I)V .registers 3 .line 304 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {v0, p1}, Landroid/graphics/Paint;->setAlpha(I)V return-void .end method .method public setColorFilter(Landroid/graphics/ColorFilter;)V .registers 3 .line 309 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {v0, p1}, Landroid/graphics/Paint;->setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter; return-void .end method .method public setCornerRadius(F)V .registers 3 .line 984 new-instance v0, Lpl/droidsonroids/gif/transforms/CornerRadiusTransform; invoke-direct {v0, p1}, Lpl/droidsonroids/gif/transforms/CornerRadiusTransform;->(F)V iput-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTransform:Lpl/droidsonroids/gif/transforms/Transform; .line 985 iget-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mDstRect:Landroid/graphics/Rect; invoke-interface {v0, p1}, Lpl/droidsonroids/gif/transforms/Transform;->onBoundsChange(Landroid/graphics/Rect;)V return-void .end method .method public setDither(Z)V .registers 3 .line 822 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {v0, p1}, Landroid/graphics/Paint;->setDither(Z)V .line 823 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->invalidateSelf()V return-void .end method .method public setFilterBitmap(Z)V .registers 3 .line 815 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mPaint:Landroid/graphics/Paint; invoke-virtual {v0, p1}, Landroid/graphics/Paint;->setFilterBitmap(Z)V .line 816 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->invalidateSelf()V return-void .end method .method public setLoopCount(I)V .registers 3 .line 424 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->setLoopCount(I)V return-void .end method .method public setSpeed(F)V .registers 3 .line 481 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0, p1}, Lpl/droidsonroids/gif/GifInfoHandle;->setSpeedFactor(F)V return-void .end method .method public setTintList(Landroid/content/res/ColorStateList;)V .registers 3 .line 873 iput-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTint:Landroid/content/res/ColorStateList; .line 874 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTintMode:Landroid/graphics/PorterDuff$Mode; invoke-direct {p0, p1, v0}, Lpl/droidsonroids/gif/GifDrawable;->updateTintFilter(Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; move-result-object p1 iput-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTintFilter:Landroid/graphics/PorterDuffColorFilter; .line 875 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->invalidateSelf()V return-void .end method .method public setTintMode(Landroid/graphics/PorterDuff$Mode;)V .registers 3 .line 880 iput-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTintMode:Landroid/graphics/PorterDuff$Mode; .line 881 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mTint:Landroid/content/res/ColorStateList; invoke-direct {p0, v0, p1}, Lpl/droidsonroids/gif/GifDrawable;->updateTintFilter(Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; move-result-object p1 iput-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTintFilter:Landroid/graphics/PorterDuffColorFilter; .line 882 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->invalidateSelf()V return-void .end method .method public setTransform(Lpl/droidsonroids/gif/transforms/Transform;)V .registers 3 .line 1005 iput-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mTransform:Lpl/droidsonroids/gif/transforms/Transform; if-eqz p1, :cond_9 .line 1007 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mDstRect:Landroid/graphics/Rect; invoke-interface {p1, v0}, Lpl/droidsonroids/gif/transforms/Transform;->onBoundsChange(Landroid/graphics/Rect;)V :cond_9 return-void .end method .method public setVisible(ZZ)Z .registers 5 .line 915 invoke-super {p0, p1, p2}, Landroid/graphics/drawable/Drawable;->setVisible(ZZ)Z move-result v0 .line 916 iget-boolean v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRenderingTriggeredOnDraw:Z if-nez v1, :cond_1a if-eqz p1, :cond_15 if-eqz p2, :cond_f .line 919 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->reset()V :cond_f if-eqz v0, :cond_1a .line 922 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->start()V goto :goto_1a :cond_15 if-eqz v0, :cond_1a .line 925 invoke-virtual {p0}, Lpl/droidsonroids/gif/GifDrawable;->stop()V :cond_1a :goto_1a return v0 .end method .method public start()V .registers 3 .line 333 monitor-enter p0 .line 334 :try_start_1 iget-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z if-eqz v0, :cond_7 .line 335 monitor-exit p0 return-void :cond_7 const/4 v0, 0x1 .line 337 iput-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z .line 338 monitor-exit p0 :try_end_b .catchall {:try_start_1 .. :try_end_b} :catchall_15 .line 339 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->restoreRemainder()J move-result-wide v0 .line 340 invoke-virtual {p0, v0, v1}, Lpl/droidsonroids/gif/GifDrawable;->startAnimation(J)V return-void :catchall_15 move-exception v0 .line 338 :try_start_16 monitor-exit p0 :try_end_17 .catchall {:try_start_16 .. :try_end_17} :catchall_15 throw v0 .end method .method startAnimation(J)V .registers 7 .line 344 iget-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRenderingTriggeredOnDraw:Z const-wide/16 v1, 0x0 if-eqz v0, :cond_f .line 345 iput-wide v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNextFrameRenderTime:J .line 346 iget-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mInvalidationHandler:Lpl/droidsonroids/gif/InvalidationHandler; const/4 p2, -0x1 invoke-virtual {p1, p2, v1, v2}, Lpl/droidsonroids/gif/InvalidationHandler;->sendEmptyMessageAtTime(IJ)Z goto :goto_22 .line 348 :cond_f invoke-direct {p0}, Lpl/droidsonroids/gif/GifDrawable;->cancelPendingRenderTask()V .line 349 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mExecutor:Ljava/util/concurrent/ScheduledThreadPoolExecutor; iget-object v3, p0, Lpl/droidsonroids/gif/GifDrawable;->mRenderTask:Lpl/droidsonroids/gif/RenderTask; invoke-static {p1, p2, v1, v2}, Ljava/lang/Math;->max(JJ)J move-result-wide p1 sget-object v1, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, v3, p1, p2, v1}, Ljava/util/concurrent/ScheduledThreadPoolExecutor;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; move-result-object p1 iput-object p1, p0, Lpl/droidsonroids/gif/GifDrawable;->mRenderTaskSchedule:Ljava/util/concurrent/ScheduledFuture; :goto_22 return-void .end method .method public stop()V .registers 2 .line 375 monitor-enter p0 .line 376 :try_start_1 iget-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z if-nez v0, :cond_7 .line 377 monitor-exit p0 return-void :cond_7 const/4 v0, 0x0 .line 379 iput-boolean v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mIsRunning:Z .line 380 monitor-exit p0 :try_end_b .catchall {:try_start_1 .. :try_end_b} :catchall_14 .line 382 invoke-direct {p0}, Lpl/droidsonroids/gif/GifDrawable;->cancelPendingRenderTask()V .line 383 iget-object v0, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v0}, Lpl/droidsonroids/gif/GifInfoHandle;->saveRemainder()V return-void :catchall_14 move-exception v0 .line 380 :try_start_15 monitor-exit p0 :try_end_16 .catchall {:try_start_15 .. :try_end_16} :catchall_14 throw v0 .end method .method public toString()Ljava/lang/String; .registers 6 .line 433 sget-object v0, Ljava/util/Locale;->ENGLISH:Ljava/util/Locale; iget-object v1, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; .line 434 invoke-virtual {v1}, Lpl/droidsonroids/gif/GifInfoHandle;->getWidth()I move-result v1 invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v1 iget-object v2, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v2}, Lpl/droidsonroids/gif/GifInfoHandle;->getHeight()I move-result v2 invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v2 iget-object v3, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v3}, Lpl/droidsonroids/gif/GifInfoHandle;->getNumberOfFrames()I move-result v3 invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v3 iget-object v4, p0, Lpl/droidsonroids/gif/GifDrawable;->mNativeInfoHandle:Lpl/droidsonroids/gif/GifInfoHandle; invoke-virtual {v4}, Lpl/droidsonroids/gif/GifInfoHandle;->getNativeErrorCode()I move-result v4 invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v4 filled-new-array {v1, v2, v3, v4}, [Ljava/lang/Object; move-result-object v1 .line 433 const-string v2, "GIF: size: %dx%d, frames: %d, error: %d" invoke-static {v0, v2, v1}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; move-result-object v0 return-object v0 .end method