diff --git a/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java b/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java index c9a81252..dbf91fd7 100644 --- a/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java +++ b/contrib/src/test/java/com/twelvemonkeys/contrib/tiff/TIFFUtilitiesTest.java @@ -31,8 +31,9 @@ package com.twelvemonkeys.contrib.tiff; import com.twelvemonkeys.contrib.tiff.TIFFUtilities.TIFFExtension; -import com.twelvemonkeys.imageio.plugins.tiff.TIFFMedataFormat; +import com.twelvemonkeys.imageio.plugins.tiff.TIFFImageMetadataFormat; import com.twelvemonkeys.io.FileUtil; + import org.junit.Assert; import org.junit.Test; import org.w3c.dom.Node; @@ -154,7 +155,7 @@ public class TIFFUtilitiesTest { reader.setInput(checkTest1); for (int i = 0; i < 3; i++) { Node metaData = reader.getImageMetadata(i) - .getAsTree(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); + .getAsTree(TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); short orientation = ((Number) expression.evaluate(metaData, XPathConstants.NUMBER)).shortValue(); Assert.assertEquals(orientation, TIFFExtension.ORIENTATION_RIGHTTOP); } @@ -171,7 +172,7 @@ public class TIFFUtilitiesTest { reader.setInput(checkTest2); for (int i = 0; i < 3; i++) { Node metaData = reader.getImageMetadata(i) - .getAsTree(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); + .getAsTree(TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); short orientation = ((Number) expression.evaluate(metaData, XPathConstants.NUMBER)).shortValue(); Assert.assertEquals(orientation, i == 1 ? TIFFExtension.ORIENTATION_BOTRIGHT diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFProviderInfo.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFProviderInfo.java index 71495539..9a871520 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFProviderInfo.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/BigTIFFProviderInfo.java @@ -53,7 +53,7 @@ final class BigTIFFProviderInfo extends ReaderWriterProviderInfo { null, null, false, TIFFStreamMetadata.SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, "com.twelvemonkeys.imageio.plugins.tiff.TIFFStreamMetadataFormat", null, null, - true, TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, "com.twelvemonkeys.imageio.plugins.tiff.TIFFMedataFormat", null, null + true, TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, "com.twelvemonkeys.imageio.plugins.tiff.TIFFMedataFormat", null, null ); } } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java index 2b3df03d..e857a63a 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java @@ -38,6 +38,7 @@ import com.twelvemonkeys.imageio.metadata.tiff.Rational; import com.twelvemonkeys.imageio.metadata.tiff.TIFF; import com.twelvemonkeys.imageio.metadata.tiff.TIFFEntry; import com.twelvemonkeys.lang.Validate; + import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -84,7 +85,7 @@ public final class TIFFImageMetadata extends AbstractMetadata { * or {@link #mergeTree(String, Node)} methods. */ public TIFFImageMetadata(final Directory ifd) { - super(true, TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, TIFFMedataFormat.class.getName(), null, null); + super(true, TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, TIFFImageMetadataFormat.class.getName(), null, null); this.ifd = Validate.notNull(ifd, "IFD"); this.original = ifd; } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataFormat.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataFormat.java new file mode 100644 index 00000000..5ea74959 --- /dev/null +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataFormat.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2016, Harald Kuhr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.twelvemonkeys.imageio.plugins.tiff; + +import javax.imageio.ImageTypeSpecifier; +import javax.imageio.metadata.IIOMetadataFormatImpl; + +/** + * TIFFMedataFormat. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: TIFFMedataFormat.java,v 1.0 17/04/15 harald.kuhr Exp$ + */ +public final class TIFFImageMetadataFormat extends IIOMetadataFormatImpl { + private static final TIFFImageMetadataFormat INSTANCE = new TIFFImageMetadataFormat(); + + // We'll reuse the metadata formats defined for JAI + public static final String SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME = "com_sun_media_imageio_plugins_tiff_image_1.0"; + + public TIFFImageMetadataFormat() { + super(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, CHILD_POLICY_SOME); + + // TODO: Implement! + } + + @Override + public boolean canNodeAppear(String elementName, ImageTypeSpecifier imageType) { + return true; + } + + public static TIFFImageMetadataFormat getInstance() { + return INSTANCE; + } +} diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java index 85fbb6c5..f350f8a2 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriter.java @@ -64,6 +64,7 @@ import java.util.*; import java.util.zip.Deflater; import java.util.zip.DeflaterOutputStream; +import static com.twelvemonkeys.imageio.plugins.tiff.TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; import static com.twelvemonkeys.imageio.plugins.tiff.TIFFStreamMetadata.configureStreamByteOrder; /** @@ -738,8 +739,8 @@ public final class TIFFImageWriter extends ImageWriterBase { TIFFImageMetadata outData = new TIFFImageMetadata(Collections.emptySet()); try { - if (Arrays.asList(inData.getMetadataFormatNames()).contains(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME)) { - outData.setFromTree(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, inData.getAsTree(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME)); + if (Arrays.asList(inData.getMetadataFormatNames()).contains(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME)) { + outData.setFromTree(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, inData.getAsTree(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME)); } else if (inData.isStandardMetadataFormatSupported()) { outData.setFromTree(IIOMetadataFormatImpl.standardMetadataFormatName, inData.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName)); diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java index 82333d24..c2462bc6 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFMedataFormat.java @@ -39,18 +39,17 @@ import javax.imageio.metadata.IIOMetadataFormatImpl; * @author Harald Kuhr * @author last modified by $Author: harald.kuhr$ * @version $Id: TIFFMedataFormat.java,v 1.0 17/04/15 harald.kuhr Exp$ + * @deprecated Use {@link TIFFImageMetadataFormat} instead. */ +@Deprecated public final class TIFFMedataFormat extends IIOMetadataFormatImpl { - // TODO: Fix typo in class name + rename to TIFFImageMetadataFormat + // TODO: Delete class in next version private static final TIFFMedataFormat INSTANCE = new TIFFMedataFormat(); - // We'll reuse the metadata formats defined for JAI - public static final String SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME = "com_sun_media_imageio_plugins_tiff_image_1.0"; + public static final String SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME = TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; public TIFFMedataFormat() { super(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, CHILD_POLICY_SOME); - - // TODO: Implement! } @Override diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java index 784a6339..ff3f132b 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFProviderInfo.java @@ -53,7 +53,7 @@ final class TIFFProviderInfo extends ReaderWriterProviderInfo { "com.twelvemonkeys.imageio.plugins.tiff.TIFFImageWriter", new String[] {"com.twelvemonkeys.imageio.plugins.tiff.TIFFImageWriterSpi"}, false, TIFFStreamMetadata.SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, "com.twelvemonkeys.imageio.plugins.tiff.TIFFStreamMetadataFormat", null, null, - true, TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, "com.twelvemonkeys.imageio.plugins.tiff.TIFFMedataFormat", null, null + true, TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, "com.twelvemonkeys.imageio.plugins.tiff.TIFFMedataFormat", null, null ); } } diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java index 4041e95a..0fce4b62 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java @@ -37,6 +37,7 @@ import com.twelvemonkeys.imageio.metadata.tiff.TIFFEntry; import com.twelvemonkeys.imageio.metadata.tiff.TIFFReader; import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi; import com.twelvemonkeys.lang.StringUtil; + import org.junit.Test; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -55,6 +56,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; +import static com.twelvemonkeys.imageio.plugins.tiff.TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; import static org.junit.Assert.*; /** @@ -188,11 +190,11 @@ public class TIFFImageMetadataTest { @Test public void testMetadataNativeFormat() throws IOException { IIOMetadata metadata = createMetadata("/tiff/quad-lzw.tif"); - Node root = metadata.getAsTree(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); + Node root = metadata.getAsTree(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); // Root: "com_sun_media_imageio_plugins_tiff_image_1.0" assertNotNull(root); - assertEquals(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, root.getNodeName()); + assertEquals(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, root.getNodeName()); assertEquals(1, root.getChildNodes().getLength()); // IFD: "TIFFIFD" @@ -244,10 +246,10 @@ public class TIFFImageMetadataTest { public void testTreeDetached() throws IOException { IIOMetadata metadata = createMetadata("/tiff/sm_colors_tile.tif"); - Node nativeTree = metadata.getAsTree(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); + Node nativeTree = metadata.getAsTree(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); assertNotNull(nativeTree); - Node nativeTree2 = metadata.getAsTree(TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); + Node nativeTree2 = metadata.getAsTree(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME); assertNotNull(nativeTree2); assertNotSame(nativeTree, nativeTree2); @@ -266,7 +268,7 @@ public class TIFFImageMetadataTest { public void testMergeTree() throws IOException { TIFFImageMetadata metadata = (TIFFImageMetadata) createMetadata("/tiff/sm_colors_tile.tif"); - String nativeFormat = TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; + String nativeFormat = SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; Node nativeTree = metadata.getAsTree(nativeFormat); assertNotNull(nativeTree); @@ -376,7 +378,7 @@ public class TIFFImageMetadataTest { public void testMergeTreeFormatMisMatch() throws IOException { IIOMetadata metadata = createMetadata("/tiff/sm_colors_tile.tif"); - String nativeFormat = TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; + String nativeFormat = SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; metadata.mergeTree(nativeFormat, new IIOMetadataNode("com_foo_bar_tiff_42")); } @@ -384,7 +386,7 @@ public class TIFFImageMetadataTest { public void testMergeTreeInvalid() throws IOException { IIOMetadata metadata = createMetadata("/tiff/sm_colors_tile.tif"); - String nativeFormat = TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; + String nativeFormat = SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; metadata.mergeTree(nativeFormat, new IIOMetadataNode(nativeFormat)); // Requires at least one child node } @@ -395,7 +397,7 @@ public class TIFFImageMetadataTest { // Read from file, set empty to see that all is cleared TIFFImageMetadata metadata = (TIFFImageMetadata) createMetadata("/tiff/sm_colors_tile.tif"); - String nativeFormat = TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; + String nativeFormat = SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; IIOMetadataNode root = new IIOMetadataNode(nativeFormat); root.appendChild(new IIOMetadataNode("TIFFIFD")); @@ -418,7 +420,7 @@ public class TIFFImageMetadataTest { TIFFImageMetadata metadata = new TIFFImageMetadata(Collections.emptySet()); - String nativeFormat = TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; + String nativeFormat = SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; IIOMetadataNode root = new IIOMetadataNode(nativeFormat); IIOMetadataNode ifdNode = new IIOMetadataNode("TIFFIFD"); @@ -492,7 +494,7 @@ public class TIFFImageMetadataTest { public void testSetFromTreeFormatMisMatch() throws IOException { IIOMetadata metadata = createMetadata("/tiff/sm_colors_tile.tif"); - String nativeFormat = TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; + String nativeFormat = SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; metadata.setFromTree(nativeFormat, new IIOMetadataNode("com_foo_bar_tiff_42")); } @@ -500,7 +502,7 @@ public class TIFFImageMetadataTest { public void testSetFromTreeInvalid() throws IOException { IIOMetadata metadata = createMetadata("/tiff/sm_colors_tile.tif"); - String nativeFormat = TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; + String nativeFormat = SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; metadata.setFromTree(nativeFormat, new IIOMetadataNode(nativeFormat)); // Requires at least one child node } diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterTest.java index fcf07726..a8fa4d2b 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageWriterTest.java @@ -63,6 +63,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static com.twelvemonkeys.imageio.plugins.tiff.TIFFImageMetadataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME; import static com.twelvemonkeys.imageio.plugins.tiff.TIFFImageMetadataTest.createTIFFFieldNode; import static com.twelvemonkeys.imageio.util.ImageReaderAbstractTest.assertRGBEquals; import static org.junit.Assert.*; @@ -113,7 +114,7 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTest