blob: 9ca08b5ea08532edd1861a19ce014c5c8827fea4 [file] [log] [blame]
/*
* 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;
}
}