package com.zj.bumptech.glide.load.resource.gif; import android.content.Context; import android.graphics.Bitmap; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.SystemClock; import com.zj.bumptech.glide.GenericRequestBuilder; import com.zj.bumptech.glide.Glide; import com.zj.bumptech.glide.gifdecoder.GifDecoder; import com.zj.bumptech.glide.load.Key; import com.zj.bumptech.glide.load.Transformation; import com.zj.bumptech.glide.load.engine.DiskCacheStrategy; import com.zj.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.zj.bumptech.glide.load.resource.NullEncoder; import com.zj.bumptech.glide.request.animation.GlideAnimation; import com.zj.bumptech.glide.request.target.SimpleTarget; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.util.Objects; import java.util.UUID; /* access modifiers changed from: package-private */ public class GifFrameLoader { private final FrameCallback callback; private DelayTarget current; private final GifDecoder gifDecoder; private final Handler handler; private boolean isCleared; private boolean isLoadPending; private boolean isRunning; private GenericRequestBuilder<GifDecoder, GifDecoder, Bitmap, Bitmap> requestBuilder; /* access modifiers changed from: package-private */ public static class DelayTarget extends SimpleTarget<Bitmap> { private final Handler handler; private final int index; private Bitmap resource; private final long targetTime; public DelayTarget(Handler handler2, int i, long j) { this.handler = handler2; this.index = i; this.targetTime = j; } public Bitmap getResource() { return this.resource; } public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) { this.resource = bitmap; this.handler.sendMessageAtTime(this.handler.obtainMessage(1, this), this.targetTime); } @Override // com.zj.bumptech.glide.request.target.Target public /* bridge */ /* synthetic */ void onResourceReady(Object obj, GlideAnimation glideAnimation) { onResourceReady((Bitmap) obj, (GlideAnimation<? super Bitmap>) glideAnimation); } } public interface FrameCallback { void onFrameReady(int i); } private class FrameLoaderCallback implements Handler.Callback { public static final int MSG_CLEAR = 2; public static final int MSG_DELAY = 1; private FrameLoaderCallback() { } public boolean handleMessage(Message message) { if (message.what == 1) { GifFrameLoader.this.onFrameReady((DelayTarget) message.obj); return true; } else if (message.what != 2) { return false; } else { Glide.clear((DelayTarget) message.obj); return false; } } } /* access modifiers changed from: package-private */ public static class FrameSignature implements Key { private final UUID uuid; public FrameSignature() { this(UUID.randomUUID()); } FrameSignature(UUID uuid2) { this.uuid = uuid2; } @Override // com.zj.bumptech.glide.load.Key public boolean equals(Object obj) { if (obj instanceof FrameSignature) { return ((FrameSignature) obj).uuid.equals(this.uuid); } return false; } @Override // com.zj.bumptech.glide.load.Key public int hashCode() { return this.uuid.hashCode(); } @Override // com.zj.bumptech.glide.load.Key public void updateDiskCacheKey(MessageDigest messageDigest) throws UnsupportedEncodingException { throw new UnsupportedOperationException("Not implemented"); } } public GifFrameLoader(Context context, FrameCallback frameCallback, GifDecoder gifDecoder2, int i, int i2) { this(frameCallback, gifDecoder2, null, getRequestBuilder(context, gifDecoder2, i, i2, Glide.get(context).getBitmapPool())); } GifFrameLoader(FrameCallback frameCallback, GifDecoder gifDecoder2, Handler handler2, GenericRequestBuilder<GifDecoder, GifDecoder, Bitmap, Bitmap> genericRequestBuilder) { this.isRunning = false; this.isLoadPending = false; handler2 = handler2 == null ? new Handler(Looper.getMainLooper(), new FrameLoaderCallback()) : handler2; this.callback = frameCallback; this.gifDecoder = gifDecoder2; this.handler = handler2; this.requestBuilder = genericRequestBuilder; } private static GenericRequestBuilder<GifDecoder, GifDecoder, Bitmap, Bitmap> getRequestBuilder(Context context, GifDecoder gifDecoder2, int i, int i2, BitmapPool bitmapPool) { GifFrameResourceDecoder gifFrameResourceDecoder = new GifFrameResourceDecoder(bitmapPool); GifFrameModelLoader gifFrameModelLoader = new GifFrameModelLoader(); return Glide.with(context).using(gifFrameModelLoader, GifDecoder.class).load(gifDecoder2).as(Bitmap.class).sourceEncoder(NullEncoder.get()).decoder(gifFrameResourceDecoder).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).override(i, i2); } private void loadNextFrame() { if (this.isRunning && !this.isLoadPending) { this.isLoadPending = true; this.gifDecoder.advance(); this.requestBuilder.signature(new FrameSignature()).into(new DelayTarget(this.handler, this.gifDecoder.getCurrentFrameIndex(), SystemClock.uptimeMillis() + ((long) this.gifDecoder.getNextDelay()))); } } public void clear() { stop(); DelayTarget delayTarget = this.current; if (delayTarget != null) { Glide.clear(delayTarget); this.current = null; } this.isCleared = true; } public Bitmap getCurrentFrame() { DelayTarget delayTarget = this.current; if (delayTarget != null) { return delayTarget.getResource(); } return null; } /* access modifiers changed from: package-private */ public void onFrameReady(DelayTarget delayTarget) { if (this.isCleared) { this.handler.obtainMessage(2, delayTarget).sendToTarget(); return; } DelayTarget delayTarget2 = this.current; this.current = delayTarget; this.callback.onFrameReady(delayTarget.index); if (delayTarget2 != null) { this.handler.obtainMessage(2, delayTarget2).sendToTarget(); } this.isLoadPending = false; loadNextFrame(); } public void setFrameTransformation(Transformation<Bitmap> transformation) { Objects.requireNonNull(transformation, "Transformation must not be null"); this.requestBuilder = this.requestBuilder.transform(transformation); } public void start() { if (!this.isRunning) { this.isRunning = true; this.isCleared = false; loadNextFrame(); } } public void stop() { this.isRunning = false; } }