diff options
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/awt/image/ImageConsumer.java | 201 | ||||
-rw-r--r-- | libjava/java/awt/image/ImageObserver.java | 137 | ||||
-rw-r--r-- | libjava/java/awt/image/ImageProducer.java | 87 |
3 files changed, 372 insertions, 53 deletions
diff --git a/libjava/java/awt/image/ImageConsumer.java b/libjava/java/awt/image/ImageConsumer.java index 26519cb..25073ff 100644 --- a/libjava/java/awt/image/ImageConsumer.java +++ b/libjava/java/awt/image/ImageConsumer.java @@ -1,35 +1,186 @@ -/* Copyright (C) 2000 Free Software Foundation +/* ImageConsumer.java -- Java interface for image consumption + Copyright (C) 1999 Free Software Foundation, Inc. - This file is part of libgcj. +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ package java.awt.image; + import java.util.Hashtable; +/** + * An object implementing the <code>ImageProducer</code> interface can + * use objects implementing this interface to deliver the image data. + * + * @author C. Brian Jones (cbj@gnu.org) + */ public interface ImageConsumer { + /** + * The pixel order may be random. This should be + * the default assumption of the <code>ImageConsumer</code>. + * + * @see #setHints + */ + public static final int RANDOMPIXELORDER = 1; + + /** + * The pixel order is top-down, left-right. + * + * @see #setHints + */ + public static final int TOPDOWNLEFTRIGHT = 2; + + /** + * The pixel order is in multiples of complete scanlines. + * + * @see #setHints + */ + public static final int COMPLETESCANLINES = 4; + + /** + * The pixels will be delivered in a single pass. There is at + * most one call to <code>setPixels</code> for any single pixel. + * + * @see #setHints + * @see #setPixels + */ + public static final int SINGLEPASS = 8; + + /** + * The pixels will be delivered with multiple calls to + * <code>setPixels</code>. The image contains a single frame + * which ends when <code>imageComplete</code> is called with the + * <code>STATICIMAGEDONE</code> flag. If the image is constantly + * changing such as with video then the end of each frame is + * marked by a similar call to <code>imageComplete</code> with the + * <code>SINGLEFRAMEDONE</code> flag. + * + * @see #setHints + * @see #imageComplete + */ + public static final int SINGLEFRAME = 16; + + /** + * Indicates an error occurred while producing an image. + * + * @see #imageComplete + */ + public static final int IMAGEERROR = 1; - public static final int RANDOMPIXELORDER = 1 << 0, - TOPDOWNLEFTRIGHT = 1 << 1, - COMPLETESCANLINES = 1 << 2, - SINGLEPASS = 1 << 3, - SINGLEFRAME = 1 << 4; - - public static final int IMAGEERROR = 1, - SINGLEFRAMEDONE = 2, - STATICIMAGEDONE = 3, - IMAGEABORTED = 4; - - public void setDimensions(int width, int height); - public void setProperties(Hashtable props); - public void setColorModel(ColorModel model); - public void setHints(int hintflags); - public void setPixels(int x, int y, int w, int h, ColorModel model, - byte[] pixels, int off, int scansize); - public void setPixels(int x, int y, int w, int h, ColorModel model, - int[] pixels, int off, int scansize); - public void imageComplete(int status); + /** + * A single frame is complete but more will follow. + * + * @see #imageComplete + */ + public static final int SINGLEFRAMEDONE = 2; + + /** + * The image is complete and no more pixels or frames will follow. + * + * @see #imageComplete + */ + public static final int STATICIMAGEDONE = 3; + + /** + * Production of the image has been aborted. + * + * @see #imageComplete + */ + public static final int IMAGEABORTED = 4; + + /** + * An <code>ImageProducer</code> indicates the size of the image + * being produced using this method. + * + * @param width the width of the image + * @param height the height of the image + */ + public abstract void setDimensions(int width, int height); + + /** + * An <code>ImageProducer</code> can set a list of properties + * associated with this image by using this method. + * + * @param props the list of properties associated with this image + */ + public abstract void setProperties(Hashtable props); + + /** + * This <code>ColorModel</code> should indicate the model used by + * the majority of calls to <code>setPixels</code>. Each call to + * <code>setPixels</code> could however indicate a different + * <code>ColorModel</code>. + * + * @param model the color model to be used most often by setPixels + * @see ColorModel + */ + public abstract void setColorModel(ColorModel model); + + /** + * The <code>ImageProducer</code> should call this method with a + * bit mask of hints from any of <code>RANDOMPIXELORDER</code>, + * <code>TOPDOWNLEFTRIGHT</code>, <code>COMPLETESCANLINES</code>, + * <code>SINGLEPASS</code>, <code>SINGLEFRAME</code>. + * + * @param flags a bit mask of hints + */ + public abstract void setHints(int flags); + + /** + * This function delivers a rectangle of pixels where any + * pixel(m,n) is stored in the array as a <code>byte</code> at + * index (n * scansize + m + offset). + */ + public abstract void setPixels(int x, int y, int w, int h, + ColorModel model, byte[] pixels, int offset, int scansize); + + /** + * This function delivers a rectangle of pixels where any + * pixel(m,n) is stored in the array as an <code>int</code> at + * index (n * scansize + m + offset). + */ + public abstract void setPixels(int x, int y, int w, int h, + ColorModel model, int[] pixels, int offset, int scansize); + + /** + * The <code>ImageProducer</code> calls this method to indicate a + * single frame or the entire image is complete. The method is + * also used to indicate an error in loading or producing the + * image. + */ + public abstract void imageComplete(int status); } + diff --git a/libjava/java/awt/image/ImageObserver.java b/libjava/java/awt/image/ImageObserver.java index 770e28c..6c4673e 100644 --- a/libjava/java/awt/image/ImageObserver.java +++ b/libjava/java/awt/image/ImageObserver.java @@ -1,28 +1,129 @@ -/* Copyright (C) 2000 Free Software Foundation +/* ImageObserver.java -- Java interface for asynchronous updates to an image + Copyright (C) 1999 Free Software Foundation, Inc. - This file is part of libgcj. +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ package java.awt.image; import java.awt.Image; -public interface ImageObserver +/** + * An object implementing the <code>ImageObserver</code> interface can + * receive updates on image construction from an + * <code>ImageProducer</code> asynchronously. + * + * @see ImageProducer + * @author C. Brian Jones (cbj@gnu.org) + */ +public interface ImageObserver { - int WIDTH = 1 << 0; - int HEIGHT = 1 << 1; - int PROPERTIES = 1 << 2; - int SOMEBITS = 1 << 3; - int FRAMEBITS = 1 << 4; - int ALLBITS = 1 << 5; - int ERROR = 1 << 6; - int ABORT = 1 << 7; - - boolean imageUpdate(Image image, int infoFlags, int x, int y, int width, - int height); -} + /** + * The width of the image has been provided as the + * <code>width</code> argument to <code>imageUpdate</code>. + * + * @see #imageUpdate + */ + public static final int WIDTH = 1; + + /** + * The height of the image has been provided as the + * <code>height</code> argument to <code>imageUpdate</code>. + * + * @see #imageUpdate + */ + public static final int HEIGHT = 2; + /** + * The properties of the image have been provided. + * + * @see #imageUpdate + * @see java.awt.Image#getProperty (java.lang.String, java.awt.image.ImageObserver) + */ + public static final int PROPERTIES = 4; + /** + * More pixels are now available for drawing a scaled variation of + * the image. + * + * @see #imageUpdate + */ + public static final int SOMEBITS = 8; + + /** + * All the pixels needed to draw a complete frame of a multi-frame + * image are available. + * + * @see #imageUpdate + */ + public static final int FRAMEBITS = 16; + + /** + * An image with a single frame, a static image, is complete. + * + * @see #imageUpdate + */ + public static final int ALLBITS = 32; + + /** + * An error was encountered while producing the image. + * + * @see #imageUpdate + */ + public static final int ERROR = 64; + + /** + * Production of the image was aborted. + * + * @see #imageUpdate + */ + public static final int ABORT = 128; + + /** + * This is a callback method for an asynchronous image producer to + * provide updates on the production of the image as it happens. + * + * @param image the image the update refers to + * @param flags a bit mask indicating what is provided with this update + * @param x the x coordinate of the image + * @param y the y coordinate of the image + * @param width the width of the image + * @param height the height of the image + * + * @see java.awt.Image + */ + public abstract boolean imageUpdate(Image image, int flags, int x, + int y, int width, int height); +} diff --git a/libjava/java/awt/image/ImageProducer.java b/libjava/java/awt/image/ImageProducer.java index c8cfe12..1bc1736 100644 --- a/libjava/java/awt/image/ImageProducer.java +++ b/libjava/java/awt/image/ImageProducer.java @@ -1,18 +1,85 @@ -/* Copyright (C) 2000 Free Software Foundation +/* ImageProducer.java -- Java interface for image production + Copyright (C) 1999 Free Software Foundation, Inc. - This file is part of libgcj. +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ package java.awt.image; +/** + * An object implementing the <code>ImageProducer</code> interface can + * produce data for images. Each image has a corresponding + * <code>ImageProducer</code> which is needed for things such as + * resizing the image. + * + * @see ImageConsumer + * @author C. Brian Jones (cbj@gnu.org) + */ public interface ImageProducer { - void addConsumer(ImageConsumer ic); - boolean isConsumer(ImageConsumer ic); - void removeConsumer(ImageConsumer ic); - void startProduction(ImageConsumer ic); - void requestTopDownLeftRightResend(ImageConsumer ic); + /** + * Used to register an <code>ImageConsumer</code> with this + * <code>ImageProducer</code>. + */ + public abstract void addConsumer(ImageConsumer ic); + + /** + * Used to determine if the given <code>ImageConsumer</code> is + * already registered with this <code>ImageProducer</code>. + */ + public abstract boolean isConsumer(ImageConsumer ic); + + /** + * Used to remove an <code>ImageConsumer</code> from the list of + * registered consumers for this <code>ImageProducer</code>. + */ + public abstract void removeConsumer(ImageConsumer ic); + + /** + * Used to register an <code>ImageConsumer</code> with this + * <code>ImageProducer</code> and then immediately start + * reconstruction of the image data to be delivered to all + * registered consumers. + */ + public abstract void startProduction(ImageConsumer ic); + + /** + * Used to register an <code>ImageConsumer</code> with this + * <code>ImageProducer</code> and then request that this producer + * resend the image data in the order top-down, left-right. + */ + public abstract void requestTopDownLeftRightResend(ImageConsumer ic); } + |