1package com.bumptech.glide.load.resource.gifbitmap;
2
3import android.graphics.Bitmap;
4import com.bumptech.glide.load.engine.Resource;
5import com.bumptech.glide.load.ResourceEncoder;
6import com.bumptech.glide.load.resource.gif.GifData;
7
8import java.io.OutputStream;
9
10public class GifBitmapWrapperResourceEncoder implements ResourceEncoder<GifBitmapWrapper> {
11    private final ResourceEncoder<Bitmap> bitmapEncoder;
12    private final ResourceEncoder<GifData> gifEncoder;
13    private String id;
14
15    public GifBitmapWrapperResourceEncoder(ResourceEncoder<Bitmap> bitmapEncoder, ResourceEncoder<GifData> gifEncoder) {
16        this.bitmapEncoder = bitmapEncoder;
17        this.gifEncoder = gifEncoder;
18    }
19
20    @Override
21    public boolean encode(Resource<GifBitmapWrapper> resource, OutputStream os) {
22        final GifBitmapWrapper gifBitmap = resource.get();
23        final Resource<Bitmap> bitmapResource = gifBitmap.getBitmapResource();
24
25        if (bitmapResource != null) {
26            return bitmapEncoder.encode(bitmapResource, os);
27        } else {
28            return gifEncoder.encode(gifBitmap.getGifResource(), os);
29        }
30    }
31
32    @Override
33    public String getId() {
34        if (id == null) {
35            id = bitmapEncoder.getId() + gifEncoder.getId();
36        }
37        return id;
38    }
39}
40