diff options
author | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-11-12 00:37:34 +0000 |
---|---|---|
committer | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-11-12 00:37:34 +0000 |
commit | 122ce965e6a2cfd03426146540e17f6a5034e45c (patch) | |
tree | 76d0f90da057662bc2f5deb1bc000be30244807e /libjava/gnu/java/awt/peer/gtk/GtkImage.java | |
parent | c057b68ee6d2ead95ee3fd6424d506dfc8c13854 (diff) | |
download | ppe42-gcc-122ce965e6a2cfd03426146540e17f6a5034e45c.tar.gz ppe42-gcc-122ce965e6a2cfd03426146540e17f6a5034e45c.zip |
2003-11-11 Thomas Fitzsimmons <fitzsim@redhat.com>
* Makefile.am: Add GdkPixbufDecoder.java and
gnu_java_awt_peer_gtk_GdkPixbufDecoder.c
* Makefile.in: Regenerate.
* gnu/java/awt/image/ImageDecoder.java (ImageDecoder(byte[],int,int)):
New constructor.
(startProduction): Create ByteArrayInputStream when url and filename are
null.
(produce): Declare stream parameter as InputStream.
* gnu/java/awt/image/XBMDecoder.java (produce): Declare stream parameter
as InputStream.
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
(GdkPixbufDecoder(byte[],int,int)): New constructor.
(produce): Declare stream parameter as InputStream.
* gnu/java/awt/peer/gtk/GtkComponentPeer.java (prepareImage): Throw NPE
if image is null. Set image's observer before running PrepareImage
thread. Pass image to startProduction.
* gnu/java/awt/peer/gtk/GtkImage.java: Add null checks before calls to
source's member functions.
(observer): New field.
(setObserver): New method.
(setDimensions, setPixels, imageComplete): Call observer's imageUpdate.
* gnu/java/awt/peer/gtk/GtkToolkit.java (checkImage, getImage): Return
new GtkImage.
(prepareImage): Implement.
* java/awt/Component.java: Add static fields incrementalDraw and
redrawRate.
(imageUpdate): Implement.
(createImage): Call Toolkit's createImage if peer is null.
(prepareImage): Throw NPE if image is null.
* java/awt/MediaTracker.java: Fix return value.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73476 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java/awt/peer/gtk/GtkImage.java')
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkImage.java | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImage.java b/libjava/gnu/java/awt/peer/gtk/GtkImage.java index 6252a506f0d..5f8d2237b7c 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkImage.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkImage.java @@ -60,6 +60,7 @@ public class GtkImage extends Image implements ImageConsumer Vector propertyObservers = new Vector (); ImageProducer source; + ImageObserver observer; Graphics g; /* Variables in which we stored cached data, if possible. @@ -79,9 +80,15 @@ public class GtkImage extends Image implements ImageConsumer source = producer; this.g = g; - source.addConsumer (this); + if (source != null) + source.addConsumer (this); } - + + public void setObserver (ImageObserver observer) + { + this.observer = observer; + } + public synchronized int getWidth (ImageObserver observer) { @@ -135,8 +142,11 @@ public class GtkImage extends Image implements ImageConsumer pixelCache = null; model = null; - source.removeConsumer (this); - source.addConsumer (this); + if (source != null) + { + source.removeConsumer (this); + source.addConsumer (this); + } } public boolean @@ -166,6 +176,12 @@ public class GtkImage extends Image implements ImageConsumer ImageObserver io = (ImageObserver) heightObservers.elementAt (i); io.imageUpdate (this, ImageObserver.HEIGHT, -1, -1, width, height); } + + if (observer != null) + observer.imageUpdate (this, + (ImageObserver.WIDTH + | ImageObserver.HEIGHT), + -1, -1, width, height); } public synchronized void @@ -200,6 +216,11 @@ public class GtkImage extends Image implements ImageConsumer { setPixels (x, y, width, height, cm, convertPixels (pixels), offset, scansize); + + if (observer != null) + observer.imageUpdate (this, + ImageObserver.SOMEBITS, + x, y, width, height); } public synchronized void @@ -241,7 +262,20 @@ public class GtkImage extends Image implements ImageConsumer if (status == ImageConsumer.SINGLEFRAMEDONE) isCacheable = false; - source.removeConsumer (this); + if (observer != null) + { + if (status == ImageConsumer.IMAGEERROR) + observer.imageUpdate (null, + ImageObserver.ERROR, + -1, -1, -1, -1); + else + observer.imageUpdate (null, + ImageObserver.ALLBITS, + -1, -1, -1, -1); + } + + if (source != null) + source.removeConsumer (this); } public synchronized void @@ -254,8 +288,11 @@ public class GtkImage extends Image implements ImageConsumer } else { - source.startProduction (painter); - source.removeConsumer (painter); + if (source != null) + { + source.startProduction (painter); + source.removeConsumer (painter); + } } } |