diff options
Diffstat (limited to 'awt/javax/imageio/ImageWriter.java')
-rw-r--r-- | awt/javax/imageio/ImageWriter.java | 1001 |
1 files changed, 0 insertions, 1001 deletions
diff --git a/awt/javax/imageio/ImageWriter.java b/awt/javax/imageio/ImageWriter.java deleted file mode 100644 index 86879e0..0000000 --- a/awt/javax/imageio/ImageWriter.java +++ /dev/null @@ -1,1001 +0,0 @@ -/* - * 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; - -import java.awt.Dimension; -import java.awt.Rectangle; -import java.awt.image.BufferedImage; -import java.awt.image.Raster; -import java.awt.image.RenderedImage; -import java.io.IOException; -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import javax.imageio.event.IIOWriteProgressListener; -import javax.imageio.event.IIOWriteWarningListener; -import javax.imageio.metadata.IIOMetadata; -import javax.imageio.spi.ImageWriterSpi; - -/** - * The ImageWriter class is an abstract class for encoding images. ImageWriter - * objects are instantiated by the service provider interface, ImageWriterSpi - * class, for the specific format. ImageWriterSpi class should be registered - * with the IIORegistry, which uses them for format recognition and presentation - * of available format readers and writers. - * - * @since Android 1.0 - */ -public abstract class ImageWriter implements ImageTranscoder { - - /** - * The available locales. - */ - protected Locale[] availableLocales; - - /** - * The locale. - */ - protected Locale locale; - - /** - * The originating provider. - */ - protected ImageWriterSpi originatingProvider; - - /** - * The output. - */ - protected Object output; - - /** - * The progress listeners. - */ - protected List<IIOWriteProgressListener> progressListeners; - - /** - * The warning listeners. - */ - protected List<IIOWriteWarningListener> warningListeners; - - /** - * The warning locales. - */ - protected List<Locale> warningLocales; - - // Indicates that abort operation is requested - // Abort mechanism should be thread-safe - /** The aborted. */ - private boolean aborted; - - /** - * Instantiates a new ImageWriter. - * - * @param originatingProvider - * the ImageWriterSpi which instantiates this ImageWriter. - */ - protected ImageWriter(ImageWriterSpi originatingProvider) { - this.originatingProvider = originatingProvider; - } - - public abstract IIOMetadata convertStreamMetadata(IIOMetadata iioMetadata, - ImageWriteParam imageWriteParam); - - public abstract IIOMetadata convertImageMetadata(IIOMetadata iioMetadata, - ImageTypeSpecifier imageTypeSpecifier, ImageWriteParam imageWriteParam); - - /** - * Gets the ImageWriterSpi which instantiated this ImageWriter. - * - * @return the ImageWriterSpi. - */ - public ImageWriterSpi getOriginatingProvider() { - return originatingProvider; - } - - /** - * Processes the start of an image read by calling their imageStarted method - * of registered IIOWriteProgressListeners. - * - * @param imageIndex - * the image index. - */ - protected void processImageStarted(int imageIndex) { - if (null != progressListeners) { - for (IIOWriteProgressListener listener : progressListeners) { - listener.imageStarted(this, imageIndex); - } - } - } - - /** - * Processes the current percentage of image completion by calling - * imageProgress method of registered IIOWriteProgressListener. - * - * @param percentageDone - * the percentage done. - */ - protected void processImageProgress(float percentageDone) { - if (null != progressListeners) { - for (IIOWriteProgressListener listener : progressListeners) { - listener.imageProgress(this, percentageDone); - } - } - } - - /** - * Processes image completion by calling imageComplete method of registered - * IIOWriteProgressListeners. - */ - protected void processImageComplete() { - if (null != progressListeners) { - for (IIOWriteProgressListener listener : progressListeners) { - listener.imageComplete(this); - } - } - } - - /** - * Processes a warning message by calling warningOccurred method of - * registered IIOWriteWarningListeners. - * - * @param imageIndex - * the image index. - * @param warning - * the warning. - */ - protected void processWarningOccurred(int imageIndex, String warning) { - if (null == warning) { - throw new NullPointerException("warning message should not be NULL"); - } - if (null != warningListeners) { - for (IIOWriteWarningListener listener : warningListeners) { - listener.warningOccurred(this, imageIndex, warning); - } - } - } - - /** - * Processes a warning message by calling warningOccurred method of - * registered IIOWriteWarningListeners with string from ResourceBundle. - * - * @param imageIndex - * the image index. - * @param bundle - * the name of ResourceBundle. - * @param key - * the keyword. - */ - protected void processWarningOccurred(int imageIndex, String bundle, String key) { - if (warningListeners != null) { // Don't check the parameters - return; - } - - if (bundle == null) { - throw new IllegalArgumentException("baseName == null!"); - } - if (key == null) { - throw new IllegalArgumentException("keyword == null!"); - } - - // Get the context class loader and try to locate the bundle with it - // first - ClassLoader contextClassloader = AccessController - .doPrivileged(new PrivilegedAction<ClassLoader>() { - public ClassLoader run() { - return Thread.currentThread().getContextClassLoader(); - } - }); - - // Iterate through both listeners and locales - int n = warningListeners.size(); - for (int i = 0; i < n; i++) { - IIOWriteWarningListener listener = warningListeners.get(i); - Locale locale = warningLocales.get(i); - - // Now try to get the resource bundle - ResourceBundle rb; - try { - rb = ResourceBundle.getBundle(bundle, locale, contextClassloader); - } catch (MissingResourceException e) { - try { - rb = ResourceBundle.getBundle(bundle, locale); - } catch (MissingResourceException e1) { - throw new IllegalArgumentException("Bundle not found!"); - } - } - - try { - String warning = rb.getString(key); - listener.warningOccurred(this, imageIndex, warning); - } catch (MissingResourceException e) { - throw new IllegalArgumentException("Resource is missing!"); - } catch (ClassCastException e) { - throw new IllegalArgumentException("Resource is not a String!"); - } - } - } - - /** - * Sets the specified Object to the output of this ImageWriter. - * - * @param output - * the Object which represents destination, it can be - * ImageOutputStream or other objects. - */ - public void setOutput(Object output) { - if (output != null) { - ImageWriterSpi spi = getOriginatingProvider(); - if (null != spi) { - Class[] outTypes = spi.getOutputTypes(); - boolean supported = false; - for (Class<?> element : outTypes) { - if (element.isInstance(output)) { - supported = true; - break; - } - } - if (!supported) { - throw new IllegalArgumentException("output " + output + " is not supported"); - } - } - } - this.output = output; - } - - /** - * Writes a completed image stream that contains the specified image, - * default metadata, and thumbnails to the output. - * - * @param image - * the specified image to be written. - * @throws IOException - * if an I/O exception has occurred during writing. - */ - public void write(IIOImage image) throws IOException { - write(null, image, null); - } - - /** - * Writes a completed image stream that contains the specified rendered - * image, default metadata, and thumbnails to the output. - * - * @param image - * the specified RenderedImage to be written. - * @throws IOException - * if an I/O exception has occurred during writing. - */ - public void write(RenderedImage image) throws IOException { - write(null, new IIOImage(image, null, null), null); - } - - /** - * Writes a completed image stream that contains the specified image, - * metadata and thumbnails to the output. - * - * @param streamMetadata - * the stream metadata, or null. - * @param image - * the specified image to be written, if canWriteRaster() method - * returns false, then Image must contain only RenderedImage. - * @param param - * the ImageWriteParam, or null. - * @throws IOException - * if an error occurs during writing. - */ - public abstract void write(IIOMetadata streamMetadata, IIOImage image, ImageWriteParam param) - throws IOException; - - /** - * Disposes of any resources. - */ - public void dispose() { - // def impl. does nothing according to the spec. - } - - /** - * Requests an abort operation for current writing operation. - */ - public synchronized void abort() { - aborted = true; - } - - /** - * Checks whether or not a request to abort the current write operation has - * been made successfully. - * - * @return true, if the request to abort the current write operation has - * been made successfully, false otherwise. - */ - protected synchronized boolean abortRequested() { - return aborted; - } - - /** - * Clears all previous abort request, and abortRequested returns false after - * calling this method. - */ - protected synchronized void clearAbortRequest() { - aborted = false; - } - - /** - * Adds the IIOWriteProgressListener listener. - * - * @param listener - * the IIOWriteProgressListener listener. - */ - public void addIIOWriteProgressListener(IIOWriteProgressListener listener) { - if (listener == null) { - return; - } - - if (progressListeners == null) { - progressListeners = new ArrayList<IIOWriteProgressListener>(); - } - - progressListeners.add(listener); - } - - /** - * Adds the IIOWriteWarningListener. - * - * @param listener - * the IIOWriteWarningListener listener. - */ - public void addIIOWriteWarningListener(IIOWriteWarningListener listener) { - if (listener == null) { - return; - } - - if (warningListeners == null) { - warningListeners = new ArrayList<IIOWriteWarningListener>(); - warningLocales = new ArrayList<Locale>(); - } - - warningListeners.add(listener); - warningLocales.add(getLocale()); - } - - /** - * Gets the output object that was set by setOutput method. - * - * @return the output object such as ImageOutputStream, or null if it is not - * set. - */ - public Object getOutput() { - return output; - } - - /** - * Check output return false. - * - * @return true, if successful. - */ - private final boolean checkOutputReturnFalse() { - if (getOutput() == null) { - throw new IllegalStateException("getOutput() == null!"); - } - return false; - } - - /** - * Unsupported operation. - */ - private final void unsupportedOperation() { - if (getOutput() == null) { - throw new IllegalStateException("getOutput() == null!"); - } - throw new UnsupportedOperationException("Unsupported write variant!"); - } - - /** - * Returns true if a new empty image can be inserted at the specified index. - * - * @param imageIndex - * the specified index of image. - * @return true if a new empty image can be inserted at the specified index, - * false otherwise. - * @throws IOException - * Signals that an I/O exception has occurred. - */ - public boolean canInsertEmpty(int imageIndex) throws IOException { - return checkOutputReturnFalse(); - } - - /** - * Returns true if a new image can be inserted at the specified index. - * - * @param imageIndex - * the specified index of image. - * @return true if a new image can be inserted at the specified index, false - * otherwise. - * @throws IOException - * Signals that an I/O exception has occurred. - */ - public boolean canInsertImage(int imageIndex) throws IOException { - return checkOutputReturnFalse(); - } - - /** - * Returns true if the image with the specified index can be removed. - * - * @param imageIndex - * the specified index of image. - * @return true if the image with the specified index can be removed, false - * otherwise. - * @throws IOException - * Signals that an I/O exception has occurred. - */ - public boolean canRemoveImage(int imageIndex) throws IOException { - return checkOutputReturnFalse(); - } - - /** - * Returns true if metadata of the image with the specified index can be - * replaced. - * - * @param imageIndex - * the specified image index. - * @return true if metadata of the image with the specified index can be - * replaced, false otherwise. - * @throws IOException - * if an I/O exception has occurred. - */ - public boolean canReplaceImageMetadata(int imageIndex) throws IOException { - return checkOutputReturnFalse(); - } - - /** - * Returns true if pixels of the image with the specified index can be - * replaced by the replacePixels methods. - * - * @param imageIndex - * the image's index. - * @return true if pixels of the image with the specified index can be - * replaced by the replacePixels methods, false otherwise. - * @throws IOException - * Signals that an I/O exception has occurred. - */ - public boolean canReplacePixels(int imageIndex) throws IOException { - return checkOutputReturnFalse(); - } - - /** - * Returns true if the stream metadata presented in the output can be - * removed. - * - * @return true if the stream metadata presented in the output can be - * removed, false otherwise. - * @throws IOException - * if an I/O exception has occurred. - */ - public boolean canReplaceStreamMetadata() throws IOException { - return checkOutputReturnFalse(); - } - - /** - * Returns true if the writing of a complete image stream which contains a - * single image is supported with undefined pixel values and associated - * metadata and thumbnails to the output. - * - * @return true if the writing of a complete image stream which contains a - * single image is supported, false otherwise. - * @throws IOException - * if an I/O exception has occurred. - */ - public boolean canWriteEmpty() throws IOException { - return checkOutputReturnFalse(); - } - - /** - * Returns true if the methods which taken an IIOImageParameter can deal - * with a Raster source image. - * - * @return true if the methods which taken an IIOImageParameter can deal - * with a Raster source image, false otherwise. - */ - public boolean canWriteRasters() { - return false; - } - - /** - * Returns true if the writer can add an image to stream that already - * contains header information. - * - * @return if the writer can add an image to stream that already contains - * header information, false otherwise. - */ - public boolean canWriteSequence() { - return false; - } - - /** - * Ends the insertion of a new image. - * - * @throws IOException - * if an I/O exception has occurred. - */ - public void endInsertEmpty() throws IOException { - unsupportedOperation(); - } - - /** - * Ends the replace pixels operation. - * - * @throws IOException - * if an I/O exception has occurred. - */ - public void endReplacePixels() throws IOException { - unsupportedOperation(); - } - - /** - * Ends an empty write operation. - * - * @throws IOException - * if an I/O exception has occurred. - */ - public void endWriteEmpty() throws IOException { - unsupportedOperation(); - } - - /** - * Ends the sequence of write operations. - * - * @throws IOException - * if an I/O exception has occurred. - */ - public void endWriteSequence() throws IOException { - unsupportedOperation(); - } - - /** - * Gets an array of available locales. - * - * @return an of array available locales. - */ - public Locale[] getAvailableLocales() { - if (availableLocales == null) { - return null; - } - - return availableLocales.clone(); - } - - /** - * Gets an IIOMetadata object that contains default values for encoding an - * image with the specified type. - * - * @param imageType - * the ImageTypeSpecifier. - * @param param - * the ImageWriteParam. - * @return the IIOMetadata object. - */ - public abstract IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier imageType, - ImageWriteParam param); - - /** - * Gets an IIOMetadata object that contains default values for encoding a - * stream of images. - * - * @param param - * the ImageWriteParam. - * @return the IIOMetadata object. - */ - public abstract IIOMetadata getDefaultStreamMetadata(ImageWriteParam param); - - /** - * Gets the current locale of this ImageWriter. - * - * @return the current locale of this ImageWriter. - */ - public Locale getLocale() { - return locale; - } - - /** - * Gets the default write param. Gets a new ImageWriteParam object for this - * ImageWriter with the current Locale. - * - * @return a new ImageWriteParam object for this ImageWriter. - */ - public ImageWriteParam getDefaultWriteParam() { - return new ImageWriteParam(getLocale()); - } - - /** - * Gets the number of thumbnails supported by the format being written with - * supported image type, image write parameters, stream, and image metadata - * objects. - * - * @param imageType - * the ImageTypeSpecifier. - * @param param - * the image's parameters. - * @param streamMetadata - * the stream metadata. - * @param imageMetadata - * the image metadata. - * @return the number of thumbnails supported. - */ - public int getNumThumbnailsSupported(ImageTypeSpecifier imageType, ImageWriteParam param, - IIOMetadata streamMetadata, IIOMetadata imageMetadata) { - return 0; - } - - /** - * Gets the preferred thumbnail sizes. Gets an array of Dimensions with the - * sizes for thumbnail images as they are encoded in the output file or - * stream. - * - * @param imageType - * the ImageTypeSpecifier. - * @param param - * the ImageWriteParam. - * @param streamMetadata - * the stream metadata. - * @param imageMetadata - * the image metadata. - * @return the preferred thumbnail sizes. - */ - public Dimension[] getPreferredThumbnailSizes(ImageTypeSpecifier imageType, - ImageWriteParam param, IIOMetadata streamMetadata, IIOMetadata imageMetadata) { - return null; - } - - /** - * Prepares insertion of an empty image by requesting the insertion of a new - * image into an existing image stream. - * - * @param imageIndex - * the image index. - * @param imageType - * the image type. - * @param width - * the width of the image. - * @param height - * the height of the image. - * @param imageMetadata - * the image metadata, or null. - * @param thumbnails - * the array thumbnails for this image, or null. - * @param param - * the ImageWriteParam, or null. - * @throws IOException - * if an I/O exception has occurred. - */ - public void prepareInsertEmpty(int imageIndex, ImageTypeSpecifier imageType, int width, - int height, IIOMetadata imageMetadata, List<? extends BufferedImage> thumbnails, - ImageWriteParam param) throws IOException { - unsupportedOperation(); - } - - /** - * Prepares the writer to call the replacePixels method for the specified - * region. - * - * @param imageIndex - * the image's index. - * @param region - * the specified region. - * @throws IOException - * if an I/O exception has occurred. - */ - public void prepareReplacePixels(int imageIndex, Rectangle region) throws IOException { - unsupportedOperation(); - } - - /** - * Prepares the writer for writing an empty image by beginning the process - * of writing a complete image stream that contains a single image with - * undefined pixel values, metadata and thumbnails, to the output. - * - * @param streamMetadata - * the stream metadata. - * @param imageType - * the image type. - * @param width - * the width of the image. - * @param height - * the height of the image. - * @param imageMetadata - * the image's metadata, or null. - * @param thumbnails - * the image's thumbnails, or null. - * @param param - * the image's parameters, or null. - * @throws IOException - * if an I/O exception has occurred. - */ - public void prepareWriteEmpty(IIOMetadata streamMetadata, ImageTypeSpecifier imageType, - int width, int height, IIOMetadata imageMetadata, - List<? extends BufferedImage> thumbnails, ImageWriteParam param) throws IOException { - unsupportedOperation(); - } - - /** - * Prepares a stream to accept calls of writeToSequence method using the - * metadata object. - * - * @param streamMetadata - * the stream metadata. - * @throws IOException - * if an I/O exception has occurred. - */ - public void prepareWriteSequence(IIOMetadata streamMetadata) throws IOException { - unsupportedOperation(); - } - - /** - * Processes the completion of a thumbnail read by calling their - * thumbnailComplete method of registered IIOWriteProgressListeners. - */ - protected void processThumbnailComplete() { - if (progressListeners != null) { - for (IIOWriteProgressListener listener : progressListeners) { - listener.thumbnailComplete(this); - } - } - } - - /** - * Processes the current percentage of thumbnail completion by calling their - * thumbnailProgress method of registered IIOWriteProgressListeners. - * - * @param percentageDone - * the percentage done. - */ - protected void processThumbnailProgress(float percentageDone) { - if (progressListeners != null) { - for (IIOWriteProgressListener listener : progressListeners) { - listener.thumbnailProgress(this, percentageDone); - } - } - } - - /** - * Processes the start of a thumbnail read by calling thumbnailStarted - * method of registered IIOWriteProgressListeners. - * - * @param imageIndex - * the image index. - * @param thumbnailIndex - * the thumbnail index. - */ - protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) { - if (progressListeners != null) { - for (IIOWriteProgressListener listener : progressListeners) { - listener.thumbnailStarted(this, imageIndex, thumbnailIndex); - } - } - } - - /** - * Processes that the writing has been aborted by calling writeAborted - * method of registered IIOWriteProgressListeners. - */ - protected void processWriteAborted() { - if (progressListeners != null) { - for (IIOWriteProgressListener listener : progressListeners) { - listener.writeAborted(this); - } - } - } - - /** - * Removes the all IIOWriteProgressListener listeners. - */ - public void removeAllIIOWriteProgressListeners() { - progressListeners = null; - } - - /** - * Removes the all IIOWriteWarningListener listeners. - */ - public void removeAllIIOWriteWarningListeners() { - warningListeners = null; - warningLocales = null; - } - - /** - * Removes the specified IIOWriteProgressListener listener. - * - * @param listener - * the registered IIOWriteProgressListener to be removed. - */ - public void removeIIOWriteProgressListener(IIOWriteProgressListener listener) { - if (progressListeners != null && listener != null) { - if (progressListeners.remove(listener) && progressListeners.isEmpty()) { - progressListeners = null; - } - } - } - - /** - * Removes the specified IIOWriteWarningListener listener. - * - * @param listener - * the registered IIOWriteWarningListener listener to be removed. - */ - public void removeIIOWriteWarningListener(IIOWriteWarningListener listener) { - if (warningListeners == null || listener == null) { - return; - } - - int idx = warningListeners.indexOf(listener); - if (idx > -1) { - warningListeners.remove(idx); - warningLocales.remove(idx); - - if (warningListeners.isEmpty()) { - warningListeners = null; - warningLocales = null; - } - } - } - - /** - * Removes the image with the specified index from the stream. - * - * @param imageIndex - * the image's index. - * @throws IOException - * if an I/O exception has occurred. - */ - public void removeImage(int imageIndex) throws IOException { - unsupportedOperation(); - } - - /** - * Replaces image metadata of the image with specified index. - * - * @param imageIndex - * the image's index. - * @param imageMetadata - * the image metadata. - * @throws IOException - * if an I/O exception has occurred. - */ - public void replaceImageMetadata(int imageIndex, IIOMetadata imageMetadata) throws IOException { - unsupportedOperation(); - } - - /** - * Replaces a part of an image presented in the output with the specified - * RenderedImage. - * - * @param image - * the RenderedImage. - * @param param - * the ImageWriteParam. - * @throws IOException - * if an I/O exception has occurred. - */ - public void replacePixels(RenderedImage image, ImageWriteParam param) throws IOException { - unsupportedOperation(); - } - - /** - * Replaces a part of an image presented in the output with the specified - * Raster. - * - * @param raster - * the Raster. - * @param param - * the ImageWriteParam. - * @throws IOException - * if an I/O exception has occurred. - */ - public void replacePixels(Raster raster, ImageWriteParam param) throws IOException { - unsupportedOperation(); - } - - /** - * Replaces the stream metadata of the output with new IIOMetadata. - * - * @param streamMetadata - * the new stream metadata. - * @throws IOException - * if an I/O exception has occurred. - */ - public void replaceStreamMetadata(IIOMetadata streamMetadata) throws IOException { - unsupportedOperation(); - } - - /** - * Sets the locale of this ImageWriter. - * - * @param locale - * the new locale. - */ - public void setLocale(Locale locale) { - if (locale == null) { - this.locale = null; - return; - } - - Locale[] locales = getAvailableLocales(); - boolean validLocale = false; - if (locales != null) { - for (int i = 0; i < locales.length; i++) { - if (locale.equals(locales[i])) { - validLocale = true; - break; - } - } - } - - if (validLocale) { - this.locale = locale; - } else { - throw new IllegalArgumentException("Invalid locale!"); - } - } - - /** - * Resets this ImageWriter. - */ - public void reset() { - setOutput(null); - setLocale(null); - removeAllIIOWriteWarningListeners(); - removeAllIIOWriteProgressListeners(); - clearAbortRequest(); - } - - /** - * Inserts image into existing output stream. - * - * @param imageIndex - * the image index where an image will be written. - * @param image - * the specified image to be written. - * @param param - * the ImageWriteParam, or null. - * @throws IOException - * if an I/O exception has occurred. - */ - public void writeInsert(int imageIndex, IIOImage image, ImageWriteParam param) - throws IOException { - unsupportedOperation(); - } - - /** - * Writes the specified image to the sequence. - * - * @param image - * the image to be written. - * @param param - * the ImageWriteParam, or null. - * @throws IOException - * if an I/O exception has occurred during writing. - */ - public void writeToSequence(IIOImage image, ImageWriteParam param) throws IOException { - unsupportedOperation(); - } -} |