/* |
|
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. |
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
* |
|
* This code is free software; you can redistribute it and/or modify it |
|
* under the terms of the GNU General Public License version 2 only, as |
|
* published by the Free Software Foundation. Oracle designates this |
|
* particular file as subject to the "Classpath" exception as provided |
|
* by Oracle in the LICENSE file that accompanied this code. |
|
* |
|
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
* version 2 for more details (a copy is included in the LICENSE file that |
|
* accompanied this code). |
|
* |
|
* You should have received a copy of the GNU General Public License version |
|
* 2 along with this work; if not, write to the Free Software Foundation, |
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
* |
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
* or visit www.oracle.com if you need additional information or have any |
|
* questions. |
|
*/ |
|
package javax.imageio.event; |
|
import java.awt.image.BufferedImage; |
|
import java.util.EventListener; |
|
import javax.imageio.ImageReader; |
|
/** |
|
* An interface used by <code>ImageReader</code> implementations to |
|
* notify callers of their image and thumbnail reading methods of |
|
* pixel updates. |
|
* |
|
* @see javax.imageio.ImageReader#addIIOReadUpdateListener |
|
* @see javax.imageio.ImageReader#removeIIOReadUpdateListener |
|
* |
|
*/ |
|
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. |
|
* |
|
* <p> An estimate of the area that will be updated by the pass is |
|
* indicated by the <code>minX</code>, <code>minY</code>, |
|
* <code>width</code>, and <code>height</code> parameters. If the |
|
* pass is interlaced, that is, it only updates selected rows or |
|
* columns, the <code>periodX</code> and <code>periodY</code> |
|
* parameters will indicate the degree of subsampling. The set of |
|
* bands that may be affected is indicated by the value of |
|
* <code>bands</code>. |
|
* |
|
* @param source the <code>ImageReader</code> object calling this |
|
* method. |
|
* @param theImage the <code>BufferedImage</code> being updated. |
|
* @param pass the number 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 <code>int</code>s 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. |
|
* |
|
* <p> 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. |
|
* |
|
* <p> The particular <code>ImageReader</code> 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 |
|
* (<code>minX</code>, <code>minY</code>, <code>width</code>, and |
|
* <code>height</code>); X and Y subsampling factors |
|
* (<code>periodX</code> and <code>periodY</code>); and a set of |
|
* updated bands (<code>bands</code>). For example, the update: |
|
* |
|
* <pre> |
|
* minX = 10 |
|
* minY = 20 |
|
* width = 3 |
|
* height = 4 |
|
* periodX = 2 |
|
* periodY = 3 |
|
* bands = { 1, 3 } |
|
* </pre> |
|
* |
|
* would indicate that bands 1 and 3 of the following pixels were |
|
* updated: |
|
* |
|
* <pre> |
|
* (10, 20) (12, 20) (14, 20) |
|
* (10, 23) (12, 23) (14, 23) |
|
* (10, 26) (12, 26) (14, 26) |
|
* (10, 29) (12, 29) (14, 29) |
|
* </pre> |
|
* |
|
* @param source the <code>ImageReader</code> object calling this method. |
|
* @param theImage the <code>BufferedImage</code> 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 <code>int</code>s 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 <code>ImageReader</code> object calling this |
|
* method. |
|
* @param theImage the <code>BufferedImage</code> 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 <code>ImageReader</code> object calling this |
|
* method. |
|
* @param theThumbnail the <code>BufferedImage</code> thumbnail |
|
* being updated. |
|
* @param pass the number 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 <code>int</code>s 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 <code>ImageReader</code> object calling this method. |
|
* @param theThumbnail the <code>BufferedImage</code> 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 <code>int</code>s 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 <code>ImageReader</code> object calling this |
|
* method. |
|
* @param theThumbnail the <code>BufferedImage</code> thumbnail |
|
* being updated. |
|
* |
|
* @see #passComplete |
|
*/ |
|
void thumbnailPassComplete(ImageReader source, BufferedImage theThumbnail); |
|
} |