1package com.bumptech.glide;
2
3import android.content.Context;
4import android.graphics.Bitmap;
5import android.graphics.drawable.Drawable;
6import android.view.animation.Animation;
7import com.bumptech.glide.load.Encoder;
8import com.bumptech.glide.load.ResourceDecoder;
9import com.bumptech.glide.load.ResourceEncoder;
10import com.bumptech.glide.load.Transformation;
11import com.bumptech.glide.load.model.ImageVideoWrapper;
12import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapper;
13import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperTransformation;
14import com.bumptech.glide.load.resource.transcode.ResourceTranscoder;
15import com.bumptech.glide.manager.RequestTracker;
16import com.bumptech.glide.provider.LoadProvider;
17import com.bumptech.glide.request.DrawableCrossFadeViewAnimation;
18import com.bumptech.glide.request.RequestListener;
19import com.bumptech.glide.request.ViewPropertyAnimation;
20
21import java.io.InputStream;
22
23public class DrawableRequestBuilder<ModelType> extends
24        GenericRequestBuilder<ModelType, ImageVideoWrapper, GifBitmapWrapper, Drawable> {
25    private final Glide glide;
26    private final Context context;
27
28    DrawableRequestBuilder(Context context, ModelType model,
29            LoadProvider<ModelType, ImageVideoWrapper, GifBitmapWrapper, Drawable> loadProvider, Glide glide,
30            RequestTracker requestTracker) {
31        super(context, model, loadProvider, Drawable.class, glide, requestTracker);
32        this.context = context;
33        this.glide = glide;
34    }
35
36    public DrawableRequestBuilder<ModelType> thumbnail(
37            DrawableRequestBuilder<ModelType> thumbnailRequest) {
38        super.thumbnail(thumbnailRequest);
39        return this;
40    }
41
42    @Override
43    public DrawableRequestBuilder<ModelType> thumbnail(
44            GenericRequestBuilder<ModelType, ImageVideoWrapper, GifBitmapWrapper, Drawable> thumbnailRequest) {
45        super.thumbnail(thumbnailRequest);
46        return this;
47    }
48
49    @Override
50    public DrawableRequestBuilder<ModelType> thumbnail(float sizeMultiplier) {
51        super.thumbnail(sizeMultiplier);
52        return this;
53    }
54
55    @Override
56    public DrawableRequestBuilder<ModelType> sizeMultiplier(
57            float sizeMultiplier) {
58        super.sizeMultiplier(sizeMultiplier);
59        return this;
60    }
61
62    @Override
63    public DrawableRequestBuilder<ModelType> decoder(
64            ResourceDecoder<ImageVideoWrapper, GifBitmapWrapper> decoder) {
65        super.decoder(decoder);
66        return this;
67    }
68
69    @Override
70    public DrawableRequestBuilder<ModelType> cacheDecoder(
71            ResourceDecoder<InputStream, GifBitmapWrapper> cacheDecoder) {
72        super.cacheDecoder(cacheDecoder);
73        return this;
74    }
75
76    @Override
77    public DrawableRequestBuilder<ModelType> encoder(
78            ResourceEncoder<GifBitmapWrapper> encoder) {
79        super.encoder(encoder);
80        return this;
81    }
82
83    @Override
84    public DrawableRequestBuilder<ModelType> priority(Priority priority) {
85        super.priority(priority);
86        return this;
87    }
88
89    public DrawableRequestBuilder<ModelType> centerCrop() {
90        return transform(glide.getDrawableCenterCrop());
91    }
92
93    public DrawableRequestBuilder<ModelType> fitCenter() {
94        return transform(glide.getDrawableFitCenter());
95    }
96
97    public DrawableRequestBuilder<ModelType> bitmapTransform(Transformation<Bitmap> bitmapTransformation) {
98        return transform(new GifBitmapWrapperTransformation(bitmapTransformation));
99    }
100
101    @Override
102    public DrawableRequestBuilder<ModelType> transform(Transformation<GifBitmapWrapper> transformation) {
103        super.transform(transformation);
104        return this;
105    }
106
107    @Override
108    public DrawableRequestBuilder<ModelType> transcoder(
109            ResourceTranscoder<GifBitmapWrapper, Drawable> transcoder) {
110        super.transcoder(transcoder);
111        return this;
112    }
113
114    public DrawableRequestBuilder<ModelType> crossFade() {
115        super.animate(new DrawableCrossFadeViewAnimation.DrawableCrossFadeFactory());
116        return this;
117    }
118
119    public DrawableRequestBuilder<ModelType> crossFade(int duration) {
120        super.animate(new DrawableCrossFadeViewAnimation.DrawableCrossFadeFactory(duration));
121        return this;
122    }
123
124    public DrawableRequestBuilder<ModelType> crossFade(Animation animation, int duration) {
125        super.animate(new DrawableCrossFadeViewAnimation.DrawableCrossFadeFactory(animation, duration));
126        return this;
127    }
128
129    public DrawableRequestBuilder<ModelType> crossFade(int animationId, int duration) {
130        super.animate(new DrawableCrossFadeViewAnimation.DrawableCrossFadeFactory(context, animationId, duration));
131        return this;
132    }
133
134    @Override
135    public DrawableRequestBuilder<ModelType> animate(ViewPropertyAnimation.Animator animator) {
136        super.animate(animator);
137        return this;
138    }
139
140    @Override
141    public DrawableRequestBuilder<ModelType> animate(int animationId) {
142        super.animate(animationId);
143        return this;
144    }
145
146    @Override
147    public DrawableRequestBuilder<ModelType> animate(Animation animation) {
148        super.animate(animation);
149        return this;
150    }
151
152    @Override
153    public DrawableRequestBuilder<ModelType> placeholder(int resourceId) {
154        super.placeholder(resourceId);
155        return this;
156    }
157
158    @Override
159    public DrawableRequestBuilder<ModelType> placeholder(Drawable drawable) {
160        super.placeholder(drawable);
161        return this;
162    }
163
164    @Override
165    public DrawableRequestBuilder<ModelType> error(int resourceId) {
166        super.error(resourceId);
167        return this;
168    }
169
170    @Override
171    public DrawableRequestBuilder<ModelType> error(Drawable drawable) {
172        super.error(drawable);
173        return this;
174    }
175
176    @Override
177    public DrawableRequestBuilder<ModelType> listener(
178            RequestListener<ModelType, Drawable> requestListener) {
179        super.listener(requestListener);
180        return this;
181    }
182
183    @Override
184    public DrawableRequestBuilder<ModelType> skipMemoryCache(boolean skip) {
185        super.skipMemoryCache(skip);
186        return this;
187    }
188
189    @Override
190    public DrawableRequestBuilder<ModelType> skipDiskCache(boolean skip) {
191        super.skipDiskCache(skip);
192        return this;
193    }
194
195    @Override
196    public DrawableRequestBuilder<ModelType> skipCache(boolean skip) {
197        super.skipCache(skip);
198        return this;
199    }
200
201    @Override
202    public DrawableRequestBuilder<ModelType> override(int width, int height) {
203        super.override(width, height);
204        return this;
205    }
206
207    @Override
208    public DrawableRequestBuilder<ModelType> cacheSource(boolean cacheSource) {
209        super.cacheSource(cacheSource);
210        return this;
211    }
212
213    @Override
214    public DrawableRequestBuilder<ModelType> sourceEncoder(Encoder<ImageVideoWrapper> sourceEncoder) {
215        super.sourceEncoder(sourceEncoder);
216        return this;
217    }
218}
219