diff options
author | Mark Wielaard <mark@gcc.gnu.org> | 2004-11-06 18:09:00 +0000 |
---|---|---|
committer | Mark Wielaard <mark@gcc.gnu.org> | 2004-11-06 18:09:00 +0000 |
commit | 6c56bdc2faced04b598b5d2a88e11bed6d67bd0c (patch) | |
tree | 9540c8ff7414ddaee88ad1c8b7d570e68bfa8b89 /libjava/javax/imageio/ImageWriter.java | |
parent | bb05e3410cddd9bb2fad83ced5004c38626db220 (diff) | |
download | gcc-6c56bdc2faced04b598b5d2a88e11bed6d67bd0c.zip gcc-6c56bdc2faced04b598b5d2a88e11bed6d67bd0c.tar.gz gcc-6c56bdc2faced04b598b5d2a88e11bed6d67bd0c.tar.bz2 |
[multiple changes]
2004-11-06 Mark Wielaard <mark@klomp.org>
* Makefile.am: Add new javax.imageio files.
* Makefile.in: Regenerated.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/event/IIOReadProgressListener.java,
javax/imageio/event/IIOReadUpdateListener.java,
javax/imageio/event/IIOReadWarningListener.java,
javax/imageio/event/IIOWriteProgressListener.java,
javax/imageio/event/IIOWriteWarningListener.java,
javax/imageio/metadata/IIOMetadataFormat.java,
javax/imageio/stream/FileCacheImageInputStream.java,
javax/imageio/stream/FileCacheImageOutputStream.java,
javax/imageio/stream/ImageInputStreamImpl.java:
Import cleanup.
* javax/imageio/metadata/package.html: New file.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/spi/ImageReaderSpi.java
(isOwnReader): New method.
* javax/imageio/spi/ImageWriterSpi.java
(isOwnWriter): Likewise.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/ImageWriter.java
(convertImageMetadata): New abstract method.
(convertStreamMetadata): Likewise.
(write): Likewise.
* javax/imageio/stream/FileCacheImageInputStream.java
(close): Fixed setting of stream to null.
(checkStreamClosed): Throws IOException.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/stream/FileCacheImageInputStream.java,
javax/imageio/stream/FileCacheImageOutputStream.java,
javax/imageio/stream/FileImageInputStream.java,
javax/imageio/stream/FileImageOutputStream.java,
javax/imageio/stream/MemoryCacheImageInputStream.java,
javax/imageio/stream/MemoryCacheImageOutputStream.java:
New files.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/metadata/IIOInvalidTreeException.java,
javax/imageio/metadata/IIOMetadataFormatImpl.java,
javax/imageio/metadata/IIOMetadataNode.java:
New stub files.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/stream/ImageInputStreamImpl.java,
javax/imageio/stream/ImageOutputStreamImpl.java:
New files.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/ImageIO.java:
Added much new methods.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/ImageReader.java,
javax/imageio/ImageWriter.java,
javax/imageio/spi/ImageWriterSpi.java:
Add SOME new methods.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/IIOParam.java,
javax/imageio/ImageReadParam.java,
javax/imageio/ImageReader.java,
javax/imageio/ImageWriter.java:
Mostly implemented.
* javax/imageio/spi/ImageReaderSpi.java,
javax/imageio/spi/ImageWriterSpi.java:
New files.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/ImageWriteParam.java,
javax/imageio/metadata/IIOMetadataFormat.java:
Implemented.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/ImageTypeSpecifier.java:
Mostly implemented.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/metadata/IIOMetadata.java:
Mostly implemented.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/IIOImage.java,
javax/imageio/ImageReadParam.java,
javax/imageio/metadata/IIOMetadataController.java,
javax/imageio/metadata/IIOMetadataFormat.java:
New files.
* javax/imageio/stream/ImageOutputStream.java:
Implemented.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/IIOParam.java,
javax/imageio/IIOParamController.java,
javax/imageio/ImageTypeSpecifier.java,
javax/imageio/ImageWriteParam.java,
javax/imageio/metadata/IIOMetadata.java:
New files.
* javax/imageio/ImageTranscoder.java:
Implemented.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/spi/ImageInputStreamSpi.java,
javax/imageio/spi/ImageOutputStreamSpi.java:
Reworked import startments.
* javax/imageio/spi/ServiceRegistry.java:
Reworked import startments. Fixed XHTML in javadocs.
(ServiceRegistry): Added @param tag to javadoc.
* javax/imageio/stream/ImageInputStream.java
(mark): Doesn't throws IOException;
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/ImageIO.java:
New file.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/spi/IIORegistry.java
(static): Don't register ImageReaderSpi.class and
ImageWriterSpi.class yet.
2004-11-06 Michael Koch <konqueror@gmx.de>
* javax/imageio/spi/IIORegistry.java:
New file.
From-SVN: r90181
Diffstat (limited to 'libjava/javax/imageio/ImageWriter.java')
-rw-r--r-- | libjava/javax/imageio/ImageWriter.java | 350 |
1 files changed, 346 insertions, 4 deletions
diff --git a/libjava/javax/imageio/ImageWriter.java b/libjava/javax/imageio/ImageWriter.java index 7ef60c3..64466b1 100644 --- a/libjava/javax/imageio/ImageWriter.java +++ b/libjava/javax/imageio/ImageWriter.java @@ -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,352 @@ exception statement from your version. */ package javax.imageio; +import java.awt.Dimension; +import java.io.IOException; +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. + private boolean aborted; + + 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; + } + + private void checkOutputSet() + { + if (output == null) + throw new IllegalStateException("no output set"); + } + + public void abort() + { + aborted = true; + } + + protected boolean abortRequested() + { + return aborted; + } + + 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 boolean canInsertEmpty(int imageIndex) + throws IOException + { + checkOutputSet(); + return false; + } + + public boolean canInsertImage(int imageIndex) + throws IOException + { + checkOutputSet(); + return false; + } + + public boolean canRemoveImage(int imageIndex) + throws IOException + { + checkOutputSet(); + return false; + } + + public boolean canReplaceImageMetadata(int imageIndex) + throws IOException + { + checkOutputSet(); + return false; + } + + public boolean canReplacePixels(int imageIndex) + throws IOException + { + checkOutputSet(); + return false; + } + + public boolean canReplaceStreamMetadata() + throws IOException + { + checkOutputSet(); + return false; + } + + public boolean canWriteEmpty() + throws IOException + { + checkOutputSet(); + return false; + } + + public boolean canWriteRasters() + { + return false; + } + + public boolean canWriteSequence() + { + return false; + } + + protected void clearAbortRequest() + { + aborted = false; + } + + public abstract IIOMetadata convertImageMetadata (IIOMetadata inData, + ImageTypeSpecifier imageType, + ImageWriteParam param); + + public abstract IIOMetadata convertStreamMetadata (IIOMetadata inData, + ImageWriteParam param); + + public void dispose() + { + // The default implementation is empty. Subclasses have to overwrite it. + } + + public Locale[] getAvailableLocales() + { + return availableLocales; + } + + public abstract IIOMetadata getDefaultImageMetadata (ImageTypeSpecifier imageType, ImageWriteParam param); + + public abstract IIOMetadata getDefaultStreamMetadata (ImageWriteParam param); + + public ImageWriteParam getDefaultWriteParam() + { + return new ImageWriteParam(getLocale()); + } + + public Locale getLocale() + { + return locale; + } + + public int getNumThumbnailsSupported (ImageTypeSpecifier imageType, ImageWriteParam param, + IIOMetadata streamMetadata, IIOMetadata imageMetadata) + { + return 0; + } + + public ImageWriterSpi getOriginatingProvider() + { + return originatingProvider; + } + + public Object getOutput() + { + return output; + } + + public Dimension[] getPreferredThumbnailSizes (ImageTypeSpecifier imageType, + ImageWriteParam param, + IIOMetadata streamMetadata, + IIOMetadata imageMetadata) + { + return null; + } + + 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); + } + + public void reset() + { + setOutput(null); + setLocale(null); + removeAllIIOWriteWarningListeners(); + removeAllIIOWriteProgressListeners(); + clearAbortRequest(); + } + + 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; + } + + public void setOutput(Object output) + { + if (output != null) + { + // Check if its a valid output object. + boolean found = false; + Class[] types = null; + + if (originatingProvider != null) + types = originatingProvider.getOutputTypes(); + + if (types != null) + for (int i = types.length - 1; i >= 0; --i) + if (types[i].equals(output.getClass())) + found = true; + + if (! found) + throw new IllegalArgumentException("output type not available"); + } + + this.output = output; + } + + public abstract void write (IIOMetadata streamMetadata, IIOImage image, ImageWriteParam param) + throws IOException; } |