Author: damjan Date: Wed Sep 14 23:25:47 2016 New Revision: 1760815 URL: http://svn.apache.org/viewvc?rev=1760815&view=rev Log: Store and use the cardinality of tags (1 vs more) when setting and getting TIFF field values.
Added: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoBytes.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoDoubles.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoFloats.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoLongs.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoRationals.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoSBytes.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoSLongs.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoSRationals.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoSShorts.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoShorts.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoUndefineds.java (with props) commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoUnknowns.java (with props) Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffDirectory.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageMetadata.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePageMaker6TagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePhotoshopTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DcfTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/ExifTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GeoTiffTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/GpsTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/HylaFaxTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/MicrosoftHdPhotoTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/MicrosoftTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/MolecularDynamicsGelTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/Rfc2301TagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/Tiff4TagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/TiffEpTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/TiffTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/WangTagConstants.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoByte.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoDirectory.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoDouble.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoFloat.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoLong.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoRational.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoSByte.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoSLong.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoSRational.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoSShort.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoShort.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoUndefined.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoUnknown.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffOutputDirectory.java commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/tiff/TiffReadWriteTagsTest.java Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffDirectory.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffDirectory.java?rev=1760815&r1=1760814&r2=1760815&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffDirectory.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffDirectory.java Wed Sep 14 23:25:47 2016 @@ -34,17 +34,27 @@ import org.apache.commons.imaging.format import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoAscii; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoByte; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoBytes; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDouble; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDoubles; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoFloat; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoFloats; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoGpsText; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongs; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRational; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRationals; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSByte; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSBytes; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSLong; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSLongs; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRational; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRationals; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSShort; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSShorts; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrLong; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShorts; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoXpString; public class TiffDirectory extends TiffElement { @@ -190,15 +200,6 @@ public class TiffDirectory extends TiffE return field.getValue(); } - public byte getSingleFieldValue(final TagInfoByte tag) throws ImageReadException { - final byte[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); - } - return result[0]; - } - public String getSingleFieldValue(final TagInfoAscii tag) throws ImageReadException { final String[] result = getFieldValue(tag, true); @@ -209,25 +210,6 @@ public class TiffDirectory extends TiffE return result[0]; } - public short getSingleFieldValue(final TagInfoShort tag) - throws ImageReadException { - final short[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); - } - return result[0]; - } - - public int getSingleFieldValue(final TagInfoLong tag) throws ImageReadException { - final int[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); - } - return result[0]; - } - public int getSingleFieldValue(final TagInfoShortOrLong tag) throws ImageReadException { final int[] result = getFieldValue(tag, true); if (result.length != 1) { @@ -237,75 +219,24 @@ public class TiffDirectory extends TiffE return result[0]; } - public RationalNumber getSingleFieldValue(final TagInfoRational tag) - throws ImageReadException { - final RationalNumber[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); - } - return result[0]; - } - - public byte getSingleFieldValue(final TagInfoSByte tag) throws ImageReadException { - final byte[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); - } - return result[0]; - } - - public short getSingleFieldValue(final TagInfoSShort tag) + public byte getFieldValue(final TagInfoByte tag) throws ImageReadException { - final short[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); - } - return result[0]; - } - - public int getSingleFieldValue(final TagInfoSLong tag) throws ImageReadException { - final int[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); - } - return result[0]; - } - - public RationalNumber getSingleFieldValue(final TagInfoSRational tag) - throws ImageReadException { - final RationalNumber[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); } - return result[0]; - } - - public float getSingleFieldValue(final TagInfoFloat tag) - throws ImageReadException { - final float[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); } - return result[0]; - } - - public double getSingleFieldValue(final TagInfoDouble tag) - throws ImageReadException { - final double[] result = getFieldValue(tag, true); - if (result.length != 1) { - throw new ImageReadException("Field \"" + tag.name - + "\" has incorrect length " + result.length); + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); } - return result[0]; + return field.getByteArrayValue()[0]; } - public byte[] getFieldValue(final TagInfoByte tag, final boolean mustExist) + public byte[] getFieldValue(final TagInfoBytes tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -350,7 +281,25 @@ public class TiffDirectory extends TiffE return tag.getValue(field.getByteOrder(), bytes); } - public short[] getFieldValue(final TagInfoShort tag, final boolean mustExist) + public short getFieldValue(final TagInfoShort tag) + throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + final byte[] bytes = field.getByteArrayValue(); + return tag.getValue(field.getByteOrder(), bytes); + } + + public short[] getFieldValue(final TagInfoShorts tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -373,7 +322,25 @@ public class TiffDirectory extends TiffE return tag.getValue(field.getByteOrder(), bytes); } - public int[] getFieldValue(final TagInfoLong tag, final boolean mustExist) + public int getFieldValue(final TagInfoLong tag) + throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + final byte[] bytes = field.getByteArrayValue(); + return tag.getValue(field.getByteOrder(), bytes); + } + + public int[] getFieldValue(final TagInfoLongs tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -395,7 +362,7 @@ public class TiffDirectory extends TiffE final byte[] bytes = field.getByteArrayValue(); return tag.getValue(field.getByteOrder(), bytes); } - + public int[] getFieldValue(final TagInfoShortOrLong tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); @@ -423,7 +390,25 @@ public class TiffDirectory extends TiffE } } - public RationalNumber[] getFieldValue(final TagInfoRational tag, final boolean mustExist) + public RationalNumber getFieldValue(final TagInfoRational tag) + throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + final byte[] bytes = field.getByteArrayValue(); + return tag.getValue(field.getByteOrder(), bytes); + } + + public RationalNumber[] getFieldValue(final TagInfoRationals tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -446,7 +431,24 @@ public class TiffDirectory extends TiffE return tag.getValue(field.getByteOrder(), bytes); } - public byte[] getFieldValue(final TagInfoSByte tag, final boolean mustExist) + public byte getFieldValue(final TagInfoSByte tag) + throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + return field.getByteArrayValue()[0]; + } + + public byte[] getFieldValue(final TagInfoSBytes tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -468,7 +470,25 @@ public class TiffDirectory extends TiffE return field.getByteArrayValue(); } - public short[] getFieldValue(final TagInfoSShort tag, final boolean mustExist) + public short getFieldValue(final TagInfoSShort tag) + throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + final byte[] bytes = field.getByteArrayValue(); + return tag.getValue(field.getByteOrder(), bytes); + } + + public short[] getFieldValue(final TagInfoSShorts tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -491,7 +511,25 @@ public class TiffDirectory extends TiffE return tag.getValue(field.getByteOrder(), bytes); } - public int[] getFieldValue(final TagInfoSLong tag, final boolean mustExist) + public int getFieldValue(final TagInfoSLong tag) + throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + final byte[] bytes = field.getByteArrayValue(); + return tag.getValue(field.getByteOrder(), bytes); + } + + public int[] getFieldValue(final TagInfoSLongs tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -514,7 +552,24 @@ public class TiffDirectory extends TiffE return tag.getValue(field.getByteOrder(), bytes); } - public RationalNumber[] getFieldValue(final TagInfoSRational tag, + public RationalNumber getFieldValue(final TagInfoSRational tag) throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + final byte[] bytes = field.getByteArrayValue(); + return tag.getValue(field.getByteOrder(), bytes); + } + + public RationalNumber[] getFieldValue(final TagInfoSRationals tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -537,7 +592,25 @@ public class TiffDirectory extends TiffE return tag.getValue(field.getByteOrder(), bytes); } - public float[] getFieldValue(final TagInfoFloat tag, final boolean mustExist) + public float getFieldValue(final TagInfoFloat tag) + throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + final byte[] bytes = field.getByteArrayValue(); + return tag.getValue(field.getByteOrder(), bytes); + } + + public float[] getFieldValue(final TagInfoFloats tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -560,7 +633,25 @@ public class TiffDirectory extends TiffE return tag.getValue(field.getByteOrder(), bytes); } - public double[] getFieldValue(final TagInfoDouble tag, final boolean mustExist) + public double getFieldValue(final TagInfoDouble tag) + throws ImageReadException { + final TiffField field = findField(tag); + if (field == null) { + throw new ImageReadException("Required field \"" + tag.name + + "\" is missing"); + } + if (!tag.dataTypes.contains(field.getFieldType())) { + throw new ImageReadException("Required field \"" + tag.name + + "\" has incorrect type " + field.getFieldType().getName()); + } + if (field.getCount() != 1) { + throw new ImageReadException("Field \"" + tag.name + "\" has wrong count " + field.getCount()); + } + final byte[] bytes = field.getByteArrayValue(); + return tag.getValue(field.getByteOrder(), bytes); + } + + public double[] getFieldValue(final TagInfoDoubles tag, final boolean mustExist) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageMetadata.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageMetadata.java?rev=1760815&r1=1760814&r2=1760815&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageMetadata.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageMetadata.java Wed Sep 14 23:25:47 2016 @@ -33,16 +33,16 @@ import org.apache.commons.imaging.format import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoAscii; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoByte; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDouble; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoFloat; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDoubles; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoFloats; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoGpsText; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRational; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSByte; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSLong; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRational; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSShort; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongs; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRationals; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSBytes; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSLongs; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRationals; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSShorts; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShorts; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoXpString; import org.apache.commons.imaging.formats.tiff.write.TiffOutputDirectory; import org.apache.commons.imaging.formats.tiff.write.TiffOutputField; @@ -299,7 +299,7 @@ public class TiffImageMetadata extends G return tag.getValue(field.getByteOrder(), bytes); } - public short[] getFieldValue(final TagInfoShort tag) throws ImageReadException { + public short[] getFieldValue(final TagInfoShorts tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { return null; @@ -311,7 +311,7 @@ public class TiffImageMetadata extends G return tag.getValue(field.getByteOrder(), bytes); } - public int[] getFieldValue(final TagInfoLong tag) throws ImageReadException { + public int[] getFieldValue(final TagInfoLongs tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { return null; @@ -323,7 +323,7 @@ public class TiffImageMetadata extends G return tag.getValue(field.getByteOrder(), bytes); } - public RationalNumber[] getFieldValue(final TagInfoRational tag) + public RationalNumber[] getFieldValue(final TagInfoRationals tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -336,7 +336,7 @@ public class TiffImageMetadata extends G return tag.getValue(field.getByteOrder(), bytes); } - public byte[] getFieldValue(final TagInfoSByte tag) throws ImageReadException { + public byte[] getFieldValue(final TagInfoSBytes tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { return null; @@ -347,7 +347,7 @@ public class TiffImageMetadata extends G return field.getByteArrayValue(); } - public short[] getFieldValue(final TagInfoSShort tag) throws ImageReadException { + public short[] getFieldValue(final TagInfoSShorts tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { return null; @@ -359,7 +359,7 @@ public class TiffImageMetadata extends G return tag.getValue(field.getByteOrder(), bytes); } - public int[] getFieldValue(final TagInfoSLong tag) throws ImageReadException { + public int[] getFieldValue(final TagInfoSLongs tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { return null; @@ -371,7 +371,7 @@ public class TiffImageMetadata extends G return tag.getValue(field.getByteOrder(), bytes); } - public RationalNumber[] getFieldValue(final TagInfoSRational tag) + public RationalNumber[] getFieldValue(final TagInfoSRationals tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { @@ -384,7 +384,7 @@ public class TiffImageMetadata extends G return tag.getValue(field.getByteOrder(), bytes); } - public float[] getFieldValue(final TagInfoFloat tag) throws ImageReadException { + public float[] getFieldValue(final TagInfoFloats tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { return null; @@ -396,7 +396,7 @@ public class TiffImageMetadata extends G return tag.getValue(field.getByteOrder(), bytes); } - public double[] getFieldValue(final TagInfoDouble tag) throws ImageReadException { + public double[] getFieldValue(final TagInfoDoubles tag) throws ImageReadException { final TiffField field = findField(tag); if (field == null) { return null; Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java?rev=1760815&r1=1760814&r2=1760815&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java Wed Sep 14 23:25:47 2016 @@ -253,9 +253,12 @@ public class TiffImageParser extends Ima final ImageInfo.ColorType colorType = ImageInfo.ColorType.RGB; - final short[] compressionFieldValues = directory.getFieldValue(TiffTagConstants.TIFF_TAG_COMPRESSION, false); - final short compressionFieldValue = compressionFieldValues != null ? - compressionFieldValues[0] : TIFF_COMPRESSION_UNCOMPRESSED_1; + final short compressionFieldValue; + if (directory.findField(TiffTagConstants.TIFF_TAG_COMPRESSION) != null) { + compressionFieldValue = directory.getFieldValue(TiffTagConstants.TIFF_TAG_COMPRESSION); + } else { + compressionFieldValue = TIFF_COMPRESSION_UNCOMPRESSED_1; + } final int compression = 0xffff & compressionFieldValue; ImageInfo.CompressionAlgorithm compressionAlgorithm; @@ -544,12 +547,14 @@ public class TiffImageParser extends Ima throw new ImageReadException("TIFF missing entries"); } - final int photometricInterpretation = 0xffff & directory.getSingleFieldValue( + final int photometricInterpretation = 0xffff & directory.getFieldValue( TiffTagConstants.TIFF_TAG_PHOTOMETRIC_INTERPRETATION); - final short[] compressionFieldValues = directory.getFieldValue( - TiffTagConstants.TIFF_TAG_COMPRESSION, false); - final short compressionFieldValue = compressionFieldValues != null ? - compressionFieldValues[0] : TIFF_COMPRESSION_UNCOMPRESSED_1; + final short compressionFieldValue; + if (directory.findField(TiffTagConstants.TIFF_TAG_COMPRESSION) != null) { + compressionFieldValue = directory.getFieldValue(TiffTagConstants.TIFF_TAG_COMPRESSION); + } else { + compressionFieldValue = TIFF_COMPRESSION_UNCOMPRESSED_1; + } final int compression = 0xffff & compressionFieldValue; final int width = directory.getSingleFieldValue(TiffTagConstants.TIFF_TAG_IMAGE_WIDTH); final int height = directory.getSingleFieldValue(TiffTagConstants.TIFF_TAG_IMAGE_LENGTH); Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java?rev=1760815&r1=1760814&r2=1760815&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/TiffReader.java Wed Sep 14 23:25:47 2016 @@ -43,7 +43,7 @@ import org.apache.commons.imaging.format import org.apache.commons.imaging.formats.tiff.constants.TiffDirectoryConstants; import org.apache.commons.imaging.formats.tiff.constants.TiffTagConstants; import org.apache.commons.imaging.formats.tiff.fieldtypes.FieldType; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDirectory; public class TiffReader extends BinaryFileParser { @@ -228,7 +228,7 @@ public class TiffReader extends BinaryFi } if (listener.readOffsetDirectories()) { - final TagInfoLong[] offsetFields = { + final TagInfoDirectory[] offsetFields = { ExifTagConstants.EXIF_TAG_EXIF_OFFSET, ExifTagConstants.EXIF_TAG_GPSINFO, ExifTagConstants.EXIF_TAG_INTEROP_OFFSET @@ -239,14 +239,14 @@ public class TiffReader extends BinaryFi TiffDirectoryConstants.DIRECTORY_TYPE_INTEROPERABILITY }; for (int i = 0; i < offsetFields.length; i++) { - final TagInfoLong offsetField = offsetFields[i]; + final TagInfoDirectory offsetField = offsetFields[i]; final TiffField field = directory.findField(offsetField); if (field != null) { long subDirectoryOffset; int subDirectoryType; boolean subDirectoryRead = false; try { - subDirectoryOffset = directory.getSingleFieldValue(offsetField); + subDirectoryOffset = directory.getFieldValue(offsetField); subDirectoryType = directoryTypes[i]; subDirectoryRead = readDirectory(byteSource, subDirectoryOffset, subDirectoryType, Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePageMaker6TagConstants.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePageMaker6TagConstants.java?rev=1760815&r1=1760814&r2=1760815&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePageMaker6TagConstants.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePageMaker6TagConstants.java Wed Sep 14 23:25:47 2016 @@ -22,9 +22,9 @@ import java.util.List; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoAscii; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoByte; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongOrIFD; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoBytes; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongOrIFD; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort; /** @@ -40,27 +40,27 @@ public final class AdobePageMaker6TagCon "SubIFDs", 0x014a, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN, true); - public static final TagInfoByte TIFF_TAG_CLIP_PATH = new TagInfoByte( + public static final TagInfoBytes TIFF_TAG_CLIP_PATH = new TagInfoBytes( "ClipPath", 0x0157, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoLong TIFF_TAG_XCLIP_PATH_UNITS = new TagInfoLong( - "XClipPathUnits", 0x0158, 1, + "XClipPathUnits", 0x0158, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoLong TIFF_TAG_YCLIP_PATH_UNITS = new TagInfoLong( - "YClipPathUnits", 0x0159, 1, + "YClipPathUnits", 0x0159, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoShort TIFF_TAG_INDEXED = new TagInfoShort( - "Indexed", 0x015a, 1, + "Indexed", 0x015a, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final int INDEXED_VALUE_NOT_INDEXED = 0; public static final int INDEXED_VALUE_INDEXED = 1; public static final TagInfoShort TIFF_TAG_OPIPROXY = new TagInfoShort( - "OPIProxy", 0x015f, 1, + "OPIProxy", 0x015f, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final int OPIPROXY_VALUE_HIGHER_RESOLUTION_IMAGE_DOES_NOT_EXIST = 0; public static final int OPIPROXY_VALUE_HIGHER_RESOLUTION_IMAGE_EXISTS = 1; Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePhotoshopTagConstants.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePhotoshopTagConstants.java?rev=1760815&r1=1760814&r2=1760815&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePhotoshopTagConstants.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/AdobePhotoshopTagConstants.java Wed Sep 14 23:25:47 2016 @@ -21,7 +21,7 @@ import java.util.Collections; import java.util.List; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefined; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefineds; /** * TIFF specification supplement 2 @@ -32,12 +32,12 @@ import org.apache.commons.imaging.format */ public final class AdobePhotoshopTagConstants { - public final static TagInfoUndefined EXIF_TAG_JPEGTABLES = new TagInfoUndefined( + public final static TagInfoUndefineds EXIF_TAG_JPEGTABLES = new TagInfoUndefineds( "JPEGTables", 0x015b, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public final static TagInfoUndefined EXIF_TAG_IMAGE_SOURCE_DATA = new TagInfoUndefined( - "ImageSourceData", 0x935c, 1, + public final static TagInfoUndefineds EXIF_TAG_IMAGE_SOURCE_DATA = new TagInfoUndefineds( + "ImageSourceData", 0x935c, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public final static List<TagInfo> ALL_ADOBE_PHOTOSHOP_TAGS = Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DcfTagConstants.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DcfTagConstants.java?rev=1760815&r1=1760814&r2=1760815&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DcfTagConstants.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DcfTagConstants.java Wed Sep 14 23:25:47 2016 @@ -45,7 +45,7 @@ public final class DcfTagConstants { TiffDirectoryType.EXIF_DIRECTORY_INTEROP_IFD); public static final TagInfoShort EXIF_TAG_COLOR_SPACE = new TagInfoShort( - "ColorSpace", 0xa001, 1, TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD); + "ColorSpace", 0xa001, TiffDirectoryType.EXIF_DIRECTORY_EXIF_IFD); public static final int COLOR_SPACE_VALUE_SRGB = 1; public static final int COLOR_SPACE_VALUE_ADOBE_RGB = 2; public static final int COLOR_SPACE_VALUE_UNCALIBRATED = 65535; Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java?rev=1760815&r1=1760814&r2=1760815&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/DngTagConstants.java Wed Sep 14 23:25:47 2016 @@ -23,17 +23,21 @@ import java.util.List; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfo; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoAscii; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoAsciiOrByte; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoByte; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDouble; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoFloat; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoBytes; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoDoubles; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoFloats; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLong; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoLongs; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRational; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRationals; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRational; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoSRationals; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShort; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrLong; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrLongOrRational; import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShortOrRational; -import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefined; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoShorts; +import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoUndefineds; /** * Digital Negative (DNG) Specification @@ -42,11 +46,11 @@ import org.apache.commons.imaging.format */ public final class DngTagConstants { - public static final TagInfoByte EXIF_TAG_DNG_VERSION = new TagInfoByte( + public static final TagInfoBytes EXIF_TAG_DNG_VERSION = new TagInfoBytes( "DNGVersion", 0xc612, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoByte EXIF_TAG_DNG_BACKWARD_VERSION = new TagInfoByte( + public static final TagInfoBytes EXIF_TAG_DNG_BACKWARD_VERSION = new TagInfoBytes( "DNGBackwardVersion", 0xc613, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0); @@ -58,12 +62,12 @@ public final class DngTagConstants { "LocalizedCameraModel", 0xc615, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoByte EXIF_TAG_CFAPLANE_COLOR = new TagInfoByte( + public static final TagInfoBytes EXIF_TAG_CFAPLANE_COLOR = new TagInfoBytes( "CFAPlaneColor", 0xc616, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoShort EXIF_TAG_CFALAYOUT = new TagInfoShort( - "CFALayout", 0xc617, 1, + "CFALayout", 0xc617, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final int CFALAYOUT_VALUE_RECTANGULAR = 1; public static final int CFALAYOUT_VALUE_EVEN_COLUMNS_OFFSET_DOWN_1_2_ROW = 2; @@ -75,23 +79,23 @@ public final class DngTagConstants { public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_DOWN_1_2_ROW_EVEN_COLUMNS_OFFSET_LEFT_1_2_COLUMN = 8; public static final int CFALAYOUT_VALUE_EVEN_ROWS_OFFSET_DOWN_1_2_ROW_EVEN_COLUMNS_OFFSET_RIGHT_1_2_COLUMN = 9; - public static final TagInfoShort EXIF_TAG_LINEARIZATION_TABLE = new TagInfoShort( + public static final TagInfoShorts EXIF_TAG_LINEARIZATION_TABLE = new TagInfoShorts( "LinearizationTable", 0xc618, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoShort EXIF_TAG_BLACK_LEVEL_REPEAT_DIM = new TagInfoShort( - "BlackLevelRepeatDim", 0xc619, - 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); + public static final TagInfoShorts EXIF_TAG_BLACK_LEVEL_REPEAT_DIM = new TagInfoShorts( + "BlackLevelRepeatDim", 0xc619, 2, + TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoShortOrLongOrRational EXIF_TAG_BLACK_LEVEL = new TagInfoShortOrLongOrRational( "BlackLevel", 0xc61a, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_BLACK_LEVEL_DELTA_H = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_BLACK_LEVEL_DELTA_H = new TagInfoSRationals( "BlackLevelDeltaH", 0xc61b, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_BLACK_LEVEL_DELTA_V = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_BLACK_LEVEL_DELTA_V = new TagInfoSRationals( "BlackLevelDeltaV", 0xc61c, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); @@ -99,7 +103,7 @@ public final class DngTagConstants { "WhiteLevel", 0xc61d, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoRational EXIF_TAG_DEFAULT_SCALE = new TagInfoRational( + public static final TagInfoRationals EXIF_TAG_DEFAULT_SCALE = new TagInfoRationals( "DefaultScale", 0xc61e, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); @@ -111,31 +115,31 @@ public final class DngTagConstants { "DefaultCropSize", 0xc620, 2, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_COLOR_MATRIX_1 = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_COLOR_MATRIX_1 = new TagInfoSRationals( "ColorMatrix1", 0xc621, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_COLOR_MATRIX_2 = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_COLOR_MATRIX_2 = new TagInfoSRationals( "ColorMatrix2", 0xc622, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_CAMERA_CALIBRATION_1 = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_CAMERA_CALIBRATION_1 = new TagInfoSRationals( "CameraCalibration1", 0xc623, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_CAMERA_CALIBRATION_2 = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_CAMERA_CALIBRATION_2 = new TagInfoSRationals( "CameraCalibration2", 0xc624, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_REDUCTION_MATRIX_1 = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_REDUCTION_MATRIX_1 = new TagInfoSRationals( "ReductionMatrix1", 0xc625, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_REDUCTION_MATRIX_2 = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_REDUCTION_MATRIX_2 = new TagInfoSRationals( "ReductionMatrix2", 0xc626, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoRational EXIF_TAG_ANALOG_BALANCE = new TagInfoRational( + public static final TagInfoRationals EXIF_TAG_ANALOG_BALANCE = new TagInfoRationals( "AnalogBalance", 0xc627, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); @@ -143,62 +147,62 @@ public final class DngTagConstants { "AsShotNeutral", 0xc628, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoRational EXIF_TAG_AS_SHOT_WHITE_XY = new TagInfoRational( + public static final TagInfoRationals EXIF_TAG_AS_SHOT_WHITE_XY = new TagInfoRationals( "AsShotWhiteXY", 0xc629, 2, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoSRational EXIF_TAG_BASELINE_EXPOSURE = new TagInfoSRational( - "BaselineExposure", 0xc62a, 1, + "BaselineExposure", 0xc62a, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoRational EXIF_TAG_BASELINE_NOISE = new TagInfoRational( - "BaselineNoise", 0xc62b, 1, + "BaselineNoise", 0xc62b, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoRational EXIF_TAG_BASELINE_SHARPNESS = new TagInfoRational( - "BaselineSharpness", 0xc62c, 1, + "BaselineSharpness", 0xc62c, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoLong EXIF_TAG_BAYER_GREEN_SPLIT = new TagInfoLong( - "BayerGreenSplit", 0xc62d, 1, + "BayerGreenSplit", 0xc62d, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoRational EXIF_TAG_LINEAR_RESPONSE_LIMIT = new TagInfoRational( - "LinearResponseLimit", 0xc62e, 1, + "LinearResponseLimit", 0xc62e, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoAscii EXIF_TAG_CAMERA_SERIAL_NUMBER = new TagInfoAscii( "CameraSerialNumber", 0xc62f, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoRational EXIF_TAG_DNG_LENS_INFO = new TagInfoRational( + public static final TagInfoRationals EXIF_TAG_DNG_LENS_INFO = new TagInfoRationals( "DNGLensInfo", 0xc630, 4, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoRational EXIF_TAG_CHROMA_BLUR_RADIUS = new TagInfoRational( - "ChromaBlurRadius", 0xc631, 1, + "ChromaBlurRadius", 0xc631, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoRational EXIF_TAG_ANTI_ALIAS_STRENGTH = new TagInfoRational( - "AntiAliasStrength", 0xc632, 1, + "AntiAliasStrength", 0xc632, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoRational EXIF_TAG_SHADOW_SCALE = new TagInfoRational( - "ShadowScale", 0xc633, 1, + "ShadowScale", 0xc633, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoByte EXIF_TAG_DNG_PRIVATE_DATA = new TagInfoByte( + public static final TagInfoBytes EXIF_TAG_DNG_PRIVATE_DATA = new TagInfoBytes( "DNGPrivateData", 0xc634, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoShort EXIF_TAG_MAKER_NOTE_SAFETY = new TagInfoShort( - "MakerNoteSafety", 0xc635, 1, + "MakerNoteSafety", 0xc635, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final int MAKER_NOTE_SAFETY_VALUE_UNSAFE = 0; public static final int MAKER_NOTE_SAFETY_VALUE_SAFE = 1; public static final TagInfoShort EXIF_TAG_CALIBRATION_ILLUMINANT_1 = new TagInfoShort( - "CalibrationIlluminant1", 0xc65a, 1, + "CalibrationIlluminant1", 0xc65a, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final int CALIBRATION_ILLUMINANT_1_VALUE_DAYLIGHT = 1; public static final int CALIBRATION_ILLUMINANT_1_VALUE_FLUORESCENT = 2; @@ -222,7 +226,7 @@ public final class DngTagConstants { public static final int CALIBRATION_ILLUMINANT_1_VALUE_OTHER = 255; public static final TagInfoShort EXIF_TAG_CALIBRATION_ILLUMINANT_2 = new TagInfoShort( - "CalibrationIlluminant2", 0xc65b, 1, + "CalibrationIlluminant2", 0xc65b, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final int CALIBRATION_ILLUMINANT_2_VALUE_DAYLIGHT = 1; public static final int CALIBRATION_ILLUMINANT_2_VALUE_FLUORESCENT = 2; @@ -246,10 +250,10 @@ public final class DngTagConstants { public static final int CALIBRATION_ILLUMINANT_2_VALUE_OTHER = 255; public static final TagInfoRational EXIF_TAG_BEST_QUALITY_SCALE = new TagInfoRational( - "BestQualityScale", 0xc65c, 1, + "BestQualityScale", 0xc65c, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoByte EXIF_TAG_RAW_DATA_UNIQUE_ID = new TagInfoByte( + public static final TagInfoBytes EXIF_TAG_RAW_DATA_UNIQUE_ID = new TagInfoBytes( "RawDataUniqueID", 0xc65d, 16, TiffDirectoryType.EXIF_DIRECTORY_IFD0); @@ -257,7 +261,7 @@ public final class DngTagConstants { "OriginalRawFileName", 0xc68b, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoUndefined EXIF_TAG_ORIGINAL_RAW_FILE_DATA = new TagInfoUndefined( + public static final TagInfoUndefineds EXIF_TAG_ORIGINAL_RAW_FILE_DATA = new TagInfoUndefineds( "OriginalRawFileData", 0xc68c, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); @@ -269,24 +273,24 @@ public final class DngTagConstants { "MaskedAreas", 0xc68e, 4, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoUndefined EXIF_TAG_AS_SHOT_ICCPROFILE = new TagInfoUndefined( + public static final TagInfoUndefineds EXIF_TAG_AS_SHOT_ICCPROFILE = new TagInfoUndefineds( "AsShotICCProfile", 0xc68f, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_AS_SHOT_PRE_PROFILE_MATRIX = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_AS_SHOT_PRE_PROFILE_MATRIX = new TagInfoSRationals( "AsShotPreProfileMatrix", 0xc690, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoUndefined EXIF_TAG_CURRENT_ICCPROFILE = new TagInfoUndefined( + public static final TagInfoUndefineds EXIF_TAG_CURRENT_ICCPROFILE = new TagInfoUndefineds( "CurrentICCProfile", 0xc691, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoSRational EXIF_TAG_CURRENT_PRE_PROFILE_MATRIX = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_CURRENT_PRE_PROFILE_MATRIX = new TagInfoSRationals( "CurrentPreProfileMatrix", 0xc692, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoShort EXIF_TAG_COLORIMETRIC_REFERENCE = new TagInfoShort( - "ColorimetricReference", 0xc6bf, 1, + "ColorimetricReference", 0xc6bf, TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final short COLORIMETRIC_REFERENCE_VALUE_SCENE_REFERRED = 0; public static final short COLORIMETRIC_REFERENCE_VALUE_OUTPUT_REFERRED = 1; @@ -299,7 +303,7 @@ public final class DngTagConstants { "ProfileCalibrationSignature", 0xc6f4, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoLong EXIF_TAG_EXTRA_CAMERA_PROFILES = new TagInfoLong( + public static final TagInfoLongs EXIF_TAG_EXTRA_CAMERA_PROFILES = new TagInfoLongs( "ExtraCameraProfiles", 0xc6f5, -1, TiffDirectoryType.EXIF_DIRECTORY_IFD0); @@ -308,31 +312,31 @@ public final class DngTagConstants { TiffDirectoryType.EXIF_DIRECTORY_IFD0); public static final TagInfoRational EXIF_TAG_NOISE_REDUCTION_APPLIED = new TagInfoRational( - "NoiseReductionApplied", 0xc6f7, 1, + "NoiseReductionApplied", 0xc6f7, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoAscii EXIF_TAG_PROFILE_NAME = new TagInfoAscii( "ProfileName", 0xc6f8, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoLong EXIF_TAG_PROFILE_HUE_SAT_MAP_DIMS = new TagInfoLong( + public static final TagInfoLongs EXIF_TAG_PROFILE_HUE_SAT_MAP_DIMS = new TagInfoLongs( "ProfileHueSatMapDims", 0xc6f9, 3, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoFloat EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA1 = new TagInfoFloat( + public static final TagInfoFloats EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA1 = new TagInfoFloats( "ProfileHueSatMapData1", 0xc6fa, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoFloat EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA2 = new TagInfoFloat( + public static final TagInfoFloats EXIF_TAG_PROFILE_HUE_SAT_MAP_DATA2 = new TagInfoFloats( "ProfileHueSatMapData2", 0xc6fb, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoFloat EXIF_TAG_PROFILE_TONE_CURVE = new TagInfoFloat( + public static final TagInfoFloats EXIF_TAG_PROFILE_TONE_CURVE = new TagInfoFloats( "ProfileToneCurve", 0xc6fc, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoLong EXIF_TAG_PROFILE_EMBED_POLICY = new TagInfoLong( - "ProfileEmbedPolicy", 0xc6fd, 1, + "ProfileEmbedPolicy", 0xc6fd, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final int PROFILE_EMBED_POLICY_VALUE_ALLOW_COPYING = 0; public static final int PROFILE_EMBED_POLICY_VALUE_EMBED_IF_USED = 1; @@ -343,11 +347,11 @@ public final class DngTagConstants { "ProfileCopyright", 0xc6fe, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_FORWARD_MATRIX1 = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_FORWARD_MATRIX1 = new TagInfoSRationals( "ForwardMatrix1", 0xc714, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoSRational EXIF_TAG_FORWARD_MATRIX2 = new TagInfoSRational( + public static final TagInfoSRationals EXIF_TAG_FORWARD_MATRIX2 = new TagInfoSRationals( "ForwardMatrix2", 0xc715, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); @@ -363,12 +367,12 @@ public final class DngTagConstants { "PreviewSettingsName", 0xc718, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoByte EXIF_TAG_PREVIEW_SETTINGS_DIGEST = new TagInfoByte( + public static final TagInfoBytes EXIF_TAG_PREVIEW_SETTINGS_DIGEST = new TagInfoBytes( "PreviewSettingsDigest", 0xc719, 16, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final TagInfoLong EXIF_TAG_PREVIEW_COLORSPACE = new TagInfoLong( - "PreviewColorspace", 0xc71a, 1, + "PreviewColorspace", 0xc71a, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); public static final int PREVIEW_COLORSPACE_VALUE_UNKNOWN = 0; public static final int PREVIEW_COLORSPACE_VALUE_GRAY_GAMMA_2_2 = 1; @@ -380,11 +384,11 @@ public final class DngTagConstants { "PreviewDateTime", 0xc71b, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoByte EXIF_TAG_RAW_IMAGE_DIGEST = new TagInfoByte( + public static final TagInfoBytes EXIF_TAG_RAW_IMAGE_DIGEST = new TagInfoBytes( "RawImageDigest", 0xc71c, 16, TiffDirectoryType.EXIF_DIRECTORY_IFD0); - public static final TagInfoByte EXIF_TAG_ORIGINAL_RAW_FILE_DIGEST = new TagInfoByte( + public static final TagInfoBytes EXIF_TAG_ORIGINAL_RAW_FILE_DIGEST = new TagInfoBytes( "OriginalRawFileDigest", 0xc71d, 16, TiffDirectoryType.EXIF_DIRECTORY_IFD0); @@ -396,27 +400,27 @@ public final class DngTagConstants { "RowInterleaveFactor", 0xc71f, 1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoLong EXIF_TAG_PROFILE_LOOK_TABLE_DIMS = new TagInfoLong( + public static final TagInfoLongs EXIF_TAG_PROFILE_LOOK_TABLE_DIMS = new TagInfoLongs( "ProfileLookTableDims", 0xc725, 3, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoFloat EXIF_TAG_PROFILE_LOOK_TABLE_DATA = new TagInfoFloat( + public static final TagInfoFloats EXIF_TAG_PROFILE_LOOK_TABLE_DATA = new TagInfoFloats( "ProfileLookTableData", 0xc726, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoUndefined EXIF_TAG_OPCODE_LIST_1 = new TagInfoUndefined( + public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_1 = new TagInfoUndefineds( "OpcodeList1", 0xc740, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoUndefined EXIF_TAG_OPCODE_LIST_2 = new TagInfoUndefined( + public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_2 = new TagInfoUndefineds( "OpcodeList2", 0xc741, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoUndefined EXIF_TAG_OPCODE_LIST_3 = new TagInfoUndefined( + public static final TagInfoUndefineds EXIF_TAG_OPCODE_LIST_3 = new TagInfoUndefineds( "OpcodeList3", 0xc74E, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN); - public static final TagInfoDouble EXIF_TAG_NOISE_PROFILE = new TagInfoDouble( + public static final TagInfoDoubles EXIF_TAG_NOISE_PROFILE = new TagInfoDoubles( "NoiseProfile", 0xc761, -1, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);