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