diff options
author | Andreas Tobler <a.tobler@schweiz.org> | 2006-07-22 21:45:17 +0000 |
---|---|---|
committer | Andreas Tobler <a.tobler@schweiz.org> | 2006-07-22 21:45:17 +0000 |
commit | 379de3a44cf88f8406ef421a5e9c80780563a176 (patch) | |
tree | 9473eee0ff1d49889cafbfe050029517fb87263f | |
parent | 4fba73619d21bfb5afe2152a50057a674ea53294 (diff) | |
download | classpath-379de3a44cf88f8406ef421a5e9c80780563a176.tar.gz |
2006-07-22 Andreas Tobler <a.tobler@schweiz.ch>
* gnu/java/awt/peer/gtk/CairoSurface.java: Optimize pixel swap code a
bit more.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/CairoSurface.java | 23 |
2 files changed, 12 insertions, 16 deletions
@@ -1,3 +1,8 @@ +2006-07-22 Andreas Tobler <a.tobler@schweiz.ch> + + * gnu/java/awt/peer/gtk/CairoSurface.java: Optimize pixel swap code a + bit more. + 2006-07-22 Mark Wielaard <mark@klomp.org> * java/lang/Iterable.java: Import all of java.util. diff --git a/gnu/java/awt/peer/gtk/CairoSurface.java b/gnu/java/awt/peer/gtk/CairoSurface.java index 5a25a34e3..78bc1e02d 100644 --- a/gnu/java/awt/peer/gtk/CairoSurface.java +++ b/gnu/java/awt/peer/gtk/CairoSurface.java @@ -180,19 +180,13 @@ public class CairoSurface extends DataBuffer for (int i = 0; i < data.length; i++ ) { // On a big endian system we get a RRGGBBAA data array. - int alpha = (data[i] & 0xFF); + int alpha = data[i] & 0xFF; if( alpha == 0 ) // I do not know why we need this, but it works. data[i] = 0; else { - int r = (((data[i] & 0xFF000000) >> 24)); - int g = (((data[i] & 0x00FF0000) >> 16)); - int b = (((data[i] & 0x0000FF00) >> 8)); // Cairo needs a ARGB32 native array. - data[i] = (( alpha << 24 ) & 0xFF000000) - | (( r << 16 ) & 0x00FF0000) - | (( g << 8 ) & 0x0000FF00) - | ( b & 0x000000FF); + data[i] = (data[i] >>> 8) | (alpha << 24); } } } @@ -201,19 +195,16 @@ public class CairoSurface extends DataBuffer for (int i = 0; i < data.length; i++ ) { // On a little endian system we get a AABBGGRR data array. - int alpha = (data[i] & 0xFF000000) >> 24; + int alpha = data[i] & 0xFF000000; if( alpha == 0 ) // I do not know why we need this, but it works. data[i] = 0; else { - int b = (((data[i] & 0x00FF0000) >> 16)); - int g = (((data[i] & 0x0000FF00) >> 8)); - int r = ((data[i] & 0x000000FF)); + int b = (data[i] & 0xFF0000) >> 16; + int g = (data[i] & 0xFF00); + int r = (data[i] & 0xFF) << 16; // Cairo needs a ARGB32 native array. - data[i] = (( alpha << 24 ) & 0xFF000000) - | (( r << 16 ) & 0x00FF0000) - | (( g << 8 ) & 0x0000FF00) - | ( b & 0x000000FF); + data[i] = alpha | r | g | b; } } } |