1package com.bumptech.glide.load.resource.gif;
2
3import com.bumptech.glide.Priority;
4import com.bumptech.glide.gifdecoder.GifDecoder;
5import com.bumptech.glide.load.data.DataFetcher;
6import com.bumptech.glide.load.model.ModelLoader;
7
8public class GifFrameModelLoader implements ModelLoader<GifDecoder, GifDecoder> {
9
10    @Override
11    public DataFetcher<GifDecoder> getResourceFetcher(GifDecoder model, int width, int height) {
12        return new GifFrameDataFetcher(model);
13    }
14
15    private static class GifFrameDataFetcher implements DataFetcher<GifDecoder> {
16        private GifDecoder decoder;
17
18        public GifFrameDataFetcher(GifDecoder decoder) {
19            this.decoder = decoder;
20        }
21
22        @Override
23        public GifDecoder loadData(Priority priority) throws Exception {
24            return decoder;
25        }
26
27        @Override
28        public void cleanup() { }
29
30        @Override
31        public String getId() {
32            return decoder.getId() + decoder.getCurrentFrameIndex();
33        }
34
35        @Override
36        public void cancel() { }
37    }
38}
39