/* * @(#)IIOReadUpdateListener.java 1.19 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.imageio.event; import java.awt.image.BufferedImage; import java.util.EventListener; import javax.imageio.ImageReader; /** * An interface used by ImageReader implementations to * notify callers of their image and thumbnail reading methods of * pixel updates. * * @see javax.imageio.ImageReader#addIIOReadUpdateListener * @see javax.imageio.ImageReader#removeIIOReadUpdateListener * * @version 0.5 */ public interface IIOReadUpdateListener extends EventListener { /** * Reports that the current read operation is about to begin a * progressive pass. Readers of formats that support progressive * encoding should use this to notify clients when each pass is * completed when reading a progressively encoded image. * *

An estimate of the area that will be updated by the pass is * indicated by the minX, minY, * width, and height parameters. If the * pass is interlaced, that is, it only updates selected rows or * columns, the periodX and periodY * parameters will indicate the degree of subsampling. The set of * bands that may be affected is indicated by the value of * bands. * * @param source the ImageReader object calling this * method. * @param theImage the BufferedImage being updated. * @param pass the numer of the pass that is about to begin, * starting with 0. * @param minPass the index of the first pass that will be decoded. * @param maxPass the index of the last pass that will be decoded. * @param minX the X coordinate of the leftmost updated column * of pixels. * @param minY the Y coordinate of the uppermost updated row * of pixels. * @param periodX the horizontal spacing between updated pixels; * a value of 1 means no gaps. * @param periodY the vertical spacing between updated pixels; * a value of 1 means no gaps. * @param bands an array of ints indicating the the * set bands that may be updated. */ void passStarted(ImageReader source, BufferedImage theImage, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands); /** * Reports that a given region of the image has been updated. * The application might choose to redisplay the specified area, * for example, in order to provide a progressive display effect, * or perform other incremental processing. * *

Note that different image format readers may produce * decoded pixels in a variety of different orders. Many readers * will produce pixels in a simple top-to-bottom, * left-to-right-order, but others may use multiple passes of * interlacing, tiling, etc. The sequence of updates may even * differ from call to call depending on network speeds, for * example. A call to this method does not guarantee that all the * specified pixels have actually been updated, only that some * activity has taken place within some subregion of the one * specified. * *

The particular ImageReader implementation may * choose how often to provide updates. Each update specifies * that a given region of the image has been updated since the * last update. A region is described by its spatial bounding box * (minX, minY, width, and * height); X and Y subsampling factors * (periodX and periodY); and a set of * updated bands (bands). For example, the update: * *

     * minX = 10
     * minY = 20
     * width = 3
     * height = 4
     * periodX = 2
     * periodY = 3
     * bands = { 1, 3 }
     * 
* * would indicate that bands 1 and 3 of the following pixels were * updated: * *
     * (10, 20) (12, 20) (14, 20)
     * (10, 23) (12, 23) (14, 23)
     * (10, 26) (12, 26) (14, 26)
     * (10, 29) (12, 29) (14, 29)
     * 
* * @param source the ImageReader object calling this method. * @param theImage the BufferedImage being updated. * @param minX the X coordinate of the leftmost updated column * of pixels. * @param minY the Y coordinate of the uppermost updated row * of pixels. * @param width the number of updated pixels horizontally. * @param height the number of updated pixels vertically. * @param periodX the horizontal spacing between updated pixels; * a value of 1 means no gaps. * @param periodY the vertical spacing between updated pixels; * a value of 1 means no gaps. * @param bands an array of ints indicating which * bands are being updated. */ void imageUpdate(ImageReader source, BufferedImage theImage, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands); /** * Reports that the current read operation has completed a * progressive pass. Readers of formats that support * progressive encoding should use this to notify clients when * each pass is completed when reading a progressively * encoded image. * * @param source the ImageReader object calling this * method. * @param theImage the BufferedImage being updated. * * @see javax.imageio.ImageReadParam#setSourceProgressivePasses(int, int) */ void passComplete(ImageReader source, BufferedImage theImage); /** * Reports that the current thumbnail read operation is about to * begin a progressive pass. Readers of formats that support * progressive encoding should use this to notify clients when * each pass is completed when reading a progressively encoded * thumbnail image. * * @param source the ImageReader object calling this * method. * @param theThumbnail the BufferedImage thumbnail * being updated. * @param pass the numer of the pass that is about to begin, * starting with 0. * @param minPass the index of the first pass that will be decoded. * @param maxPass the index of the last pass that will be decoded. * @param minX the X coordinate of the leftmost updated column * of pixels. * @param minY the Y coordinate of the uppermost updated row * of pixels. * @param periodX the horizontal spacing between updated pixels; * a value of 1 means no gaps. * @param periodY the vertical spacing between updated pixels; * a value of 1 means no gaps. * @param bands an array of ints indicating the the * set bands that may be updated. * * @see #passStarted */ void thumbnailPassStarted(ImageReader source, BufferedImage theThumbnail, int pass, int minPass, int maxPass, int minX, int minY, int periodX, int periodY, int[] bands); /** * Reports that a given region of a thumbnail image has been updated. * The application might choose to redisplay the specified area, * for example, in order to provide a progressive display effect, * or perform other incremental processing. * * @param source the ImageReader object calling this method. * @param theThumbnail the BufferedImage thumbnail * being updated. * @param minX the X coordinate of the leftmost updated column * of pixels. * @param minY the Y coordinate of the uppermost updated row * of pixels. * @param width the number of updated pixels horizontally. * @param height the number of updated pixels vertically. * @param periodX the horizontal spacing between updated pixels; * a value of 1 means no gaps. * @param periodY the vertical spacing between updated pixels; * a value of 1 means no gaps. * @param bands an array of ints indicating which * bands are being updated. * * @see #imageUpdate */ void thumbnailUpdate(ImageReader source, BufferedImage theThumbnail, int minX, int minY, int width, int height, int periodX, int periodY, int[] bands); /** * Reports that the current thumbnail read operation has completed * a progressive pass. Readers of formats that support * progressive encoding should use this to notify clients when * each pass is completed when reading a progressively encoded * thumbnail image. * * @param source the ImageReader object calling this * method. * @param theThumbnail the BufferedImage thumbnail * being updated. * * @see #passComplete */ void thumbnailPassComplete(ImageReader source, BufferedImage theThumbnail); }