Java 类com.bumptech.glide.load.ResourceDecoder 实例源码
项目:GitHub
文件:Registry.java
private <Data, TResource, Transcode> List<DecodePath<Data, TResource, Transcode>> getDecodePaths(
Class<Data> dataClass, Class<TResource> resourceClass, Class<Transcode> transcodeClass) {
List<DecodePath<Data, TResource, Transcode>> decodePaths = new ArrayList<>();
List<Class<TResource>> registeredResourceClasses =
decoderRegistry.getResourceClasses(dataClass, resourceClass);
for (Class<TResource> registeredResourceClass : registeredResourceClasses) {
List<Class<Transcode>> registeredTranscodeClasses =
transcoderRegistry.getTranscodeClasses(registeredResourceClass, transcodeClass);
for (Class<Transcode> registeredTranscodeClass : registeredTranscodeClasses) {
List<ResourceDecoder<Data, TResource>> decoders =
decoderRegistry.getDecoders(dataClass, registeredResourceClass);
ResourceTranscoder<TResource, Transcode> transcoder =
transcoderRegistry.get(registeredResourceClass, registeredTranscodeClass);
decodePaths.add(new DecodePath<>(dataClass, registeredResourceClass,
registeredTranscodeClass, decoders, transcoder, exceptionListPool));
}
}
return decodePaths;
}
项目:GitHub
文件:ResourceDecoderRegistry.java
@SuppressWarnings("unchecked")
public synchronized <T, R> List<ResourceDecoder<T, R>> getDecoders(Class<T> dataClass,
Class<R> resourceClass) {
List<ResourceDecoder<T, R>> result = new ArrayList<>();
for (String bucket : bucketPriorityList) {
List<Entry<?, ?>> entries = decoders.get(bucket);
if (entries == null) {
continue;
}
for (Entry<?, ?> entry : entries) {
if (entry.handles(dataClass, resourceClass)) {
result.add((ResourceDecoder<T, R>) entry.decoder);
}
}
}
// TODO: cache result list.
return result;
}
项目:GitHub
文件:Registry.java
private <Data, TResource, Transcode> List<DecodePath<Data, TResource, Transcode>> getDecodePaths(
Class<Data> dataClass, Class<TResource> resourceClass, Class<Transcode> transcodeClass) {
List<DecodePath<Data, TResource, Transcode>> decodePaths = new ArrayList<>();
List<Class<TResource>> registeredResourceClasses =
decoderRegistry.getResourceClasses(dataClass, resourceClass);
for (Class<TResource> registeredResourceClass : registeredResourceClasses) {
List<Class<Transcode>> registeredTranscodeClasses =
transcoderRegistry.getTranscodeClasses(registeredResourceClass, transcodeClass);
for (Class<Transcode> registeredTranscodeClass : registeredTranscodeClasses) {
List<ResourceDecoder<Data, TResource>> decoders =
decoderRegistry.getDecoders(dataClass, registeredResourceClass);
ResourceTranscoder<TResource, Transcode> transcoder =
transcoderRegistry.get(registeredResourceClass, registeredTranscodeClass);
decodePaths.add(new DecodePath<>(dataClass, registeredResourceClass,
registeredTranscodeClass, decoders, transcoder, throwableListPool));
}
}
return decodePaths;
}
项目:saarang-iosched
文件:GenericRequest.java
@Override
public void onSizeReady(int width, int height) {
if (isCancelled) {
return;
}
width = Math.round(sizeMultiplier * width);
height = Math.round(sizeMultiplier * height);
ResourceDecoder<InputStream, Z> cacheDecoder = loadProvider.getCacheDecoder();
ResourceDecoder<T, Z> decoder = loadProvider.getSourceDecoder();
ResourceEncoder <Z> encoder = loadProvider.getEncoder();
ResourceTranscoder<Z, R> transcoder = loadProvider.getTranscoder();
ModelLoader<A, T> modelLoader = loadProvider.getModelLoader();
final String id = modelLoader.getId(model);
final DataFetcher<T> dataFetcher = modelLoader.getResourceFetcher(model, width, height);
loadedFromMemoryCache = true;
loadStatus = engine.load(id, width, height, cacheDecoder, dataFetcher, decoder, transformation,
encoder, transcoder, priority, isMemoryCacheable, this);
loadedFromMemoryCache = resource != null;
}
项目:AppDevFestSudeste2015
文件:GenericRequest.java
@Override
public void onSizeReady(int width, int height) {
if (isCancelled) {
return;
}
width = Math.round(sizeMultiplier * width);
height = Math.round(sizeMultiplier * height);
ResourceDecoder<InputStream, Z> cacheDecoder = loadProvider.getCacheDecoder();
ResourceDecoder<T, Z> decoder = loadProvider.getSourceDecoder();
ResourceEncoder <Z> encoder = loadProvider.getEncoder();
ResourceTranscoder<Z, R> transcoder = loadProvider.getTranscoder();
ModelLoader<A, T> modelLoader = loadProvider.getModelLoader();
final String id = modelLoader.getId(model);
final DataFetcher<T> dataFetcher = modelLoader.getResourceFetcher(model, width, height);
loadedFromMemoryCache = true;
loadStatus = engine.load(id, width, height, cacheDecoder, dataFetcher, decoder, transformation,
encoder, transcoder, priority, isMemoryCacheable, this);
loadedFromMemoryCache = resource != null;
}
项目:devfestnorte-app
文件:GenericRequest.java
@Override
public void onSizeReady(int width, int height) {
if (isCancelled) {
return;
}
width = Math.round(sizeMultiplier * width);
height = Math.round(sizeMultiplier * height);
ResourceDecoder<InputStream, Z> cacheDecoder = loadProvider.getCacheDecoder();
ResourceDecoder<T, Z> decoder = loadProvider.getSourceDecoder();
ResourceEncoder <Z> encoder = loadProvider.getEncoder();
ResourceTranscoder<Z, R> transcoder = loadProvider.getTranscoder();
ModelLoader<A, T> modelLoader = loadProvider.getModelLoader();
final String id = modelLoader.getId(model);
final DataFetcher<T> dataFetcher = modelLoader.getResourceFetcher(model, width, height);
loadedFromMemoryCache = true;
loadStatus = engine.load(id, width, height, cacheDecoder, dataFetcher, decoder, transformation,
encoder, transcoder, priority, isMemoryCacheable, this);
loadedFromMemoryCache = resource != null;
}
项目:saarang-iosched
文件:GenericRequest.java
@Override
public void onSizeReady(int width, int height) {
if (isCancelled) {
return;
}
width = Math.round(sizeMultiplier * width);
height = Math.round(sizeMultiplier * height);
ResourceDecoder<InputStream, Z> cacheDecoder = loadProvider.getCacheDecoder();
ResourceDecoder<T, Z> decoder = loadProvider.getSourceDecoder();
ResourceEncoder <Z> encoder = loadProvider.getEncoder();
ResourceTranscoder<Z, R> transcoder = loadProvider.getTranscoder();
ModelLoader<A, T> modelLoader = loadProvider.getModelLoader();
final String id = modelLoader.getId(model);
final DataFetcher<T> dataFetcher = modelLoader.getResourceFetcher(model, width, height);
loadedFromMemoryCache = true;
loadStatus = engine.load(id, width, height, cacheDecoder, dataFetcher, decoder, transformation,
encoder, transcoder, priority, isMemoryCacheable, this);
loadedFromMemoryCache = resource != null;
}
项目:GitHub
文件:DecodePath.java
public DecodePath(Class<DataType> dataClass, Class<ResourceType> resourceClass,
Class<Transcode> transcodeClass,
List<? extends ResourceDecoder<DataType, ResourceType>> decoders,
ResourceTranscoder<ResourceType, Transcode> transcoder, Pool<List<Exception>> listPool) {
this.dataClass = dataClass;
this.decoders = decoders;
this.transcoder = transcoder;
this.listPool = listPool;
failureMessage = "Failed DecodePath{" + dataClass.getSimpleName() + "->"
+ resourceClass.getSimpleName() + "->" + transcodeClass.getSimpleName() + "}";
}
项目:GitHub
文件:DecodePath.java
private Resource<ResourceType> decodeResourceWithList(DataRewinder<DataType> rewinder, int width,
int height, Options options, List<Exception> exceptions) throws GlideException {
Resource<ResourceType> result = null;
for (int i = 0, size = decoders.size(); i < size; i++) {
ResourceDecoder<DataType, ResourceType> decoder = decoders.get(i);
try {
DataType data = rewinder.rewindAndGet();
if (decoder.handles(data, options)) {
data = rewinder.rewindAndGet();
result = decoder.decode(data, width, height, options);
}
} catch (IOException e) {
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "Failed to decode data for " + decoder, e);
}
exceptions.add(e);
}
if (result != null) {
break;
}
}
if (result == null) {
throw new GlideException(failureMessage, new ArrayList<>(exceptions));
}
return result;
}
项目:GitHub
文件:ResourceDecoderRegistry.java
@SuppressWarnings("unchecked")
public synchronized <T, R> List<ResourceDecoder<T, R>> getDecoders(Class<T> dataClass,
Class<R> resourceClass) {
List<ResourceDecoder<T, R>> result = new ArrayList<>();
for (Entry<?, ?> entry : decoders) {
if (entry.handles(dataClass, resourceClass)) {
result.add((ResourceDecoder<T, R>) entry.decoder);
}
}
// TODO: cache result list.
return result;
}
项目:GitHub
文件:DecodePath.java
public DecodePath(Class<DataType> dataClass, Class<ResourceType> resourceClass,
Class<Transcode> transcodeClass,
List<? extends ResourceDecoder<DataType, ResourceType>> decoders,
ResourceTranscoder<ResourceType, Transcode> transcoder, Pool<List<Throwable>> listPool) {
this.dataClass = dataClass;
this.decoders = decoders;
this.transcoder = transcoder;
this.listPool = listPool;
failureMessage = "Failed DecodePath{" + dataClass.getSimpleName() + "->"
+ resourceClass.getSimpleName() + "->" + transcodeClass.getSimpleName() + "}";
}
项目:GitHub
文件:DecodePath.java
private Resource<ResourceType> decodeResourceWithList(DataRewinder<DataType> rewinder, int width,
int height, Options options, List<Throwable> exceptions) throws GlideException {
Resource<ResourceType> result = null;
for (int i = 0, size = decoders.size(); i < size; i++) {
ResourceDecoder<DataType, ResourceType> decoder = decoders.get(i);
try {
DataType data = rewinder.rewindAndGet();
if (decoder.handles(data, options)) {
data = rewinder.rewindAndGet();
result = decoder.decode(data, width, height, options);
}
// Some decoders throw unexpectedly. If they do, we shouldn't fail the entire load path, but
// instead log and continue. See #2406 for an example.
} catch (IOException | RuntimeException | OutOfMemoryError e) {
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "Failed to decode data for " + decoder, e);
}
exceptions.add(e);
}
if (result != null) {
break;
}
}
if (result == null) {
throw new GlideException(failureMessage, new ArrayList<>(exceptions));
}
return result;
}
项目:GlidePlus
文件:ImageWrapperResourceDecoder.java
ImageWrapperResourceDecoder(ResourceDecoder<ImageVideoWrapper, Bitmap> bitmapDecoder,
ResourceDecoder<InputStream, GifDrawable> gifDecoder, BitmapPool bitmapPool, ImageTypeParser parser,
BufferedStreamFactory streamFactory) {
this.bitmapDecoder = bitmapDecoder;
this.gifDecoder = gifDecoder;
this.bitmapPool = bitmapPool;
this.parser = parser;
this.streamFactory = streamFactory;
}
项目:glide-support
文件:PaletteBitmapDecoder.java
public PaletteBitmapDecoder(
BitmapPool bitmapPool,
ResourceDecoder<InputStream, Bitmap> bitmapDecoder,
ResourceDecoder<InputStream, Palette> paletteDecoder) {
this.bitmapPool = bitmapPool;
this.paletteDecoder = paletteDecoder;
this.bitmapDecoder = bitmapDecoder;
}
项目:saarang-iosched
文件:SourceResourceRunner.java
public SourceResourceRunner(Key key, int width, int height, DataFetcher<T> dataFetcher,
ResourceDecoder<T, Z> decoder, Transformation<Z> transformation, ResourceEncoder<Z> encoder,
ResourceTranscoder<Z, R> transcoder, DiskCache diskCache, Priority priority, ResourceCallback cb) {
this.key = key;
this.width = width;
this.height = height;
this.fetcher = dataFetcher;
this.decoder = decoder;
this.transformation = transformation;
this.encoder = encoder;
this.transcoder = transcoder;
this.diskCache = diskCache;
this.priority = priority;
this.cb = cb;
}
项目:saarang-iosched
文件:EngineKey.java
public EngineKey(String id, int width, int height, ResourceDecoder cacheDecoder, ResourceDecoder decoder,
Transformation transformation, ResourceEncoder encoder, ResourceTranscoder transcoder) {
this.id = id;
this.width = width;
this.height = height;
this.cacheDecoder = cacheDecoder;
this.decoder = decoder;
this.transformation = transformation;
this.encoder = encoder;
this.transcoder = transcoder;
}
项目:saarang-iosched
文件:ResourceRunner.java
public ResourceRunner(Key key, int width, int height, DiskCache diskCache,
ResourceDecoder<InputStream, Z> cacheDecoder, ResourceTranscoder<Z, R> transcoder,
SourceResourceRunner sourceRunner, ExecutorService executorService, Handler bgHandler, EngineJob job) {
this.key = key;
this.width = width;
this.height = height;
this.diskCache = diskCache;
this.cacheDecoder = cacheDecoder;
this.transcoder = transcoder;
this.sourceRunner = sourceRunner;
this.executorService = executorService;
this.bgHandler = bgHandler;
this.job = job;
}
项目:saarang-iosched
文件:Engine.java
/**
*
* @param id A unique id for the model, dimensions, cache decoder, decoder, and encoder
* @param cacheDecoder
* @param fetcher
* @param decoder
* @param encoder
* @param transcoder
* @param priority
* @param <T> The type of data the resource will be decoded from.
* @param <Z> The type of the resource that will be decoded.
* @param <R> The type of the resource that will be transcoded from the decoded resource.
*/
public <T, Z, R> LoadStatus load(String id, int width, int height, ResourceDecoder<InputStream, Z> cacheDecoder,
DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder, Transformation<Z> transformation,
ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder, Priority priority,
boolean isMemoryCacheable, ResourceCallback cb) {
Key key = keyFactory.buildKey(id, width, height, cacheDecoder, decoder, transformation, encoder, transcoder);
Resource cached = cache.get(key);
if (cached != null) {
cached.acquire(1);
cb.onResourceReady(cached);
return null;
}
ResourceRunner current = runners.get(key);
if (current != null) {
EngineJob job = current.getJob();
job.addCallback(cb);
return new LoadStatus(cb, job);
}
ResourceRunner<Z, R> runner = factory.build(key, width, height, cacheDecoder, fetcher, decoder, transformation,
encoder, transcoder, priority, isMemoryCacheable, this);
runner.getJob().addCallback(cb);
runners.put(key, runner);
runner.queue();
return new LoadStatus(cb, runner.getJob());
}
项目:saarang-iosched
文件:DefaultResourceRunnerFactory.java
@Override
public <T, Z, R> ResourceRunner<Z, R> build(Key key, int width, int height,
ResourceDecoder<InputStream, Z> cacheDecoder, DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder,
Transformation<Z> transformation, ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder,
Priority priority, boolean isMemoryCacheable, EngineJobListener listener) {
EngineJob engineJob = new EngineJob(key, memoryCache, mainHandler, isMemoryCacheable, listener);
SourceResourceRunner<T, Z, R> sourceRunner = new SourceResourceRunner<T, Z, R>(key, width, height, fetcher,
decoder, transformation, encoder, transcoder, diskCache, priority, engineJob);
return new ResourceRunner<Z, R>(key, width, height, diskCache, cacheDecoder, transcoder, sourceRunner, service,
bgHandler, engineJob);
}
项目:saarang-iosched
文件:ChildLoadProvider.java
@Override
public ResourceDecoder<InputStream, Z> getCacheDecoder() {
if (cacheDecoder != null) {
return cacheDecoder;
} else {
return parent.getCacheDecoder();
}
}
项目:saarang-iosched
文件:ChildLoadProvider.java
@Override
public ResourceDecoder<T, Z> getSourceDecoder() {
if (sourceDecoder != null) {
return sourceDecoder;
} else {
return parent.getSourceDecoder();
}
}
项目:AppDevFestSudeste2015
文件:SourceResourceRunner.java
public SourceResourceRunner(Key key, int width, int height, DataFetcher<T> dataFetcher,
ResourceDecoder<T, Z> decoder, Transformation<Z> transformation, ResourceEncoder<Z> encoder,
ResourceTranscoder<Z, R> transcoder, DiskCache diskCache, Priority priority, ResourceCallback cb) {
this.key = key;
this.width = width;
this.height = height;
this.fetcher = dataFetcher;
this.decoder = decoder;
this.transformation = transformation;
this.encoder = encoder;
this.transcoder = transcoder;
this.diskCache = diskCache;
this.priority = priority;
this.cb = cb;
}
项目:AppDevFestSudeste2015
文件:EngineKey.java
public EngineKey(String id, int width, int height, ResourceDecoder cacheDecoder, ResourceDecoder decoder,
Transformation transformation, ResourceEncoder encoder, ResourceTranscoder transcoder) {
this.id = id;
this.width = width;
this.height = height;
this.cacheDecoder = cacheDecoder;
this.decoder = decoder;
this.transformation = transformation;
this.encoder = encoder;
this.transcoder = transcoder;
}
项目:AppDevFestSudeste2015
文件:ResourceRunner.java
public ResourceRunner(Key key, int width, int height, DiskCache diskCache,
ResourceDecoder<InputStream, Z> cacheDecoder, ResourceTranscoder<Z, R> transcoder,
SourceResourceRunner sourceRunner, ExecutorService executorService, Handler bgHandler, EngineJob job) {
this.key = key;
this.width = width;
this.height = height;
this.diskCache = diskCache;
this.cacheDecoder = cacheDecoder;
this.transcoder = transcoder;
this.sourceRunner = sourceRunner;
this.executorService = executorService;
this.bgHandler = bgHandler;
this.job = job;
}
项目:AppDevFestSudeste2015
文件:Engine.java
/**
*
* @param id A unique id for the model, dimensions, cache decoder, decoder, and encoder
* @param cacheDecoder
* @param fetcher
* @param decoder
* @param encoder
* @param transcoder
* @param priority
* @param <T> The type of data the resource will be decoded from.
* @param <Z> The type of the resource that will be decoded.
* @param <R> The type of the resource that will be transcoded from the decoded resource.
*/
public <T, Z, R> LoadStatus load(String id, int width, int height, ResourceDecoder<InputStream, Z> cacheDecoder,
DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder, Transformation<Z> transformation,
ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder, Priority priority,
boolean isMemoryCacheable, ResourceCallback cb) {
Key key = keyFactory.buildKey(id, width, height, cacheDecoder, decoder, transformation, encoder, transcoder);
Resource cached = cache.get(key);
if (cached != null) {
cached.acquire(1);
cb.onResourceReady(cached);
return null;
}
ResourceRunner current = runners.get(key);
if (current != null) {
EngineJob job = current.getJob();
job.addCallback(cb);
return new LoadStatus(cb, job);
}
ResourceRunner<Z, R> runner = factory.build(key, width, height, cacheDecoder, fetcher, decoder, transformation,
encoder, transcoder, priority, isMemoryCacheable, this);
runner.getJob().addCallback(cb);
runners.put(key, runner);
runner.queue();
return new LoadStatus(cb, runner.getJob());
}
项目:AppDevFestSudeste2015
文件:DefaultResourceRunnerFactory.java
@Override
public <T, Z, R> ResourceRunner<Z, R> build(Key key, int width, int height,
ResourceDecoder<InputStream, Z> cacheDecoder, DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder,
Transformation<Z> transformation, ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder,
Priority priority, boolean isMemoryCacheable, EngineJobListener listener) {
EngineJob engineJob = new EngineJob(key, memoryCache, mainHandler, isMemoryCacheable, listener);
SourceResourceRunner<T, Z, R> sourceRunner = new SourceResourceRunner<T, Z, R>(key, width, height, fetcher,
decoder, transformation, encoder, transcoder, diskCache, priority, engineJob);
return new ResourceRunner<Z, R>(key, width, height, diskCache, cacheDecoder, transcoder, sourceRunner, service,
bgHandler, engineJob);
}
项目:AppDevFestSudeste2015
文件:ChildLoadProvider.java
@Override
public ResourceDecoder<InputStream, Z> getCacheDecoder() {
if (cacheDecoder != null) {
return cacheDecoder;
} else {
return parent.getCacheDecoder();
}
}
项目:AppDevFestSudeste2015
文件:ChildLoadProvider.java
@Override
public ResourceDecoder<T, Z> getSourceDecoder() {
if (sourceDecoder != null) {
return sourceDecoder;
} else {
return parent.getSourceDecoder();
}
}
项目:devfestnorte-app
文件:SourceResourceRunner.java
public SourceResourceRunner(Key key, int width, int height, DataFetcher<T> dataFetcher,
ResourceDecoder<T, Z> decoder, Transformation<Z> transformation, ResourceEncoder<Z> encoder,
ResourceTranscoder<Z, R> transcoder, DiskCache diskCache, Priority priority, ResourceCallback cb) {
this.key = key;
this.width = width;
this.height = height;
this.fetcher = dataFetcher;
this.decoder = decoder;
this.transformation = transformation;
this.encoder = encoder;
this.transcoder = transcoder;
this.diskCache = diskCache;
this.priority = priority;
this.cb = cb;
}
项目:devfestnorte-app
文件:EngineKey.java
public EngineKey(String id, int width, int height, ResourceDecoder cacheDecoder, ResourceDecoder decoder,
Transformation transformation, ResourceEncoder encoder, ResourceTranscoder transcoder) {
this.id = id;
this.width = width;
this.height = height;
this.cacheDecoder = cacheDecoder;
this.decoder = decoder;
this.transformation = transformation;
this.encoder = encoder;
this.transcoder = transcoder;
}
项目:devfestnorte-app
文件:ResourceRunner.java
public ResourceRunner(Key key, int width, int height, DiskCache diskCache,
ResourceDecoder<InputStream, Z> cacheDecoder, ResourceTranscoder<Z, R> transcoder,
SourceResourceRunner sourceRunner, ExecutorService executorService, Handler bgHandler, EngineJob job) {
this.key = key;
this.width = width;
this.height = height;
this.diskCache = diskCache;
this.cacheDecoder = cacheDecoder;
this.transcoder = transcoder;
this.sourceRunner = sourceRunner;
this.executorService = executorService;
this.bgHandler = bgHandler;
this.job = job;
}
项目:devfestnorte-app
文件:Engine.java
/**
*
* @param id A unique id for the model, dimensions, cache decoder, decoder, and encoder
* @param cacheDecoder
* @param fetcher
* @param decoder
* @param encoder
* @param transcoder
* @param priority
* @param <T> The type of data the resource will be decoded from.
* @param <Z> The type of the resource that will be decoded.
* @param <R> The type of the resource that will be transcoded from the decoded resource.
*/
public <T, Z, R> LoadStatus load(String id, int width, int height, ResourceDecoder<InputStream, Z> cacheDecoder,
DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder, Transformation<Z> transformation,
ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder, Priority priority,
boolean isMemoryCacheable, ResourceCallback cb) {
Key key = keyFactory.buildKey(id, width, height, cacheDecoder, decoder, transformation, encoder, transcoder);
Resource cached = cache.get(key);
if (cached != null) {
cached.acquire(1);
cb.onResourceReady(cached);
return null;
}
ResourceRunner current = runners.get(key);
if (current != null) {
EngineJob job = current.getJob();
job.addCallback(cb);
return new LoadStatus(cb, job);
}
ResourceRunner<Z, R> runner = factory.build(key, width, height, cacheDecoder, fetcher, decoder, transformation,
encoder, transcoder, priority, isMemoryCacheable, this);
runner.getJob().addCallback(cb);
runners.put(key, runner);
runner.queue();
return new LoadStatus(cb, runner.getJob());
}
项目:devfestnorte-app
文件:DefaultResourceRunnerFactory.java
@Override
public <T, Z, R> ResourceRunner<Z, R> build(Key key, int width, int height,
ResourceDecoder<InputStream, Z> cacheDecoder, DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder,
Transformation<Z> transformation, ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder,
Priority priority, boolean isMemoryCacheable, EngineJobListener listener) {
EngineJob engineJob = new EngineJob(key, memoryCache, mainHandler, isMemoryCacheable, listener);
SourceResourceRunner<T, Z, R> sourceRunner = new SourceResourceRunner<T, Z, R>(key, width, height, fetcher,
decoder, transformation, encoder, transcoder, diskCache, priority, engineJob);
return new ResourceRunner<Z, R>(key, width, height, diskCache, cacheDecoder, transcoder, sourceRunner, service,
bgHandler, engineJob);
}
项目:devfestnorte-app
文件:ChildLoadProvider.java
@Override
public ResourceDecoder<InputStream, Z> getCacheDecoder() {
if (cacheDecoder != null) {
return cacheDecoder;
} else {
return parent.getCacheDecoder();
}
}
项目:devfestnorte-app
文件:ChildLoadProvider.java
@Override
public ResourceDecoder<T, Z> getSourceDecoder() {
if (sourceDecoder != null) {
return sourceDecoder;
} else {
return parent.getSourceDecoder();
}
}
项目:saarang-iosched
文件:SourceResourceRunner.java
public SourceResourceRunner(Key key, int width, int height, DataFetcher<T> dataFetcher,
ResourceDecoder<T, Z> decoder, Transformation<Z> transformation, ResourceEncoder<Z> encoder,
ResourceTranscoder<Z, R> transcoder, DiskCache diskCache, Priority priority, ResourceCallback cb) {
this.key = key;
this.width = width;
this.height = height;
this.fetcher = dataFetcher;
this.decoder = decoder;
this.transformation = transformation;
this.encoder = encoder;
this.transcoder = transcoder;
this.diskCache = diskCache;
this.priority = priority;
this.cb = cb;
}
项目:saarang-iosched
文件:EngineKey.java
public EngineKey(String id, int width, int height, ResourceDecoder cacheDecoder, ResourceDecoder decoder,
Transformation transformation, ResourceEncoder encoder, ResourceTranscoder transcoder) {
this.id = id;
this.width = width;
this.height = height;
this.cacheDecoder = cacheDecoder;
this.decoder = decoder;
this.transformation = transformation;
this.encoder = encoder;
this.transcoder = transcoder;
}
项目:saarang-iosched
文件:ResourceRunner.java
public ResourceRunner(Key key, int width, int height, DiskCache diskCache,
ResourceDecoder<InputStream, Z> cacheDecoder, ResourceTranscoder<Z, R> transcoder,
SourceResourceRunner sourceRunner, ExecutorService executorService, Handler bgHandler, EngineJob job) {
this.key = key;
this.width = width;
this.height = height;
this.diskCache = diskCache;
this.cacheDecoder = cacheDecoder;
this.transcoder = transcoder;
this.sourceRunner = sourceRunner;
this.executorService = executorService;
this.bgHandler = bgHandler;
this.job = job;
}
项目:saarang-iosched
文件:Engine.java
/**
*
* @param id A unique id for the model, dimensions, cache decoder, decoder, and encoder
* @param cacheDecoder
* @param fetcher
* @param decoder
* @param encoder
* @param transcoder
* @param priority
* @param <T> The type of data the resource will be decoded from.
* @param <Z> The type of the resource that will be decoded.
* @param <R> The type of the resource that will be transcoded from the decoded resource.
*/
public <T, Z, R> LoadStatus load(String id, int width, int height, ResourceDecoder<InputStream, Z> cacheDecoder,
DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder, Transformation<Z> transformation,
ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder, Priority priority,
boolean isMemoryCacheable, ResourceCallback cb) {
Key key = keyFactory.buildKey(id, width, height, cacheDecoder, decoder, transformation, encoder, transcoder);
Resource cached = cache.get(key);
if (cached != null) {
cached.acquire(1);
cb.onResourceReady(cached);
return null;
}
ResourceRunner current = runners.get(key);
if (current != null) {
EngineJob job = current.getJob();
job.addCallback(cb);
return new LoadStatus(cb, job);
}
ResourceRunner<Z, R> runner = factory.build(key, width, height, cacheDecoder, fetcher, decoder, transformation,
encoder, transcoder, priority, isMemoryCacheable, this);
runner.getJob().addCallback(cb);
runners.put(key, runner);
runner.queue();
return new LoadStatus(cb, runner.getJob());
}
项目:saarang-iosched
文件:DefaultResourceRunnerFactory.java
@Override
public <T, Z, R> ResourceRunner<Z, R> build(Key key, int width, int height,
ResourceDecoder<InputStream, Z> cacheDecoder, DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder,
Transformation<Z> transformation, ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder,
Priority priority, boolean isMemoryCacheable, EngineJobListener listener) {
EngineJob engineJob = new EngineJob(key, memoryCache, mainHandler, isMemoryCacheable, listener);
SourceResourceRunner<T, Z, R> sourceRunner = new SourceResourceRunner<T, Z, R>(key, width, height, fetcher,
decoder, transformation, encoder, transcoder, diskCache, priority, engineJob);
return new ResourceRunner<Z, R>(key, width, height, diskCache, cacheDecoder, transcoder, sourceRunner, service,
bgHandler, engineJob);
}