345 lines
12 KiB
Java
345 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.
|
||
|
*
|
||
|
* @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;
|
||
|
}
|
||
|
}
|