| /* |
| * 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; |
| } |
| } |