GifTypeRequest.java revision 8a6067fbe2a670d2e893c79c9c0ec17817da6568
1package com.bumptech.glide; 2 3import android.content.Context; 4import com.bumptech.glide.load.model.ModelLoader; 5import com.bumptech.glide.load.resource.gif.GifData; 6import com.bumptech.glide.load.resource.gif.GifDrawable; 7import com.bumptech.glide.load.resource.transcode.GifDataBytesTranscoder; 8import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; 9import com.bumptech.glide.manager.RequestManager; 10import com.bumptech.glide.provider.FixedLoadProvider; 11 12import java.io.InputStream; 13 14public class GifTypeRequest<A> extends GifRequestBuilder<A, GifDrawable> { 15 private final Context context; 16 private final A model; 17 private final ModelLoader<A, InputStream> streamModelLoader; 18 private final Glide glide; 19 private RequestManager requestManager; 20 21 private static <A, R> FixedLoadProvider<A, InputStream, GifData, R> buildProvider(Glide glide, 22 ModelLoader<A, InputStream> streamModelLoader, Class<R> transcodeClass, 23 ResourceTranscoder<GifData, R> transcoder) { 24 if (transcoder == null) { 25 transcoder = glide.buildTranscoder(GifData.class, transcodeClass); 26 } 27 return streamModelLoader == null ? null : 28 new FixedLoadProvider<A, InputStream, GifData, R>(streamModelLoader, transcoder, 29 glide.buildDataProvider(InputStream.class, GifData.class)); 30 31 } 32 33 GifTypeRequest(Context context, A model, ModelLoader<A, InputStream> streamModelLoader, Glide glide, 34 RequestManager requestManager){ 35 super(context, model, buildProvider(glide, streamModelLoader, GifDrawable.class, null), GifDrawable.class, 36 glide, requestManager); 37 this.context = context; 38 this.model = model; 39 this.streamModelLoader = streamModelLoader; 40 this.glide = glide; 41 this.requestManager = requestManager; 42 } 43 44 public <R> GifRequestBuilder<A, R> transcode(ResourceTranscoder<GifData, R> transcoder, Class<R> transcodeClass) { 45 return new GifRequestBuilder<A, R>(context, model, 46 buildProvider(glide, streamModelLoader, transcodeClass, transcoder), transcodeClass, glide, 47 requestManager); 48 } 49 50 /** 51 * Setup the request to return the bytes of the loaded gif. 52 * <p> 53 * Note - Any transformations added during this load do not change the underlying bytes and therefore this 54 * will always load and provide the bytes of the original image before any transformations to the given target. 55 * </p> 56 * 57 * @return A new Builder object to build a request to transform the given model into the bytes of an animated gif. 58 */ 59 public GifRequestBuilder<A, byte[]> toBytes() { 60 return transcode(new GifDataBytesTranscoder(), byte[].class); 61 } 62} 63