This fixes XGraphics2D:
- The rgb variable must be updated to receive the actual computed RGB
value, otherwise translucent images are not drawn correctly.
- Translucent images must not be cached, because we never know how their
background changes.
2008-02-18 Roman Kennke <[EMAIL PROTECTED]>
* gnu/java/awt/peer/x/XGraphics2D.java
(rawDrawImage): Update the rgb variable correctly. Don't
cache translucent images.
/Roman
--
Dipl.-Inform. (FH) Roman Kennke, Software Engineer, http://kennke.org
aicas Allerton Interworks Computer Automated Systems GmbH
Haid-und-Neu-Straße 18 * D-76131 Karlsruhe * Germany
http://www.aicas.com * Tel: +49-721-663 968-0
USt-Id: DE216375633, Handelsregister HRB 109481, AG Karlsruhe
Geschäftsführer: Dr. James J. Hunt
Index: gnu/java/awt/peer/x/XGraphics2D.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/x/XGraphics2D.java,v
retrieving revision 1.7
diff -u -1 -0 -r1.7 XGraphics2D.java
--- gnu/java/awt/peer/x/XGraphics2D.java 20 Sep 2007 14:01:08 -0000 1.7
+++ gnu/java/awt/peer/x/XGraphics2D.java 18 Feb 2008 10:59:56 -0000
@@ -406,28 +406,30 @@
+ (255 - alpha) * zpixmap.get_red(xx, yy);
red = red / 255;
int green = 0xff & (rgb >> 8);
green = green * alpha
+ (255 - alpha) * zpixmap.get_green(xx, yy);
green = green / 255;
int blue = 0xff & rgb;
blue = blue * alpha
+ (255 - alpha) * zpixmap.get_blue(xx, yy);
blue = blue / 255;
+ rgb = red << 16 | green << 8 | blue;
}
// else keep rgb value from source image.
zpixmap.set(xx, yy, rgb);
}
}
xdrawable.put_image(xgc, zpixmap, x, y);
- imageCache.put(image, zpixmap);
+ // We can't cache prerendered translucent images, because
+ // we never know how the background changes.
}
ret = true;
}
}
else
{
ret = super.rawDrawImage(image, x, y, obs);
}
return ret;
}