This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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);
 	}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]