summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Tobler <a.tobler@schweiz.org>2006-07-22 21:45:17 +0000
committerAndreas Tobler <a.tobler@schweiz.org>2006-07-22 21:45:17 +0000
commit379de3a44cf88f8406ef421a5e9c80780563a176 (patch)
tree9473eee0ff1d49889cafbfe050029517fb87263f
parent4fba73619d21bfb5afe2152a50057a674ea53294 (diff)
downloadclasspath-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--ChangeLog5
-rw-r--r--gnu/java/awt/peer/gtk/CairoSurface.java23
2 files changed, 12 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 821cbb065..5775a390f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}
}
}