summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-01-10 12:53:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-01-10 12:53:04 +0000
commit7fe2a370bcb29e3bd9509ee9686f8c8473e5f39f (patch)
tree9d57eecdf298fc57a3f43b0fedfcb4636daab47b
parent260b9308afa51e4cad2eb33055964f5926db8c19 (diff)
parentb1cc8e64374832c8b296f609bebabff068ded460 (diff)
Merge "Additions and cleanups for ImageDecoder API"
-rw-r--r--graphics/java/android/graphics/ImageDecoder.java52
1 files changed, 45 insertions, 7 deletions
diff --git a/graphics/java/android/graphics/ImageDecoder.java b/graphics/java/android/graphics/ImageDecoder.java
index 97ce88606331..400c928b6fc2 100644
--- a/graphics/java/android/graphics/ImageDecoder.java
+++ b/graphics/java/android/graphics/ImageDecoder.java
@@ -20,6 +20,7 @@ import static android.system.OsConstants.SEEK_SET;
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.RawRes;
import android.content.ContentResolver;
import android.content.res.AssetFileDescriptor;
@@ -359,7 +360,6 @@ public final class ImageDecoder implements AutoCloseable {
* @throws ArrayIndexOutOfBoundsException if offset and length are
* not within data.
*/
- // TODO: Overloads that don't use offset, length
public static Source createSource(@NonNull byte[] data, int offset,
int length) throws ArrayIndexOutOfBoundsException {
if (data == null) {
@@ -374,6 +374,13 @@ public final class ImageDecoder implements AutoCloseable {
}
/**
+ * See {@link #createSource(byte[], int, int).
+ */
+ public static Source createSource(@NonNull byte[] data) {
+ return createSource(data, 0, data.length);
+ }
+
+ /**
* Create a new {@link Source} from a {@link java.nio.ByteBuffer}.
*
* The returned {@link Source} effectively takes ownership of the
@@ -648,13 +655,20 @@ public final class ImageDecoder implements AutoCloseable {
}
/**
- * Create a {@link Drawable}.
+ * Create a {@link Drawable} from a {@code Source}.
+ *
+ * @param src representing the encoded image.
+ * @param listener for learning the {@link ImageInfo} and changing any
+ * default settings on the {@code ImageDecoder}. If not {@code null},
+ * this will be called on the same thread as {@code decodeDrawable}
+ * before that method returns.
+ * @return Drawable for displaying the image.
* @throws IOException if {@code src} is not found, is an unsupported
* format, or cannot be decoded for any reason.
*/
@NonNull
- public static Drawable decodeDrawable(Source src, OnHeaderDecodedListener listener)
- throws IOException {
+ public static Drawable decodeDrawable(@NonNull Source src,
+ @Nullable OnHeaderDecodedListener listener) throws IOException {
try (ImageDecoder decoder = src.createImageDecoder()) {
if (listener != null) {
ImageInfo info = new ImageInfo(decoder.mWidth, decoder.mHeight);
@@ -714,13 +728,29 @@ public final class ImageDecoder implements AutoCloseable {
}
/**
- * Create a {@link Bitmap}.
+ * See {@link #decodeDrawable(Source, OnHeaderDecodedListener)}.
+ */
+ @NonNull
+ public static Drawable decodeDrawable(@NonNull Source src)
+ throws IOException {
+ return decodeDrawable(src, null);
+ }
+
+ /**
+ * Create a {@link Bitmap} from a {@code Source}.
+ *
+ * @param src representing the encoded image.
+ * @param listener for learning the {@link ImageInfo} and changing any
+ * default settings on the {@code ImageDecoder}. If not {@code null},
+ * this will be called on the same thread as {@code decodeBitmap}
+ * before that method returns.
+ * @return Bitmap containing the image.
* @throws IOException if {@code src} is not found, is an unsupported
* format, or cannot be decoded for any reason.
*/
@NonNull
- public static Bitmap decodeBitmap(Source src, OnHeaderDecodedListener listener)
- throws IOException {
+ public static Bitmap decodeBitmap(@NonNull Source src,
+ @Nullable OnHeaderDecodedListener listener) throws IOException {
try (ImageDecoder decoder = src.createImageDecoder()) {
if (listener != null) {
ImageInfo info = new ImageInfo(decoder.mWidth, decoder.mHeight);
@@ -743,6 +773,14 @@ public final class ImageDecoder implements AutoCloseable {
}
}
+ /**
+ * See {@link #decodeBitmap(Source, OnHeaderDecodedListener)}.
+ */
+ @NonNull
+ public static Bitmap decodeBitmap(@NonNull Source src) throws IOException {
+ return decodeBitmap(src, null);
+ }
+
private static native ImageDecoder nCreate(long asset) throws IOException;
private static native ImageDecoder nCreate(ByteBuffer buffer,
int position,