summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics
diff options
context:
space:
mode:
authorSilenio Quarti <silenio>2006-08-14 19:16:09 +0000
committerSilenio Quarti <silenio>2006-08-14 19:16:09 +0000
commitc83efdce66683ce71701c76019258bb35c80359f (patch)
tree6b08f10e75180c3aa8bdfe36fbb28a1f2f9667ad /bundles/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics
parentfeef6c887286a93c710a3a2caa3f5b5c57129f11 (diff)
downloadeclipse.platform.swt-c83efdce66683ce71701c76019258bb35c80359f.tar.gz
eclipse.platform.swt-c83efdce66683ce71701c76019258bb35c80359f.tar.xz
eclipse.platform.swt-c83efdce66683ce71701c76019258bb35c80359f.zip
153567 - Custom cursor has wrong colours
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics')
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java40
1 files changed, 28 insertions, 12 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java b/bundles/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java
index 5e83bc2eca..055438744f 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java
@@ -299,21 +299,37 @@ public Cursor(Device device, ImageData source, int hotspotX, int hotspotY) {
/* Create a destination image with no data */
ImageData newSource = new ImageData(
source.width, source.height, 1, ImageData.bwPalette(),
- 1, null, 0, null, null, -1, -1, source.type,
- source.x, source.y, source.disposalMethod, source.delayTime);
+ 1, null, 0, null, null, -1, -1, 0, 0, 0, 0, 0);
+
+ byte[] newReds = new byte[]{0, (byte)255}, newGreens = newReds, newBlues = newReds;
/* Convert the source to a black and white image of depth 1 */
PaletteData palette = source.palette;
- if (palette.isDirect) ImageData.blit(ImageData.BLIT_SRC,
- source.data, source.depth, source.bytesPerLine, source.getByteOrder(), 0, 0, source.width, source.height, 0, 0, 0,
- ImageData.ALPHA_OPAQUE, null, 0, 0, 0,
- newSource.data, newSource.depth, newSource.bytesPerLine, newSource.getByteOrder(), 0, 0, newSource.width, newSource.height, 0, 0, 0,
- false, false);
- else ImageData.blit(ImageData.BLIT_SRC,
- source.data, source.depth, source.bytesPerLine, source.getByteOrder(), 0, 0, source.width, source.height, null, null, null,
- ImageData.ALPHA_OPAQUE, null, 0, 0, 0,
- newSource.data, newSource.depth, newSource.bytesPerLine, newSource.getByteOrder(), 0, 0, newSource.width, newSource.height, null, null, null,
- false, false);
+ if (palette.isDirect) {
+ ImageData.blit(ImageData.BLIT_SRC,
+ source.data, source.depth, source.bytesPerLine, source.getByteOrder(), 0, 0, source.width, source.height, palette.redMask, palette.greenMask, palette.blueMask,
+ ImageData.ALPHA_OPAQUE, null, 0, 0, 0,
+ newSource.data, newSource.depth, newSource.bytesPerLine, newSource.getByteOrder(), 0, 0, newSource.width, newSource.height, newReds, newGreens, newBlues,
+ false, false);
+ } else {
+ RGB[] rgbs = palette.getRGBs();
+ int length = rgbs.length;
+ byte[] srcReds = new byte[length];
+ byte[] srcGreens = new byte[length];
+ byte[] srcBlues = new byte[length];
+ for (int i = 0; i < rgbs.length; i++) {
+ RGB rgb = rgbs[i];
+ if (rgb == null) continue;
+ srcReds[i] = (byte)rgb.red;
+ srcGreens[i] = (byte)rgb.green;
+ srcBlues[i] = (byte)rgb.blue;
+ }
+ ImageData.blit(ImageData.BLIT_SRC,
+ source.data, source.depth, source.bytesPerLine, source.getByteOrder(), 0, 0, source.width, source.height, srcReds, srcGreens, srcBlues,
+ ImageData.ALPHA_OPAQUE, null, 0, 0, 0,
+ newSource.data, newSource.depth, newSource.bytesPerLine, newSource.getByteOrder(), 0, 0, newSource.width, newSource.height, newReds, newGreens, newBlues,
+ false, false);
+ }
source = newSource;
}
type = OS.Ph_CURSOR_BITMAP;