OSDN Git Service

Save ByteOrder in the ExifData
authorEarl Ou <shunhsingou@google.com>
Tue, 28 Aug 2012 10:29:09 +0000 (18:29 +0800)
committerEarl Ou <shunhsingou@google.com>
Wed, 29 Aug 2012 07:11:31 +0000 (15:11 +0800)
This is useful for decoding undefined data.

Change-Id: Ied6864c4d3a8e05ca47215bf5358bd4196f2d3a0

src/com/android/gallery3d/exif/ExifData.java
src/com/android/gallery3d/exif/ExifParser.java
src/com/android/gallery3d/exif/ExifReader.java

index 5b0e3d8..14d4822 100644 (file)
@@ -16,6 +16,7 @@
 
 package com.android.gallery3d.exif;
 
+import java.nio.ByteOrder;
 import java.util.ArrayList;
 
 /**
@@ -28,6 +29,11 @@ public class ExifData {
     private final IfdData[] mIfdDatas = new IfdData[IfdId.TYPE_IFD_COUNT];
     private byte[] mThumbnail;
     private ArrayList<byte[]> mStripBytes = new ArrayList<byte[]>();
+    private final ByteOrder mByteOrder;
+
+    public ExifData(ByteOrder order) {
+        mByteOrder = order;
+    }
 
     /**
      * Gets the IFD data of the specified IFD.
@@ -101,4 +107,11 @@ public class ExifData {
     public byte[] getStrip(int index) {
         return mStripBytes.get(index);
     }
+
+    /**
+     * Gets the byte order.
+     */
+    public ByteOrder getByteOrder() {
+        return mByteOrder;
+    }
 }
\ No newline at end of file
index bd8a97d..268c989 100644 (file)
@@ -713,4 +713,11 @@ public class ExifParser {
             this.isRequested = isRequireByUser;
         }
     }
+
+    /**
+     * Gets the byte order of the current InputStream.
+     */
+    public ByteOrder getByteOrder() {
+        return mTiffStream.getByteOrder();
+    }
 }
\ No newline at end of file
index c259461..d8083b2 100644 (file)
@@ -31,7 +31,7 @@ public class ExifReader {
     public ExifData read(InputStream inputStream) throws ExifInvalidFormatException,
             IOException {
         ExifParser parser = ExifParser.parse(inputStream);
-        ExifData exifData = new ExifData();
+        ExifData exifData = new ExifData(parser.getByteOrder());
 
         int event = parser.next();
         while (event != ExifParser.EVENT_END) {