1package com.bumptech.glide.load.resource.gifbitmap; 2 3import android.graphics.Bitmap; 4import com.bumptech.glide.load.engine.Resource; 5import com.bumptech.glide.load.Transformation; 6import com.bumptech.glide.load.resource.gif.GifData; 7import com.bumptech.glide.load.resource.gif.GifDataTransformation; 8 9public class GifBitmapWrapperTransformation implements Transformation<GifBitmapWrapper> { 10 private Transformation<Bitmap> bitmapTransformation; 11 private Transformation<GifData> gifDataTransformation; 12 13 public GifBitmapWrapperTransformation(Transformation<Bitmap> bitmapTransformation) { 14 this(bitmapTransformation, new GifDataTransformation(bitmapTransformation)); 15 } 16 17 GifBitmapWrapperTransformation(Transformation<Bitmap> bitmapTransformation, 18 Transformation<GifData> gifDataTransformation) { 19 this.bitmapTransformation = bitmapTransformation; 20 this.gifDataTransformation = gifDataTransformation; 21 } 22 23 @Override 24 public Resource<GifBitmapWrapper> transform(Resource<GifBitmapWrapper> resource, int outWidth, int outHeight) { 25 Resource<Bitmap> bitmapResource = resource.get().getBitmapResource(); 26 Resource<GifData> gifResource = resource.get().getGifResource(); 27 if (bitmapResource != null && bitmapTransformation != null) { 28 Resource<Bitmap> transformed = bitmapTransformation.transform(bitmapResource, outWidth, outHeight); 29 if (transformed != bitmapResource) { 30 GifBitmapWrapper gifBitmap = new GifBitmapWrapper(transformed, resource.get().getGifResource()); 31 return new GifBitmapWrapperResource(gifBitmap); 32 } 33 } else if (gifResource != null && gifDataTransformation != null) { 34 Resource<GifData> transformed = gifDataTransformation.transform(gifResource, outWidth, outHeight); 35 if (transformed != gifResource) { 36 GifBitmapWrapper gifBitmap = new GifBitmapWrapper(resource.get().getBitmapResource(), transformed); 37 return new GifBitmapWrapperResource(gifBitmap); 38 } 39 } 40 return resource; 41 } 42 43 @Override 44 public String getId() { 45 return bitmapTransformation.getId(); 46 } 47} 48