package com.bumptech.glide; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.ParcelFileDescriptor; import com.bumptech.glide.load.model.ImageVideoModelLoader; import com.bumptech.glide.load.model.ImageVideoWrapper; import com.bumptech.glide.load.model.ModelLoader; import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapper; import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; import com.bumptech.glide.manager.RequestTracker; import com.bumptech.glide.provider.FixedLoadProvider; import java.io.InputStream; public class DrawableTypeRequest extends DrawableRequestBuilder { private final ModelLoader streamModelLoader; private final ModelLoader fileDescriptorModelLoader; private final Context context; private final Glide glide; private RequestTracker requestTracker; private RequestManager.OptionsApplier optionsApplier; private final A model; private static FixedLoadProvider buildProvider(Glide glide, ModelLoader streamModelLoader, ModelLoader fileDescriptorModelLoader, Class resourceClass, Class transcodedClass, ResourceTranscoder transcoder) { return streamModelLoader == null && fileDescriptorModelLoader == null ? null : new FixedLoadProvider( new ImageVideoModelLoader(streamModelLoader, fileDescriptorModelLoader), transcoder != null ? transcoder : glide.buildTranscoder(resourceClass, transcodedClass), glide.buildDataProvider(ImageVideoWrapper.class, resourceClass)); } DrawableTypeRequest(A model, ModelLoader streamModelLoader, ModelLoader fileDescriptorModelLoader, Context context, Glide glide, RequestTracker requestTracker, RequestManager.OptionsApplier optionsApplier) { super(context, model, buildProvider(glide, streamModelLoader, fileDescriptorModelLoader, GifBitmapWrapper.class, Drawable.class, null), glide, requestTracker); this.model = model; this.streamModelLoader = streamModelLoader; this.fileDescriptorModelLoader = fileDescriptorModelLoader; this.context = context; this.glide = glide; this.requestTracker = requestTracker; this.optionsApplier = optionsApplier; } public BitmapTypeRequest asBitmap() { return optionsApplier.apply(model, new BitmapTypeRequest(context, model, streamModelLoader, fileDescriptorModelLoader, glide, requestTracker, optionsApplier)); } public GifTypeRequest asGif() { return optionsApplier.apply(model, new GifTypeRequest(context, model, streamModelLoader, glide, requestTracker, optionsApplier)); } }