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));
}
}