This fixes one of the regressions - transparent Images.
2006-05-30 Sven de Marothy <[EMAIL PROTECTED]>
* gnu/java/awt/peer/gtk/CairoSurface.java:
(CairoSurface): Convert pixels properly.
* gnu/java/awt/peer/gtk/ComponentGraphics.java
Remove commented-out lines.
Index: gnu/java/awt/peer/gtk/CairoSurface.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/CairoSurface.java,v
retrieving revision 1.3
diff -U3 -r1.3 CairoSurface.java
--- gnu/java/awt/peer/gtk/CairoSurface.java 30 May 2006 21:42:56 -0000 1.3
+++ gnu/java/awt/peer/gtk/CairoSurface.java 30 May 2006 23:59:45 -0000
@@ -166,12 +166,22 @@
// Copy the pixel data from the GtkImage.
int[] data = image.getPixels();
- // Swap ordering, since Gtk is weird.
+ // Swap ordering from GdkPixbuf to Cairo
for(int i = 0; i < data.length; i++ )
{
- int temp = (data[i] & 0x000000FF) << 16;
- data[i] = (data[i] & 0xFFFFFF00) | ((data[i] & 0x00FF0000) >> 16);
- data[i] = (data[i] & 0xFF00FFFF) | temp;
+ int alpha = (data[i] & 0xFF000000) >> 24;
+ if( alpha == 0 ) // I do not know why we need this, but it works.
+ data[i] = 0;
+ else
+ {
+ int r = (((data[i] & 0x00FF0000) >> 16) );
+ int g = (((data[i] & 0x0000FF00) >> 8) );
+ int b = ((data[i] & 0x000000FF) );
+ data[i] = (( alpha << 24 ) & 0xFF000000)
+ | (( b << 16 ) & 0x00FF0000)
+ | (( g << 8 ) & 0x0000FF00)
+ | ( r & 0x000000FF);
+ }
}
setPixels( data );
Index: gnu/java/awt/peer/gtk/ComponentGraphics.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java,v
retrieving revision 1.4
diff -U3 -r1.4 ComponentGraphics.java
--- gnu/java/awt/peer/gtk/ComponentGraphics.java 30 May 2006 21:42:56 -0000 1.4
+++ gnu/java/awt/peer/gtk/ComponentGraphics.java 30 May 2006 23:59:45 -0000
@@ -72,8 +72,6 @@
setup( cairo_t );
setBackground(component.awtComponent.getBackground());
setClip(component.awtComponent.getBounds());
-// setColor( new Color( 255, 255, 255, 255 ) );
-// fill(component.awtComponent.getBounds());
setColor(component.awtComponent.getForeground());
}