summaryrefslogtreecommitdiffstats
path: root/awt/javax/imageio/spi/ImageReaderWriterSpi.java
diff options
context:
space:
mode:
Diffstat (limited to 'awt/javax/imageio/spi/ImageReaderWriterSpi.java')
-rw-r--r--awt/javax/imageio/spi/ImageReaderWriterSpi.java315
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;
+ }
+}