summaryrefslogtreecommitdiffstats
path: root/gallerycommon/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'gallerycommon/src/com')
-rw-r--r--gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java10
-rw-r--r--gallerycommon/src/com/android/gallery3d/exif/ExifParser.java30
-rw-r--r--gallerycommon/src/com/android/gallery3d/exif/ExifTag.java49
3 files changed, 27 insertions, 62 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java b/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
index 46cd655..51a30ff 100644
--- a/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
+++ b/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
@@ -225,8 +225,9 @@ public class ExifOutputStream extends FilterOutputStream {
}
break;
case ExifTag.TYPE_LONG:
+ case ExifTag.TYPE_UNSIGNED_LONG:
for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
- dataOutputStream.writeInt(tag.getLong(i));
+ dataOutputStream.writeInt((int) tag.getValueAt(i));
}
break;
case ExifTag.TYPE_RATIONAL:
@@ -241,14 +242,9 @@ public class ExifOutputStream extends FilterOutputStream {
tag.getBytes(buf);
dataOutputStream.write(buf);
break;
- case ExifTag.TYPE_UNSIGNED_LONG:
- for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
- dataOutputStream.writeInt((int) tag.getUnsignedLong(i));
- }
- break;
case ExifTag.TYPE_UNSIGNED_SHORT:
for (int i = 0, n = tag.getComponentCount(); i < n; i++) {
- dataOutputStream.writeShort((short) tag.getUnsignedShort(i));
+ dataOutputStream.writeShort((short) tag.getValueAt(i));
}
break;
}
diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifParser.java b/gallerycommon/src/com/android/gallery3d/exif/ExifParser.java
index a6bbda0..2cff12a 100644
--- a/gallerycommon/src/com/android/gallery3d/exif/ExifParser.java
+++ b/gallerycommon/src/com/android/gallery3d/exif/ExifParser.java
@@ -435,13 +435,7 @@ public class ExifParser {
*/
public int getStripSize() {
if (mStripSizeTag == null) return 0;
- if (mStripSizeTag.getDataType() == ExifTag.TYPE_UNSIGNED_SHORT) {
- return mStripSizeTag.getUnsignedShort(mImageEvent.stripIndex);
- } else {
- // Cast unsigned int to int since the strip size is always smaller
- // than the size of APP1 (65536)
- return (int) mStripSizeTag.getUnsignedLong(mImageEvent.stripIndex);
- }
+ return (int) mStripSizeTag.getValueAt(0);
}
/**
@@ -450,15 +444,7 @@ public class ExifParser {
*/
public int getCompressedImageSize() {
if (mJpegSizeTag == null) return 0;
-
- // Some invalid image use short type tag
- if (mJpegSizeTag.getDataType() == ExifTag.TYPE_UNSIGNED_SHORT) {
- return mJpegSizeTag.getUnsignedShort(0);
- }
-
- // Cast unsigned int to int since the thumbnail is always smaller
- // than the size of APP1 (65536)
- return (int) mJpegSizeTag.getUnsignedLong(0);
+ return (int) mJpegSizeTag.getValueAt(0);
}
private void skipTo(int offset) throws IOException {
@@ -546,22 +532,22 @@ public class ExifParser {
case ExifTag.TAG_EXIF_IFD:
if (isIfdRequested(IfdId.TYPE_IFD_EXIF)
|| isIfdRequested(IfdId.TYPE_IFD_INTEROPERABILITY)) {
- registerIfd(IfdId.TYPE_IFD_EXIF, tag.getUnsignedLong(0));
+ registerIfd(IfdId.TYPE_IFD_EXIF, tag.getValueAt(0));
}
break;
case ExifTag.TAG_GPS_IFD:
if (isIfdRequested(IfdId.TYPE_IFD_GPS)) {
- registerIfd(IfdId.TYPE_IFD_GPS, tag.getUnsignedLong(0));
+ registerIfd(IfdId.TYPE_IFD_GPS, tag.getValueAt(0));
}
break;
case ExifTag.TAG_INTEROPERABILITY_IFD:
if (isIfdRequested(IfdId.TYPE_IFD_INTEROPERABILITY)) {
- registerIfd(IfdId.TYPE_IFD_INTEROPERABILITY, tag.getUnsignedLong(0));
+ registerIfd(IfdId.TYPE_IFD_INTEROPERABILITY, tag.getValueAt(0));
}
break;
case ExifTag.TAG_JPEG_INTERCHANGE_FORMAT:
if (isThumbnailRequested()) {
- registerCompressedImage(tag.getUnsignedLong(0));
+ registerCompressedImage(tag.getValueAt(0));
}
break;
case ExifTag.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH:
@@ -574,9 +560,9 @@ public class ExifParser {
if (tag.hasValue()) {
for (int i = 0; i < tag.getComponentCount(); i++) {
if (tag.getDataType() == ExifTag.TYPE_UNSIGNED_SHORT) {
- registerUncompressedStrip(i, tag.getUnsignedShort(i));
+ registerUncompressedStrip(i, tag.getValueAt(i));
} else {
- registerUncompressedStrip(i, tag.getUnsignedLong(i));
+ registerUncompressedStrip(i, tag.getValueAt(i));
}
}
} else {
diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifTag.java b/gallerycommon/src/com/android/gallery3d/exif/ExifTag.java
index d914f58..cda67c2 100644
--- a/gallerycommon/src/com/android/gallery3d/exif/ExifTag.java
+++ b/gallerycommon/src/com/android/gallery3d/exif/ExifTag.java
@@ -1286,7 +1286,8 @@ public class ExifTag {
setValue(value, 0, value.length);
}
- private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyy:MM:dd kk:mm:ss");
+ private static final SimpleDateFormat TIME_FORMAT =
+ new SimpleDateFormat("yyyy:MM:dd kk:mm:ss");
/**
* Sets a timestamp to this tag. The method converts the timestamp with the format of
@@ -1302,41 +1303,23 @@ public class ExifTag {
setValue(TIME_FORMAT.format(new Date(time)));
}
}
-
/**
- * Gets the {@link #TYPE_UNSIGNED_SHORT} data.
- * @exception IllegalArgumentException If the type is NOT {@link #TYPE_UNSIGNED_SHORT}.
- */
- public int getUnsignedShort(int index) {
- if (mDataType != TYPE_UNSIGNED_SHORT) {
- throw new IllegalArgumentException("Cannot get UNSIGNED_SHORT value from "
- + convertTypeToString(mDataType));
- }
- return (int) (((long[]) mValue) [index]);
- }
-
- /**
- * Gets the {@link #TYPE_LONG} data.
- * @exception IllegalArgumentException If the type is NOT {@link #TYPE_LONG}.
- */
- public int getLong(int index) {
- if (mDataType != TYPE_LONG) {
- throw new IllegalArgumentException("Cannot get LONG value from "
- + convertTypeToString(mDataType));
- }
- return (int) (((long[]) mValue) [index]);
- }
-
- /**
- * Gets the {@link #TYPE_UNSIGNED_LONG} data.
- * @exception IllegalArgumentException If the type is NOT {@link #TYPE_UNSIGNED_LONG}.
+ * Gets the value for type {@link #TYPE_ASCII}, {@link #TYPE_LONG},
+ * {@link #TYPE_UNDEFINED}, {@link #TYPE_UNSIGNED_BYTE}, {@link #TYPE_UNSIGNED_LONG}, or
+ * {@link #TYPE_UNSIGNED_SHORT}. For {@link #TYPE_RATIONAL} or {@link #TYPE_UNSIGNED_RATIONAL},
+ * call {@link #getRational(int)} instead.
+ *
+ * @exception IllegalArgumentException if the data type is {@link #TYPE_RATIONAL} or
+ * {@link #TYPE_UNSIGNED_RATIONAL}.
*/
- public long getUnsignedLong(int index) {
- if (mDataType != TYPE_UNSIGNED_LONG) {
- throw new IllegalArgumentException("Cannot get UNSIGNED LONG value from "
- + convertTypeToString(mDataType));
+ public long getValueAt(int index) {
+ if (mValue instanceof long[]) {
+ return ((long[]) mValue) [index];
+ } else if (mValue instanceof byte[]) {
+ return ((byte[]) mValue) [index];
}
- return ((long[]) mValue) [index];
+ throw new IllegalArgumentException("Cannot get integer value from "
+ + convertTypeToString(mDataType));
}
/**