1 /* 2 * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package java.awt.image; 27 28 import java.awt.Image; 29 30 31 /** 32 * An asynchronous update interface for receiving notifications about 33 * Image information as the Image is constructed. 34 * 35 * @author Jim Graham 36 */ 37 public interface ImageObserver { 38 /** 39 * This method is called when information about an image which was 40 * previously requested using an asynchronous interface becomes 41 * available. Asynchronous interfaces are method calls such as 42 * getWidth(ImageObserver) and drawImage(img, x, y, ImageObserver) 43 * which take an ImageObserver object as an argument. Those methods 44 * register the caller as interested either in information about 45 * the overall image itself (in the case of getWidth(ImageObserver)) 46 * or about an output version of an image (in the case of the 47 * drawImage(img, x, y, [w, h,] ImageObserver) call). 48 * 49 * <p>This method 50 * should return true if further updates are needed or false if the 51 * required information has been acquired. The image which was being 52 * tracked is passed in using the img argument. Various constants 53 * are combined to form the infoflags argument which indicates what 54 * information about the image is now available. The interpretation 55 * of the x, y, width, and height arguments depends on the contents 56 * of the infoflags argument. 57 * <p> 58 * The {@code infoflags} argument should be the bitwise inclusive 59 * <b>OR</b> of the following flags: {@code WIDTH}, 60 * {@code HEIGHT}, {@code PROPERTIES}, {@code SOMEBITS}, 61 * {@code FRAMEBITS}, {@code ALLBITS}, {@code ERROR}, 62 * {@code ABORT}. 63 * 64 * @param img the image being observed. 65 * @param infoflags the bitwise inclusive OR of the following 66 * flags: {@code WIDTH}, {@code HEIGHT}, 67 * {@code PROPERTIES}, {@code SOMEBITS}, 68 * {@code FRAMEBITS}, {@code ALLBITS}, 69 * {@code ERROR}, {@code ABORT}. 70 * @param x the <i>x</i> coordinate. 71 * @param y the <i>y</i> coordinate. 72 * @param width the width. 73 * @param height the height. 74 * @return {@code false} if the infoflags indicate that the 75 * image is completely loaded; {@code true} otherwise. 76 * 77 * @see #WIDTH 78 * @see #HEIGHT 79 * @see #PROPERTIES 80 * @see #SOMEBITS 81 * @see #FRAMEBITS 82 * @see #ALLBITS 83 * @see #ERROR 84 * @see #ABORT 85 * @see Image#getWidth 86 * @see Image#getHeight 87 * @see java.awt.Graphics#drawImage 88 */ imageUpdate(Image img, int infoflags, int x, int y, int width, int height)89 public boolean imageUpdate(Image img, int infoflags, 90 int x, int y, int width, int height); 91 92 /** 93 * This flag in the infoflags argument to imageUpdate indicates that 94 * the width of the base image is now available and can be taken 95 * from the width argument to the imageUpdate callback method. 96 * @see Image#getWidth 97 * @see #imageUpdate 98 */ 99 public static final int WIDTH = 1; 100 101 /** 102 * This flag in the infoflags argument to imageUpdate indicates that 103 * the height of the base image is now available and can be taken 104 * from the height argument to the imageUpdate callback method. 105 * @see Image#getHeight 106 * @see #imageUpdate 107 */ 108 public static final int HEIGHT = 2; 109 110 /** 111 * This flag in the infoflags argument to imageUpdate indicates that 112 * the properties of the image are now available. 113 * @see Image#getProperty 114 * @see #imageUpdate 115 */ 116 public static final int PROPERTIES = 4; 117 118 /** 119 * This flag in the infoflags argument to imageUpdate indicates that 120 * more pixels needed for drawing a scaled variation of the image 121 * are available. The bounding box of the new pixels can be taken 122 * from the x, y, width, and height arguments to the imageUpdate 123 * callback method. 124 * @see java.awt.Graphics#drawImage 125 * @see #imageUpdate 126 */ 127 public static final int SOMEBITS = 8; 128 129 /** 130 * This flag in the infoflags argument to imageUpdate indicates that 131 * another complete frame of a multi-frame image which was previously 132 * drawn is now available to be drawn again. The x, y, width, and height 133 * arguments to the imageUpdate callback method should be ignored. 134 * @see java.awt.Graphics#drawImage 135 * @see #imageUpdate 136 */ 137 public static final int FRAMEBITS = 16; 138 139 /** 140 * This flag in the infoflags argument to imageUpdate indicates that 141 * a static image which was previously drawn is now complete and can 142 * be drawn again in its final form. The x, y, width, and height 143 * arguments to the imageUpdate callback method should be ignored. 144 * @see java.awt.Graphics#drawImage 145 * @see #imageUpdate 146 */ 147 public static final int ALLBITS = 32; 148 149 /** 150 * This flag in the infoflags argument to imageUpdate indicates that 151 * an image which was being tracked asynchronously has encountered 152 * an error. No further information will become available and 153 * drawing the image will fail. 154 * As a convenience, the ABORT flag will be indicated at the same 155 * time to indicate that the image production was aborted. 156 * @see #imageUpdate 157 */ 158 public static final int ERROR = 64; 159 160 /** 161 * This flag in the infoflags argument to imageUpdate indicates that 162 * an image which was being tracked asynchronously was aborted before 163 * production was complete. No more information will become available 164 * without further action to trigger another image production sequence. 165 * If the ERROR flag was not also set in this image update, then 166 * accessing any of the data in the image will restart the production 167 * again, probably from the beginning. 168 * @see #imageUpdate 169 */ 170 public static final int ABORT = 128; 171 } 172