summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/gallery3d/exif/Util.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/gallery3d/exif/Util.java')
-rw-r--r--tests/src/com/android/gallery3d/exif/Util.java114
1 files changed, 82 insertions, 32 deletions
diff --git a/tests/src/com/android/gallery3d/exif/Util.java b/tests/src/com/android/gallery3d/exif/Util.java
index 0e51fd7bf..15de00714 100644
--- a/tests/src/com/android/gallery3d/exif/Util.java
+++ b/tests/src/com/android/gallery3d/exif/Util.java
@@ -16,7 +16,11 @@
package com.android.gallery3d.exif;
+import java.io.ByteArrayOutputStream;
import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
class Util {
public static boolean equals(Object a, Object b) {
@@ -24,7 +28,8 @@ class Util {
}
public static void closeSilently(Closeable c) {
- if (c == null) return;
+ if (c == null)
+ return;
try {
c.close();
} catch (Throwable t) {
@@ -32,6 +37,17 @@ class Util {
}
}
+ public static byte[] readToByteArray(InputStream is) throws IOException {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ int len;
+ byte[] buf = new byte[1024];
+ while ((len = is.read(buf)) > -1) {
+ bos.write(buf, 0, len);
+ }
+ bos.flush();
+ return bos.toByteArray();
+ }
+
/**
* Tags that are not defined in the spec.
*/
@@ -45,27 +61,30 @@ class Util {
StringBuilder sbuilder = new StringBuilder();
byte[] buf = new byte[tag.getComponentCount()];
tag.getBytes(buf);
- switch (tag.getTagId()) {
- case ExifTag.TAG_COMPONENTS_CONFIGURATION:
- for(int i = 0, n = tag.getComponentCount(); i < n; i++) {
- if(i != 0) sbuilder.append(" ");
- sbuilder.append(buf[i]);
+ short tagId = tag.getTagId();
+ if (tagId == ExifInterface.getTrueTagKey(ExifInterface.TAG_COMPONENTS_CONFIGURATION)) {
+ for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
+ if (i != 0) {
+ sbuilder.append(" ");
}
- break;
- default:
- if (buf.length == 1) {
- sbuilder.append(buf[0]);
- } else {
- for (int i = 0, n = buf.length; i < n; i++) {
- byte code = buf[i];
- if (code == 0) continue;
- if (code > 31 && code < 127) {
- sbuilder.append((char) code);
- } else {
- sbuilder.append('.');
- }
+ sbuilder.append(buf[i]);
+ }
+ } else {
+ if (buf.length == 1) {
+ sbuilder.append(buf[0]);
+ } else {
+ for (int i = 0, n = buf.length; i < n; i++) {
+ byte code = buf[i];
+ if (code == 0) {
+ continue;
+ }
+ if (code > 31 && code < 127) {
+ sbuilder.append((char) code);
+ } else {
+ sbuilder.append('.');
}
}
+ }
}
return sbuilder.toString();
}
@@ -81,15 +100,16 @@ class Util {
sbuilder.append(tagUndefinedTypeValueToString(tag));
break;
case ExifTag.TYPE_UNSIGNED_BYTE:
- if (id == ExifTag.TAG_MAKER_NOTE || id == TAG_XP_TITLE ||
+ if (id == ExifInterface.TAG_MAKER_NOTE || id == TAG_XP_TITLE ||
id == TAG_XP_COMMENT || id == TAG_XP_AUTHOR ||
id == TAG_XP_KEYWORDS || id == TAG_XP_SUBJECT) {
sbuilder.append(tagUndefinedTypeValueToString(tag));
} else {
byte[] buf = new byte[tag.getComponentCount()];
tag.getBytes(buf);
- for(int i = 0, n = tag.getComponentCount(); i < n; i++) {
- if(i != 0) sbuilder.append(" ");
+ for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
+ if (i != 0)
+ sbuilder.append(" ");
sbuilder.append(buf[i]);
}
}
@@ -100,7 +120,8 @@ class Util {
byte code = buf[i];
if (code == 0) {
// Treat some tag as undefined type data.
- if (id == ExifTag.TAG_COPYRIGHT || id == ExifTag.TAG_GPS_DATE_STAMP) {
+ if (id == ExifInterface.TAG_COPYRIGHT
+ || id == ExifInterface.TAG_GPS_DATE_STAMP) {
continue;
} else {
break;
@@ -114,32 +135,61 @@ class Util {
}
break;
case ExifTag.TYPE_UNSIGNED_LONG:
- for(int i = 0, n = tag.getComponentCount(); i < n; i++) {
- if(i != 0) sbuilder.append(" ");
+ for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
+ if (i != 0) {
+ sbuilder.append(" ");
+ }
sbuilder.append(tag.getValueAt(i));
}
break;
case ExifTag.TYPE_RATIONAL:
case ExifTag.TYPE_UNSIGNED_RATIONAL:
- for(int i = 0, n = tag.getComponentCount(); i < n; i++) {
+ for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
Rational r = tag.getRational(i);
- if(i != 0) sbuilder.append(" ");
- sbuilder.append(r.getNominator()).append("/").append(r.getDenominator());
+ if (i != 0) {
+ sbuilder.append(" ");
+ }
+ sbuilder.append(r.getNumerator()).append("/").append(r.getDenominator());
}
break;
case ExifTag.TYPE_UNSIGNED_SHORT:
- for(int i = 0, n = tag.getComponentCount(); i < n; i++) {
- if(i != 0) sbuilder.append(" ");
+ for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
+ if (i != 0) {
+ sbuilder.append(" ");
+ }
sbuilder.append((int) tag.getValueAt(i));
}
break;
case ExifTag.TYPE_LONG:
- for(int i = 0, n = tag.getComponentCount(); i < n; i++) {
- if(i != 0) sbuilder.append(" ");
+ for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
+ if (i != 0) {
+ sbuilder.append(" ");
+ }
sbuilder.append((int) tag.getValueAt(i));
}
break;
}
return sbuilder.toString();
}
+
+ public static String valueToString(Object obj) {
+ if (obj instanceof int[]) {
+ return Arrays.toString((int[]) obj);
+ } else if (obj instanceof Integer[]) {
+ return Arrays.toString((Integer[]) obj);
+ } else if (obj instanceof long[]) {
+ return Arrays.toString((long[]) obj);
+ } else if (obj instanceof Long[]) {
+ return Arrays.toString((Long[]) obj);
+ } else if (obj instanceof Rational) {
+ return ((Rational) obj).toString();
+ } else if (obj instanceof Rational[]) {
+ return Arrays.toString((Rational[]) obj);
+ } else if (obj instanceof byte[]) {
+ return Arrays.toString((byte[]) obj);
+ } else if (obj != null) {
+ return obj.toString();
+ }
+ return "";
+ }
}