316 lines
12 KiB
Java
316 lines
12 KiB
Java
|
/*
|
||
|
* 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;
|
||
|
}
|
||
|
}
|