Index: javax/imageio/IIOParam.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/imageio/IIOParam.java,v retrieving revision 1.1 diff -u -r1.1 IIOParam.java --- javax/imageio/IIOParam.java 4 Oct 2004 07:22:51 -0000 1.1 +++ javax/imageio/IIOParam.java 5 Oct 2004 07:07:19 -0000 @@ -38,15 +38,120 @@ package javax.imageio; +import java.awt.Point; +import java.awt.Rectangle; + /** * @author Michael Koch (address@hidden) */ public abstract class IIOParam { + protected IIOParamController controller; + protected IIOParamController defaultController; + protected Point destinationOffset = new Point(0, 0); + protected ImageTypeSpecifier destinationType; + protected int[] sourceBands; + protected Rectangle sourceRegion; + protected int sourceXSubsampling; + protected int sourceYSubsampling; + protected int subsamplingXOffset; + protected int subsamplingYOffset; + /** * Initializes an IIOParam object. */ protected IIOParam() { + // Do nothing here. + } + + public boolean activateController() + { + if (controller == null) + return false; + + return controller.activate(this); + } + + public IIOParamController getController() + { + return controller; + } + + public IIOParamController getDefaultController() + { + return defaultController; + } + + public Point getDestinationOffset() + { + return destinationOffset; + } + + public ImageTypeSpecifier getDestinationType() + { + return destinationType; + } + + public int[] getSourceBands() + { + return sourceBands; + } + + public Rectangle getSourceRegion() + { + return sourceRegion; + } + + public int getSourceXSubsampling() + { + return sourceXSubsampling; + } + + public int getSourceYSubsampling() + { + return sourceYSubsampling; + } + + public int getSubsamplingXOffset() + { + return subsamplingXOffset; + } + + public int getSubsamplingYOffset() + { + return subsamplingYOffset; + } + + public boolean hasController() + { + return getController() != null; + } + + public void setController(IIOParamController controller) + { + this.controller = controller; + } + + public void setDestinationOffset(Point destinationOffset) + { + if (destinationOffset == null) + throw new IllegalArgumentException("destinationOffset is null"); + + this.destinationOffset = destinationOffset; + } + + public void setSourceRegion(Rectangle sourceRegion) + { + if (sourceRegion != null + && (sourceRegion.x < 0 + || sourceRegion.y < 0 + || sourceRegion.width <= 0 + || sourceRegion.height <= 0)) + throw new IllegalArgumentException("illegal source region"); + + // FIXME: Throw IllegalStateException. + + this.sourceRegion = sourceRegion; } } Index: javax/imageio/ImageReadParam.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/imageio/ImageReadParam.java,v retrieving revision 1.1 diff -u -r1.1 ImageReadParam.java --- javax/imageio/ImageReadParam.java 4 Oct 2004 08:15:27 -0000 1.1 +++ javax/imageio/ImageReadParam.java 5 Oct 2004 07:07:19 -0000 @@ -38,9 +38,73 @@ package javax.imageio; +import java.awt.Dimension; +import java.awt.image.BufferedImage; + /** * @author Michel Koch (address@hidden) */ public class ImageReadParam extends IIOParam { + protected boolean canSetSourceRenderSize; + protected BufferedImage destination; + protected int[] destinationBands; + protected int minProgressivePass; + protected int numProgressivePasses = Integer.MAX_VALUE; + protected Dimension sourceRenderSize; + + public ImageReadParam() + { + } + + public boolean canSetSourceRenderSize() + { + return canSetSourceRenderSize; + } + + public BufferedImage getDestination() + { + return destination; + } + + public int[] getDestinationBands() + { + return destinationBands; + } + + public int getSourceMaxProgressivePass() + { + if (getSourceNumProgressivePasses() == Integer.MAX_VALUE) + return Integer.MAX_VALUE; + + return getSourceMinProgressivePass() + getSourceNumProgressivePasses() - 1; + } + + public int getSourceMinProgressivePass() + { + return minProgressivePass; + } + + public int getSourceNumProgressivePasses() + { + return numProgressivePasses; + } + + public Dimension getSourceRenderSize() + { + return sourceRenderSize; + } + + public void setSourceRenderSize(Dimension size) + throws UnsupportedOperationException + { + if (! canSetSourceRenderSize()) + throw new UnsupportedOperationException + ("setting source render size not supported"); + + if (size.width <= 0 || size.height <= 0) + throw new IllegalArgumentException("negative dimension not allowed"); + + sourceRenderSize = size; + } } Index: javax/imageio/ImageReader.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/imageio/ImageReader.java,v retrieving revision 1.1 diff -u -r1.1 ImageReader.java --- javax/imageio/ImageReader.java 13 Apr 2004 13:54:13 -0000 1.1 +++ javax/imageio/ImageReader.java 5 Oct 2004 07:07:19 -0000 @@ -1,5 +1,5 @@ /* ImageReader.java -- Decodes raster images. - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,9 +38,454 @@ package javax.imageio; +import java.awt.image.BufferedImage; +import java.awt.image.Raster; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; + +import javax.imageio.event.IIOReadProgressListener; +import javax.imageio.event.IIOReadUpdateListener; +import javax.imageio.event.IIOReadWarningListener; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.spi.ImageReaderSpi; + public abstract class ImageReader { - // FIXME: Incomplete. This class is merely present in order to allow - // compilation of the javax.imageio.spi package, for which GNU - // Classpath does provide an implementation. + protected Locale[] availableLocales; + protected boolean ignoreMetadata; + protected Object input; + protected Locale locale; + protected int minIndex; + protected ImageReaderSpi originatingProvider; + protected List progressListeners; + protected boolean seekForwardOnly; + protected List updateListeners = new ArrayList(); + protected List warningListeners = new ArrayList(); + protected List warningLocales = new ArrayList(); + + protected ImageReader(ImageReaderSpi originatingProvider) + { + this.originatingProvider = originatingProvider; + } + + + public void addIIOReadProgressListener(IIOReadProgressListener listener) + { + if (listener == null) + return; + + progressListeners.add(listener); + } + + public void addIIOReadUpdateListener(IIOReadUpdateListener listener) + { + if (listener == null) + return; + + updateListeners.add(listener); + } + + public void addIIOReadWarningListener(IIOReadWarningListener listener) + { + if (listener == null) + return; + + warningListeners.add(listener); + } + + public boolean canReadRaster() + { + return false; + } + + public void dispose() + { + // The default implementation does nothing. + } + + public float getAspectRatio(int imageIndex) + throws IOException + { + return (float) (getWidth(imageIndex) / getHeight(imageIndex)); + } + + public Locale[] getAvailableLocales() + { + if (availableLocales == null) + return null; + + return (Locale[]) availableLocales.clone(); + } + + public ImageReadParam getDefaultReadParam() + { + return new ImageReadParam(); + } + + public String getFormatName() + throws IOException + { + return originatingProvider.getFormatNames()[0]; + } + + public abstract int getHeight(int imageIndex) + throws IOException; + + public abstract IIOMetadata getImageMetadata(int imageIndex) + throws IOException; + + public abstract Iterator getImageTypes(int imageIndex) + throws IOException; + + public Object getInput() + { + return input; + } + + public Locale getLocale() + { + return locale; + } + + public abstract int getNumImages(boolean allowSearch) + throws IOException; + + public int getNumThumbnails(int imageIndex) + throws IOException + { + return 0; + } + + public ImageReaderSpi getOriginatingProvider() + { + return originatingProvider; + } + + public abstract IIOMetadata getStreamMetadata() + throws IOException; + + public int getTileGridXOffset(int imageIndex) + throws IOException + { + return 0; + } + + public int getTileGridYOffset(int imageIndex) + throws IOException + { + return 0; + } + + public int getTileHeight(int imageIndex) + throws IOException + { + return getHeight(imageIndex); + } + + public int getTileWidth(int imageIndex) + throws IOException + { + return getWidth(imageIndex); + } + + public abstract int getWidth(int imageIndex) + throws IOException; + + public boolean hasThumbnails(int imageIndex) + throws IOException + { + return getNumThumbnails(imageIndex) > 0; + } + + public boolean isIgnoringMetadata() + { + return ignoreMetadata; + } + + public boolean isImageTiled(int imageIndex) + throws IOException + { + return false; + } + + public boolean isRandomAccessEasy(int imageIndex) + throws IOException + { + return false; + } + + public boolean isSeekForwardOnly() + { + return seekForwardOnly; + } + + protected void processImageComplete() + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.imageComplete (this); + } + } + + protected void processImageProgress(float percentageDone) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.imageProgress(this, percentageDone); + } + } + + protected void processImageStarted(int imageIndex) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.imageStarted(this, imageIndex); + } + } + + protected void processImageUpdate(BufferedImage image, int minX, int minY, + int width, int height, int periodX, + int periodY, int[] bands) + { + Iterator it = updateListeners.iterator(); + + while (it.hasNext()) + { + IIOReadUpdateListener listener = (IIOReadUpdateListener) it.next(); + listener.imageUpdate(this, image, minX, minY, width, height, periodX, + periodY, bands); + } + } + + protected void processPassComplete(BufferedImage image) + { + Iterator it = updateListeners.iterator(); + + while (it.hasNext()) + { + IIOReadUpdateListener listener = (IIOReadUpdateListener) it.next(); + listener.passComplete(this, image); + } + } + + protected void processPassStarted(BufferedImage image, int pass, int minPass, + int maxPass, int minX, int minY, + int periodX, int periodY, int[] bands) + { + Iterator it = updateListeners.iterator(); + + while (it.hasNext()) + { + IIOReadUpdateListener listener = (IIOReadUpdateListener) it.next(); + listener.passStarted(this, image, pass, minPass, maxPass, minX, minY, + periodX, periodY, bands); + } + } + + protected void processReadAborted() + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.readAborted(this); + } + } + + protected void processSequenceComplete() + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.sequenceComplete(this); + } + } + + protected void processSequenceStarted(int minIndex) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.sequenceStarted(this, minIndex); + } + } + + protected void processThumbnailComplete() + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.thumbnailComplete(this); + } + } + + protected void processThumbnailPassComplete(BufferedImage thumbnail) + { + Iterator it = updateListeners.iterator(); + + while (it.hasNext()) + { + IIOReadUpdateListener listener = (IIOReadUpdateListener) it.next(); + listener.thumbnailPassComplete(this, thumbnail); + } + } + + protected void processThumbnailPassStarted(BufferedImage thumbnail, int pass, + int minPass, int maxPass, int minX, + int minY, int periodX, int periodY, + int[] bands) + { + Iterator it = updateListeners.iterator(); + + while (it.hasNext()) + { + IIOReadUpdateListener listener = (IIOReadUpdateListener) it.next(); + listener.thumbnailPassStarted(this, thumbnail, pass, minPass, maxPass, + minX, minY, periodX, periodY, bands); + } + } + + protected void processThumbnailProgress(float percentageDone) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.thumbnailProgress(this, percentageDone); + } + } + + protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOReadProgressListener listener = (IIOReadProgressListener) it.next(); + listener.thumbnailStarted(this, imageIndex, thumbnailIndex); + } + } + + protected void processThumbnailUpdate(BufferedImage image, int minX, int minY, + int width, int height, int periodX, + int periodY, int[] bands) + { + Iterator it = updateListeners.iterator(); + + while (it.hasNext()) + { + IIOReadUpdateListener listener = (IIOReadUpdateListener) it.next(); + listener.thumbnailUpdate(this, image, minX, minY, width, height, + periodX, periodY, bands); + } + } + + protected void processWarningOccurred(String warning) + { + Iterator it = warningListeners.iterator(); + + while (it.hasNext()) + { + IIOReadWarningListener listener = (IIOReadWarningListener) it.next(); + listener.warningOccurred(this, warning); + } + } + + public abstract BufferedImage read(int imageIndex, ImageReadParam param) + throws IOException; + + public boolean readerSupportsThumbnails() + { + return false; + } + + public Raster readRaster(int imageIndex, ImageReadParam param) + throws IOException + { + throw new UnsupportedOperationException(); + } + + public BufferedImage readThumbnail(int imageIndex, int thumbnailIndex) + throws IOException + { + throw new UnsupportedOperationException(); + } + + public void removeAllIIOReadProgressListeners() + { + progressListeners.clear(); + } + + public void removeAllIIOReadUpdateListeners() + { + updateListeners.clear(); + } + + public void removeAllIIOReadWarningListeners() + { + warningListeners.clear(); + } + + public void removeIIOReadProgressListener(IIOReadProgressListener listener) + { + if (listener == null) + return; + + progressListeners.remove(listener); + } + + public void removeIIOReadUpdateListener(IIOReadUpdateListener listener) + { + if (listener == null) + return; + + updateListeners.remove(listener); + } + + public void removeIIOReadWarningListener(IIOReadWarningListener listener) + { + if (listener == null) + return; + + warningListeners.remove(listener); + } + + public void setLocale(Locale locale) + { + if (locale != null) + { + // Check if its a valid locale. + boolean found = false; + + if (availableLocales != null) + for (int i = availableLocales.length - 1; i >= 0; --i) + if (availableLocales[i].equals(locale)) + found = true; + + if (! found) + throw new IllegalArgumentException("looale not available"); + } + + this.locale = locale; + } } Index: javax/imageio/ImageWriter.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/imageio/ImageWriter.java,v retrieving revision 1.1 diff -u -r1.1 ImageWriter.java --- javax/imageio/ImageWriter.java 13 Apr 2004 13:54:13 -0000 1.1 +++ javax/imageio/ImageWriter.java 5 Oct 2004 07:07:19 -0000 @@ -1,5 +1,5 @@ /* ImageWriter.java -- Encodes raster images. - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,10 +38,178 @@ package javax.imageio; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; + +import javax.imageio.event.IIOWriteProgressListener; +import javax.imageio.event.IIOWriteWarningListener; +import javax.imageio.metadata.IIOMetadata; + +import javax.imageio.spi.ImageWriterSpi; + public abstract class ImageWriter implements ImageTranscoder { - // FIXME: Incomplete. This class is merely present in order to allow - // compilation of the javax.imageio.spi package, for which GNU - // Classpath does provide an implementation. + protected Locale[] availableLocales; + protected Locale locale; + protected ImageWriterSpi originatingProvider; + protected Object output; + protected List progressListeners; + protected List warningListeners; + protected List warningLocales; + + protected ImageWriter(ImageWriterSpi originatingProvider) + { + this.originatingProvider = originatingProvider; + } + + public void addIIOWriteProgressListener(IIOWriteProgressListener listener) + { + if (listener == null) + return; + + progressListeners.add(listener); + } + + public void addIIOWriteWarningListener (IIOWriteWarningListener listener) + { + if (listener == null) + return; + + warningListeners.add(listener); + } + + public Locale[] getAvailableLocales() + { + return availableLocales; + } + + public abstract IIOMetadata getDefaultImageMetadata (ImageTypeSpecifier imageType, ImageWriteParam param); + + public abstract IIOMetadata getDefaultStreamMetadata (ImageWriteParam param); + + public Locale getLocale() + { + return locale; + } + + public ImageWriterSpi getOriginatingProvider() + { + return originatingProvider; + } + + protected void processImageComplete() + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOWriteProgressListener listener = (IIOWriteProgressListener) it.next(); + listener.imageComplete(this); + } + } + + protected void processImageProgress(float percentageDone) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOWriteProgressListener listener = (IIOWriteProgressListener) it.next(); + listener.imageProgress(this, percentageDone); + } + } + + protected void processImageStarted(int imageIndex) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOWriteProgressListener listener = (IIOWriteProgressListener) it.next(); + listener.imageStarted(this, imageIndex); + } + } + + protected void processThumbnailComplete() + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOWriteProgressListener listener = (IIOWriteProgressListener) it.next(); + listener.thumbnailComplete(this); + } + } + + protected void processThumbnailProgress(float percentageDone) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOWriteProgressListener listener = (IIOWriteProgressListener) it.next(); + listener.thumbnailProgress(this, percentageDone); + } + } + + protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOWriteProgressListener listener = (IIOWriteProgressListener) it.next(); + listener.thumbnailStarted(this, imageIndex, thumbnailIndex); + } + } + + protected void processWarningOccurred(int imageIndex, String warning) + { + Iterator it = warningListeners.iterator(); + + while (it.hasNext()) + { + IIOWriteWarningListener listener = (IIOWriteWarningListener) it.next(); + listener.warningOccurred(this, imageIndex, warning); + } + } + + protected void processWriteAborted() + { + Iterator it = progressListeners.iterator(); + + while (it.hasNext()) + { + IIOWriteProgressListener listener = (IIOWriteProgressListener) it.next(); + listener.writeAborted(this); + } + } + + public void removeAllIIOWriteProgressListeners() + { + progressListeners.clear(); + } + + public void removeAllIIOWriteWarningListeners() + { + progressListeners.clear(); + } + + public void removeIIOWriteProgressListener (IIOWriteProgressListener listener) + { + if (listener == null) + return; + + progressListeners.remove(listener); + } + + public void removeIIOWriteWarningListener (IIOWriteWarningListener listener) + { + if (listener == null) + return; + + warningListeners.remove(listener); + } } Index: javax/imageio/spi/ImageReaderSpi.java =================================================================== RCS file: javax/imageio/spi/ImageReaderSpi.java diff -N javax/imageio/spi/ImageReaderSpi.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ javax/imageio/spi/ImageReaderSpi.java 5 Oct 2004 07:07:19 -0000 @@ -0,0 +1,113 @@ +/* ImageReaderSpi.java -- + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package javax.imageio.spi; + +import java.io.IOException; + +import javax.imageio.ImageReader; +import javax.imageio.stream.ImageInputStream; + +/** + * @author Michael Koch (address@hidden) + */ +public abstract class ImageReaderSpi extends ImageReaderWriterSpi +{ + public static final Class[] STANDARD_INPUT_TYPE = + { ImageInputStream.class }; + + protected Class[] inputTypes; + protected String[] writerSpiNames; + + protected ImageReaderSpi() + { + // Do nothing here. + } + + public ImageReaderSpi(String vendorName, String version, String[] names, + String[] suffixes, String[] MIMETypes, + String readerClassName, Class[] inputTypes, + String[] writerSpiNames, + 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, readerClassName, + supportsStandardStreamMetadataFormat, nativeStreamMetadataFormatName, + nativeStreamMetadataFormatClassName, extraStreamMetadataFormatNames, + extraStreamMetadataFormatClassNames, supportsStandardImageMetadataFormat, + nativeImageMetadataFormatName, nativeImageMetadataFormatClassName, + extraImageMetadataFormatNames, extraImageMetadataFormatClassNames); + + if (inputTypes == null + || inputTypes.length == 0) + throw new IllegalArgumentException("inputTypes may not be null or empty"); + + this.inputTypes = inputTypes; + this.writerSpiNames = writerSpiNames; + } + + public abstract boolean canDecodeInput(Object source) + throws IOException; + + public ImageReader createReaderInstance() + throws IOException + { + return createReaderInstance(null); + } + + public abstract ImageReader createReaderInstance(Object extension) + throws IOException; + + public String[] getImageWriterSpiNames() + { + return writerSpiNames; + } + + public Class[] getInputTypes() + { + return inputTypes; + } +} Index: javax/imageio/spi/ImageWriterSpi.java =================================================================== RCS file: javax/imageio/spi/ImageWriterSpi.java diff -N javax/imageio/spi/ImageWriterSpi.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ javax/imageio/spi/ImageWriterSpi.java 5 Oct 2004 07:07:19 -0000 @@ -0,0 +1,58 @@ +/* ImageWriterSpi.java -- + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package javax.imageio.spi; + +import javax.imageio.stream.ImageOutputStream; + +/** + * @author Michael Koch (address@hidden) + */ +public abstract class ImageWriterSpi extends ImageReaderWriterSpi +{ + public static final Class[] STANDARD_OUTPUT_TYPE = + { ImageOutputStream.class }; + + protected Class[] outputTypes; + protected String[] readerSpiNames; + + protected ImageWriterSpi() + { + // Do nothing here. + } +}