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 [5/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/write/TiffOutputSet.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/write/TiffOutputSet.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/write/TiffOutputSet.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/formats/tiff/write/TiffOutputSet.java Sat Feb 18 06:43:33 2012
@@ -20,9 +20,10 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.commons.sanselan.ImageWriteException;
+import org.apache.commons.sanselan.common.RationalNumberUtilities;
import org.apache.commons.sanselan.formats.tiff.constants.GpsTagConstants;
-import org.apache.commons.sanselan.formats.tiff.constants.TagInfo;
import org.apache.commons.sanselan.formats.tiff.constants.TiffConstants;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
import org.apache.commons.sanselan.util.Debug;
public final class TiffOutputSet implements TiffConstants
@@ -153,21 +154,12 @@ public final class TiffOutputSet impleme
String latitudeRef = latitude < 0 ? "S" : "N";
latitude = Math.abs(latitude);
- {
- TiffOutputField longitudeRefField = TiffOutputField.create(
- GpsTagConstants.GPS_LONGITUDE_REF.tagInfo, byteOrder,
- longitudeRef);
- gpsDirectory.removeField(GpsTagConstants.GPS_LONGITUDE_REF.tagInfo);
- gpsDirectory.add(longitudeRefField);
- }
+ gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF);
+ gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_DEST_LONGITUDE_REF, longitudeRef);
+
+ gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF);
+ gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_DEST_LATITUDE_REF, latitudeRef);
- {
- TiffOutputField latitudeRefField = TiffOutputField.create(
- GpsTagConstants.GPS_LATITUDE_REF.tagInfo, byteOrder,
- latitudeRef);
- gpsDirectory.removeField(GpsTagConstants.GPS_LATITUDE_REF.tagInfo);
- gpsDirectory.add(latitudeRefField);
- }
{
double value = longitude;
@@ -178,15 +170,12 @@ public final class TiffOutputSet impleme
value %= 1;
value *= 60.0;
double longitudeSeconds = value;
- Double values[] = {
- new Double(longitudeDegrees), new Double(longitudeMinutes),
- new Double(longitudeSeconds),
- };
-
- TiffOutputField longitudeField = TiffOutputField.create(
- GpsTagConstants.GPS_LONGITUDE.tagInfo, byteOrder, values);
- gpsDirectory.removeField(GpsTagConstants.GPS_LONGITUDE.tagInfo);
- gpsDirectory.add(longitudeField);
+
+ gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE);
+ gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_DEST_LONGITUDE,
+ RationalNumberUtilities.getRationalNumber(longitudeDegrees),
+ RationalNumberUtilities.getRationalNumber(longitudeMinutes),
+ RationalNumberUtilities.getRationalNumber(longitudeSeconds));
}
{
@@ -198,15 +187,12 @@ public final class TiffOutputSet impleme
value %= 1;
value *= 60.0;
double latitudeSeconds = value;
- Double values[] = {
- new Double(latitudeDegrees), new Double(latitudeMinutes),
- new Double(latitudeSeconds),
- };
-
- TiffOutputField latitudeField = TiffOutputField.create(
- GpsTagConstants.GPS_LATITUDE.tagInfo, byteOrder, values);
- gpsDirectory.removeField(GpsTagConstants.GPS_LATITUDE.tagInfo);
- gpsDirectory.add(latitudeField);
+
+ gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE);
+ gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE,
+ RationalNumberUtilities.getRationalNumber(latitudeDegrees),
+ RationalNumberUtilities.getRationalNumber(latitudeMinutes),
+ RationalNumberUtilities.getRationalNumber(latitudeSeconds));
}
}
@@ -247,7 +233,7 @@ public final class TiffOutputSet impleme
public TiffOutputDirectory addRootDirectory() throws ImageWriteException
{
TiffOutputDirectory result = new TiffOutputDirectory(
- DIRECTORY_TYPE_ROOT);
+ DIRECTORY_TYPE_ROOT, byteOrder);
addDirectory(result);
return result;
}
@@ -255,14 +241,14 @@ public final class TiffOutputSet impleme
public TiffOutputDirectory addExifDirectory() throws ImageWriteException
{
TiffOutputDirectory result = new TiffOutputDirectory(
- DIRECTORY_TYPE_EXIF);
+ DIRECTORY_TYPE_EXIF, byteOrder);
addDirectory(result);
return result;
}
public TiffOutputDirectory addGPSDirectory() throws ImageWriteException
{
- TiffOutputDirectory result = new TiffOutputDirectory(DIRECTORY_TYPE_GPS);
+ TiffOutputDirectory result = new TiffOutputDirectory(DIRECTORY_TYPE_GPS, byteOrder);
addDirectory(result);
return result;
}
@@ -273,7 +259,7 @@ public final class TiffOutputSet impleme
getOrCreateExifDirectory();
TiffOutputDirectory result = new TiffOutputDirectory(
- DIRECTORY_TYPE_INTEROPERABILITY);
+ DIRECTORY_TYPE_INTEROPERABILITY, byteOrder);
addDirectory(result);
return result;
}
Modified: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/examples/MetadataExample.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/examples/MetadataExample.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/examples/MetadataExample.java (original)
+++ commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/examples/MetadataExample.java Sat Feb 18 06:43:33 2012
@@ -29,9 +29,9 @@ import org.apache.commons.sanselan.forma
import org.apache.commons.sanselan.formats.tiff.TiffImageMetadata;
import org.apache.commons.sanselan.formats.tiff.constants.ExifTagConstants;
import org.apache.commons.sanselan.formats.tiff.constants.GpsTagConstants;
-import org.apache.commons.sanselan.formats.tiff.constants.TagInfo;
import org.apache.commons.sanselan.formats.tiff.constants.TiffConstants;
import org.apache.commons.sanselan.formats.tiff.constants.TiffTagConstants;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
public class MetadataExample
{
@@ -58,20 +58,20 @@ public class MetadataExample
System.out.println("file: " + file.getPath());
// print out various interesting EXIF tags.
- printTagValue(jpegMetadata, TiffTagConstants.XRESOLUTION.tagInfo);
- printTagValue(jpegMetadata, TiffTagConstants.DATE_TIME.tagInfo);
+ printTagValue(jpegMetadata, TiffTagConstants.TIFF_TAG_XRESOLUTION);
+ printTagValue(jpegMetadata, TiffTagConstants.TIFF_TAG_DATE_TIME);
printTagValue(jpegMetadata,
- ExifTagConstants.DATE_TIME_ORIGINAL.tagInfo);
- printTagValue(jpegMetadata, ExifTagConstants.CREATE_DATE.tagInfo);
- printTagValue(jpegMetadata, ExifTagConstants.ISO.tagInfo);
+ ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL);
+ printTagValue(jpegMetadata, ExifTagConstants.EXIF_TAG_CREATE_DATE);
+ printTagValue(jpegMetadata, ExifTagConstants.EXIF_TAG_ISO);
printTagValue(jpegMetadata,
- ExifTagConstants.SHUTTER_SPEED_VALUE.tagInfo);
- printTagValue(jpegMetadata, ExifTagConstants.APERTURE_VALUE.tagInfo);
- printTagValue(jpegMetadata, ExifTagConstants.BRIGHTNESS_VALUE.tagInfo);
- printTagValue(jpegMetadata, GpsTagConstants.GPS_LATITUDE_REF.tagInfo);
- printTagValue(jpegMetadata, GpsTagConstants.GPS_LATITUDE.tagInfo);
- printTagValue(jpegMetadata, GpsTagConstants.GPS_LONGITUDE_REF.tagInfo);
- printTagValue(jpegMetadata, GpsTagConstants.GPS_LONGITUDE.tagInfo);
+ ExifTagConstants.EXIF_TAG_SHUTTER_SPEED_VALUE);
+ printTagValue(jpegMetadata, ExifTagConstants.EXIF_TAG_APERTURE_VALUE);
+ printTagValue(jpegMetadata, ExifTagConstants.EXIF_TAG_BRIGHTNESS_VALUE);
+ printTagValue(jpegMetadata, GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF);
+ printTagValue(jpegMetadata, GpsTagConstants.GPS_TAG_GPS_LATITUDE);
+ printTagValue(jpegMetadata, GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF);
+ printTagValue(jpegMetadata, GpsTagConstants.GPS_TAG_GPS_LONGITUDE);
System.out.println();
@@ -94,13 +94,13 @@ public class MetadataExample
// more specific example of how to manually access GPS values
TiffField gpsLatitudeRefField = jpegMetadata
- .findEXIFValueWithExactMatch(GpsTagConstants.GPS_LATITUDE_REF.tagInfo);
+ .findEXIFValueWithExactMatch(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF);
TiffField gpsLatitudeField = jpegMetadata
- .findEXIFValueWithExactMatch(GpsTagConstants.GPS_LATITUDE.tagInfo);
+ .findEXIFValueWithExactMatch(GpsTagConstants.GPS_TAG_GPS_LATITUDE);
TiffField gpsLongitudeRefField = jpegMetadata
- .findEXIFValueWithExactMatch(GpsTagConstants.GPS_LONGITUDE_REF.tagInfo);
+ .findEXIFValueWithExactMatch(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF);
TiffField gpsLongitudeField = jpegMetadata
- .findEXIFValueWithExactMatch(GpsTagConstants.GPS_LONGITUDE.tagInfo);
+ .findEXIFValueWithExactMatch(GpsTagConstants.GPS_TAG_GPS_LONGITUDE);
if (gpsLatitudeRefField != null && gpsLatitudeField != null
&& gpsLongitudeRefField != null
&& gpsLongitudeField != null)
Modified: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/examples/WriteExifMetadataExample.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/examples/WriteExifMetadataExample.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/examples/WriteExifMetadataExample.java (original)
+++ commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/examples/WriteExifMetadataExample.java Sat Feb 18 06:43:33 2012
@@ -26,6 +26,7 @@ import org.apache.commons.sanselan.Image
import org.apache.commons.sanselan.ImageWriteException;
import org.apache.commons.sanselan.Sanselan;
import org.apache.commons.sanselan.common.IImageMetadata;
+import org.apache.commons.sanselan.common.RationalNumber;
import org.apache.commons.sanselan.formats.jpeg.JpegImageMetadata;
import org.apache.commons.sanselan.formats.jpeg.exif.ExifRewriter;
import org.apache.commons.sanselan.formats.tiff.TiffImageMetadata;
@@ -125,16 +126,13 @@ public class WriteExifMetadataExample
// see
// org.apache.commons.sanselan.formats.tiff.constants.AllTagConstants
//
- TiffOutputField aperture = TiffOutputField.create(
- ExifTagConstants.APERTURE_VALUE.tagInfo,
- outputSet.byteOrder, new Double(0.3));
TiffOutputDirectory exifDirectory = outputSet
.getOrCreateExifDirectory();
// make sure to remove old value if present (this method will
// not fail if the tag does not exist).
exifDirectory
- .removeField(ExifTagConstants.APERTURE_VALUE.tagInfo);
- exifDirectory.add(aperture);
+ .removeField(ExifTagConstants.EXIF_TAG_APERTURE_VALUE);
+ exifDirectory.add(ExifTagConstants.EXIF_TAG_APERTURE_VALUE, RationalNumber.factoryMethod(3, 10));
}
{
@@ -232,7 +230,7 @@ public class WriteExifMetadataExample
// Note that this approach is crude: Exif data is organized in
// directories. The same tag/field may appear in more than one
// directory, and have different meanings in each.
- outputSet.removeField(ExifTagConstants.APERTURE_VALUE.tagInfo);
+ outputSet.removeField(ExifTagConstants.EXIF_TAG_APERTURE_VALUE);
// Option 2: precision
// We know the exact directory the tag should appear in, in this
@@ -246,7 +244,7 @@ public class WriteExifMetadataExample
.getExifDirectory();
if (null != exifDirectory)
exifDirectory
- .removeField(ExifTagConstants.APERTURE_VALUE.tagInfo);
+ .removeField(ExifTagConstants.EXIF_TAG_APERTURE_VALUE);
}
os = new FileOutputStream(dst);
Modified: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/AsciiFieldTest.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/AsciiFieldTest.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/AsciiFieldTest.java (original)
+++ commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/AsciiFieldTest.java Sat Feb 18 06:43:33 2012
@@ -59,9 +59,9 @@ public class AsciiFieldTest extends Exif
}
Map expectedFieldValues = new Hashtable();
- expectedFieldValues.put(new Integer(ExifTagConstants.MAKE.tagInfo.tag), "Canon");
- expectedFieldValues.put(new Integer(ExifTagConstants.MODEL.tagInfo.tag), "Canon PowerShot SD750");
- expectedFieldValues.put(new Integer(ExifTagConstants.MODIFY_DATE.tagInfo.tag), "2007:12:25 13:34:39");
+ expectedFieldValues.put(new Integer(ExifTagConstants.EXIF_TAG_MAKE.tag), "Canon");
+ expectedFieldValues.put(new Integer(ExifTagConstants.EXIF_TAG_MODEL.tag), "Canon PowerShot SD750");
+ expectedFieldValues.put(new Integer(ExifTagConstants.EXIF_TAG_MODIFY_DATE.tag), "2007:12:25 13:34:39");
Iterator expectedTags = expectedFieldValues.keySet().iterator();
while (expectedTags.hasNext()) {
Integer tag = (Integer) expectedTags.next();
Modified: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/MakerNoteFieldTest.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/MakerNoteFieldTest.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/MakerNoteFieldTest.java (original)
+++ commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/MakerNoteFieldTest.java Sat Feb 18 06:43:33 2012
@@ -36,7 +36,7 @@ public class MakerNoteFieldTest extends
protected void checkField(File imageFile, TiffField field)
throws IOException, ImageReadException, ImageWriteException
{
- if (field.tag != ExifTagConstants.MAKER_NOTE.tagInfo.tag)
+ if (field.tag != ExifTagConstants.EXIF_TAG_MAKER_NOTE.tag)
{
// if (field.tag == EXIF_TAG_EXIF_OFFSET.tag)
// ;
Modified: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/TextFieldTest.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/TextFieldTest.java?rev=1245871&r1=1245870&r2=1245871&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/TextFieldTest.java (original)
+++ commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/jpeg/exif/TextFieldTest.java Sat Feb 18 06:43:33 2012
@@ -38,12 +38,12 @@ public class TextFieldTest extends Speci
protected void checkField(File imageFile, TiffField field)
throws IOException, ImageReadException, ImageWriteException
{
- if (field.tag == ExifTagConstants.USER_COMMENT.tagInfo.tag)
+ if (field.tag == ExifTagConstants.EXIF_TAG_USER_COMMENT.tag)
{ /* do nothing */ }
- else if (field.tag == GpsTagConstants.GPS_PROCESSING_METHOD.tagInfo.tag
+ else if (field.tag == GpsTagConstants.GPS_TAG_GPS_PROCESSING_METHOD.tag
&& field.directoryType == TiffDirectoryType.EXIF_DIRECTORY_GPS.directoryType)
{ /* do nothing */ }
- else if (field.tag == GpsTagConstants.GPS_AREA_INFORMATION.tagInfo.tag
+ else if (field.tag == GpsTagConstants.GPS_TAG_GPS_AREA_INFORMATION.tag
&& field.directoryType == TiffDirectoryType.EXIF_DIRECTORY_GPS.directoryType)
{ /* do nothing */ }
else
Added: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java?rev=1245871&view=auto
==============================================================================
--- commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java (added)
+++ commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java Sat Feb 18 06:43:33 2012
@@ -0,0 +1,63 @@
+/*
+ * 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;
+
+import java.lang.reflect.Field;
+import java.util.List;
+
+import org.apache.commons.sanselan.SanselanTest;
+import org.apache.commons.sanselan.formats.tiff.constants.ExifTagConstants;
+import org.apache.commons.sanselan.formats.tiff.constants.GpsTagConstants;
+import org.apache.commons.sanselan.formats.tiff.constants.TiffTagConstants;
+import org.apache.commons.sanselan.formats.tiff.taginfos.TagInfo;
+
+public class TiffTagIntegrityTest extends SanselanTest {
+ public void testTagIntegrity() {
+ verifyFields(TiffTagConstants.class, TiffTagConstants.ALL_TIFF_TAGS);
+ verifyFields(GpsTagConstants.class, GpsTagConstants.ALL_GPS_TAGS);
+ verifyFields(ExifTagConstants.class, ExifTagConstants.ALL_EXIF_TAGS);
+ }
+
+ private void verifyFields(Class<?> cls, List<TagInfo> tags) {
+ Field[] fields = cls.getFields();
+ int tagCount = 0;
+ int foundCount = 0;
+ for (Field field : fields) {
+ field.setAccessible(true);
+ if (!(field.getType().isInstance(TagInfo.class))) {
+ continue;
+ }
+ ++tagCount;
+ TagInfo src = null;
+ try {
+ src = (TagInfo) field.get(null);
+ } catch (IllegalAccessException illegalAccess) {
+ }
+ if (src == null) {
+ continue;
+ }
+ for (int i = 0; i < tags.size(); i++) {
+ TagInfo tagInfo = tags.get(i);
+ if (tagInfo.tag == src.tag) {
+ ++foundCount;
+ break;
+ }
+ }
+ }
+ assertEquals(tagCount, foundCount);
+ }
+}
Propchange: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/formats/tiff/TiffTagIntegrityTest.java
------------------------------------------------------------------------------
svn:eol-style = native