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.java344
1 files changed, 344 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..9ca08b5
--- /dev/null
+++ b/awt/javax/imageio/spi/ImageReaderWriterSpi.java
@@ -0,0 +1,344 @@
+/*
+ * 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.
+ *
+ * @since Android 1.0
+ */
+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 plug-in 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 plug-in class name.
+ * @param supportsStandardStreamMetadataFormat
+ * the value indicating if stream metadata can be described by
+ * standard 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 the 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 the 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;
+ }
+}