Makefile.am: Add GdkPixbufDecoder.java and gnu_java_awt_peer_gtk_GdkPixbufDecoder.c
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. From-SVN: r73476
This commit is contained in:
parent
c754c6f131
commit
a5966c9ef9
11 changed files with 207 additions and 47 deletions
|
@ -1,3 +1,36 @@
|
||||||
|
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.
|
||||||
|
|
||||||
2003-11-11 Thomas Fitzsimmons <fitzsim@redhat.com>
|
2003-11-11 Thomas Fitzsimmons <fitzsim@redhat.com>
|
||||||
|
|
||||||
* gnu/java/awt/peer/gtk/GtkLabelPeer.java (create()): Call new create.
|
* gnu/java/awt/peer/gtk/GtkLabelPeer.java (create()): Call new create.
|
||||||
|
|
|
@ -170,6 +170,7 @@ libgcj_la_LINK = $(LIBLINK)
|
||||||
gtk_c_source_files = \
|
gtk_c_source_files = \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c \
|
||||||
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.c \
|
||||||
|
@ -206,6 +207,7 @@ jni/classpath/primlib.c
|
||||||
gtk_awt_peer_sources = \
|
gtk_awt_peer_sources = \
|
||||||
gnu/java/awt/peer/gtk/GdkFontMetrics.java \
|
gnu/java/awt/peer/gtk/GdkFontMetrics.java \
|
||||||
gnu/java/awt/peer/gtk/GdkGraphics.java \
|
gnu/java/awt/peer/gtk/GdkGraphics.java \
|
||||||
|
gnu/java/awt/peer/gtk/GdkPixbufDecoder.java \
|
||||||
gnu/java/awt/peer/gtk/GtkArg.java \
|
gnu/java/awt/peer/gtk/GtkArg.java \
|
||||||
gnu/java/awt/peer/gtk/GtkArgList.java \
|
gnu/java/awt/peer/gtk/GtkArgList.java \
|
||||||
gnu/java/awt/peer/gtk/GtkButtonPeer.java \
|
gnu/java/awt/peer/gtk/GtkButtonPeer.java \
|
||||||
|
|
|
@ -261,6 +261,7 @@ libgcj_la_LINK = $(LIBLINK)
|
||||||
gtk_c_source_files = \
|
gtk_c_source_files = \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c \
|
||||||
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.c \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.c \
|
||||||
|
@ -297,6 +298,7 @@ jni/classpath/primlib.c
|
||||||
gtk_awt_peer_sources = \
|
gtk_awt_peer_sources = \
|
||||||
gnu/java/awt/peer/gtk/GdkFontMetrics.java \
|
gnu/java/awt/peer/gtk/GdkFontMetrics.java \
|
||||||
gnu/java/awt/peer/gtk/GdkGraphics.java \
|
gnu/java/awt/peer/gtk/GdkGraphics.java \
|
||||||
|
gnu/java/awt/peer/gtk/GdkPixbufDecoder.java \
|
||||||
gnu/java/awt/peer/gtk/GtkArg.java \
|
gnu/java/awt/peer/gtk/GtkArg.java \
|
||||||
gnu/java/awt/peer/gtk/GtkArgList.java \
|
gnu/java/awt/peer/gtk/GtkArgList.java \
|
||||||
gnu/java/awt/peer/gtk/GtkButtonPeer.java \
|
gnu/java/awt/peer/gtk/GtkButtonPeer.java \
|
||||||
|
@ -2624,8 +2626,9 @@ lib_gnu_java_awt_peer_gtk_la_LDFLAGS =
|
||||||
lib_gnu_java_awt_peer_gtk_la_DEPENDENCIES =
|
lib_gnu_java_awt_peer_gtk_la_DEPENDENCIES =
|
||||||
lib_gnu_java_awt_peer_gtk_la_OBJECTS = \
|
lib_gnu_java_awt_peer_gtk_la_OBJECTS = \
|
||||||
gnu/java/awt/peer/gtk/GdkFontMetrics.lo \
|
gnu/java/awt/peer/gtk/GdkFontMetrics.lo \
|
||||||
gnu/java/awt/peer/gtk/GdkGraphics.lo gnu/java/awt/peer/gtk/GtkArg.lo \
|
gnu/java/awt/peer/gtk/GdkGraphics.lo \
|
||||||
gnu/java/awt/peer/gtk/GtkArgList.lo \
|
gnu/java/awt/peer/gtk/GdkPixbufDecoder.lo \
|
||||||
|
gnu/java/awt/peer/gtk/GtkArg.lo gnu/java/awt/peer/gtk/GtkArgList.lo \
|
||||||
gnu/java/awt/peer/gtk/GtkButtonPeer.lo \
|
gnu/java/awt/peer/gtk/GtkButtonPeer.lo \
|
||||||
gnu/java/awt/peer/gtk/GtkCanvasPeer.lo \
|
gnu/java/awt/peer/gtk/GtkCanvasPeer.lo \
|
||||||
gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer.lo \
|
gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer.lo \
|
||||||
|
@ -2662,6 +2665,7 @@ gnu/java/awt/peer/gtk/GtkToolkit.lo \
|
||||||
gnu/java/awt/peer/gtk/GtkWindowPeer.lo \
|
gnu/java/awt/peer/gtk/GtkWindowPeer.lo \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.lo \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.lo \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.lo \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.lo \
|
||||||
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.lo \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.lo \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.lo \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.lo \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.lo \
|
||||||
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.lo \
|
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.lo \
|
||||||
|
@ -2827,6 +2831,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||||
.deps/gnu/java/awt/peer/GLightweightPeer.P \
|
.deps/gnu/java/awt/peer/GLightweightPeer.P \
|
||||||
.deps/gnu/java/awt/peer/gtk/GdkFontMetrics.P \
|
.deps/gnu/java/awt/peer/gtk/GdkFontMetrics.P \
|
||||||
.deps/gnu/java/awt/peer/gtk/GdkGraphics.P \
|
.deps/gnu/java/awt/peer/gtk/GdkGraphics.P \
|
||||||
|
.deps/gnu/java/awt/peer/gtk/GdkPixbufDecoder.P \
|
||||||
.deps/gnu/java/awt/peer/gtk/GtkArg.P \
|
.deps/gnu/java/awt/peer/gtk/GtkArg.P \
|
||||||
.deps/gnu/java/awt/peer/gtk/GtkArgList.P \
|
.deps/gnu/java/awt/peer/gtk/GtkArgList.P \
|
||||||
.deps/gnu/java/awt/peer/gtk/GtkButtonPeer.P \
|
.deps/gnu/java/awt/peer/gtk/GtkButtonPeer.P \
|
||||||
|
@ -4284,6 +4289,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||||
.deps/jni/classpath/primlib.P \
|
.deps/jni/classpath/primlib.P \
|
||||||
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.P \
|
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.P \
|
||||||
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.P \
|
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.P \
|
||||||
|
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.P \
|
||||||
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.P \
|
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.P \
|
||||||
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.P \
|
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.P \
|
||||||
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.P \
|
.deps/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.P \
|
||||||
|
|
|
@ -48,6 +48,10 @@ public abstract class ImageDecoder implements ImageProducer
|
||||||
Vector consumers = new Vector ();
|
Vector consumers = new Vector ();
|
||||||
String filename;
|
String filename;
|
||||||
URL url;
|
URL url;
|
||||||
|
byte[] data;
|
||||||
|
int offset;
|
||||||
|
int length;
|
||||||
|
InputStream input;
|
||||||
|
|
||||||
public static ColorModel cm;
|
public static ColorModel cm;
|
||||||
|
|
||||||
|
@ -69,6 +73,13 @@ public abstract class ImageDecoder implements ImageProducer
|
||||||
this.url = url;
|
this.url = url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ImageDecoder (byte[] imagedata, int imageoffset, int imagelength)
|
||||||
|
{
|
||||||
|
data = imagedata;
|
||||||
|
offset = imageoffset;
|
||||||
|
length = imagelength;
|
||||||
|
}
|
||||||
|
|
||||||
public void addConsumer (ImageConsumer ic)
|
public void addConsumer (ImageConsumer ic)
|
||||||
{
|
{
|
||||||
consumers.addElement (ic);
|
consumers.addElement (ic);
|
||||||
|
@ -90,11 +101,22 @@ public abstract class ImageDecoder implements ImageProducer
|
||||||
Vector list = (Vector) consumers.clone ();
|
Vector list = (Vector) consumers.clone ();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
FileInputStream is = (url == null) ? new FileInputStream (filename) :
|
// Create the input stream here rather than in the
|
||||||
(FileInputStream) url.openStream();
|
// ImageDecoder constructors so that exceptions cause
|
||||||
|
// imageComplete to be called with an appropriate error
|
||||||
produce (list, is);
|
// status.
|
||||||
}
|
if (url != null)
|
||||||
|
input = url.openStream();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (filename != null)
|
||||||
|
input = new FileInputStream (filename);
|
||||||
|
else
|
||||||
|
input = new ByteArrayInputStream (data, offset, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
produce (list, input);
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < list.size (); i++)
|
for (int i = 0; i < list.size (); i++)
|
||||||
|
@ -109,5 +131,5 @@ public abstract class ImageDecoder implements ImageProducer
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract void produce (Vector v, FileInputStream is) throws IOException;
|
abstract void produce (Vector v, InputStream is) throws IOException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class XBMDecoder extends ImageDecoder
|
||||||
super (url);
|
super (url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void produce (Vector v, FileInputStream is) throws IOException
|
public void produce (Vector v, InputStream is) throws IOException
|
||||||
{
|
{
|
||||||
reader = new BufferedReader (new InputStreamReader (is));
|
reader = new BufferedReader (new InputStreamReader (is));
|
||||||
int width = -1, height = -1;
|
int width = -1, height = -1;
|
||||||
|
|
|
@ -41,6 +41,7 @@ package gnu.java.awt.peer.gtk;
|
||||||
import java.awt.image.*;
|
import java.awt.image.*;
|
||||||
import java.io.FileDescriptor;
|
import java.io.FileDescriptor;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
@ -85,6 +86,12 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||||
initState ();
|
initState ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GdkPixbufDecoder (byte[] imagedata, int imageoffset, int imagelength)
|
||||||
|
{
|
||||||
|
super (imagedata, imageoffset, imagelength);
|
||||||
|
initState ();
|
||||||
|
}
|
||||||
|
|
||||||
// called back by native side
|
// called back by native side
|
||||||
void areaPrepared (int width, int height)
|
void areaPrepared (int width, int height)
|
||||||
{
|
{
|
||||||
|
@ -122,7 +129,7 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||||
// this object, feeding back decoded pixel blocks, which we pass to each
|
// this object, feeding back decoded pixel blocks, which we pass to each
|
||||||
// of the ImageConsumers in the provided Vector.
|
// of the ImageConsumers in the provided Vector.
|
||||||
|
|
||||||
void produce (Vector v, FileInputStream is) throws IOException
|
public void produce (Vector v, InputStream is) throws IOException
|
||||||
{
|
{
|
||||||
curr = v;
|
curr = v;
|
||||||
|
|
||||||
|
@ -213,5 +220,4 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||||
dec.startProduction (bb);
|
dec.startProduction (bb);
|
||||||
return bb.getBufferedImage ();
|
return bb.getBufferedImage ();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,6 +230,9 @@ public class GtkComponentPeer extends GtkGenericPeer
|
||||||
public boolean prepareImage (Image image, int width, int height,
|
public boolean prepareImage (Image image, int width, int height,
|
||||||
ImageObserver observer)
|
ImageObserver observer)
|
||||||
{
|
{
|
||||||
|
if (image == null)
|
||||||
|
throw new NullPointerException ();
|
||||||
|
|
||||||
GtkImage i = (GtkImage) image;
|
GtkImage i = (GtkImage) image;
|
||||||
|
|
||||||
if (i.isLoaded ()) return true;
|
if (i.isLoaded ()) return true;
|
||||||
|
@ -242,13 +245,12 @@ public class GtkComponentPeer extends GtkGenericPeer
|
||||||
PrepareImage (GtkImage image, ImageObserver observer)
|
PrepareImage (GtkImage image, ImageObserver observer)
|
||||||
{
|
{
|
||||||
this.image = image;
|
this.image = image;
|
||||||
this.observer = observer;
|
image.setObserver (observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run ()
|
public void run ()
|
||||||
{
|
{
|
||||||
// XXX: need to return data to image observer
|
image.source.startProduction (image);
|
||||||
image.source.startProduction (null);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,7 @@ public class GtkImage extends Image implements ImageConsumer
|
||||||
Vector propertyObservers = new Vector ();
|
Vector propertyObservers = new Vector ();
|
||||||
|
|
||||||
ImageProducer source;
|
ImageProducer source;
|
||||||
|
ImageObserver observer;
|
||||||
Graphics g;
|
Graphics g;
|
||||||
|
|
||||||
/* Variables in which we stored cached data, if possible.
|
/* Variables in which we stored cached data, if possible.
|
||||||
|
@ -79,9 +80,15 @@ public class GtkImage extends Image implements ImageConsumer
|
||||||
source = producer;
|
source = producer;
|
||||||
this.g = g;
|
this.g = g;
|
||||||
|
|
||||||
source.addConsumer (this);
|
if (source != null)
|
||||||
|
source.addConsumer (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setObserver (ImageObserver observer)
|
||||||
|
{
|
||||||
|
this.observer = observer;
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized int
|
public synchronized int
|
||||||
getWidth (ImageObserver observer)
|
getWidth (ImageObserver observer)
|
||||||
{
|
{
|
||||||
|
@ -135,8 +142,11 @@ public class GtkImage extends Image implements ImageConsumer
|
||||||
pixelCache = null;
|
pixelCache = null;
|
||||||
model = null;
|
model = null;
|
||||||
|
|
||||||
source.removeConsumer (this);
|
if (source != null)
|
||||||
source.addConsumer (this);
|
{
|
||||||
|
source.removeConsumer (this);
|
||||||
|
source.addConsumer (this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean
|
public boolean
|
||||||
|
@ -166,6 +176,12 @@ public class GtkImage extends Image implements ImageConsumer
|
||||||
ImageObserver io = (ImageObserver) heightObservers.elementAt (i);
|
ImageObserver io = (ImageObserver) heightObservers.elementAt (i);
|
||||||
io.imageUpdate (this, ImageObserver.HEIGHT, -1, -1, width, height);
|
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
|
public synchronized void
|
||||||
|
@ -200,6 +216,11 @@ public class GtkImage extends Image implements ImageConsumer
|
||||||
{
|
{
|
||||||
setPixels (x, y, width, height, cm, convertPixels (pixels), offset,
|
setPixels (x, y, width, height, cm, convertPixels (pixels), offset,
|
||||||
scansize);
|
scansize);
|
||||||
|
|
||||||
|
if (observer != null)
|
||||||
|
observer.imageUpdate (this,
|
||||||
|
ImageObserver.SOMEBITS,
|
||||||
|
x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void
|
public synchronized void
|
||||||
|
@ -241,7 +262,20 @@ public class GtkImage extends Image implements ImageConsumer
|
||||||
if (status == ImageConsumer.SINGLEFRAMEDONE)
|
if (status == ImageConsumer.SINGLEFRAMEDONE)
|
||||||
isCacheable = false;
|
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
|
public synchronized void
|
||||||
|
@ -254,8 +288,11 @@ public class GtkImage extends Image implements ImageConsumer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
source.startProduction (painter);
|
if (source != null)
|
||||||
source.removeConsumer (painter);
|
{
|
||||||
|
source.startProduction (painter);
|
||||||
|
source.removeConsumer (painter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,7 @@ import gnu.java.awt.EmbeddedWindow;
|
||||||
import gnu.java.awt.EmbeddedWindowSupport;
|
import gnu.java.awt.EmbeddedWindowSupport;
|
||||||
import gnu.java.awt.peer.EmbeddedWindowPeer;
|
import gnu.java.awt.peer.EmbeddedWindowPeer;
|
||||||
import gnu.classpath.Configuration;
|
import gnu.classpath.Configuration;
|
||||||
|
import gnu.java.awt.peer.gtk.GdkPixbufDecoder;
|
||||||
|
|
||||||
/* This class uses a deprecated method java.awt.peer.ComponentPeer.getPeer().
|
/* This class uses a deprecated method java.awt.peer.ComponentPeer.getPeer().
|
||||||
This merits comment. We are basically calling Sun's bluff on this one.
|
This merits comment. We are basically calling Sun's bluff on this one.
|
||||||
|
@ -91,24 +92,17 @@ public class GtkToolkit extends Toolkit
|
||||||
public int checkImage (Image image, int width, int height,
|
public int checkImage (Image image, int width, int height,
|
||||||
ImageObserver observer)
|
ImageObserver observer)
|
||||||
{
|
{
|
||||||
return ImageObserver.ALLBITS;
|
return ((GtkImage) image).checkImage ();
|
||||||
|
|
||||||
// GtkImage i = (GtkImage) image;
|
|
||||||
// return i.checkImage ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Image createImage (String filename)
|
public Image createImage (String filename)
|
||||||
{
|
{
|
||||||
// FIXME - gcj local: GdkPixbufDecoder doesn't work.
|
return new GtkImage (new GdkPixbufDecoder (filename), null);
|
||||||
// return new GtkImage (new GdkPixbufDecoder (filename), null);
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Image createImage (URL url)
|
public Image createImage (URL url)
|
||||||
{
|
{
|
||||||
// FIXME - gcj local: GdkPixbufDecoder doesn't work.
|
return new GtkImage (new GdkPixbufDecoder (url), null);
|
||||||
// return new GtkImage (new GdkPixbufDecoder (url), null);
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Image createImage (ImageProducer producer)
|
public Image createImage (ImageProducer producer)
|
||||||
|
@ -117,10 +111,12 @@ public class GtkToolkit extends Toolkit
|
||||||
}
|
}
|
||||||
|
|
||||||
public Image createImage (byte[] imagedata, int imageoffset,
|
public Image createImage (byte[] imagedata, int imageoffset,
|
||||||
int imagelength)
|
int imagelength)
|
||||||
{
|
{
|
||||||
// System.out.println ("createImage byte[] NOT SUPPORTED");
|
return new GtkImage (new GdkPixbufDecoder (imagedata,
|
||||||
return null;
|
imageoffset,
|
||||||
|
imagelength),
|
||||||
|
null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColorModel getColorModel ()
|
public ColorModel getColorModel ()
|
||||||
|
@ -144,16 +140,12 @@ public class GtkToolkit extends Toolkit
|
||||||
|
|
||||||
public Image getImage (String filename)
|
public Image getImage (String filename)
|
||||||
{
|
{
|
||||||
// FIXME - gcj local: GdkPixbufDecoder doesn't work.
|
return new GtkImage (new GdkPixbufDecoder (filename), null);
|
||||||
// return new GtkImage (new GdkPixbufDecoder (filename), null);
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Image getImage (URL url)
|
public Image getImage (URL url)
|
||||||
{
|
{
|
||||||
// FIXME - gcj local: GdkPixbufDecoder doesn't work.
|
return new GtkImage (new GdkPixbufDecoder (url), null);
|
||||||
// return new GtkImage (new GdkPixbufDecoder (url), null);
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PrintJob getPrintJob (Frame frame, String jobtitle, Properties props)
|
public PrintJob getPrintJob (Frame frame, String jobtitle, Properties props)
|
||||||
|
@ -177,6 +169,31 @@ public class GtkToolkit extends Toolkit
|
||||||
public boolean prepareImage (Image image, int width, int height,
|
public boolean prepareImage (Image image, int width, int height,
|
||||||
ImageObserver observer)
|
ImageObserver observer)
|
||||||
{
|
{
|
||||||
|
if (image == null)
|
||||||
|
throw new NullPointerException ();
|
||||||
|
|
||||||
|
GtkImage i = (GtkImage) image;
|
||||||
|
|
||||||
|
if (i.isLoaded ()) return true;
|
||||||
|
|
||||||
|
class PrepareImage extends Thread
|
||||||
|
{
|
||||||
|
GtkImage image;
|
||||||
|
ImageObserver observer;
|
||||||
|
|
||||||
|
PrepareImage (GtkImage image, ImageObserver observer)
|
||||||
|
{
|
||||||
|
this.image = image;
|
||||||
|
image.setObserver (observer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run ()
|
||||||
|
{
|
||||||
|
image.source.startProduction (image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
new PrepareImage (i, observer).start ();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -555,6 +555,17 @@ public abstract class Component
|
||||||
*/
|
*/
|
||||||
transient BufferStrategy bufferStrategy;
|
transient BufferStrategy bufferStrategy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The system properties that affect image updating.
|
||||||
|
*/
|
||||||
|
private static transient boolean incrementalDraw;
|
||||||
|
private static transient Long redrawRate;
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
incrementalDraw = Boolean.getBoolean ("awt.image.incrementalDraw");
|
||||||
|
redrawRate = Long.getLong ("awt.image.redrawrate");
|
||||||
|
}
|
||||||
|
|
||||||
// Public and protected API.
|
// Public and protected API.
|
||||||
|
|
||||||
|
@ -1832,7 +1843,9 @@ public abstract class Component
|
||||||
* @param y the Y coordinate
|
* @param y the Y coordinate
|
||||||
* @param w the width
|
* @param w the width
|
||||||
* @param h the height
|
* @param h the height
|
||||||
* @return true if the image has been fully loaded
|
* @return false if the image is completely loaded, loading has been
|
||||||
|
* aborted, or an error has occurred. true if more updates are
|
||||||
|
* required.
|
||||||
* @see ImageObserver
|
* @see ImageObserver
|
||||||
* @see Graphics#drawImage(Image, int, int, Color, ImageObserver)
|
* @see Graphics#drawImage(Image, int, int, Color, ImageObserver)
|
||||||
* @see Graphics#drawImage(Image, int, int, ImageObserver)
|
* @see Graphics#drawImage(Image, int, int, ImageObserver)
|
||||||
|
@ -1842,8 +1855,24 @@ public abstract class Component
|
||||||
*/
|
*/
|
||||||
public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h)
|
public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
// XXX Implement.
|
if ((flags & (FRAMEBITS | ALLBITS)) != 0)
|
||||||
throw new Error("not implemented");
|
repaint ();
|
||||||
|
else if ((flags & SOMEBITS) != 0)
|
||||||
|
{
|
||||||
|
if (incrementalDraw)
|
||||||
|
{
|
||||||
|
if (redrawRate != null)
|
||||||
|
{
|
||||||
|
long tm = redrawRate.longValue();
|
||||||
|
if (tm < 0)
|
||||||
|
tm = 0;
|
||||||
|
repaint (tm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
repaint (100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (flags & (ALLBITS | ABORT | ERROR)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1854,8 +1883,11 @@ public abstract class Component
|
||||||
*/
|
*/
|
||||||
public Image createImage(ImageProducer producer)
|
public Image createImage(ImageProducer producer)
|
||||||
{
|
{
|
||||||
// XXX What if peer or producer is null?
|
// Sun allows producer to be null.
|
||||||
return peer.createImage(producer);
|
if (peer != null)
|
||||||
|
return peer.createImage(producer);
|
||||||
|
else
|
||||||
|
return getToolkit().createImage(producer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1930,6 +1962,9 @@ public abstract class Component
|
||||||
*/
|
*/
|
||||||
public boolean prepareImage(Image image, ImageObserver observer)
|
public boolean prepareImage(Image image, ImageObserver observer)
|
||||||
{
|
{
|
||||||
|
if (image == null)
|
||||||
|
throw new NullPointerException ();
|
||||||
|
|
||||||
return prepareImage(image, image.getWidth(observer),
|
return prepareImage(image, image.getWidth(observer),
|
||||||
image.getHeight(observer), observer);
|
image.getHeight(observer), observer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,8 +88,8 @@ public class MediaTracker implements java.io.Serializable
|
||||||
{
|
{
|
||||||
MediaTracker.this.notifyAll();
|
MediaTracker.this.notifyAll();
|
||||||
}
|
}
|
||||||
|
// If status is not COMPLETE then we need more updates.
|
||||||
return ((status & COMPLETE) != 0);
|
return (status & COMPLETE) == 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue