From 8dd84930be0742fb359af876e34cd3cf87cebe54 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 2 Jun 2016 11:24:38 +0200 Subject: [PATCH] TIFF metadata fixes. --- .../plugins/tiff/TIFFMedataFormat.java | 6 +- .../plugins/tiff/TIFFStreamMetadata.java | 4 +- .../tiff/TIFFStreamMetadataFormat.java | 64 +++++++++++++++++++ 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataFormat.java 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 67abe9d2..54e9e1b9 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,19 +39,21 @@ import javax.imageio.metadata.IIOMetadataFormatImpl; * @version $Id: TIFFMedataFormat.java,v 1.0 17/04/15 harald.kuhr Exp$ */ public final class TIFFMedataFormat extends IIOMetadataFormatImpl { + // TODO: Fix typo in class name + rename to TIFFImageMetadataFormat 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_STREAM_METADATA_FORMAT_NAME = "com_sun_media_imageio_plugins_tiff_stream_1.0"; public TIFFMedataFormat() { super(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME, CHILD_POLICY_SOME); + + // TODO: Implement! } @Override public boolean canNodeAppear(String elementName, ImageTypeSpecifier imageType) { - return false; + return true; } public static TIFFMedataFormat getInstance() { diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java index 21cbe1f8..af1e38ab 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadata.java @@ -48,10 +48,12 @@ import static java.nio.ByteOrder.BIG_ENDIAN; */ public final class TIFFStreamMetadata extends IIOMetadata { + public static final String SUN_NATIVE_STREAM_METADATA_FORMAT_NAME = "com_sun_media_imageio_plugins_tiff_stream_1.0"; + ByteOrder byteOrder = BIG_ENDIAN; public TIFFStreamMetadata() { - super(false, TIFFMedataFormat.SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, null, null, null); + super(false, SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, null, null, null); } diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataFormat.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataFormat.java new file mode 100644 index 00000000..e81d38e4 --- /dev/null +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFStreamMetadataFormat.java @@ -0,0 +1,64 @@ +/* + * 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 "TwelveMonkeys" 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 OWNER 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; +import java.nio.ByteOrder; +import java.util.Arrays; + +/** + * TIFFStreamMetadataFormat. + * + * @author Harald Kuhr + * @author last modified by $Author: harald.kuhr$ + * @version $Id: TIFFStreamMetadataFormat.java,v 1.0 17/04/15 harald.kuhr Exp$ + */ +public final class TIFFStreamMetadataFormat extends IIOMetadataFormatImpl { + private static final TIFFStreamMetadataFormat INSTANCE = new TIFFStreamMetadataFormat(); + + // We'll reuse the metadata formats defined for JAI + public static final String SUN_NATIVE_STREAM_METADATA_FORMAT_NAME = "com_sun_media_imageio_plugins_tiff_stream_1.0"; + + private TIFFStreamMetadataFormat() { + super(SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, CHILD_POLICY_ALL); + + addElement("ByteOrder", SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, CHILD_POLICY_EMPTY); + addAttribute("ByteOrder", "value", DATATYPE_STRING, true, ByteOrder.BIG_ENDIAN.toString(), Arrays.asList(ByteOrder.BIG_ENDIAN.toString(), ByteOrder.LITTLE_ENDIAN.toString())); + } + + @Override + public boolean canNodeAppear(final String elementName, final ImageTypeSpecifier imageType) { + return true; + } + + public static TIFFStreamMetadataFormat getInstance() { + return INSTANCE; + } +}