This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[gui] [PATCH] Fix filtered image loading
- From: David Jee <djee at redhat dot com>
- To: java-patches at gcc dot gnu dot org
- Date: Fri, 18 Jun 2004 12:39:07 -0400
- Subject: [gui] [PATCH] Fix filtered image loading
Hello,
I committed the following patch to the java-gui-branch. It fixes a few
things related to filtered image loading, so that images that are
filtered using RGBImageFilter are loaded and painted properly.
-David Jee
2004-06-18 David Jee <djee@redhat.com>
* gnu/java/awt/image/ImageDecoder.java
(startProduction): Only add consumer if it's not added yet.
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
(GdkPixbufDecoder): Don't call initState() here.
(produce): Call initState() here, to ensure area_prepared and
area_updated signals are properly connected.
* gnu/java/awt/peer/gtk/GtkImage.java
(setColorModel): Use equals() to compare ColorModel objects.
(setPixels): Likewise.
* java/awt/image/ColorModel.java
(equals): Fix typo. Use Arrays.equals() to compare int arrays.
* java/awt/image/RGBImageFilter.java
(setColorModel): Set consumer's color model.
(setPixels): Use equals() to compare ColorModel objects.
Index: gnu/java/awt/image/ImageDecoder.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/image/ImageDecoder.java,v
retrieving revision 1.3
diff -u -r1.3 ImageDecoder.java
--- gnu/java/awt/image/ImageDecoder.java 10 Jan 2004 21:32:22 -0000 1.3
+++ gnu/java/awt/image/ImageDecoder.java 18 Jun 2004 16:20:00 -0000
@@ -97,7 +97,9 @@
public void startProduction (ImageConsumer ic)
{
- addConsumer (ic);
+ if (!isConsumer(ic))
+ addConsumer(ic);
+
Vector list = (Vector) consumers.clone ();
try
{
Index: gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,v
retrieving revision 1.3.10.1
diff -u -r1.3.10.1 GdkPixbufDecoder.java
--- gnu/java/awt/peer/gtk/GdkPixbufDecoder.java 16 Jun 2004 19:05:54 -0000 1.3.10.1
+++ gnu/java/awt/peer/gtk/GdkPixbufDecoder.java 18 Jun 2004 16:20:00 -0000
@@ -77,19 +77,16 @@
public GdkPixbufDecoder (String filename)
{
super (filename);
- initState ();
}
public GdkPixbufDecoder (URL url)
{
super (url);
- initState ();
}
public GdkPixbufDecoder (byte[] imagedata, int imageoffset, int imagelength)
{
super (imagedata, imageoffset, imagelength);
- initState ();
}
// called back by native side
@@ -135,6 +132,7 @@
byte bytes[] = new byte[4096];
int len = 0;
+ initState();
while ((len = is.read (bytes)) != -1)
pumpBytes (bytes, len);
Index: gnu/java/awt/peer/gtk/GtkImage.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkImage.java,v
retrieving revision 1.4.8.1
diff -u -r1.4.8.1 GtkImage.java
--- gnu/java/awt/peer/gtk/GtkImage.java 5 May 2004 20:57:13 -0000 1.4.8.1
+++ gnu/java/awt/peer/gtk/GtkImage.java 18 Jun 2004 16:20:00 -0000
@@ -202,7 +202,7 @@
public synchronized void
setColorModel (ColorModel model)
{
- if (this.model == null || this.model == model)
+ if (this.model == null || this.model.equals(model))
this.model = model;
else
isCacheable = false;
@@ -235,7 +235,7 @@
if (!isCacheable)
return;
- if (cm != model || pixelCache == null)
+ if (!cm.equals(model) || pixelCache == null)
{
isCacheable = false;
return;
Index: java/awt/image/ColorModel.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/image/ColorModel.java,v
retrieving revision 1.13
diff -u -r1.13 ColorModel.java
--- java/awt/image/ColorModel.java 25 Jun 2003 11:23:33 -0000 1.13
+++ java/awt/image/ColorModel.java 18 Jun 2004 16:20:04 -0000
@@ -37,6 +37,7 @@
package java.awt.image;
+import java.util.Arrays;
import java.awt.Point;
import java.awt.Transparency;
import java.awt.color.ColorSpace;
@@ -551,8 +552,8 @@
(transferType == o.transferType) &&
(transparency == o.transparency) &&
(hasAlpha == o.hasAlpha) &&
- (isAlphaPremultiplied == isAlphaPremultiplied) &&
- (bits.equals(o.bits)) &&
+ (isAlphaPremultiplied == o.isAlphaPremultiplied) &&
+ Arrays.equals(bits, o.bits) &&
(cspace.equals(o.cspace));
}
Index: java/awt/image/RGBImageFilter.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/image/RGBImageFilter.java,v
retrieving revision 1.2.14.1
diff -u -r1.2.14.1 RGBImageFilter.java
--- java/awt/image/RGBImageFilter.java 12 May 2004 18:43:33 -0000 1.2.14.1
+++ java/awt/image/RGBImageFilter.java 18 Jun 2004 16:20:04 -0000
@@ -79,7 +79,11 @@
if( ( model instanceof IndexColorModel) && canFilterIndexColorModel ) {
newmodel = filterIndexColorModel( (IndexColorModel) model );
+ consumer.setColorModel(newmodel);
}
+ else {
+ consumer.setColorModel(ColorModel.getRGBdefault());
+ }
}
/**
@@ -179,7 +183,7 @@
ColorModel model, byte[] pixels,
int offset, int scansize)
{
- if(model == origmodel && (model instanceof IndexColorModel) && canFilterIndexColorModel)
+ if(model.equals(origmodel) && (model instanceof IndexColorModel) && canFilterIndexColorModel)
{
consumer.setPixels(x, y, w, h, newmodel, pixels, offset, scansize);
}
@@ -210,7 +214,7 @@
ColorModel model, int[] pixels,
int offset, int scansize)
{
- if(model == origmodel && (model instanceof IndexColorModel) && canFilterIndexColorModel)
+ if(model.equals(origmodel) && (model instanceof IndexColorModel) && canFilterIndexColorModel)
{
consumer.setPixels(x, y, w, h, newmodel, pixels, offset, scansize);
}