/* * 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 Sergey I. Salishev * @version $Revision: 1.2 $ */ package javax.imageio; import java.awt.Dimension; import java.awt.image.BufferedImage; /* * @author Sergey I. Salishev * @version $Revision: 1.2 $ */ /** * The ImageReadParam class provides information to the ImageReader about * how an image is to be decoded. */ public class ImageReadParam extends IIOParam { /** * This flag indicates if this ImageReadParam supports setting the source * rendering size. */ protected boolean canSetSourceRenderSize; /** * The destination BufferedImage. */ protected BufferedImage destination; /** The destination bands. */ protected int[] destinationBands; /** * The minimum progressive pass. */ protected int minProgressivePass; /** * The number of progressive passes. */ protected int numProgressivePasses; /** The source render size. */ protected Dimension sourceRenderSize; /** * Returns true if this ImageReaderParam supports rendering a * source image at an arbitrary size. * * @return true if this ImageReaderParam supports rendering a * source image at an arbitrary size, false otherwise. */ public boolean canSetSourceRenderSize() { return canSetSourceRenderSize; } /** * Gets the current destination image as BufferedImage. * * @return the BufferedImage which represents the destination. */ public BufferedImage getDestination() { return destination; } /** * Gets the indices of destination bands. * * @return the array of destination bands. */ public int[] getDestinationBands() { return destinationBands; } /** * Gets the index of the maximum pass to be decoded. * This method returns Integer.MAX_VALUE, if * getSourceNumProgressivePasses() method returns value * that is equal to Integer.MAX_VALUE. Otherwise * this method returns * getSourceMinProgressivePass() + getSourceNumProgressivePasses() - 1. * * @return the index of the maximum pass to be decoded. */ public int getSourceMaxProgressivePass() { if (getSourceNumProgressivePasses() == Integer.MAX_VALUE) { return Integer.MAX_VALUE; } return getSourceMinProgressivePass() + getSourceNumProgressivePasses() - 1; } /** * Gets the index of the minimum progressive pass that is decoded, * default is 0. * * @return the index of the minimum progressive pass that is decoded, * default is 0. */ public int getSourceMinProgressivePass() { return minProgressivePass; } /** * Gets the number of progressive passes. * The default value is Integer.MAX_VALUE. * * @return the number of progressive passes. */ public int getSourceNumProgressivePasses() { return numProgressivePasses; } /** * Gets the dimension of source image which will be rendered * during decoding process. * * @return the source render size. */ public Dimension getSourceRenderSize() { return sourceRenderSize; } /** * Sets the specified destination image. * This image will be used by read, readAll, and readRaster methods, * and a reference to it will be returned by those methods. * * @param destination the destination image. */ public void setDestination(BufferedImage destination) { this.destination = destination; } /** * Sets the indices of the destination bands. * * @param destinationBands the indices of the destination bands. */ public void setDestinationBands(int[] destinationBands) { this.destinationBands = destinationBands; } @Override public void setDestinationType(ImageTypeSpecifier destinationType) { this.destinationType = destinationType; } /** * Sets the source progressive passes. * * @param minPass the index of the minimum pass to be decoded. * @param numPasses the number of passes to be decoded. */ public void setSourceProgressivePasses(int minPass, int numPasses) { minProgressivePass = minPass; numProgressivePasses = numPasses; } /** * Sets the dimension size of source image if an * image can be rendered at an arbitrary size. * * @param size the size of rendered image. * * @throws UnsupportedOperationException the unsupported operation exception */ public void setSourceRenderSize(Dimension size) throws UnsupportedOperationException { if (!canSetSourceRenderSize) { throw new UnsupportedOperationException("can't set source renderer size"); } sourceRenderSize = size; } }