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
+28 -6
View File
@@ -48,6 +48,10 @@ public abstract class ImageDecoder implements ImageProducer
Vector consumers = new Vector ();
String filename;
URL url;
byte[] data;
int offset;
int length;
InputStream input;
public static ColorModel cm;
@@ -69,6 +73,13 @@ public abstract class ImageDecoder implements ImageProducer
this.url = url;
}
public ImageDecoder (byte[] imagedata, int imageoffset, int imagelength)
{
data = imagedata;
offset = imageoffset;
length = imagelength;
}
public void addConsumer (ImageConsumer ic)
{
consumers.addElement (ic);
@@ -90,11 +101,22 @@ public abstract class ImageDecoder implements ImageProducer
Vector list = (Vector) consumers.clone ();
try
{
FileInputStream is = (url == null) ? new FileInputStream (filename) :
(FileInputStream) url.openStream();
produce (list, is);
}
// Create the input stream here rather than in the
// ImageDecoder constructors so that exceptions cause
// imageComplete to be called with an appropriate error
// 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)
{
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;
}