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