blob: 3480a008f469305e6b312289a5dd192d775b30f4 [file] [log] [blame]
package com.bumptech.glide;
import android.content.Context;
import android.graphics.Bitmap;
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.transcode.BitmapBytesTranscoder;
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 BitmapTypeRequest<A> extends BitmapRequestBuilder<A, Bitmap> {
private final Context context;
private final A model;
private final ModelLoader<A, InputStream> streamModelLoader;
private ModelLoader<A, ParcelFileDescriptor> fileDescriptorModelLoader;
private final Glide glide;
private RequestTracker requestTracker;
private RequestManager.OptionsApplier optionsApplier;
private static <A, R> FixedLoadProvider<A, ImageVideoWrapper, Bitmap, R> buildProvider(Glide glide,
ModelLoader<A, InputStream> streamModelLoader,
ModelLoader<A, ParcelFileDescriptor> fileDescriptorModelLoader,
Class<R> transcodedClass,
ResourceTranscoder<Bitmap, R> transcoder) {
return streamModelLoader == null && fileDescriptorModelLoader == null ? null :
new FixedLoadProvider<A, ImageVideoWrapper, Bitmap, R>(
new ImageVideoModelLoader<A>(streamModelLoader, fileDescriptorModelLoader),
transcoder != null ? transcoder : glide.buildTranscoder(Bitmap.class, transcodedClass),
glide.buildDataProvider(ImageVideoWrapper.class, Bitmap.class));
}
BitmapTypeRequest(Context context, A model,
ModelLoader<A, InputStream> streamModelLoader,
ModelLoader<A, ParcelFileDescriptor> fileDescriptorModelLoader,
Glide glide, RequestTracker requestTracker, RequestManager.OptionsApplier optionsApplier) {
super(context, model,
buildProvider(glide, streamModelLoader, fileDescriptorModelLoader, Bitmap.class, null),
Bitmap.class,
glide, requestTracker);
this.context = context;
this.model = model;
this.streamModelLoader = streamModelLoader;
this.fileDescriptorModelLoader = fileDescriptorModelLoader;
this.glide = glide;
this.requestTracker= requestTracker;
this.optionsApplier = optionsApplier;
}
public <R> BitmapRequestBuilder<A, R> transcode(ResourceTranscoder<Bitmap, R> transcoder, Class<R> transcodeClass) {
return optionsApplier.apply(model, new BitmapRequestBuilder<A, R>(context, model,
buildProvider(glide, streamModelLoader, fileDescriptorModelLoader, transcodeClass, transcoder),
transcodeClass, glide, requestTracker));
}
public BitmapRequestBuilder<A, byte[]> toBytes() {
return transcode(new BitmapBytesTranscoder(), byte[].class);
}
public BitmapRequestBuilder<A, byte[]> toBytes(Bitmap.CompressFormat compressFormat, int quality) {
return transcode(new BitmapBytesTranscoder(compressFormat, quality), byte[].class);
}
}