1be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddpackage com.bumptech.glide.load.resource.gifbitmap;
2ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd
3ea01ddd754126290fc18c3dc8f6095ce0216768aSam Juddimport android.graphics.Bitmap;
4f7a6d65cf7c1a41908dd48e0dab68ee5b881387eSam Judd
5ea01ddd754126290fc18c3dc8f6095ce0216768aSam Juddimport com.bumptech.glide.load.ResourceEncoder;
621c2822985058df655ee4874798297f74c5e367eSam Juddimport com.bumptech.glide.load.engine.Resource;
721c2822985058df655ee4874798297f74c5e367eSam Juddimport com.bumptech.glide.load.resource.gif.GifDrawable;
8ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd
9ea01ddd754126290fc18c3dc8f6095ce0216768aSam Juddimport java.io.OutputStream;
10ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd
11b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd/**
12b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd * A {@link com.bumptech.glide.load.ResourceEncoder} that can encode either an {@link Bitmap} or
1321c2822985058df655ee4874798297f74c5e367eSam Judd * {@link com.bumptech.glide.load.resource.gif.GifDrawable}.
14b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd */
15fc3f03260933d96fae33a43846860f226dd661feSam Juddpublic class GifBitmapWrapperResourceEncoder implements ResourceEncoder<GifBitmapWrapper> {
16ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd    private final ResourceEncoder<Bitmap> bitmapEncoder;
1721c2822985058df655ee4874798297f74c5e367eSam Judd    private final ResourceEncoder<GifDrawable> gifEncoder;
18be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd    private String id;
19ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd
2021c2822985058df655ee4874798297f74c5e367eSam Judd    public GifBitmapWrapperResourceEncoder(ResourceEncoder<Bitmap> bitmapEncoder,
2121c2822985058df655ee4874798297f74c5e367eSam Judd            ResourceEncoder<GifDrawable> gifEncoder) {
22ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd        this.bitmapEncoder = bitmapEncoder;
23ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd        this.gifEncoder = gifEncoder;
24ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd    }
25ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd
26ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd    @Override
27fc3f03260933d96fae33a43846860f226dd661feSam Judd    public boolean encode(Resource<GifBitmapWrapper> resource, OutputStream os) {
28fc3f03260933d96fae33a43846860f226dd661feSam Judd        final GifBitmapWrapper gifBitmap = resource.get();
29ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd        final Resource<Bitmap> bitmapResource = gifBitmap.getBitmapResource();
30ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd
31ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd        if (bitmapResource != null) {
32ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd            return bitmapEncoder.encode(bitmapResource, os);
33ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd        } else {
34ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd            return gifEncoder.encode(gifBitmap.getGifResource(), os);
35ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd        }
36ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd    }
37ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd
38ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd    @Override
39ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd    public String getId() {
40be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd        if (id == null) {
41be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd            id = bitmapEncoder.getId() + gifEncoder.getId();
42be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd        }
43be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd        return id;
44ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd    }
45ea01ddd754126290fc18c3dc8f6095ce0216768aSam Judd}
46