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:
Thomas Fitzsimmons 2003-11-12 00:37:34 +00:00 committed by Thomas Fitzsimmons
parent c754c6f131
commit a5966c9ef9
11 changed files with 207 additions and 47 deletions

View file

@ -56,6 +56,7 @@ import gnu.java.awt.EmbeddedWindow;
import gnu.java.awt.EmbeddedWindowSupport;
import gnu.java.awt.peer.EmbeddedWindowPeer;
import gnu.classpath.Configuration;
import gnu.java.awt.peer.gtk.GdkPixbufDecoder;
/* This class uses a deprecated method java.awt.peer.ComponentPeer.getPeer().
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,
ImageObserver observer)
{
return ImageObserver.ALLBITS;
// GtkImage i = (GtkImage) image;
// return i.checkImage ();
return ((GtkImage) image).checkImage ();
}
public Image createImage (String filename)
{
// FIXME - gcj local: GdkPixbufDecoder doesn't work.
// return new GtkImage (new GdkPixbufDecoder (filename), null);
return null;
return new GtkImage (new GdkPixbufDecoder (filename), null);
}
public Image createImage (URL url)
{
// FIXME - gcj local: GdkPixbufDecoder doesn't work.
// return new GtkImage (new GdkPixbufDecoder (url), null);
return null;
return new GtkImage (new GdkPixbufDecoder (url), null);
}
public Image createImage (ImageProducer producer)
@ -117,10 +111,12 @@ public class GtkToolkit extends Toolkit
}
public Image createImage (byte[] imagedata, int imageoffset,
int imagelength)
int imagelength)
{
// System.out.println ("createImage byte[] NOT SUPPORTED");
return null;
return new GtkImage (new GdkPixbufDecoder (imagedata,
imageoffset,
imagelength),
null);
}
public ColorModel getColorModel ()
@ -144,16 +140,12 @@ public class GtkToolkit extends Toolkit
public Image getImage (String filename)
{
// FIXME - gcj local: GdkPixbufDecoder doesn't work.
// return new GtkImage (new GdkPixbufDecoder (filename), null);
return null;
return new GtkImage (new GdkPixbufDecoder (filename), null);
}
public Image getImage (URL url)
{
// FIXME - gcj local: GdkPixbufDecoder doesn't work.
// return new GtkImage (new GdkPixbufDecoder (url), null);
return null;
return new GtkImage (new GdkPixbufDecoder (url), null);
}
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,
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;
}