diff options
Diffstat (limited to 'awt/javax/imageio/spi/ImageWriterSpi.java')
-rw-r--r-- | awt/javax/imageio/spi/ImageWriterSpi.java | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/awt/javax/imageio/spi/ImageWriterSpi.java b/awt/javax/imageio/spi/ImageWriterSpi.java new file mode 100644 index 0000000..979ef77 --- /dev/null +++ b/awt/javax/imageio/spi/ImageWriterSpi.java @@ -0,0 +1,209 @@ +/* + * 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 javax.imageio.stream.ImageInputStream; +import javax.imageio.ImageTypeSpecifier; +import javax.imageio.ImageWriter; +import java.awt.image.RenderedImage; +import java.io.IOException; + +/** + * The ImageWriterSpi abstract class is a service provider + * interface (SPI) for ImageWriters. + */ +public abstract class ImageWriterSpi extends ImageReaderWriterSpi { + + /** The STANDARD_OUTPUT_TYPE contains ImageInputStream.class. */ + public static final Class[] STANDARD_OUTPUT_TYPE = new Class[] {ImageInputStream.class}; + + /** The output types. */ + protected Class[] outputTypes; + + /** The reader spi names. */ + protected String[] readerSpiNames; + + /** + * Instantiates a new ImageWriterSpi. + */ + protected ImageWriterSpi() { + throw new UnsupportedOperationException("Not supported yet"); + } + + /** + * Instantiates a new ImageWriterSpi with the specified parameters. + * + * @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 outputTypes the output types. + * @param readerSpiNames the array of strings with class names of all + * associated ImageReaders. + * @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 ImageWriterSpi(String vendorName, String version, String[] names, + String[] suffixes, String[] MIMETypes, + String pluginClassName, + Class[] outputTypes, String[] readerSpiNames, + boolean supportsStandardStreamMetadataFormat, + String nativeStreamMetadataFormatName, + String nativeStreamMetadataFormatClassName, + String[] extraStreamMetadataFormatNames, + String[] extraStreamMetadataFormatClassNames, + boolean supportsStandardImageMetadataFormat, + String nativeImageMetadataFormatName, + String nativeImageMetadataFormatClassName, + String[] extraImageMetadataFormatNames, + String[] extraImageMetadataFormatClassNames) { + super(vendorName, version, names, suffixes, MIMETypes, pluginClassName, + supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName, + nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames, + extraStreamMetadataFormatClassNames, supportsStandardImageMetadataFormat, + nativeImageMetadataFormatName, nativeImageMetadataFormatClassName, + extraImageMetadataFormatNames, extraImageMetadataFormatClassNames); + + if (outputTypes == null || outputTypes.length == 0) { + throw new NullPointerException("output types array cannot be NULL or empty"); + } + + this.outputTypes = outputTypes; + this.readerSpiNames = readerSpiNames; + } + + /** + * Returns true if the format of the writer's output is lossless. + * The default implementation returns true. + * + * @return true, if a format is lossless, false otherwise. + */ + public boolean isFormatLossless() { + return true; + } + + /** + * Gets an array of Class objects whose types + * can be used as output for this writer. + * + * @return the output types. + */ + public Class[] getOutputTypes() { + return outputTypes; + } + + /** + * Checks whether or not the ImageWriter implementation associated + * with this service provider can encode an image with + * the specified type. + * + * @param type the ImageTypeSpecifier. + * + * @return true, if an image with the specified type can be + * encoded, false otherwise. + */ + public abstract boolean canEncodeImage(ImageTypeSpecifier type); + + /** + * Checks whether or not the ImageWriter implementation associated + * with this service provider can encode the specified RenderedImage. + * + * @param im the RenderedImage. + * + * @return true, if RenderedImage can be encoded, + * false otherwise. + */ + public boolean canEncodeImage(RenderedImage im) { + return canEncodeImage(ImageTypeSpecifier.createFromRenderedImage(im)); + } + + /** + * Returns an instance of the ImageWriter implementation for + * this service provider. + * + * @return the ImageWriter. + * + * @throws IOException Signals that an I/O exception has occurred. + */ + public ImageWriter createWriterInstance() throws IOException { + return createWriterInstance(null); + } + + /** + * Returns an instance of the ImageWriter implementation for + * this service provider. + * + * @param extension the a plugin specific extension object, or null. + * + * @return the ImageWriter. + * + * @throws IOException Signals that an I/O exception has occurred. + */ + public abstract ImageWriter createWriterInstance(Object extension) throws IOException; + + /** + * Checks whether or not the specified ImageWriter object + * is an instance of the ImageWriter associated with this + * service provider or not. + * + * @param writer the ImageWriter. + * + * @return true, if the specified ImageWriter object + * is an instance of the ImageWriter associated with this + * service provider, false otherwise. + */ + public boolean isOwnWriter(ImageWriter writer) { + throw new UnsupportedOperationException("Not supported yet"); + } + + /** + * Gets an array of strings with names of the ImageReaderSpi + * classes that support the internal metadata representation + * used by the ImageWriter of this service provider, or null if + * there are no such ImageReaders. + * + * @return an array of strings with names of the ImageWriterSpi + * classes. + */ + public String[] getImageReaderSpiNames() { + return readerSpiNames; + } +} |