DrawableTypeRequest.java revision cbba04826bfaf4f8055f922bc41937572983c17f
1package com.bumptech.glide; 2 3import android.content.Context; 4import android.graphics.drawable.Drawable; 5import android.os.ParcelFileDescriptor; 6import com.bumptech.glide.load.model.ImageVideoModelLoader; 7import com.bumptech.glide.load.model.ImageVideoWrapper; 8import com.bumptech.glide.load.model.ModelLoader; 9import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapper; 10import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; 11import com.bumptech.glide.provider.FixedLoadProvider; 12 13import java.io.InputStream; 14 15public class DrawableTypeRequest<A> extends DrawableRequestBuilder<A> { 16 private final ModelLoader<A, InputStream> streamModelLoader; 17 private final ModelLoader<A, ParcelFileDescriptor> fileDescriptorModelLoader; 18 private final Context context; 19 private final Glide glide; 20 private final A model; 21 22 private static <A, Z, R> FixedLoadProvider<A, ImageVideoWrapper, Z, R> buildProvider(Glide glide, 23 ModelLoader<A, InputStream> streamModelLoader, 24 ModelLoader<A, ParcelFileDescriptor> fileDescriptorModelLoader, Class<Z> resourceClass, 25 Class<R> transcodedClass, 26 ResourceTranscoder<Z, R> transcoder) { 27 return streamModelLoader == null && fileDescriptorModelLoader == null ? null : 28 new FixedLoadProvider<A, ImageVideoWrapper, Z, R>( 29 new ImageVideoModelLoader<A>(streamModelLoader, fileDescriptorModelLoader), 30 transcoder != null ? transcoder : glide.buildTranscoder(resourceClass, transcodedClass), 31 glide.buildDataProvider(ImageVideoWrapper.class, resourceClass)); 32 } 33 34 35 DrawableTypeRequest(A model, ModelLoader<A, InputStream> streamModelLoader, 36 ModelLoader<A, ParcelFileDescriptor> fileDescriptorModelLoader, Context context, Glide glide) { 37 super(context, model, 38 buildProvider(glide, streamModelLoader, fileDescriptorModelLoader, GifBitmapWrapper.class, Drawable.class, 39 null), glide); 40 this.model = model; 41 this.streamModelLoader = streamModelLoader; 42 this.fileDescriptorModelLoader = fileDescriptorModelLoader; 43 this.context = context; 44 this.glide = glide; 45 } 46 47 public BitmapTypeRequest<A> asBitmap() { 48 return new BitmapTypeRequest<A>(context, model, streamModelLoader, fileDescriptorModelLoader, glide); 49 } 50 51 public GifTypeRequest<A> asGif() { 52 return new GifTypeRequest<A>(context, model, streamModelLoader, glide); 53 } 54} 55