1 package com.bumptech.glide.load.resource.gifbitmap; 2 3 import android.graphics.Bitmap; 4 import com.bumptech.glide.load.engine.Resource; 5 import com.bumptech.glide.load.ResourceEncoder; 6 import com.bumptech.glide.load.resource.gif.GifData; 7 8 import java.io.OutputStream; 9 10 public 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