diff options
Diffstat (limited to 'awt/javax/imageio/spi/ImageReaderWriterSpi.java')
-rw-r--r-- | awt/javax/imageio/spi/ImageReaderWriterSpi.java | 315 |
1 files changed, 315 insertions, 0 deletions
diff --git a/awt/javax/imageio/spi/ImageReaderWriterSpi.java b/awt/javax/imageio/spi/ImageReaderWriterSpi.java new file mode 100644 index 0000000..b3c0f92 --- /dev/null +++ b/awt/javax/imageio/spi/ImageReaderWriterSpi.java @@ -0,0 +1,315 @@ +/* + * 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. + */ +/** + * @author Rustem V. Rafikov + * @version $Revision: 1.3 $ + */ +package javax.imageio.spi; + +import org.apache.harmony.x.imageio.metadata.IIOMetadataUtils; + +import javax.imageio.metadata.IIOMetadataFormat; + +/** + * The ImageReaderWriterSpi class is a superclass for the + * ImageReaderSpi and ImageWriterSpi SPIs. + */ +public abstract class ImageReaderWriterSpi extends IIOServiceProvider + implements RegisterableService { + + /** The names. */ + protected String[] names; + + /** The suffixes. */ + protected String[] suffixes; + + /** The MIME types. */ + protected String[] MIMETypes; + + /** The plugin class name. */ + protected String pluginClassName; + + /** Whether the reader/writer supports standard stream metadata format. */ + protected boolean supportsStandardStreamMetadataFormat; + + /** The native stream metadata format name. */ + protected String nativeStreamMetadataFormatName; + + /** The native stream metadata format class name. */ + protected String nativeStreamMetadataFormatClassName; + + /** The extra stream metadata format names. */ + protected String[] extraStreamMetadataFormatNames; + + /** The extra stream metadata format class names. */ + protected String[] extraStreamMetadataFormatClassNames; + + /** Whether the reader/writer supports standard image metadata format. */ + protected boolean supportsStandardImageMetadataFormat; + + /** The native image metadata format name. */ + protected String nativeImageMetadataFormatName; + + /** The native image metadata format class name. */ + protected String nativeImageMetadataFormatClassName; + + /** The extra image metadata format names. */ + protected String[] extraImageMetadataFormatNames; + + /** The extra image metadata format class names. */ + protected String[] extraImageMetadataFormatClassNames; + + /** + * Instantiates a new ImageReaderWriterSpi. + * + * @param vendorName the vendor name. + * @param version the version. + * @param names the format names. + * @param suffixes the array of strings representing the file suffixes. + * @param MIMETypes the an array of strings representing MIME types. + * @param pluginClassName the plugin class name. + * @param supportsStandardStreamMetadataFormat the value indicating + * if stream metadata can be described by standart metadata format. + * @param nativeStreamMetadataFormatName the native stream metadata + * format name, returned by getNativeStreamMetadataFormatName. + * @param nativeStreamMetadataFormatClassName the native stream + * metadata format class name, returned by getNativeStreamMetadataFormat. + * @param extraStreamMetadataFormatNames the extra stream metadata + * format names, returned by getExtraStreamMetadataFormatNames. + * @param extraStreamMetadataFormatClassNames the extra stream metadata + * format class names, returned by getStreamMetadataFormat. + * @param supportsStandardImageMetadataFormat the value indicating + * if image metadata can be described by standard metadata format. + * @param nativeImageMetadataFormatName the native image metadata + * format name, returned by getNativeImageMetadataFormatName. + * @param nativeImageMetadataFormatClassName the native image + * metadata format class name, returned by getNativeImageMetadataFormat. + * @param extraImageMetadataFormatNames the extra image metadata + * format names, returned by getExtraImageMetadataFormatNames. + * @param extraImageMetadataFormatClassNames the extra image metadata + * format class names, returned by getImageMetadataFormat. + */ + public ImageReaderWriterSpi(String vendorName, String version, String[] names, + String[] suffixes, String[] MIMETypes, + String pluginClassName, + boolean supportsStandardStreamMetadataFormat, + String nativeStreamMetadataFormatName, + String nativeStreamMetadataFormatClassName, + String[] extraStreamMetadataFormatNames, + String[] extraStreamMetadataFormatClassNames, + boolean supportsStandardImageMetadataFormat, + String nativeImageMetadataFormatName, + String nativeImageMetadataFormatClassName, + String[] extraImageMetadataFormatNames, + String[] extraImageMetadataFormatClassNames) { + super(vendorName, version); + + if (names == null || names.length == 0) { + throw new NullPointerException("format names array cannot be NULL or empty"); + } + + if (pluginClassName == null) { + throw new NullPointerException("Plugin class name cannot be NULL"); + } + + // We clone all the arrays to be consistent with the fact that + // some methods of this class must return clones of the arrays + // as it is stated in the spec. + this.names = names.clone(); + this.suffixes = suffixes == null ? null : suffixes.clone(); + this.MIMETypes = MIMETypes == null ? null : MIMETypes.clone(); + this.pluginClassName = pluginClassName; + this.supportsStandardStreamMetadataFormat = supportsStandardStreamMetadataFormat; + this.nativeStreamMetadataFormatName = nativeStreamMetadataFormatName; + this.nativeStreamMetadataFormatClassName = nativeStreamMetadataFormatClassName; + + this.extraStreamMetadataFormatNames = + extraStreamMetadataFormatNames == null ? + null : extraStreamMetadataFormatNames.clone(); + + this.extraStreamMetadataFormatClassNames = + extraStreamMetadataFormatClassNames == null ? + null : extraStreamMetadataFormatClassNames.clone(); + + this.supportsStandardImageMetadataFormat = supportsStandardImageMetadataFormat; + this.nativeImageMetadataFormatName = nativeImageMetadataFormatName; + this.nativeImageMetadataFormatClassName = nativeImageMetadataFormatClassName; + + this.extraImageMetadataFormatNames = + extraImageMetadataFormatNames == null ? + null : extraImageMetadataFormatNames.clone(); + + this.extraImageMetadataFormatClassNames = + extraImageMetadataFormatClassNames == null ? + null : extraImageMetadataFormatClassNames.clone(); + } + + /** + * Instantiates a new ImageReaderWriterSpi. + */ + public ImageReaderWriterSpi() {} + + /** + * Gets an array of strings representing names of the formats + * that can be used by the ImageReader + * or ImageWriter implementation associated with this service + * provider. + * + * @return an array of supported format names. + */ + public String[] getFormatNames() { + return names.clone(); + } + + /** + * Gets an array of strings representing file suffixes + * associated with the formats that can be used by the + * ImageReader or ImageWriter implementation of this + * service provider. + * + * @return an array of file suffixes. + */ + public String[] getFileSuffixes() { + return suffixes == null ? null : suffixes.clone(); + } + + /** + * Gets an array of strings with the names of + * additional formats of the image metadata objects + * produced or consumed by this plug-in. + * + * @return the array of extra image metadata format names. + */ + public String[] getExtraImageMetadataFormatNames() { + return extraImageMetadataFormatNames == null ? null : extraImageMetadataFormatNames.clone(); + } + + /** + * Gets an array of strings with the names of + * additional formats of the stream metadata objects + * produced or consumed by this plug-in. + * + * @return the array of extra stream metadata format names. + */ + public String[] getExtraStreamMetadataFormatNames() { + return extraStreamMetadataFormatNames == null ? null : extraStreamMetadataFormatNames.clone(); + } + + /** + * Gets an IIOMetadataFormat object for the specified image + * metadata format name. + * + * @param formatName the format name. + * + * @return the IIOMetadataFormat, or null. + */ + public IIOMetadataFormat getImageMetadataFormat(String formatName) { + return IIOMetadataUtils.instantiateMetadataFormat( + formatName, supportsStandardImageMetadataFormat, + nativeImageMetadataFormatName, nativeImageMetadataFormatClassName, + extraImageMetadataFormatNames, extraImageMetadataFormatClassNames + ); + } + + /** + * Gets an IIOMetadataFormat object for the specified stream + * metadata format name. + * + * @param formatName the format name. + * + * @return the IIOMetadataFormat, or null. + */ + public IIOMetadataFormat getStreamMetadataFormat(String formatName) { + return IIOMetadataUtils.instantiateMetadataFormat( + formatName, supportsStandardStreamMetadataFormat, + nativeStreamMetadataFormatName, nativeStreamMetadataFormatClassName, + extraStreamMetadataFormatNames, extraStreamMetadataFormatClassNames + ); + } + + /** + * Gets an array of strings representing the MIME types + * of the formats that are supported by the + * ImageReader or ImageWriter implementation of this + * service provider. + * + * @return the array MIME types. + */ + public String[] getMIMETypes() { + return MIMETypes == null ? null : MIMETypes.clone(); + } + + /** + * Gets the name of the native image metadata format for + * this reader/writer, which allows for lossless encoding + * or decoding of the image metadata with the format. + * + * @return the string with native image metadata format name, + * or null. + */ + public String getNativeImageMetadataFormatName() { + return nativeImageMetadataFormatName; + } + + /** + * Gets the name of the native stream metadata format for + * this reader/writer, which allows for lossless encoding + * or decoding of the stream metadata with the format. + * + * @return the string with native stream metadata format name, + * or null. + */ + public String getNativeStreamMetadataFormatName() { + return nativeStreamMetadataFormatName; + } + + /** + * Gets the class name of the ImageReader + * or ImageWriter associated with this service provider. + * + * @return the class name. + */ + public String getPluginClassName() { + return pluginClassName; + } + + /** + * Checks if the standard metadata format is supported + * by the getAsTree and setFromTree methods for the + * image metadata objects produced or consumed by this + * reader or writer. + * + * @return true, if standard image metadata format is + * supported, false otherwise. + */ + public boolean isStandardImageMetadataFormatSupported() { + return supportsStandardImageMetadataFormat; + } + + /** + * Checks if the standard metadata format is supported + * by the getAsTree and setFromTree methods for the + * stream metadata objects produced or consumed by this + * reader or writer. + * + * @return true, if standard stream metadata format is + * supported, false otherwise. + */ + public boolean isStandardStreamMetadataFormatSupported() { + return supportsStandardStreamMetadataFormat; + } +} |