package com.bumptech.glide.load; import com.bumptech.glide.load.engine.Resource; import java.io.IOException; /** * An interface for decoding resources. * * @param The type the resource will be decoded from (File, InputStream etc). * @param The type of the decoded resource (Bitmap, Drawable etc). */ public interface ResourceDecoder { /** * Returns a decoded resource from the given data or null if no resource could be decoded. *

* The {@code source} is managed by the caller, there's no need to close it. * The returned {@link Resource} will be {@link Resource#recycle() released} when the engine sees fit. *

*

* Note - The {@code width} and {@code height} arguments are hints only, * there is no requirement that the decoded resource exactly match the given dimensions. * A typical use case would be to use the target dimensions to determine * how much to downsample Bitmaps by to avoid overly large allocations. *

* * @param source The data the resource should be decoded from. * @param width The ideal width in pixels of the decoded resource. * @param height The ideal height in pixels of the decoded resource. * @throws IOException */ Resource decode(T source, int width, int height) throws IOException; /** * Returns an ID identifying any transformation this decoder may apply to the given data that will be mixed in to * the cache key. * *

* If the decoder does not transform the data in a way that significantly affects the cached * result (ie performs no downsampling) an empty string is an appropriate id. *

*/ String getId(); }