/* * 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 javax.imageio.spi.ImageReaderSpi; import javax.imageio.stream.ImageInputStream; import javax.imageio.metadata.IIOMetadata; import javax.imageio.event.IIOReadWarningListener; import javax.imageio.event.IIOReadProgressListener; import javax.imageio.event.IIOReadUpdateListener; import java.util.Locale; import java.util.List; import java.util.Iterator; import java.util.Set; import java.io.IOException; import java.awt.image.BufferedImage; import java.awt.image.Raster; import java.awt.image.RenderedImage; import java.awt.*; /** * The ImageReader class is an abstract class for decoding images. ImageReader * objects are instantiated by the service provider interface, ImageReaderSpi * class, for the specific format. ImageReaderSpi 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 ImageReader { /** * The originating provider. */ protected ImageReaderSpi originatingProvider; /** * The input object such as ImageInputStream. */ protected Object input; /** * The seek forward only. */ protected boolean seekForwardOnly; /** * The ignore metadata flag indicates whether current input source has been * marked as metadata is allowed to be ignored by setInput. */ protected boolean ignoreMetadata; /** * The minimum index. */ protected int minIndex; /** * The available locales. */ protected Locale[] availableLocales; /** * The locale. */ protected Locale locale; /** * The list of warning listeners. */ protected List<IIOReadWarningListener> warningListeners; /** * The list of warning locales. */ protected List<Locale> warningLocales; /** * The list of progress listeners. */ protected List<IIOReadProgressListener> progressListeners; /** * The list of update listeners. */ protected List<IIOReadUpdateListener> updateListeners; /** * Instantiates a new ImageReader. * * @param originatingProvider * the ImageReaderSpi which instantiates this ImageReader. */ protected ImageReader(ImageReaderSpi originatingProvider) { this.originatingProvider = originatingProvider; } /** * Gets the format name of this input source. * * @return the format name of this input source. * @throws IOException * if an I/O exception has occurred. */ public String getFormatName() throws IOException { return originatingProvider.getFormatNames()[0]; } /** * Gets the ImageReaderSpi which instantiated this ImageReader. * * @return the ImageReaderSpi. */ public ImageReaderSpi getOriginatingProvider() { return originatingProvider; } /** * Sets the specified Object as the input source of this ImageReader. * * @param input * the input source, it can be an ImageInputStream or other * supported objects. * @param seekForwardOnly * indicates whether the stream must be read sequentially from * its current starting point. * @param ignoreMetadata * parameter which indicates if metadata may be ignored during * reads or not. */ public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata) { if (input != null) { if (!isSupported(input) && !(input instanceof ImageInputStream)) { throw new IllegalArgumentException("input " + input + " is not supported"); } } this.minIndex = 0; this.seekForwardOnly = seekForwardOnly; this.ignoreMetadata = ignoreMetadata; this.input = input; } /** * Checks if is supported. * * @param input * the input. * @return true, if is supported. */ private boolean isSupported(Object input) { ImageReaderSpi spi = getOriginatingProvider(); if (null != spi) { Class[] outTypes = spi.getInputTypes(); for (Class<?> element : outTypes) { if (element.isInstance(input)) { return true; } } } return false; } /** * Sets the specified Object as the input source of this ImageReader. * Metadata is not ignored. * * @param input * the input source, it can be an ImageInputStream or other * supported objects. * @param seekForwardOnly * indicates whether the stream must be read sequentially from * its current starting point. */ public void setInput(Object input, boolean seekForwardOnly) { setInput(input, seekForwardOnly, false); } /** * Sets the specified Object as the input source of this ImageReader. * Metadata is not ignored and forward seeking is not required. * * @param input * the input source, it can be ImageInputStream or other objects. */ public void setInput(Object input) { setInput(input, false, false); } /** * Gets the input source object of this ImageReader, or returns null. * * @return the input source object such as ImageInputStream, or null. */ public Object getInput() { return input; } /** * Checks if the input source supports only forward reading, or not. * * @return true, if the input source supports only forward reading, false * otherwise. */ public boolean isSeekForwardOnly() { return seekForwardOnly; } /** * Returns true if the current input source allows to metadata to be ignored * by passing true as the ignoreMetadata argument to the setInput method. * * @return true, if the current input source allows to metadata to be * ignored by passing true as the ignoreMetadata argument to the * setInput method. */ public boolean isIgnoringMetadata() { return ignoreMetadata; } /** * Gets the minimum valid index for reading an image, thumbnail, or image * metadata. * * @return the minimum valid index for reading an image, thumbnail, or image * metadata. */ public int getMinIndex() { return minIndex; } /** * Gets the available locales. * * @return an array of the available locales. */ public Locale[] getAvailableLocales() { return availableLocales; } /** * Sets the locale to this ImageReader. * * @param locale * the Locale. */ public void setLocale(Locale locale) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Gets the locale of this ImageReader. * * @return the locale of this ImageReader. */ public Locale getLocale() { return locale; } /** * Gets the number of images available in the current input source. * * @param allowSearch * the parameter which indicates what a search is required; if * false, the reader may return -1 without searching. * @return the number of images. * @throws IOException * if an I/O exception has occurred. */ public abstract int getNumImages(boolean allowSearch) throws IOException; /** * Gets the width of the specified image in input source. * * @param imageIndex * the image index. * @return the width in pixels. * @throws IOException * if an I/O exception has occurred. */ public abstract int getWidth(int imageIndex) throws IOException; /** * Gets the height of the specified image in input source. * * @param imageIndex * the image index. * @return the height in pixels. * @throws IOException * if an I/O exception has occurred. */ public abstract int getHeight(int imageIndex) throws IOException; /** * Checks if the storage format of the specified image places an impediment * on random pixels access or not. * * @param imageIndex * the image's index. * @return true, if the storage format of the specified image places an * impediment on random pixels access, false otherwise. * @throws IOException * if an I/O exception has occurred. */ public boolean isRandomAccessEasy(int imageIndex) throws IOException { return false; // def } /** * Gets the aspect ratio (width devided by height) of the image. * * @param imageIndex * the image index. * @return the aspect ratio of the image. * @throws IOException * if an I/O exception has occurred. */ public float getAspectRatio(int imageIndex) throws IOException { return (float)getWidth(imageIndex) / getHeight(imageIndex); } /** * Gets an ImageTypeSpecifier which indicates the type of the specified * image. * * @param imageIndex * the image's index. * @return the ImageTypeSpecifier. * @throws IOException * if an I/O exception has occurred. */ public ImageTypeSpecifier getRawImageType(int imageIndex) throws IOException { throw new UnsupportedOperationException("Not implemented yet"); } /** * Gets an Iterator of ImageTypeSpecifier objects which are associated with * image types that may be used when decoding specified image. * * @param imageIndex * the image index. * @return an Iterator of ImageTypeSpecifier objects. * @throws IOException * if an I/O exception has occurred. */ public abstract Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException; /** * Gets the default ImageReadParam object. * * @return the ImageReadParam object. */ public ImageReadParam getDefaultReadParam() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Gets an IIOMetadata object for this input source. * * @return the IIOMetadata. * @throws IOException * if an I/O exception has occurred. */ public abstract IIOMetadata getStreamMetadata() throws IOException; /** * Gets an IIOMetadata object for this input source. * * @param formatName * the desired metadata format to be used in the returned * IIOMetadata object. * @param nodeNames * the node names of the document. * @return the IIOMetadata. * @throws IOException * if an I/O exception has occurred. */ public IIOMetadata getStreamMetadata(String formatName, Set<String> nodeNames) throws IOException { throw new UnsupportedOperationException("Not implemented yet"); } /** * Gets the image metadata of the specified image in input source. * * @param imageIndex * the image index. * @return the IIOMetadata. * @throws IOException * if an I/O exception has occurred. */ public abstract IIOMetadata getImageMetadata(int imageIndex) throws IOException; /** * Gets the image metadata of the specified image input source. * * @param imageIndex * the image index. * @param formatName * the desired metadata format to be used in the returned * IIOMetadata object. * @param nodeNames * the node names which can be contained in the document. * @return the IIOMetadata. * @throws IOException * if an I/O exception has occurred. */ public IIOMetadata getImageMetadata(int imageIndex, String formatName, Set<String> nodeNames) throws IOException { throw new UnsupportedOperationException("Not implemented yet"); } /** * Reads the specified image and returns it as a BufferedImage using the * default ImageReadParam. * * @param imageIndex * the image index. * @return the BufferedImage. * @throws IOException * if an I/O exception has occurred. */ public BufferedImage read(int imageIndex) throws IOException { return read(imageIndex, null); } /** * Reads the specified image and returns it as a BufferedImage using the * specified ImageReadParam. * * @param imageIndex * the image index. * @param param * the ImageReadParam. * @return the BufferedImage. * @throws IOException * if an I/O exception has occurred. */ public abstract BufferedImage read(int imageIndex, ImageReadParam param) throws IOException; /** * Reads the specified image and returns an IIOImage with this image, * thumbnails, and metadata for this image, using the specified * ImageReadParam. * * @param imageIndex * the image index. * @param param * the ImageReadParam. * @return the IIOImage. * @throws IOException * if an I/O exception has occurred. */ public IIOImage readAll(int imageIndex, ImageReadParam param) throws IOException { throw new UnsupportedOperationException("Not implemented yet"); } /** * Returns an Iterator of IIOImages from the input source. * * @param params * the Iterator of ImageReadParam objects. * @return the iterator of IIOImages. * @throws IOException * if an I/O exception has occurred. */ public Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> params) throws IOException { throw new UnsupportedOperationException("Not implemented yet"); } /** * Checks whether or not this plug-in supports reading a Raster. * * @return true, if this plug-in supports reading a Raster, false otherwise. */ public boolean canReadRaster() { return false; // def } /** * Reads a new Raster object which contains the raw pixel data from the * image. * * @param imageIndex * the image index. * @param param * the ImageReadParam. * @return the Raster. * @throws IOException * if an I/O exception has occurred. */ public Raster readRaster(int imageIndex, ImageReadParam param) throws IOException { throw new UnsupportedOperationException("Unsupported"); } /** * Checks if the specified image has tiles or not. * * @param imageIndex * the image's index. * @return true, if the specified image has tiles, false otherwise. * @throws IOException * if an I/O exception has occurred. */ public boolean isImageTiled(int imageIndex) throws IOException { return false; // def } /** * Gets the tile width in the specified image. * * @param imageIndex * the image's index. * @return the tile width. * @throws IOException * if an I/O exception has occurred. */ public int getTileWidth(int imageIndex) throws IOException { return getWidth(imageIndex); // def } /** * Gets the tile height in the specified image. * * @param imageIndex * the image's index. * @return the tile height. * @throws IOException * if an I/O exception has occurred. */ public int getTileHeight(int imageIndex) throws IOException { return getHeight(imageIndex); // def } /** * Gets the X coordinate of the upper left corner of the tile grid in the * specified image. * * @param imageIndex * the image's index. * @return the X coordinate of the upper left corner of the tile grid. * @throws IOException * if an I/O exception has occurred. */ public int getTileGridXOffset(int imageIndex) throws IOException { return 0; // def } /** * Gets the Y coordinate of the upper left corner of the tile grid in the * specified image. * * @param imageIndex * the image's index. * @return the Y coordinate of the upper left corner of the tile grid. * @throws IOException * if an I/O exception has occurred. */ public int getTileGridYOffset(int imageIndex) throws IOException { return 0; // def } /** * Reads the tile specified by the tileX and tileY parameters of the * specified image and returns it as a BufferedImage. * * @param imageIndex * the image index. * @param tileX * the X index of tile. * @param tileY * the Y index of tile. * @return the BufferedImage. * @throws IOException * if an I/O exception has occurred. */ public BufferedImage readTile(int imageIndex, int tileX, int tileY) throws IOException { throw new UnsupportedOperationException("Not implemented yet"); } /** * Reads the tile specified by the tileX and tileY parameters of the * specified image and returns it as a Raster. * * @param imageIndex * the image index. * @param tileX * the X index of tile. * @param tileY * the Y index of tile. * @return the Raster. * @throws IOException * if an I/O exception has occurred. */ public Raster readTileRaster(int imageIndex, int tileX, int tileY) throws IOException { throw new UnsupportedOperationException("Not implemented yet"); } /** * Reads the specified image using the specified ImageReadParam and returns * it as a RenderedImage. * * @param imageIndex * the image index. * @param param * the ImageReadParam. * @return the RenderedImage. * @throws IOException * if an I/O exception has occurred. */ public RenderedImage readAsRenderedImage(int imageIndex, ImageReadParam param) throws IOException { return read(imageIndex, param); } /** * Returns true if the image format supported by this reader supports * thumbnail preview images. * * @return true, if the image format supported by this reader supports * thumbnail preview images, false otherwise. */ public boolean readerSupportsThumbnails() { return false; // def } /** * Checks if the specified image has thumbnails or not. * * @param imageIndex * the image's index. * @return true, if the specified image has thumbnails, false otherwise. * @throws IOException * if an I/O exception has occurred. */ public boolean hasThumbnails(int imageIndex) throws IOException { return getNumThumbnails(imageIndex) > 0; // def } /** * Gets the number of thumbnails for the specified image. * * @param imageIndex * the image's index. * @return the number of thumbnails. * @throws IOException * if an I/O exception has occurred. */ public int getNumThumbnails(int imageIndex) throws IOException { return 0; // def } /** * Gets the width of the specified thumbnail for the specified image. * * @param imageIndex * the image's index. * @param thumbnailIndex * the thumbnail's index. * @return the thumbnail width. * @throws IOException * if an I/O exception has occurred. */ public int getThumbnailWidth(int imageIndex, int thumbnailIndex) throws IOException { return readThumbnail(imageIndex, thumbnailIndex).getWidth(); // def } /** * Gets the height of the specified thumbnail for the specified image. * * @param imageIndex * the image's index. * @param thumbnailIndex * the thumbnail's index. * @return the thumbnail height. * @throws IOException * if an I/O exception has occurred. */ public int getThumbnailHeight(int imageIndex, int thumbnailIndex) throws IOException { return readThumbnail(imageIndex, thumbnailIndex).getHeight(); // def } /** * Reads the thumbnail image for the specified image as a BufferedImage. * * @param imageIndex * the image index. * @param thumbnailIndex * the thumbnail index. * @return the BufferedImage. * @throws IOException * if an I/O exception has occurred. */ public BufferedImage readThumbnail(int imageIndex, int thumbnailIndex) throws IOException { throw new UnsupportedOperationException("Unsupported"); // def } /** * Requests an abort operation for current reading operation. */ public void abort() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Checks whether or not a request to abort the current read operation has * been made successfully. * * @return true, if the request to abort the current read operation has been * made successfully, false otherwise. */ protected boolean abortRequested() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Clears all previous abort request, and abortRequested returns false after * calling this method. */ protected void clearAbortRequest() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Adds the IIOReadWarningListener. * * @param listener * the IIOReadWarningListener. */ public void addIIOReadWarningListener(IIOReadWarningListener listener) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Removes the specified IIOReadWarningListener. * * @param listener * the IIOReadWarningListener to be removed. */ public void removeIIOReadWarningListener(IIOReadWarningListener listener) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Removes all registered IIOReadWarningListeners. */ public void removeAllIIOReadWarningListeners() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Adds the IIOReadProgressListener. * * @param listener * the IIOReadProgressListener. */ public void addIIOReadProgressListener(IIOReadProgressListener listener) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Removes the specified IIOReadProgressListener. * * @param listener * the IIOReadProgressListener to be removed. */ public void removeIIOReadProgressListener(IIOReadProgressListener listener) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Removes registered IIOReadProgressListeners. */ public void removeAllIIOReadProgressListeners() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Adds the IIOReadUpdateListener. * * @param listener * the IIOReadUpdateListener. */ public void addIIOReadUpdateListener(IIOReadUpdateListener listener) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Removes the specified IIOReadUpdateListener. * * @param listener * the IIOReadUpdateListener to be removed. */ public void removeIIOReadUpdateListener(IIOReadUpdateListener listener) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Removes registered IIOReadUpdateListeners. */ public void removeAllIIOReadUpdateListeners() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the start of an sequence of image reads by calling the * sequenceStarted method on all registered IIOReadProgressListeners. * * @param minIndex * the minimum index. */ protected void processSequenceStarted(int minIndex) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the completion of an sequence of image reads by calling * sequenceComplete method on all registered IIOReadProgressListeners. */ protected void processSequenceComplete() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the start of an image read by calling the imageStarted method * on all registered IIOReadProgressListeners. * * @param imageIndex * the image index. */ protected void processImageStarted(int imageIndex) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the current percentage of image completion by calling the * imageProgress method on all registered IIOReadProgressListeners. * * @param percentageDone * the percentage done. */ protected void processImageProgress(float percentageDone) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes image completion by calling the imageComplete method on all * registered IIOReadProgressListeners. */ protected void processImageComplete() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the start of a thumbnail read by calling the thumbnailStarted * method on all registered IIOReadProgressListeners. * * @param imageIndex * the image index. * @param thumbnailIndex * the thumbnail index. */ protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the current percentage of thumbnail completion by calling the * thumbnailProgress method on all registered IIOReadProgressListeners. * * @param percentageDone * the percentage done. */ protected void processThumbnailProgress(float percentageDone) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the completion of a thumbnail read by calling the * thumbnailComplete method on all registered IIOReadProgressListeners. */ protected void processThumbnailComplete() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes a read aborted event by calling the readAborted method on all * registered IIOReadProgressListeners. */ protected void processReadAborted() { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the beginning of a progressive pass by calling the passStarted * method on all registered IIOReadUpdateListeners. * * @param theImage * the image to be updated. * @param pass * the current pass index. * @param minPass * the minimum pass index. * @param maxPass * the maximum pass index. * @param minX * the X coordinate of of the upper left pixel. * @param minY * the Y coordinate of of the upper left pixel. * @param periodX * the horizontal separation between pixels. * @param periodY * the vertical separation between pixels. * @param bands * the number of affected bands. */ protected void processPassStarted(BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the update of a set of samples by calling the imageUpdate * method on all registered IIOReadUpdateListeners. * * @param theImage * the image to be updated. * @param minX * the X coordinate of the upper left pixel. * @param minY * the Y coordinate of the upper left pixel. * @param width * the width of updated area. * @param height * the height of updated area. * @param periodX * the horizontal separation between pixels. * @param periodY * the vertical separation between pixels. * @param bands * the number of affected bands. */ protected void processImageUpdate(BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the end of a progressive pass by calling passComplete method of * registered IIOReadUpdateListeners. * * @param theImage * the image to be updated. */ protected void processPassComplete(BufferedImage theImage) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the beginning of a thumbnail progressive pass by calling the * thumbnailPassStarted method on all registered IIOReadUpdateListeners. * * @param theThumbnail * the thumbnail to be updated. * @param pass * the current pass index. * @param minPass * the minimum pass index. * @param maxPass * the maximum pass index. * @param minX * the X coordinate of the upper left pixel. * @param minY * the Y coordinate of the upper left pixel. * @param periodX * the horizontal separation between pixels. * @param periodY * the vertical separation between pixels. * @param bands * the number of affected bands. */ protected void processThumbnailPassStarted(BufferedImage theThumbnail, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the update of a set of samples in a thumbnail image by calling * the thumbnailUpdate method on all registered IIOReadUpdateListeners. * * @param theThumbnail * the thumbnail to be updated. * @param minX * the X coordinate of the upper left pixel. * @param minY * the Y coordinate of the upper left pixel. * @param width * the total width of the updated area. * @param height * the total height of the updated area. * @param periodX * the horizontal separation between pixels. * @param periodY * the vertical separation between pixels. * @param bands * the number of affected bands. */ protected void processThumbnailUpdate(BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes the end of a thumbnail progressive pass by calling the * thumbnailPassComplete method on all registered IIOReadUpdateListeners. * * @param theThumbnail * the thumbnail to be updated. */ protected void processThumbnailPassComplete(BufferedImage theThumbnail) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes a warning message by calling warningOccurred method of * registered IIOReadWarningListeners. * * @param warning * the warning. */ protected void processWarningOccurred(String warning) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Processes a warning by calling the warningOccurred method of on all * registered IIOReadWarningListeners. * * @param baseName * the base name of ResourceBundles. * @param keyword * the keyword to index the warning among ResourceBundles. */ protected void processWarningOccurred(String baseName, String keyword) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Resets this ImageReader. */ public void reset() { // def setInput(null, false); setLocale(null); removeAllIIOReadUpdateListeners(); removeAllIIOReadWarningListeners(); removeAllIIOReadProgressListeners(); clearAbortRequest(); } /** * Disposes of any resources. */ public void dispose() { // do nothing by def } /** * Gets the region of source image that should be read with the specified * width, height and ImageReadParam. * * @param param * the ImageReadParam object, or null. * @param srcWidth * the source image's width. * @param srcHeight * the source image's height. * @return the Rectangle of source region. */ protected static Rectangle getSourceRegion(ImageReadParam param, int srcWidth, int srcHeight) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Computes the specified source region and the specified destination region * with the specified the width and height of the source image, an optional * destination image, and an ImageReadParam. * * @param param * the an ImageReadParam object, or null. * @param srcWidth * the source image's width. * @param srcHeight * the source image's height. * @param image * the destination image. * @param srcRegion * the source region. * @param destRegion * the destination region. */ protected static void computeRegions(ImageReadParam param, int srcWidth, int srcHeight, BufferedImage image, Rectangle srcRegion, Rectangle destRegion) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Checks the validity of the source and destination band and is called when * the reader knows the number of bands of the source image and the number * of bands of the destination image. * * @param param * the ImageReadParam for reading the Image. * @param numSrcBands * the number of bands in the source. * @param numDstBands * the number of bands in the destination. */ protected static void checkReadParamBandSettings(ImageReadParam param, int numSrcBands, int numDstBands) { throw new UnsupportedOperationException("Not implemented yet"); } /** * Gets the destination image where the decoded data is written. * * @param param * the ImageReadParam. * @param imageTypes * the iterator of ImageTypeSpecifier objects. * @param width * the width of the image being decoded. * @param height * the height of the image being decoded. * @return the BufferedImage where decoded pixels should be written. * @throws IIOException * the IIOException is thrown if there is no suitable * ImageTypeSpecifier. */ protected static BufferedImage getDestination(ImageReadParam param, Iterator<ImageTypeSpecifier> imageTypes, int width, int height) throws IIOException { throw new UnsupportedOperationException("Not implemented yet"); } }