blob: 791e81bd4493d16276f2d7e02961dd31603c1555 [file] [log] [blame]
package com.bumptech.glide.load.resource.gifbitmap;
import android.graphics.Bitmap;
import com.bumptech.glide.load.Transformation;
import com.bumptech.glide.load.engine.Resource;
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.load.resource.gif.GifDrawableTransformation;
/**
* A {@link com.bumptech.glide.load.Transformation} that can apply a wrapped {@link android.graphics.Bitmap}
* transformation to both {@link android.graphics.Bitmap}s and {@link com.bumptech.glide.load.resource.gif.GifDrawable}.
*/
public class GifBitmapWrapperTransformation implements Transformation<GifBitmapWrapper> {
private final Transformation<Bitmap> bitmapTransformation;
private final Transformation<GifDrawable> gifDataTransformation;
public GifBitmapWrapperTransformation(BitmapPool bitmapPool, Transformation<Bitmap> bitmapTransformation) {
this(bitmapTransformation, new GifDrawableTransformation(bitmapTransformation, bitmapPool));
}
GifBitmapWrapperTransformation(Transformation<Bitmap> bitmapTransformation,
Transformation<GifDrawable> gifDataTransformation) {
this.bitmapTransformation = bitmapTransformation;
this.gifDataTransformation = gifDataTransformation;
}
@Override
public Resource<GifBitmapWrapper> transform(Resource<GifBitmapWrapper> resource, int outWidth, int outHeight) {
Resource<Bitmap> bitmapResource = resource.get().getBitmapResource();
Resource<GifDrawable> gifResource = resource.get().getGifResource();
if (bitmapResource != null && bitmapTransformation != null) {
Resource<Bitmap> transformed = bitmapTransformation.transform(bitmapResource, outWidth, outHeight);
if (!bitmapResource.equals(transformed)) {
GifBitmapWrapper gifBitmap = new GifBitmapWrapper(transformed, resource.get().getGifResource());
return new GifBitmapWrapperResource(gifBitmap);
}
} else if (gifResource != null && gifDataTransformation != null) {
Resource<GifDrawable> transformed = gifDataTransformation.transform(gifResource, outWidth, outHeight);
if (!gifResource.equals(transformed)) {
GifBitmapWrapper gifBitmap = new GifBitmapWrapper(resource.get().getBitmapResource(), transformed);
return new GifBitmapWrapperResource(gifBitmap);
}
}
return resource;
}
@Override
public String getId() {
return bitmapTransformation.getId();
}
}