Expose ImageDecoder#createSource(byte[] (, int, int))

Bug: 152322291
Test: Ib50eba48e3557a0147b95dd6ce3e8589ab07c127

These methods are used in various places in the system, and the system
will not be able to access them as @hidden APIs once ImageDecoder is
part of a mainline module. They were originally hidden to discourage
clients from keeping the encoded data allocated in a large buffer,
especially for animated images. But this is already possible using a
ByteBuffer.

Change-Id: If5350d4f2ff88ac634e48b9224d70954fd312d30
This commit is contained in:
Leon Scroggins III
2020-03-24 15:03:36 -04:00
parent ede504903d
commit 8060fa8328
2 changed files with 21 additions and 3 deletions

View File

@@ -14678,6 +14678,8 @@ package android.graphics {
method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.Resources, int);
method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.ContentResolver, @NonNull android.net.Uri);
method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull android.content.res.AssetManager, @NonNull String);
method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull byte[], int, int) throws java.lang.ArrayIndexOutOfBoundsException;
method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull byte[]);
method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.nio.ByteBuffer);
method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.io.File);
method @AnyThread @NonNull public static android.graphics.ImageDecoder.Source createSource(@NonNull java.util.concurrent.Callable<android.content.res.AssetFileDescriptor>);

View File

@@ -944,6 +944,12 @@ public final class ImageDecoder implements AutoCloseable {
/**
* Create a new {@link Source Source} from a byte array.
*
* <p>Note: If this {@code Source} is passed to {@link #decodeDrawable decodeDrawable},
* and the encoded image is animated, the returned {@link AnimatedImageDrawable}
* will continue reading from {@code data}, so its contents must not
* be modified, even after the {@code AnimatedImageDrawable} is returned.
* {@code data}'s contents should never be modified during decode.</p>
*
* @param data byte array of compressed image data.
* @param offset offset into data for where the decoder should begin
* parsing.
@@ -954,7 +960,6 @@ public final class ImageDecoder implements AutoCloseable {
* @throws NullPointerException if data is null.
* @throws ArrayIndexOutOfBoundsException if offset and length are
* not within data.
* @hide
*/
@AnyThread
@NonNull
@@ -972,8 +977,19 @@ public final class ImageDecoder implements AutoCloseable {
}
/**
* See {@link #createSource(byte[], int, int).
* @hide
* Create a new {@link Source Source} from a byte array.
*
* <p>Note: If this {@code Source} is passed to {@link #decodeDrawable decodeDrawable},
* and the encoded image is animated, the returned {@link AnimatedImageDrawable}
* will continue reading from {@code data}, so its contents must not
* be modified, even after the {@code AnimatedImageDrawable} is returned.
* {@code data}'s contents should never be modified during decode.</p>
*
* @param data byte array of compressed image data.
* @return a new Source object, which can be passed to
* {@link #decodeDrawable decodeDrawable} or
* {@link #decodeBitmap decodeBitmap}.
* @throws NullPointerException if data is null.
*/
@AnyThread
@NonNull