You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by da...@apache.org on 2012/02/18 07:43:35 UTC
svn commit: r1245871 [3/5] - in /commons/proper/sanselan/trunk: ./
src/main/java/org/apache/commons/sanselan/common/
src/main/java/org/apache/commons/sanselan/formats/jpeg/
src/main/java/org/apache/commons/sanselan/formats/tiff/
src/main/java/org/apach...
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/GpsTagConstants.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/GpsTagConstants.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/GpsTagConstants.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/GpsTagConstants.java Sat Feb 18 06:43:33 2012
@@ -16,206 +16,220 @@
*/
package org.apache.commons.sanselan.formats.tiff.constants;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-public enum GpsTagConstants
- implements
- TiffDirectoryConstants,
- TiffFieldTypeConstants,
- TagHolder
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoAscii;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoByte;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoRational;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoShort;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoText;
+
+public interface GpsTagConstants
+ extends
+ TiffFieldTypeConstants
{
- GPS_VERSION_ID(new TagInfo(
- "GPS Version ID", 0x0000, FIELD_TYPE_DESCRIPTION_BYTE, 4,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoByte GPS_TAG_GPS_VERSION_ID = new TagInfoByte(
+ "GPS Version ID", 0x0000, 4,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_LATITUDE_REF(new TagInfo(
- "GPS Latitude Ref", 0x0001, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_LATITUDE_REF = new TagInfoAscii(
+ "GPS Latitude Ref", 0x0001, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_LATITUDE_REF_VALUE_NORTH = "N";
+ public static final String GPS_TAG_GPS_LATITUDE_REF_VALUE_SOUTH = "S";
// ************************************************************
- GPS_LATITUDE(new TagInfo(
- "GPS Latitude", 0x0002, FIELD_TYPE_DESCRIPTION_RATIONAL, 3,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_LATITUDE = new TagInfoRational(
+ "GPS Latitude", 0x0002, 3,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_LONGITUDE_REF(new TagInfo(
- "GPS Longitude Ref", 0x0003, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_LONGITUDE_REF = new TagInfoAscii(
+ "GPS Longitude Ref", 0x0003, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_LONGITUDE_REF_VALUE_EAST = "E";
+ public static final String GPS_TAG_GPS_LONGITUDE_REF_VALUE_WEST = "W";
// ************************************************************
- GPS_LONGITUDE(new TagInfo(
- "GPS Longitude", 0x0004, FIELD_TYPE_DESCRIPTION_RATIONAL, 3,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_LONGITUDE = new TagInfoRational(
+ "GPS Longitude", 0x0004, 3,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_ALTITUDE_REF(new TagInfo(
- "GPS Altitude Ref", 0x0005, FIELD_TYPE_DESCRIPTION_BYTE, 1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoByte GPS_TAG_GPS_ALTITUDE_REF = new TagInfoByte(
+ "GPS Altitude Ref", 0x0005, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final int GPS_TAG_GPS_ALTITUDE_REF_VALUE_ABOVE_SEA_LEVEL = 0;
+ public static final int GPS_TAG_GPS_ALTITUDE_REF_VALUE_BELOW_SEA_LEVEL = 1;
// ************************************************************
- GPS_ALTITUDE(new TagInfo(
- "GPS Altitude", 0x0006, FIELD_TYPE_DESCRIPTION_RATIONAL, 1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_ALTITUDE = new TagInfoRational(
+ "GPS Altitude", 0x0006, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_TIME_STAMP(new TagInfo(
- "GPS Time Stamp", 0x0007, FIELD_TYPE_DESCRIPTION_RATIONAL, 3,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_TIME_STAMP = new TagInfoRational(
+ "GPS Time Stamp", 0x0007, 3,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_SATELLITES(new TagInfo(
- "GPS Satellites", 0x0008, FIELD_TYPE_DESCRIPTION_ASCII, -1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_SATELLITES = new TagInfoAscii(
+ "GPS Satellites", 0x0008, -1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_STATUS(new TagInfo("GPS Status",
- 0x0009, FIELD_TYPE_DESCRIPTION_ASCII, 2, TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_STATUS = new TagInfoAscii(
+ "GPS Status", 0x0009, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_STATUS_VALUE_MEASUREMENT_IN_PROGRESS = "A";
+ public static final String GPS_TAG_GPS_STATUS_VALUE_MEASUREMENT_INTEROPERABILITY = "V";
// ************************************************************
- GPS_MEASURE_MODE(new TagInfo(
- "GPS Measure Mode", 0x000a, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_MEASURE_MODE = new TagInfoAscii(
+ "GPS Measure Mode", 0x000a, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final int GPS_TAG_GPS_MEASURE_MODE_VALUE_2_DIMENSIONAL_MEASUREMENT = 2;
+ public static final int GPS_TAG_GPS_MEASURE_MODE_VALUE_3_DIMENSIONAL_MEASUREMENT = 3;
// ************************************************************
- GPS_DOP(new TagInfo("GPS DOP",
- 0x000b, FIELD_TYPE_DESCRIPTION_RATIONAL, 1, TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_DOP = new TagInfoRational(
+ "GPS DOP", 0x000b, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_SPEED_REF(new TagInfo(
- "GPS Speed Ref", 0x000c, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_SPEED_REF = new TagInfoAscii(
+ "GPS Speed Ref", 0x000c, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_SPEED_REF_VALUE_KMPH = "K";
+ public static final String GPS_TAG_GPS_SPEED_REF_VALUE_MPH = "M";
+ public static final String GPS_TAG_GPS_SPEED_REF_VALUE_KNOTS = "N";
// ************************************************************
- GPS_SPEED(new TagInfo("GPS Speed",
- 0x000d, FIELD_TYPE_DESCRIPTION_RATIONAL, 1, TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_SPEED = new TagInfoRational(
+ "GPS Speed", 0x000d, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_TRACK_REF(new TagInfo(
- "GPS Track Ref", 0x000e, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_TRACK_REF = new TagInfoAscii(
+ "GPS Track Ref", 0x000e, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_TRACK_REF_VALUE_MAGNETIC_NORTH = "M";
+ public static final String GPS_TAG_GPS_TRACK_REF_VALUE_TRUE_NORTH = "T";
// ************************************************************
- GPS_TRACK(new TagInfo("GPS Track",
- 0x000f, FIELD_TYPE_DESCRIPTION_RATIONAL, 1, TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_TRACK = new TagInfoRational(
+ "GPS Track", 0x000f, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_IMG_DIRECTION_REF(new TagInfo(
- "GPS Img Direction Ref", 0x0010, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_IMG_DIRECTION_REF = new TagInfoAscii(
+ "GPS Img Direction Ref", 0x0010, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_IMG_DIRECTION_REF_VALUE_MAGNETIC_NORTH = "M";
+ public static final String GPS_TAG_GPS_IMG_DIRECTION_REF_VALUE_TRUE_NORTH = "T";
// ************************************************************
- GPS_IMG_DIRECTION(new TagInfo(
- "GPS Img Direction", 0x0011, FIELD_TYPE_DESCRIPTION_RATIONAL, 1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_IMG_DIRECTION = new TagInfoRational(
+ "GPS Img Direction", 0x0011, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_MAP_DATUM(new TagInfo(
- "GPS Map Datum", 0x0012, FIELD_TYPE_DESCRIPTION_ASCII, -1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_MAP_DATUM = new TagInfoAscii(
+ "GPS Map Datum", 0x0012, -1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_DEST_LATITUDE_REF(new TagInfo(
- "GPS Dest Latitude Ref", 0x0013, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_DEST_LATITUDE_REF = new TagInfoAscii(
+ "GPS Dest Latitude Ref", 0x0013, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_DEST_LATITUDE_REF_VALUE_NORTH = "N";
+ public static final String GPS_TAG_GPS_DEST_LATITUDE_REF_VALUE_SOUTH = "S";
// ************************************************************
- GPS_DEST_LATITUDE(new TagInfo(
- "GPS Dest Latitude", 0x0014, FIELD_TYPE_DESCRIPTION_RATIONAL, 3,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_DEST_LATITUDE = new TagInfoRational(
+ "GPS Dest Latitude", 0x0014, 3,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_DEST_LONGITUDE_REF(new TagInfo(
- "GPS Dest Longitude Ref", 0x0015, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_DEST_LONGITUDE_REF = new TagInfoAscii(
+ "GPS Dest Longitude Ref", 0x0015, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_DEST_LONGITUDE_REF_VALUE_EAST = "E";
+ public static final String GPS_TAG_GPS_DEST_LONGITUDE_REF_VALUE_WEST = "W";
// ************************************************************
- GPS_DEST_LONGITUDE(new TagInfo(
- "GPS Dest Longitude", 0x0016, FIELD_TYPE_DESCRIPTION_RATIONAL, 3,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_DEST_LONGITUDE = new TagInfoRational(
+ "GPS Dest Longitude", 0x0016, 3,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_DEST_BEARING_REF(new TagInfo(
- "GPS Dest Bearing Ref", 0x0017, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_DEST_BEARING_REF = new TagInfoAscii(
+ "GPS Dest Bearing Ref", 0x0017, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_DEST_BEARING_REF_VALUE_MAGNETIC_NORTH = "M";
+ public static final String GPS_TAG_GPS_DEST_BEARING_REF_VALUE_TRUE_NORTH = "T";
// ************************************************************
- GPS_DEST_BEARING(new TagInfo(
- "GPS Dest Bearing", 0x0018, FIELD_TYPE_DESCRIPTION_RATIONAL, 1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_DEST_BEARING = new TagInfoRational(
+ "GPS Dest Bearing", 0x0018, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_DEST_DISTANCE_REF(new TagInfo(
- "GPS Dest Distance Ref", 0x0019, FIELD_TYPE_DESCRIPTION_ASCII, 2,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_DEST_DISTANCE_REF = new TagInfoAscii(
+ "GPS Dest Distance Ref", 0x0019, 2,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final String GPS_TAG_GPS_DEST_DISTANCE_REF_VALUE_KILOMETERS = "K";
+ public static final String GPS_TAG_GPS_DEST_DISTANCE_REF_VALUE_MILES = "M";
+ public static final String GPS_TAG_GPS_DEST_DISTANCE_REF_VALUE_NAUTICAL_MILES = "N";
// ************************************************************
- GPS_DEST_DISTANCE(new TagInfo(
- "GPS Dest Distance", 0x001a, FIELD_TYPE_DESCRIPTION_RATIONAL, 1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoRational GPS_TAG_GPS_DEST_DISTANCE = new TagInfoRational(
+ "GPS Dest Distance", 0x001a, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_PROCESSING_METHOD(new TagInfo.Text(
- "GPS Processing Method", 0x001b, FIELD_TYPE_DESCRIPTION_UNKNOWN,
- -1, TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoText GPS_TAG_GPS_PROCESSING_METHOD = new TagInfoText(
+ "GPS Processing Method", 0x001b, FIELD_TYPE_UNKNOWN,
+ -1, TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_AREA_INFORMATION(new TagInfo.Text(
- "GPS Area Information", 0x001c, FIELD_TYPE_DESCRIPTION_UNKNOWN, -1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoText GPS_TAG_GPS_AREA_INFORMATION = new TagInfoText(
+ "GPS Area Information", 0x001c, FIELD_TYPE_UNKNOWN, -1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_DATE_STAMP(new TagInfo(
- "GPS Date Stamp", 0x001d, FIELD_TYPE_DESCRIPTION_ASCII, 11,
- TiffDirectoryType.EXIF_DIRECTORY_GPS)),
+ public static final TagInfoAscii GPS_TAG_GPS_DATE_STAMP = new TagInfoAscii(
+ "GPS Date Stamp", 0x001d, 11,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
// ************************************************************
- GPS_DIFFERENTIAL(new TagInfo(
- "GPS Differential", 0x001e, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.EXIF_DIRECTORY_GPS));
-
- public final TagInfo tagInfo;
-
- GpsTagConstants(TagInfo tagInfo) {
- this.tagInfo = tagInfo;
- }
-
- public static final int GPS_DIFFERENTIAL_VALUE_NO_CORRECTION = 0;
- public static final int GPS_DIFFERENTIAL_VALUE_DIFFERENTIAL_CORRECTED = 1;
- public static final String GPS_LONGITUDE_REF_VALUE_EAST = "E";
- public static final String GPS_LONGITUDE_REF_VALUE_WEST = "W";
- public static final String GPS_LATITUDE_REF_VALUE_NORTH = "N";
- public static final String GPS_LATITUDE_REF_VALUE_SOUTH = "S";
- public static final int GPS_ALTITUDE_REF_VALUE_ABOVE_SEA_LEVEL = 0;
- public static final int GPS_ALTITUDE_REF_VALUE_BELOW_SEA_LEVEL = 1;
- public static final String GPS_STATUS_VALUE_MEASUREMENT_IN_PROGRESS = "A";
- public static final String GPS_STATUS_VALUE_MEASUREMENT_INTEROPERABILITY = "V";
- public static final int GPS_MEASURE_MODE_VALUE_2_DIMENSIONAL_MEASUREMENT = 2;
- public static final int GPS_MEASURE_MODE_VALUE_3_DIMENSIONAL_MEASUREMENT = 3;
- public static final String GPS_SPEED_REF_VALUE_KMPH = "K";
- public static final String GPS_SPEED_REF_VALUE_MPH = "M";
- public static final String GPS_SPEED_REF_VALUE_KNOTS = "N";
- public static final String GPS_TRACK_REF_VALUE_MAGNETIC_NORTH = "M";
- public static final String GPS_TRACK_REF_VALUE_TRUE_NORTH = "T";
- public static final String GPS_IMG_DIRECTION_REF_VALUE_MAGNETIC_NORTH = "M";
- public static final String GPS_IMG_DIRECTION_REF_VALUE_TRUE_NORTH = "T";
- public static final String GPS_DEST_LATITUDE_REF_VALUE_NORTH = "N";
- public static final String GPS_DEST_LATITUDE_REF_VALUE_SOUTH = "S";
- public static final String GPS_DEST_LONGITUDE_REF_VALUE_EAST = "E";
- public static final String GPS_DEST_LONGITUDE_REF_VALUE_WEST = "W";
- public static final String GPS_DEST_BEARING_REF_VALUE_MAGNETIC_NORTH = "M";
- public static final String GPS_DEST_BEARING_REF_VALUE_TRUE_NORTH = "T";
- public static final String GPS_DEST_DISTANCE_REF_VALUE_KILOMETERS = "K";
- public static final String GPS_DEST_DISTANCE_REF_VALUE_MILES = "M";
- public static final String GPS_DEST_DISTANCE_REF_VALUE_NAUTICAL_MILES = "N";
+ public static final TagInfoShort GPS_TAG_GPS_DIFFERENTIAL = new TagInfoShort(
+ "GPS Differential", 0x001e, 1,
+ TiffDirectoryType.EXIF_DIRECTORY_GPS);
+ public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_NO_CORRECTION = 0;
+ public static final int GPS_TAG_GPS_DIFFERENTIAL_VALUE_DIFFERENTIAL_CORRECTED = 1;
// ************************************************************
- public TagInfo getTagInfo() {
- return tagInfo;
- }
-
- public static final List<TagInfo> ALL_GPS_TAGS = Collections.unmodifiableList(
- TagConstantsUtils.mergeTagLists(values()));
+ public static final List<TagInfo> ALL_GPS_TAGS =
+ Collections.unmodifiableList(Arrays.asList(
+ GPS_TAG_GPS_VERSION_ID, GPS_TAG_GPS_LATITUDE_REF,
+ GPS_TAG_GPS_LATITUDE, GPS_TAG_GPS_LONGITUDE_REF,
+ GPS_TAG_GPS_LONGITUDE, GPS_TAG_GPS_ALTITUDE_REF,
+ GPS_TAG_GPS_ALTITUDE, GPS_TAG_GPS_TIME_STAMP,
+ GPS_TAG_GPS_SATELLITES, GPS_TAG_GPS_STATUS,
+ GPS_TAG_GPS_MEASURE_MODE, GPS_TAG_GPS_DOP, GPS_TAG_GPS_SPEED_REF,
+ GPS_TAG_GPS_SPEED, GPS_TAG_GPS_TRACK_REF, GPS_TAG_GPS_TRACK,
+ GPS_TAG_GPS_IMG_DIRECTION_REF, GPS_TAG_GPS_IMG_DIRECTION,
+ GPS_TAG_GPS_MAP_DATUM, GPS_TAG_GPS_DEST_LATITUDE_REF,
+ GPS_TAG_GPS_DEST_LATITUDE, GPS_TAG_GPS_DEST_LONGITUDE_REF,
+ GPS_TAG_GPS_DEST_LONGITUDE, GPS_TAG_GPS_DEST_BEARING_REF,
+ GPS_TAG_GPS_DEST_BEARING, GPS_TAG_GPS_DEST_DISTANCE_REF,
+ GPS_TAG_GPS_DEST_DISTANCE, GPS_TAG_GPS_PROCESSING_METHOD,
+ GPS_TAG_GPS_AREA_INFORMATION, GPS_TAG_GPS_DATE_STAMP,
+ GPS_TAG_GPS_DIFFERENTIAL));
}
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TagConstantsUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TagConstantsUtils.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TagConstantsUtils.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TagConstantsUtils.java Sat Feb 18 06:43:33 2012
@@ -19,22 +19,24 @@ package org.apache.commons.sanselan.form
import java.util.ArrayList;
import java.util.List;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
+
public class TagConstantsUtils implements TiffDirectoryConstants
{
private static final TiffDirectoryType[] tiffDirectoryTypes = TiffDirectoryType.values();
- public static List<TagInfo> mergeTagLists(TagHolder[]... tagHolders)
+ public static List<TagInfo> mergeTagLists(List<TagInfo>... tagLists)
{
int count = 0;
- for (int i = 0; i < tagHolders.length; i++) {
- count += tagHolders[i].length;
+ for (int i = 0; i < tagLists.length; i++) {
+ count += tagLists[i].size();
}
ArrayList<TagInfo> result = new ArrayList<TagInfo>(count);
- for (int i = 0; i < tagHolders.length; i++) {
- for (int j = 0; j < tagHolders[i].length; j++) {
- result.add(tagHolders[i][j].getTagInfo());
+ for (int i = 0; i < tagLists.length; i++) {
+ for (int j = 0; j < tagLists[i].size(); j++) {
+ result.add(tagLists[i].get(j));
}
}
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TagInfo.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TagInfo.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TagInfo.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TagInfo.java Sat Feb 18 06:43:33 2012
@@ -1,447 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.sanselan.formats.tiff.constants;
-
-import java.io.UnsupportedEncodingException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
-import org.apache.commons.sanselan.ImageReadException;
-import org.apache.commons.sanselan.ImageWriteException;
-import org.apache.commons.sanselan.common.BinaryFileFunctions;
-import org.apache.commons.sanselan.formats.tiff.TiffField;
-import org.apache.commons.sanselan.formats.tiff.fieldtypes.FieldType;
-import org.apache.commons.sanselan.util.Debug;
-
-public class TagInfo implements TiffDirectoryConstants, TiffFieldTypeConstants
-{
- protected static final int LENGTH_UNKNOWN = -1;
-
- public TagInfo(String name, int tag, FieldType dataType, int length,
- TiffDirectoryType exifDirectory)
- {
- this(name, tag, new FieldType[]{
- dataType
- }, length, exifDirectory);
- }
-
- public TagInfo(String name, int tag, FieldType dataType, int length)
- {
- this(name, tag, new FieldType[]{
- dataType
- }, length, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
- }
-
- public TagInfo(String name, int tag, FieldType dataType,
- String lengthDescription)
- {
- this(name, tag, new FieldType[]{
- dataType
- }, LENGTH_UNKNOWN, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
- }
-
- public TagInfo(String name, int tag, FieldType dataTypes[],
- String lengthDescription)
- {
- this(name, tag, dataTypes, LENGTH_UNKNOWN, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
- }
-
- public TagInfo(String name, int tag, FieldType dataType)
- {
- this(name, tag, dataType, LENGTH_UNKNOWN, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
- }
-
- public TagInfo(String name, int tag, FieldType dataTypes[], int length,
- String lengthDescription)
- {
- this(name, tag, dataTypes, length, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
- }
-
- public final String name;
- public final int tag;
- public final FieldType dataTypes[];
- public final int length;
- public final TiffDirectoryType directoryType;
-
- // public final String lengthDescription;
-
- public TagInfo(String name, int tag, FieldType dataTypes[], int length,
- TiffDirectoryType exifDirectory
- // , String lengthDescription
- )
- {
- this.name = name;
- this.tag = tag;
- this.dataTypes = dataTypes;
- this.length = length;
- // this.lengthDescription = lengthDescription;
- this.directoryType = exifDirectory;
- }
-
- public Object getValue(TiffField entry) throws ImageReadException
- {
- Object o = entry.fieldType.getSimpleValue(entry);
- return o;
- }
-
- public byte[] encodeValue(FieldType fieldType, Object value, int byteOrder)
- throws ImageWriteException
- {
- return fieldType.writeData(value, byteOrder);
- }
-
- public String getDescription()
- {
- return tag + " (0x" + Integer.toHexString(tag) + ": " + name + "): ";
- }
-
- public String toString()
- {
- return "[TagInfo. tag: " + tag + " (0x" + Integer.toHexString(tag)
- + ", name: " + name + "]";
- }
-
- public boolean isDate()
- {
- return false;
- }
-
- public boolean isOffset()
- {
- return false;
- }
-
- public boolean isText()
- {
- return false;
- }
-
- public boolean isUnknown()
- {
- return false;
- }
-
- public static class Offset extends TagInfo
- {
- public Offset(String name, int tag, FieldType dataTypes[], int length,
- TiffDirectoryType exifDirectory)
- {
- super(name, tag, dataTypes, length, exifDirectory);
- }
-
- public Offset(String name, int tag, FieldType dataType, int length,
- TiffDirectoryType exifDirectory)
- {
- super(name, tag, dataType, length, exifDirectory);
- }
-
- public Offset(String name, int tag, FieldType dataType, int length)
- {
- super(name, tag, dataType, length);
- }
-
- // "Exif Offset", 0x8769, FIELD_TYPE_DESCRIPTION_UNKNOWN, 1,
- // EXIF_DIRECTORY_UNKNOWN);
- public boolean isOffset()
- {
- return true;
- }
- }
-
- public static class Date extends TagInfo
- {
- public Date(String name, int tag, FieldType dataType, int length)
- {
- super(name, tag, dataType, length);
- }
-
- private static final DateFormat DATE_FORMAT_1 = new SimpleDateFormat(
- "yyyy:MM:dd HH:mm:ss");
- private static final DateFormat DATE_FORMAT_2 = new SimpleDateFormat(
- "yyyy:MM:dd:HH:mm:ss");
-
- public Object getValue(TiffField entry) throws ImageReadException
- {
- Object o = entry.fieldType.getSimpleValue(entry);
-
- String s = (String) o;
- try
- {
- java.util.Date date = DATE_FORMAT_1.parse(s);
- return date;
- }
- catch (Exception e)
- {
- // Debug.debug(e);
- }
- try
- {
- java.util.Date date = DATE_FORMAT_2.parse(s);
- return date;
- }
- catch (Exception e)
- {
- Debug.debug(e);
- }
-
- return o;
- }
-
- public byte[] encodeValue(FieldType fieldType, Object value,
- int byteOrder) throws ImageWriteException
- {
- throw new ImageWriteException("date encode value: " + value + " ("
- + Debug.getType(value) + ")");
- // return fieldType.writeData(value, byteOrder);
- // Object o = entry.fieldType.getSimpleValue(entry);
- // byte bytes2[];
- // if (tagInfo.isDate())
- // bytes2 = fieldType.getRawBytes(srcField);
- // else
- // bytes2 = fieldType.writeData(value, byteOrder);
- // return o;
- }
-
- public String toString()
- {
- return "[TagInfo. tag: " + tag + ", name: " + name + " (data)"
- + "]";
- }
-
- // TODO: use polymorphism
- public boolean isDate()
- {
- return true;
- }
-
- }
-
- public static final class Text extends TagInfo
- {
- public Text(String name, int tag, FieldType dataType, int length,
- TiffDirectoryType exifDirectory)
- {
- super(name, tag, dataType, length, exifDirectory);
- }
-
- public Text(String name, int tag, FieldType dataTypes[], int length,
- TiffDirectoryType exifDirectory)
- {
- super(name, tag, dataTypes, length, exifDirectory);
- }
-
- public boolean isText()
- {
- return true;
- }
-
- private static final class TextEncoding
- {
- public final byte prefix[];
- public final String encodingName;
-
- public TextEncoding(final byte[] prefix, final String encodingName)
- {
- this.prefix = prefix;
- this.encodingName = encodingName;
- }
- }
-
- private static final TextEncoding TEXT_ENCODING_ASCII = new TextEncoding(
- new byte[]{
- 0x41, 0x53, 0x43, 0x49, 0x49, 0x00, 0x00, 0x00,
- }, "US-ASCII"); // ITU-T T.50 IA5
- private static final TextEncoding TEXT_ENCODING_JIS = new TextEncoding(
- new byte[]{
- 0x4A, 0x49, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00,
- }, "JIS"); // JIS X208-1990
- private static final TextEncoding TEXT_ENCODING_UNICODE = new TextEncoding(
- new byte[]{
- 0x55, 0x4E, 0x49, 0x43, 0x4F, 0x44, 0x45, 0x00,
- // Which Unicode encoding to use, UTF-8?
- }, "UTF-8"); // Unicode Standard
- private static final TextEncoding TEXT_ENCODING_UNDEFINED = new TextEncoding(
- new byte[]{
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- // Try to interpret an undefined text as ISO-8859-1 (Latin)
- }, "ISO-8859-1"); // Undefined
- private static final TextEncoding TEXT_ENCODINGS[] = {
- TEXT_ENCODING_ASCII, //
- TEXT_ENCODING_JIS, //
- TEXT_ENCODING_UNICODE, //
- TEXT_ENCODING_UNDEFINED, //
- };
-
- public byte[] encodeValue(FieldType fieldType, Object value,
- int byteOrder) throws ImageWriteException
- {
- if (!(value instanceof String))
- throw new ImageWriteException("Text value not String: " + value
- + " (" + Debug.getType(value) + ")");
- String s = (String) value;
-
- try
- {
- // try ASCII, with NO prefix.
- byte asciiBytes[] = s
- .getBytes(TEXT_ENCODING_ASCII.encodingName);
- String decodedAscii = new String(asciiBytes,
- TEXT_ENCODING_ASCII.encodingName);
- if (decodedAscii.equals(s))
- {
- // no unicode/non-ascii values.
- byte result[] = new byte[asciiBytes.length
- + TEXT_ENCODING_ASCII.prefix.length];
- System.arraycopy(TEXT_ENCODING_ASCII.prefix, 0, result, 0,
- TEXT_ENCODING_ASCII.prefix.length);
- System.arraycopy(asciiBytes, 0, result,
- TEXT_ENCODING_ASCII.prefix.length,
- asciiBytes.length);
- return result;
- }
- else
- {
- // use unicode
- byte unicodeBytes[] = s
- .getBytes(TEXT_ENCODING_UNICODE.encodingName);
- byte result[] = new byte[unicodeBytes.length
- + TEXT_ENCODING_UNICODE.prefix.length];
- System.arraycopy(TEXT_ENCODING_UNICODE.prefix, 0, result,
- 0, TEXT_ENCODING_UNICODE.prefix.length);
- System.arraycopy(unicodeBytes, 0, result,
- TEXT_ENCODING_UNICODE.prefix.length,
- unicodeBytes.length);
- return result;
- }
- }
- catch (UnsupportedEncodingException e)
- {
- throw new ImageWriteException(e.getMessage(), e);
- }
- }
-
- public Object getValue(TiffField entry) throws ImageReadException
- {
- // Debug.debug("entry.type", entry.type);
- // Debug.debug("entry.type", entry.getDescriptionWithoutValue());
- // Debug.debug("entry.type", entry.fieldType);
-
- if (entry.type == FIELD_TYPE_ASCII.type)
- return FIELD_TYPE_ASCII.getSimpleValue(entry);
- else if (entry.type == FIELD_TYPE_UNDEFINED.type)
- { /* do nothing */ }
- else if (entry.type == FIELD_TYPE_BYTE.type)
- { /* do nothing */ }
- else
- {
- Debug.debug("entry.type", entry.type);
- Debug.debug("entry.directoryType", entry.directoryType);
- Debug.debug("entry.type", entry.getDescriptionWithoutValue());
- Debug.debug("entry.type", entry.fieldType);
- throw new ImageReadException("Text field not encoded as bytes.");
- }
-
- byte bytes[] = entry.fieldType.getRawBytes(entry);
- if (bytes.length < 8)
- {
- try
- {
- // try ASCII, with NO prefix.
- return new String(bytes, "US-ASCII");
- }
- catch (UnsupportedEncodingException e)
- {
- throw new ImageReadException(
- "Text field missing encoding prefix.");
- }
- }
-
- for (int i = 0; i < TEXT_ENCODINGS.length; i++)
- {
- TextEncoding encoding = TEXT_ENCODINGS[i];
- if (BinaryFileFunctions.compareBytes(bytes, 0, encoding.prefix,
- 0, encoding.prefix.length))
- {
- try
- {
- // Debug.debug("encodingName", encoding.encodingName);
- return new String(bytes, encoding.prefix.length,
- bytes.length - encoding.prefix.length,
- encoding.encodingName);
- }
- catch (UnsupportedEncodingException e)
- {
- throw new ImageReadException(e.getMessage(), e);
- }
- }
- }
-
- // Debug.debug("entry.tag", entry.tag + " (0x" + Integer.toHexString(entry.tag ) +")");
- // Debug.debug("entry.type", entry.type);
- // Debug.debug("bytes", bytes, 10);
- // throw new ImageReadException(
- // "Unknown Text encoding prefix.");
-
- try
- {
- // try ASCII, with NO prefix.
- return new String(bytes, "US-ASCII");
- }
- catch (UnsupportedEncodingException e)
- {
- throw new ImageReadException("Unknown text encoding prefix.");
- }
-
- }
- }
-
- public static final class Unknown extends TagInfo
- {
-
- public Unknown(String name, int tag, FieldType dataTypes[], int length,
- TiffDirectoryType exifDirectory)
- {
- super(name, tag, dataTypes, length, exifDirectory);
- }
-
- public boolean isUnknown()
- {
- return true;
- }
-
- public byte[] encodeValue(FieldType fieldType, Object value,
- int byteOrder) throws ImageWriteException
- {
- // Debug.debug();
- // Debug.debug("unknown tag(0x" + Integer.toHexString(tag) + ") ",
- // this);
- // Debug.debug("unknown tag fieldType", fieldType);
- // Debug.debug("unknown tag value", value);
- // Debug.debug("unknown tag value", Debug.getType(value));
- byte result[] = super.encodeValue(fieldType, value, byteOrder);
- // Debug.debug("unknown tag result", result);
- return result;
- }
-
- public Object getValue(TiffField entry) throws ImageReadException
- {
- return super.getValue(entry);
- }
- }
-
-}
\ No newline at end of file
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffFieldTypeConstants.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffFieldTypeConstants.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffFieldTypeConstants.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffFieldTypeConstants.java Sat Feb 18 06:43:33 2012
@@ -16,6 +16,10 @@
*/
package org.apache.commons.sanselan.formats.tiff.constants;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.commons.sanselan.SanselanConstants;
import org.apache.commons.sanselan.formats.tiff.fieldtypes.FieldType;
import org.apache.commons.sanselan.formats.tiff.fieldtypes.FieldTypeAscii;
@@ -64,40 +68,32 @@ public interface TiffFieldTypeConstants
public static final FieldType FIELD_TYPE_UNKNOWN = new FieldTypeUnknown();
- public static final FieldType FIELD_TYPES[] = {
- FIELD_TYPE_BYTE, FIELD_TYPE_ASCII, FIELD_TYPE_SHORT,
- FIELD_TYPE_LONG, FIELD_TYPE_RATIONAL, FIELD_TYPE_SBYTE,
- FIELD_TYPE_UNDEFINED, FIELD_TYPE_SSHORT, FIELD_TYPE_SLONG,
- FIELD_TYPE_SRATIONAL, FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE,
- };
-
- public static final FieldType FIELD_TYPE_ANY[] = FIELD_TYPES;
-
- public static final FieldType FIELD_TYPE_DESCRIPTION_LONG[] = {
- FIELD_TYPE_LONG,
- };
- public static final FieldType FIELD_TYPE_DESCRIPTION_SHORT[] = {
- FIELD_TYPE_SHORT,
- };
- public static final FieldType FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG[] = {
- FIELD_TYPE_SHORT, FIELD_TYPE_LONG,
- };
- public static final FieldType FIELD_TYPE_DESCRIPTION_ASCII[] = {
- FIELD_TYPE_ASCII,
- };
- public static final FieldType FIELD_TYPE_DESCRIPTION_LONG_OR_SHORT[] = {
- FIELD_TYPE_SHORT, FIELD_TYPE_LONG,
- };
- public static final FieldType FIELD_TYPE_DESCRIPTION_RATIONAL[] = {
- FIELD_TYPE_RATIONAL,
- };
- public static final FieldType FIELD_TYPE_DESCRIPTION_BYTE_OR_SHORT[] = {
- FIELD_TYPE_SHORT, FIELD_TYPE_BYTE
- };
- public static final FieldType FIELD_TYPE_DESCRIPTION_BYTE[] = {
- FIELD_TYPE_BYTE,
- };
- public static final FieldType FIELD_TYPE_DESCRIPTION_ANY[] = FIELD_TYPE_ANY;
- public static final FieldType FIELD_TYPE_DESCRIPTION_UNKNOWN[] = null;
-
+ public static final List<FieldType> FIELD_TYPES =
+ Collections.unmodifiableList(Arrays.asList(
+ FIELD_TYPE_BYTE, FIELD_TYPE_ASCII, FIELD_TYPE_SHORT,
+ FIELD_TYPE_LONG, FIELD_TYPE_RATIONAL, FIELD_TYPE_SBYTE,
+ FIELD_TYPE_UNDEFINED, FIELD_TYPE_SSHORT, FIELD_TYPE_SLONG,
+ FIELD_TYPE_SRATIONAL, FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE));
+
+ public static final List<FieldType> FIELD_TYPE_ANY = FIELD_TYPES;
+
+ public static final List<FieldType> FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG =
+ Collections.unmodifiableList(Arrays.asList(
+ FIELD_TYPE_SHORT, FIELD_TYPE_LONG));
+
+ public static final List<FieldType> FIELD_TYPE_DESCRIPTION_SHORT_OR_RATIONAL =
+ Collections.unmodifiableList(Arrays.asList(
+ FIELD_TYPE_SHORT, FIELD_TYPE_RATIONAL));
+
+ public static final List<FieldType> FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG_OR_RATIONAL =
+ Collections.unmodifiableList(Arrays.asList(
+ FIELD_TYPE_SHORT, FIELD_TYPE_LONG, FIELD_TYPE_RATIONAL));
+
+ public static final List<FieldType> FIELD_TYPE_DESCRIPTION_LONG_OR_SHORT =
+ Collections.unmodifiableList(Arrays.asList(
+ FIELD_TYPE_SHORT, FIELD_TYPE_LONG));
+
+ public static final List<FieldType> FIELD_TYPE_DESCRIPTION_BYTE_OR_SHORT =
+ Collections.unmodifiableList(Arrays.asList(
+ FIELD_TYPE_SHORT, FIELD_TYPE_BYTE));
}
\ No newline at end of file
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffTagConstants.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffTagConstants.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffTagConstants.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/constants/TiffTagConstants.java Sat Feb 18 06:43:33 2012
@@ -16,308 +16,366 @@
*/
package org.apache.commons.sanselan.formats.tiff.constants;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-public enum TiffTagConstants implements TiffFieldTypeConstants, TagHolder
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoAny;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoAscii;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoByte;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoByteOrShort;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoLong;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoRational;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoShort;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoShortOrLong;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfoUnknown;
+
+public interface TiffTagConstants
+ extends
+ TiffFieldTypeConstants
{
- NEW_SUBFILE_TYPE(new TagInfo(
- "New Subfile Type", 0xFE, FIELD_TYPE_DESCRIPTION_LONG, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
+ public static final TagInfoLong TIFF_TAG_NEW_SUBFILE_TYPE = new TagInfoLong(
+ "New Subfile Type", 0xFE, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_SUBFILE_TYPE = new TagInfoShort(
+ "Subfile Type", 0xFF, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShortOrLong TIFF_TAG_IMAGE_WIDTH = new TagInfoShortOrLong(
+ "Image Width", 0x100, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShortOrLong TIFF_TAG_IMAGE_LENGTH = new TagInfoShortOrLong(
+ "Image Length", 0x101, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_BITS_PER_SAMPLE = new TagInfoShort(
+ "Bits Per Sample", 0x102, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_COMPRESSION = new TagInfoShort(
+ "Compression", 0x103, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_PHOTOMETRIC_INTERPRETATION = new TagInfoShort(
+ "Photometric Interpretation", 0x106, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_THRESHHOLDING = new TagInfoShort(
+ "Threshholding", 0x107, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_CELL_WIDTH = new TagInfoShort(
+ "Cell Width", 0x108, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_CELL_LENGTH = new TagInfoShort(
+ "Cell Length", 0x109, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_FILL_ORDER = new TagInfoShort(
+ "Fill Order", 0x10A, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_DOCUMENT_NAME = new TagInfoAscii(
+ "Document Name", 0x10D, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_IMAGE_DESCRIPTION = new TagInfoAscii(
+ "Image Description", 0x10E, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_MAKE = new TagInfoAscii(
+ "Make", 0x10F, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_MODEL = new TagInfoAscii(
+ "Model", 0x110, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShortOrLong TIFF_TAG_STRIP_OFFSETS = new TagInfoShortOrLong(
+ "Strip Offsets", 0x111, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT, true);
+
+ public static final TagInfoShort TIFF_TAG_ORIENTATION = new TagInfoShort(
+ "Orientation", 0x112, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_SAMPLES_PER_PIXEL = new TagInfoShort(
+ "Samples Per Pixel", 0x115, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShortOrLong TIFF_TAG_ROWS_PER_STRIP = new TagInfoShortOrLong(
+ "Rows Per Strip", 0x116, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShortOrLong TIFF_TAG_STRIP_BYTE_COUNTS = new TagInfoShortOrLong(
+ "Strip Byte Counts", 0x117, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_MIN_SAMPLE_VALUE = new TagInfoShort(
+ "Min Sample Value", 0x118, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_MAX_SAMPLE_VALUE = new TagInfoShort(
+ "Max Sample Value", 0x119, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoRational TIFF_TAG_XRESOLUTION = new TagInfoRational(
+ "XResolution", 0x11A, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoRational TIFF_TAG_YRESOLUTION = new TagInfoRational(
+ "YResolution", 0x11B, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_PLANAR_CONFIGURATION = new TagInfoShort(
+ "Planar Configuration", 0x11C, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_PAGE_NAME = new TagInfoAscii(
+ "Page Name", 0x11D, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoRational TIFF_TAG_XPOSITION = new TagInfoRational(
+ "XPosition", 0x11E, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoRational TIFF_TAG_YPOSITION = new TagInfoRational(
+ "YPosition", 0x11F, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_FREE_OFFSETS = new TagInfoLong(
+ "Free Offsets", 0x120, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_FREE_BYTE_COUNTS = new TagInfoLong(
+ "Free Byte Counts", 0x121, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_GRAY_RESPONSE_UNIT = new TagInfoShort(
+ "Gray Response Unit", 0x122, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_GRAY_RESPONSE_CURVE = new TagInfoShort(
+ "Gray Response Curve", 0x123, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_T4_OPTIONS = new TagInfoLong(
+ "T4 Options", 0x124, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_T6_OPTIONS = new TagInfoLong(
+ "T6 Options", 0x125, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_RESOLUTION_UNIT = new TagInfoShort(
+ "Resolution Unit", 0x128, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_PAGE_NUMBER = new TagInfoShort(
+ "Page Number", 0x129, 2,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_TRANSFER_FUNCTION = new TagInfoShort(
+ "Transfer Function", 0x12D, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_SOFTWARE = new TagInfoAscii(
+ "Software", 0x131, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_DATE_TIME = new TagInfoAscii(
+ "Date Time", 0x132, 20,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_ARTIST = new TagInfoAscii(
+ "Artist", 0x13B, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_HOST_COMPUTER = new TagInfoAscii(
+ "Host Computer", 0x13C, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_PREDICTOR = new TagInfoShort(
+ "Predictor", 0x13D, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoRational TIFF_TAG_WHITE_POINT = new TagInfoRational(
+ "White Point", 0x13E, 2,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoRational TIFF_TAG_PRIMARY_CHROMATICITIES = new TagInfoRational(
+ "Primary Chromaticities", 0x13F, 6,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_COLOR_MAP = new TagInfoShort(
+ "Color Map", 0x140, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_HALFTONE_HINTS = new TagInfoShort(
+ "Halftone Hints", 0x141, 2,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShortOrLong TIFF_TAG_TILE_WIDTH = new TagInfoShortOrLong(
+ "Tile Width", 0x142, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShortOrLong TIFF_TAG_TILE_LENGTH = new TagInfoShortOrLong(
+ "Tile Length", 0x143, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_TILE_OFFSETS = new TagInfoLong(
+ "Tile Offsets", 0x144, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT, true);
+
+ public static final TagInfoShortOrLong TIFF_TAG_TILE_BYTE_COUNTS = new TagInfoShortOrLong(
+ "Tile Byte Counts", 0x145, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_INK_SET = new TagInfoShort(
+ "Ink Set", 0x14C, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_INK_NAMES = new TagInfoAscii(
+ "Ink Names", 0x14D, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_NUMBER_OF_INKS = new TagInfoShort(
+ "Number Of Inks", 0x14E, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoByteOrShort TIFF_TAG_DOT_RANGE = new TagInfoByteOrShort(
+ "Dot Range", 0x150, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_TARGET_PRINTER = new TagInfoAscii(
+ "Target Printer", 0x151, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_EXTRA_SAMPLES = new TagInfoShort(
+ "Extra Samples", 0x152, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_SAMPLE_FORMAT = new TagInfoShort(
+ "Sample Format", 0x153, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAny TIFF_TAG_SMIN_SAMPLE_VALUE = new TagInfoAny(
+ "SMin Sample Value", 0x154, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAny TIFF_TAG_SMAX_SAMPLE_VALUE = new TagInfoAny(
+ "SMax Sample Value", 0x155, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_TRANSFER_RANGE = new TagInfoShort(
+ "Transfer Range", 0x156, 6,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_JPEG_PROC = new TagInfoShort(
+ "JPEGProc", 0x200, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_JPEG_INTERCHANGE_FORMAT = new TagInfoLong(
+ "JPEGInterchange Format", 0x201, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT, true);
- SUBFILE_TYPE(new TagInfo(
- "Subfile Type", 0xFF, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- IMAGE_WIDTH(new TagInfo(
- "Image Width", 0x100, FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- IMAGE_LENGTH(new TagInfo(
- "Image Length", 0x101, FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- BITS_PER_SAMPLE(new TagInfo(
- "Bits Per Sample", 0x102, FIELD_TYPE_DESCRIPTION_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- COMPRESSION(new TagInfo(
- "Compression", 0x103, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- PHOTOMETRIC_INTERPRETATION(new TagInfo(
- "Photometric Interpretation", 0x106, FIELD_TYPE_DESCRIPTION_SHORT,
- 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- THRESHHOLDING(new TagInfo(
- "Threshholding", 0x107, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- CELL_WIDTH(new TagInfo("Cell Width",
- 0x108, FIELD_TYPE_DESCRIPTION_SHORT, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- CELL_LENGTH(new TagInfo(
- "Cell Length", 0x109, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- FILL_ORDER(new TagInfo("Fill Order",
- 0x10A, FIELD_TYPE_DESCRIPTION_SHORT, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- DOCUMENT_NAME(new TagInfo(
- "Document Name", 0x10D, FIELD_TYPE_DESCRIPTION_ASCII, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- IMAGE_DESCRIPTION(new TagInfo(
- "Image Description", 0x10E, FIELD_TYPE_DESCRIPTION_ASCII, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- MAKE(new TagInfo("Make", 0x10F,
- FIELD_TYPE_DESCRIPTION_ASCII, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- MODEL(new TagInfo("Model", 0x110,
- FIELD_TYPE_DESCRIPTION_ASCII, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- STRIP_OFFSETS(new TagInfo.Offset(
- "Strip Offsets", 0x111, FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- ORIENTATION(new TagInfo(
- "Orientation", 0x112, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- SAMPLES_PER_PIXEL(new TagInfo(
- "Samples Per Pixel", 0x115, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- ROWS_PER_STRIP(new TagInfo(
- "Rows Per Strip", 0x116, FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- STRIP_BYTE_COUNTS(new TagInfo(
- "Strip Byte Counts", 0x117, FIELD_TYPE_DESCRIPTION_LONG_OR_SHORT,
- -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- MIN_SAMPLE_VALUE(new TagInfo(
- "Min Sample Value", 0x118, FIELD_TYPE_DESCRIPTION_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- MAX_SAMPLE_VALUE(new TagInfo(
- "Max Sample Value", 0x119, FIELD_TYPE_DESCRIPTION_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- XRESOLUTION(new TagInfo(
- "XResolution", 0x11A, FIELD_TYPE_DESCRIPTION_RATIONAL, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- YRESOLUTION(new TagInfo(
- "YResolution", 0x11B, FIELD_TYPE_DESCRIPTION_RATIONAL, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- PLANAR_CONFIGURATION(new TagInfo(
- "Planar Configuration", 0x11C, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- PAGE_NAME(new TagInfo("Page Name",
- 0x11D, FIELD_TYPE_DESCRIPTION_ASCII, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- XPOSITION(new TagInfo("XPosition",
- 0x11E, FIELD_TYPE_DESCRIPTION_RATIONAL, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- YPOSITION(new TagInfo("YPosition",
- 0x11F, FIELD_TYPE_DESCRIPTION_RATIONAL, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- FREE_OFFSETS(new TagInfo(
- "Free Offsets", 0x120, FIELD_TYPE_DESCRIPTION_LONG, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- FREE_BYTE_COUNTS(new TagInfo(
- "Free Byte Counts", 0x121, FIELD_TYPE_DESCRIPTION_LONG, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- GRAY_RESPONSE_UNIT(new TagInfo(
- "Gray Response Unit", 0x122, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- GRAY_RESPONSE_CURVE(new TagInfo(
- "Gray Response Curve", 0x123, FIELD_TYPE_DESCRIPTION_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- T4_OPTIONS(new TagInfo("T4 Options",
- 0x124, FIELD_TYPE_DESCRIPTION_LONG, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- T6_OPTIONS(new TagInfo("T6 Options",
- 0x125, FIELD_TYPE_DESCRIPTION_LONG, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- RESOLUTION_UNIT(new TagInfo(
- "Resolution Unit", 0x128, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- PAGE_NUMBER(new TagInfo(
- "Page Number", 0x129, FIELD_TYPE_DESCRIPTION_SHORT, 2,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- TRANSFER_FUNCTION(new TagInfo(
- "Transfer Function", 0x12D, FIELD_TYPE_DESCRIPTION_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- SOFTWARE(new TagInfo("Software",
- 0x131, FIELD_TYPE_DESCRIPTION_ASCII, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- DATE_TIME(new TagInfo("Date Time",
- 0x132, FIELD_TYPE_DESCRIPTION_ASCII, 20, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- ARTIST(new TagInfo("Artist", 0x13B,
- FIELD_TYPE_DESCRIPTION_ASCII, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- HOST_COMPUTER(new TagInfo(
- "Host Computer", 0x13C, FIELD_TYPE_DESCRIPTION_ASCII, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- PREDICTOR(new TagInfo("Predictor",
- 0x13D, FIELD_TYPE_DESCRIPTION_SHORT, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- WHITE_POINT(new TagInfo(
- "White Point", 0x13E, FIELD_TYPE_DESCRIPTION_RATIONAL, 2,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- PRIMARY_CHROMATICITIES(new TagInfo(
- "Primary Chromaticities", 0x13F, FIELD_TYPE_DESCRIPTION_RATIONAL,
- 6, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- COLOR_MAP(new TagInfo("Color Map",
- 0x140, FIELD_TYPE_DESCRIPTION_SHORT, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- HALFTONE_HINTS(new TagInfo(
- "Halftone Hints", 0x141, FIELD_TYPE_DESCRIPTION_SHORT, 2,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- TILE_WIDTH(new TagInfo("Tile Width",
- 0x142, FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- TILE_LENGTH(new TagInfo(
- "Tile Length", 0x143, FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- TILE_OFFSETS(new TagInfo.Offset(
- "Tile Offsets", 0x144, FIELD_TYPE_DESCRIPTION_LONG, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- TILE_BYTE_COUNTS(new TagInfo(
- "Tile Byte Counts", 0x145, FIELD_TYPE_DESCRIPTION_SHORT_OR_LONG,
- -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- INK_SET(new TagInfo("Ink Set",
- 0x14C, FIELD_TYPE_DESCRIPTION_SHORT, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- INK_NAMES(new TagInfo("Ink Names",
- 0x14D, FIELD_TYPE_DESCRIPTION_ASCII, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- NUMBER_OF_INKS(new TagInfo(
- "Number Of Inks", 0x14E, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- DOT_RANGE(new TagInfo("Dot Range",
- 0x150, FIELD_TYPE_DESCRIPTION_BYTE_OR_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- TARGET_PRINTER(new TagInfo(
- "Target Printer", 0x151, FIELD_TYPE_DESCRIPTION_ASCII, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- EXTRA_SAMPLES(new TagInfo(
- "Extra Samples", 0x152, FIELD_TYPE_DESCRIPTION_BYTE, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- SAMPLE_FORMAT(new TagInfo(
- "Sample Format", 0x153, FIELD_TYPE_DESCRIPTION_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- SMIN_SAMPLE_VALUE(new TagInfo(
- "SMin Sample Value", 0x154, FIELD_TYPE_DESCRIPTION_ANY, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- SMAX_SAMPLE_VALUE(new TagInfo(
- "SMax Sample Value", 0x155, FIELD_TYPE_DESCRIPTION_ANY, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- TRANSFER_RANGE(new TagInfo(
- "Transfer Range", 0x156, FIELD_TYPE_DESCRIPTION_SHORT, 6,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_PROC(new TagInfo("JPEGProc",
- 0x200, FIELD_TYPE_DESCRIPTION_SHORT, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_INTERCHANGE_FORMAT(new TagInfo.Offset(
- "JPEGInterchange Format", 0x201, FIELD_TYPE_DESCRIPTION_LONG, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_INTERCHANGE_FORMAT_LENGTH(new TagInfo(
+ public static final TagInfoLong TIFF_TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = new TagInfoLong(
"JPEGInterchange Format Length", 0x202,
- FIELD_TYPE_DESCRIPTION_LONG, 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_RESTART_INTERVAL(new TagInfo(
- "JPEGRestart Interval", 0x203, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_LOSSLESS_PREDICTORS(new TagInfo(
- "JPEGLossless Predictors", 0x205, FIELD_TYPE_DESCRIPTION_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_POINT_TRANSFORMS(new TagInfo(
- "JPEGPoint Transforms", 0x206, FIELD_TYPE_DESCRIPTION_SHORT, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_QTABLES(new TagInfo(
- "JPEGQTables", 0x207, FIELD_TYPE_DESCRIPTION_LONG, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_DCTABLES(new TagInfo(
- "JPEGDCTables", 0x208, FIELD_TYPE_DESCRIPTION_LONG, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- JPEG_ACTABLES(new TagInfo(
- "JPEGACTables", 0x209, FIELD_TYPE_DESCRIPTION_LONG, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- YCBCR_COEFFICIENTS(new TagInfo(
- "YCbCr Coefficients", 0x211, FIELD_TYPE_DESCRIPTION_RATIONAL, 3,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- YCBCR_SUB_SAMPLING(new TagInfo(
- "YCbCr Sub Sampling", 0x212, FIELD_TYPE_DESCRIPTION_SHORT, 2,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- YCBCR_POSITIONING(new TagInfo(
- "YCbCr Positioning", 0x213, FIELD_TYPE_DESCRIPTION_SHORT, 1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- REFERENCE_BLACK_WHITE(new TagInfo(
- "Reference Black White", 0x214, FIELD_TYPE_DESCRIPTION_LONG, -1,
- TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
-
- COPYRIGHT(new TagInfo("Copyright",
- 0x8298, FIELD_TYPE_DESCRIPTION_ASCII, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
+ 1, TiffDirectoryType.TIFF_DIRECTORY_ROOT);
- XMP(new TagInfo("XMP",
- 0x2BC, FIELD_TYPE_DESCRIPTION_BYTE, -1, TiffDirectoryType.TIFF_DIRECTORY_ROOT)),
+ public static final TagInfoShort TIFF_TAG_JPEG_RESTART_INTERVAL = new TagInfoShort(
+ "JPEGRestart Interval", 0x203, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_JPEG_LOSSLESS_PREDICTORS = new TagInfoShort(
+ "JPEGLossless Predictors", 0x205, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_JPEG_POINT_TRANSFORMS = new TagInfoShort(
+ "JPEGPoint Transforms", 0x206, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_JPEG_QTABLES = new TagInfoLong(
+ "JPEGQTables", 0x207, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_JPEG_DCTABLES = new TagInfoLong(
+ "JPEGDCTables", 0x208, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_JPEG_ACTABLES = new TagInfoLong(
+ "JPEGACTables", 0x209, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoRational TIFF_TAG_YCBCR_COEFFICIENTS = new TagInfoRational(
+ "YCbCr Coefficients", 0x211, 3,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_YCBCR_SUB_SAMPLING = new TagInfoShort(
+ "YCbCr Sub Sampling", 0x212, 2,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoShort TIFF_TAG_YCBCR_POSITIONING = new TagInfoShort(
+ "YCbCr Positioning", 0x213, 1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoLong TIFF_TAG_REFERENCE_BLACK_WHITE = new TagInfoLong(
+ "Reference Black White", 0x214, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoAscii TIFF_TAG_COPYRIGHT = new TagInfoAscii(
+ "Copyright", 0x8298, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
+
+ public static final TagInfoByte TIFF_TAG_XMP = new TagInfoByte(
+ "XMP", 0x2BC, -1,
+ TiffDirectoryType.TIFF_DIRECTORY_ROOT);
// TODO:
- // public static final TagInfo2 UNKNOWN(null;
- UNKNOWN(new TagInfo.Unknown(
- "Unknown Tag", -1, FIELD_TYPE_DESCRIPTION_UNKNOWN,
- TagInfo.LENGTH_UNKNOWN, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN));
-
- public final TagInfo tagInfo;
-
- TiffTagConstants(TagInfo tagInfo) {
- this.tagInfo = tagInfo;
- }
-
- public TagInfo getTagInfo() {
- return tagInfo;
- }
-
- public static final List<TagInfo> ALL_TIFF_TAGS = Collections.unmodifiableList(
- TagConstantsUtils.mergeTagLists(values()));
+ // public static final TagInfo2 TIFF_TAG_UNKNOWN = null;
+ public static final TagInfo TIFF_TAG_UNKNOWN = new TagInfoUnknown(
+ "Unknown Tag", -1, TagInfo.LENGTH_UNKNOWN,
+ TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
+
+ public static final List<TagInfo> ALL_TIFF_TAGS =
+ Collections.unmodifiableList(Arrays.asList(
+ TIFF_TAG_NEW_SUBFILE_TYPE, TIFF_TAG_SUBFILE_TYPE,
+ TIFF_TAG_IMAGE_WIDTH, TIFF_TAG_IMAGE_LENGTH,
+ TIFF_TAG_BITS_PER_SAMPLE, TIFF_TAG_COMPRESSION,
+ TIFF_TAG_PHOTOMETRIC_INTERPRETATION, TIFF_TAG_THRESHHOLDING,
+ TIFF_TAG_CELL_WIDTH, TIFF_TAG_CELL_LENGTH, TIFF_TAG_FILL_ORDER,
+ TIFF_TAG_DOCUMENT_NAME, TIFF_TAG_IMAGE_DESCRIPTION, TIFF_TAG_MAKE,
+ TIFF_TAG_MODEL, TIFF_TAG_STRIP_OFFSETS, TIFF_TAG_ORIENTATION,
+ TIFF_TAG_SAMPLES_PER_PIXEL, TIFF_TAG_ROWS_PER_STRIP,
+ TIFF_TAG_STRIP_BYTE_COUNTS, TIFF_TAG_MIN_SAMPLE_VALUE,
+ TIFF_TAG_MAX_SAMPLE_VALUE, TIFF_TAG_XRESOLUTION,
+ TIFF_TAG_YRESOLUTION, TIFF_TAG_PLANAR_CONFIGURATION,
+ TIFF_TAG_PAGE_NAME, TIFF_TAG_XPOSITION, TIFF_TAG_YPOSITION,
+ TIFF_TAG_FREE_OFFSETS, TIFF_TAG_FREE_BYTE_COUNTS,
+ TIFF_TAG_GRAY_RESPONSE_UNIT, TIFF_TAG_GRAY_RESPONSE_CURVE,
+ TIFF_TAG_T4_OPTIONS, TIFF_TAG_T6_OPTIONS, TIFF_TAG_RESOLUTION_UNIT,
+ TIFF_TAG_PAGE_NUMBER, TIFF_TAG_TRANSFER_FUNCTION,
+ TIFF_TAG_SOFTWARE, TIFF_TAG_DATE_TIME, TIFF_TAG_ARTIST,
+ TIFF_TAG_HOST_COMPUTER, TIFF_TAG_PREDICTOR, TIFF_TAG_WHITE_POINT,
+ TIFF_TAG_PRIMARY_CHROMATICITIES, TIFF_TAG_COLOR_MAP,
+ TIFF_TAG_HALFTONE_HINTS, TIFF_TAG_TILE_WIDTH, TIFF_TAG_TILE_LENGTH,
+ TIFF_TAG_TILE_OFFSETS, TIFF_TAG_TILE_BYTE_COUNTS, TIFF_TAG_INK_SET,
+ TIFF_TAG_INK_NAMES, TIFF_TAG_NUMBER_OF_INKS, TIFF_TAG_DOT_RANGE,
+ TIFF_TAG_TARGET_PRINTER, TIFF_TAG_EXTRA_SAMPLES,
+ TIFF_TAG_SAMPLE_FORMAT, TIFF_TAG_SMIN_SAMPLE_VALUE,
+ TIFF_TAG_SMAX_SAMPLE_VALUE, TIFF_TAG_TRANSFER_RANGE,
+ TIFF_TAG_JPEG_PROC, TIFF_TAG_JPEG_INTERCHANGE_FORMAT,
+ TIFF_TAG_JPEG_INTERCHANGE_FORMAT_LENGTH,
+ TIFF_TAG_JPEG_RESTART_INTERVAL, TIFF_TAG_JPEG_LOSSLESS_PREDICTORS,
+ TIFF_TAG_JPEG_POINT_TRANSFORMS, TIFF_TAG_JPEG_QTABLES,
+ TIFF_TAG_JPEG_DCTABLES, TIFF_TAG_JPEG_ACTABLES,
+ TIFF_TAG_YCBCR_COEFFICIENTS, TIFF_TAG_YCBCR_SUB_SAMPLING,
+ TIFF_TAG_YCBCR_POSITIONING, TIFF_TAG_REFERENCE_BLACK_WHITE,
+ TIFF_TAG_COPYRIGHT,
+ TIFF_TAG_XMP));
}
\ No newline at end of file
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/datareaders/DataReader.java Sat Feb 18 06:43:33 2012
@@ -111,7 +111,7 @@ public abstract class DataReader impleme
protected byte[] decompress(byte compressed[], int compression,
int expected_size, int tileWidth, int tileHeight) throws ImageReadException, IOException
{
- TiffField fillOrderField = directory.findField(TiffTagConstants.FILL_ORDER.tagInfo);
+ TiffField fillOrderField = directory.findField(TiffTagConstants.TIFF_TAG_FILL_ORDER);
int fillOrder = ExifTagConstants.FILL_ORDER_VALUE_NORMAL;
if (fillOrderField != null) {
fillOrder = fillOrderField.getIntValue();
@@ -135,7 +135,7 @@ public abstract class DataReader impleme
case TIFF_COMPRESSION_CCITT_GROUP_3 :
{
int t4Options = 0;
- TiffField field = directory.findField(TiffTagConstants.T4_OPTIONS.tagInfo);
+ TiffField field = directory.findField(TiffTagConstants.TIFF_TAG_T4_OPTIONS);
if (field != null) {
t4Options = field.getIntValue();
}
@@ -154,7 +154,7 @@ public abstract class DataReader impleme
case TIFF_COMPRESSION_CCITT_GROUP_4 :
{
int t6Options = 0;
- TiffField field = directory.findField(TiffTagConstants.T6_OPTIONS.tagInfo);
+ TiffField field = directory.findField(TiffTagConstants.TIFF_TAG_T6_OPTIONS);
if (field != null) {
t6Options = field.getIntValue();
}
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/fieldtypes/FieldTypeAscii.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/fieldtypes/FieldTypeAscii.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/fieldtypes/FieldTypeAscii.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/fieldtypes/FieldTypeAscii.java Sat Feb 18 06:43:33 2012
@@ -16,6 +16,8 @@
*/
package org.apache.commons.sanselan.formats.tiff.fieldtypes;
+import java.io.UnsupportedEncodingException;
+
import org.apache.commons.sanselan.ImageWriteException;
import org.apache.commons.sanselan.formats.tiff.TiffField;
@@ -29,8 +31,42 @@ public class FieldTypeAscii extends Fiel
public Object getSimpleValue(TiffField entry) {
// According to EXIF specification "2 = ASCII An 8-bit byte containing one 7-bit ASCII code. The final byte is terminated with NULL."
byte bytes[] = getRawBytes(entry);
- // Ignore last (should be NULL) byte.
- return new String(bytes, 0, bytes.length-1);
+ int nullCount = 1;
+ for (int i = 0; i < bytes.length - 1; i++) {
+ if (bytes[i] == 0) {
+ nullCount++;
+ }
+ }
+ String[] strings = new String[nullCount];
+ int stringsAdded = 0;
+ strings[0] = ""; // if we have a 0 length string
+ int nextStringPos = 0;
+ // According to the Exiftool FAQ, http://www.metadataworkinggroup.org
+ // specifies that the TIFF ASCII fields are actually UTF-8.
+ // Exiftool however allows you to configure the charset used.
+ for (int i = 0; i < bytes.length; i++) {
+ if (bytes[i] == 0) {
+ try {
+ String string = new String(bytes, nextStringPos, i - nextStringPos, "UTF-8");
+ strings[stringsAdded++] = string;
+ } catch (UnsupportedEncodingException unsupportedEncoding) {
+ }
+ nextStringPos = i + 1;
+ }
+ }
+ if (nextStringPos < bytes.length) {
+ // Buggy file, string wasn't null terminated
+ try {
+ String string = new String(bytes, nextStringPos, bytes.length - nextStringPos, "UTF-8");
+ strings[stringsAdded++] = string;
+ } catch (UnsupportedEncodingException unsupportedEncoding) {
+ }
+ }
+ if (strings.length == 1) {
+ return strings[0];
+ } else {
+ return strings;
+ }
}
public byte[] writeData(Object o, int byteOrder) throws ImageWriteException
@@ -42,11 +78,33 @@ public class FieldTypeAscii extends Fiel
result[result.length - 1] = 0;
return result;
} else if (o instanceof String) {
- byte bytes[] = ((String) o).getBytes();
+ byte[] bytes = null;
+ try {
+ bytes = ((String) o).getBytes("UTF-8");
+ } catch (UnsupportedEncodingException cannotHappen) {
+ }
byte result[] = new byte[bytes.length + 1];
System.arraycopy(bytes, 0, result, 0, bytes.length);
result[result.length - 1] = 0;
return result;
+ } else if (o instanceof String[]) {
+ String[] strings = (String[])o;
+ int totalLength = 0;
+ for (int i = 0; i < strings.length; i++) {
+ totalLength += (strings[i].getBytes().length + 1);
+ }
+ byte[] result = new byte[totalLength];
+ int position = 0;
+ for (int i = 0; i < strings.length; i++) {
+ byte[] bytes = null;
+ try {
+ bytes = strings[i].getBytes("UTF-8");
+ } catch (UnsupportedEncodingException cannotHappen) {
+ }
+ System.arraycopy(bytes, 0, result, position, bytes.length);
+ position += (bytes.length + 1);
+ }
+ return result;
}
else
throw new ImageWriteException("Unknown data type: " + o);
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/fieldtypes/FieldTypeShort.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/fieldtypes/FieldTypeShort.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/fieldtypes/FieldTypeShort.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/fieldtypes/FieldTypeShort.java Sat Feb 18 06:43:33 2012
@@ -18,6 +18,7 @@ package org.apache.commons.sanselan.form
import org.apache.commons.sanselan.ImageReadException;
import org.apache.commons.sanselan.ImageWriteException;
+import org.apache.commons.sanselan.common.BinaryConversions;
import org.apache.commons.sanselan.formats.tiff.TiffField;
import org.apache.commons.sanselan.util.Debug;
@@ -45,32 +46,29 @@ public class FieldTypeShort extends Fiel
public Object getSimpleValue(TiffField entry) throws ImageReadException
{
if (entry.length == 1)
- return new Integer(convertByteArrayToShort(name + " ("
- + entry.tagInfo.name + ")", entry.valueOffsetBytes,
- entry.byteOrder));
+ return BinaryConversions.convertToShort(entry.valueOffsetBytes, entry.byteOrder);
- return convertByteArrayToShortArray(name + " (" + entry.tagInfo.name
- + ")", getRawBytes(entry), 0, entry.length, entry.byteOrder);
+ return BinaryConversions.convertToShortArray(getRawBytes(entry), entry.byteOrder);
}
public byte[] writeData(Object o, int byteOrder) throws ImageWriteException
{
- if (o instanceof Integer)
- return convertShortArrayToByteArray(new int[]{
- ((Integer) o).intValue(),
+ if (o instanceof Short)
+ return BinaryConversions.convertToByteArray(new short[]{
+ ((Short)o).shortValue(),
}, byteOrder);
- else if (o instanceof int[])
+ else if (o instanceof short[])
{
- int numbers[] = (int[]) o;
- return convertShortArrayToByteArray(numbers, byteOrder);
+ short numbers[] = (short[]) o;
+ return BinaryConversions.convertToByteArray(numbers, byteOrder);
}
- else if (o instanceof Integer[])
+ else if (o instanceof Short[])
{
- Integer numbers[] = (Integer[]) o;
- int values[] = new int[numbers.length];
+ Short numbers[] = (Short[]) o;
+ short values[] = new short[numbers.length];
for (int i = 0; i < values.length; i++)
- values[i] = numbers[i].intValue();
- return convertShortArrayToByteArray(values, byteOrder);
+ values[i] = numbers[i].shortValue();
+ return BinaryConversions.convertToByteArray(values, byteOrder);
}
else
throw new ImageWriteException("Invalid data: " + o + " ("
Added: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/taginfos/TagInfo.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/taginfos/TagInfo.java?rev=1245871&view=auto
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/taginfos/TagInfo.java (added)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/taginfos/TagInfo.java Sat Feb 18 06:43:33 2012
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.sanselan.formats.tiff.taginfos;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.sanselan.ImageReadException;
+import org.apache.commons.sanselan.ImageWriteException;
+import org.apache.commons.sanselan.formats.tiff.TiffField;
+import org.apache.commons.sanselan.formats.tiff.constants.TiffDirectoryConstants;
+import org.apache.commons.sanselan.formats.tiff.constants.TiffDirectoryType;
+import org.apache.commons.sanselan.formats.tiff.constants.TiffFieldTypeConstants;
+import org.apache.commons.sanselan.formats.tiff.fieldtypes.FieldType;
+
+public abstract class TagInfo implements TiffDirectoryConstants, TiffFieldTypeConstants
+{
+ public static final int LENGTH_UNKNOWN = -1;
+
+ public TagInfo(String name, int tag, FieldType dataType, int length,
+ TiffDirectoryType exifDirectory)
+ {
+ this(name, tag, Arrays.asList(dataType), length, exifDirectory);
+ }
+
+ public TagInfo(String name, int tag, FieldType dataType, int length,
+ TiffDirectoryType exifDirectory, boolean isOffset)
+ {
+ this(name, tag, Arrays.asList(dataType), length, exifDirectory, isOffset);
+ }
+
+ public TagInfo(String name, int tag, FieldType dataType, int length)
+ {
+ this(name, tag, Arrays.asList(dataType), length, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
+ }
+
+ public TagInfo(String name, int tag, FieldType dataType)
+ {
+ this(name, tag, dataType, LENGTH_UNKNOWN, TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN);
+ }
+
+ public final String name;
+ public final int tag;
+ public final List<FieldType> dataTypes;
+ public final int length;
+ public final TiffDirectoryType directoryType;
+ private final boolean isOffset;
+
+ public TagInfo(String name, int tag, List<FieldType> dataTypes, int length,
+ TiffDirectoryType exifDirectory)
+ {
+ this(name, tag, dataTypes, length, exifDirectory, false);
+ }
+
+ public TagInfo(String name, int tag, List<FieldType> dataTypes, int length,
+ TiffDirectoryType exifDirectory, boolean isOffset)
+ {
+ this.name = name;
+ this.tag = tag;
+ this.dataTypes = Collections.unmodifiableList(new ArrayList<FieldType>(dataTypes));
+ this.length = length;
+ this.directoryType = exifDirectory;
+ this.isOffset = isOffset;
+ }
+
+ public Object getValue(TiffField entry) throws ImageReadException
+ {
+ Object o = entry.fieldType.getSimpleValue(entry);
+ return o;
+ }
+
+ public byte[] encodeValue(FieldType fieldType, Object value, int byteOrder)
+ throws ImageWriteException
+ {
+ return fieldType.writeData(value, byteOrder);
+ }
+
+ public String getDescription()
+ {
+ return tag + " (0x" + Integer.toHexString(tag) + ": " + name + "): ";
+ }
+
+ public String toString()
+ {
+ return "[TagInfo. tag: " + tag + " (0x" + Integer.toHexString(tag)
+ + ", name: " + name + "]";
+ }
+
+ public boolean isOffset()
+ {
+ return isOffset;
+ }
+
+ public boolean isText()
+ {
+ return false;
+ }
+}
\ No newline at end of file
Propchange: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/taginfos/TagInfo.java
------------------------------------------------------------------------------
svn:eol-style = native