| /* |
| * 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(); |
| } |
| } |