diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-03-11 19:00:12 -0700 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2013-03-13 18:01:42 -0700 |
commit | c274ded801f745d6318186958107622e7a4fef33 (patch) | |
tree | 7080494992e2bfad092ba2b36d8adaa600456a9e /gallerycommon/src/com/android/gallery3d/exif/IfdData.java | |
parent | 8f69397b9c6acf6da28244a8ccea596546f34f87 (diff) | |
download | android_packages_apps_Snap-c274ded801f745d6318186958107622e7a4fef33.tar.gz android_packages_apps_Snap-c274ded801f745d6318186958107622e7a4fef33.tar.bz2 android_packages_apps_Snap-c274ded801f745d6318186958107622e7a4fef33.zip |
Exif parser modifications.
Bug: 8018327
Change-Id: I66a2ec309f9807ac255bbf29d8f5f26de60e89b8
Diffstat (limited to 'gallerycommon/src/com/android/gallery3d/exif/IfdData.java')
-rw-r--r-- | gallerycommon/src/com/android/gallery3d/exif/IfdData.java | 59 |
1 files changed, 41 insertions, 18 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/exif/IfdData.java b/gallerycommon/src/com/android/gallery3d/exif/IfdData.java index 633604940..093944aec 100644 --- a/gallerycommon/src/com/android/gallery3d/exif/IfdData.java +++ b/gallerycommon/src/com/android/gallery3d/exif/IfdData.java @@ -30,7 +30,10 @@ class IfdData { private final int mIfdId; private final Map<Short, ExifTag> mExifTags = new HashMap<Short, ExifTag>(); private int mOffsetToNextIfd = 0; - + private static final int[] sIfds = { + IfdId.TYPE_IFD_0, IfdId.TYPE_IFD_1, IfdId.TYPE_IFD_EXIF, + IfdId.TYPE_IFD_INTEROPERABILITY, IfdId.TYPE_IFD_GPS + }; /** * Creates an IfdData with given IFD ID. * @@ -40,14 +43,18 @@ class IfdData { * @see IfdId#TYPE_IFD_GPS * @see IfdId#TYPE_IFD_INTEROPERABILITY */ - public IfdData(int ifdId) { + IfdData(int ifdId) { mIfdId = ifdId; } + static protected int[] getIfds() { + return sIfds; + } + /** * Get a array the contains all {@link ExifTag} in this IFD. */ - public ExifTag[] getAllTags() { + protected ExifTag[] getAllTags() { return mExifTags.values().toArray(new ExifTag[mExifTags.size()]); } @@ -60,70 +67,86 @@ class IfdData { * @see IfdId#TYPE_IFD_GPS * @see IfdId#TYPE_IFD_INTEROPERABILITY */ - public int getId() { + protected int getId() { return mIfdId; } /** - * Gets the {@link ExifTag} with given tag id. Return null if there is no such tag. + * Gets the {@link ExifTag} with given tag id. Return null if there is no + * such tag. */ - public ExifTag getTag(short tagId) { + protected ExifTag getTag(short tagId) { return mExifTags.get(tagId); } /** * Adds or replaces a {@link ExifTag}. */ - public void setTag(ExifTag tag) { - mExifTags.put(tag.getTagId(), tag); + protected ExifTag setTag(ExifTag tag) { + tag.setIfd(mIfdId); + return mExifTags.put(tag.getTagId(), tag); + } + + protected boolean checkCollision(short tagId) { + return mExifTags.get(tagId) != null; } /** * Removes the tag of the given ID */ - public void removeTag(short tagId) { + protected void removeTag(short tagId) { mExifTags.remove(tagId); } /** * Gets the tags count in the IFD. */ - public int getTagCount() { + protected int getTagCount() { return mExifTags.size(); } /** * Sets the offset of next IFD. */ - void setOffsetToNextIfd(int offset) { + protected void setOffsetToNextIfd(int offset) { mOffsetToNextIfd = offset; } /** * Gets the offset of next IFD. */ - int getOffsetToNextIfd() { + protected int getOffsetToNextIfd() { return mOffsetToNextIfd; } /** - * Returns true if all tags in this two IFDs are equal. Note that tags of IFDs offset or - * thumbnail offset will be ignored. + * Returns true if all tags in this two IFDs are equal. Note that tags of + * IFDs offset or thumbnail offset will be ignored. */ @Override public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } if (obj instanceof IfdData) { IfdData data = (IfdData) obj; if (data.getId() == mIfdId && data.getTagCount() == getTagCount()) { ExifTag[] tags = data.getAllTags(); - for (ExifTag tag: tags) { - if (ExifTag.isOffsetTag(tag.getTagId())) continue; + for (ExifTag tag : tags) { + if (ExifInterface.isOffsetTag(tag.getTagId())) { + continue; + } ExifTag tag2 = mExifTags.get(tag.getTagId()); - if (!tag.equals(tag2)) return false; + if (!tag.equals(tag2)) { + return false; + } } return true; } } return false; } -}
\ No newline at end of file +} |