comparison snippets/cursor/Snippet119.d @ 119:9a1be6ff19a2

More snippets, thanks to Tom D.
author Frank Benoit <benoit@tionex.de>
date Sun, 20 Jul 2008 15:26:06 +0200
parents
children
comparison
equal deleted inserted replaced
118:7b1c122b4128 119:9a1be6ff19a2
1 /*******************************************************************************
2 * Copyright (c) 2000, 2004 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * IBM Corporation - initial API and implementation
10 * D Port:
11 * Thomas Demmer <t_demmer AT web DOT de>
12 *******************************************************************************/
13 module cursor.Snippet119;
14
15 /*
16 * Cursor example snippet: create a color cursor from a source and a mask
17 *
18 * For a list of all DWT example snippets see
19 * http://www.eclipse.org/swt/snippets/
20 *
21 * @since 3.0
22 */
23 import dwt.DWT;
24 import dwt.events.PaintListener;
25 import dwt.graphics.Color;
26 import dwt.graphics.Cursor;
27 import dwt.graphics.GC;
28 import dwt.graphics.Image;
29 import dwt.graphics.ImageData;
30 import dwt.graphics.PaletteData;
31 import dwt.widgets.Display;
32 import dwt.widgets.Shell;
33
34 import dwt.dwthelper.utils;
35
36
37
38 static byte[] srcData = [
39 cast(byte)0x11, cast(byte)0x11, cast(byte)0x11, cast(byte)0x00, cast(byte)0x00, cast(byte)0x11, cast(byte)0x11, cast(byte)0x11,
40 cast(byte)0x11, cast(byte)0x10, cast(byte)0x00, cast(byte)0x01, cast(byte)0x10, cast(byte)0x00, cast(byte)0x01, cast(byte)0x11,
41 cast(byte)0x11, cast(byte)0x00, cast(byte)0x22, cast(byte)0x01, cast(byte)0x10, cast(byte)0x33, cast(byte)0x00, cast(byte)0x11,
42 cast(byte)0x10, cast(byte)0x02, cast(byte)0x22, cast(byte)0x01, cast(byte)0x10, cast(byte)0x33, cast(byte)0x30, cast(byte)0x01,
43 cast(byte)0x10, cast(byte)0x22, cast(byte)0x22, cast(byte)0x01, cast(byte)0x10, cast(byte)0x33, cast(byte)0x33, cast(byte)0x01,
44 cast(byte)0x10, cast(byte)0x22, cast(byte)0x22, cast(byte)0x01, cast(byte)0x10, cast(byte)0x33, cast(byte)0x33, cast(byte)0x01,
45 cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00,
46 cast(byte)0x01, cast(byte)0x11, cast(byte)0x11, cast(byte)0x01, cast(byte)0x10, cast(byte)0x11, cast(byte)0x11, cast(byte)0x10,
47 cast(byte)0x01, cast(byte)0x11, cast(byte)0x11, cast(byte)0x01, cast(byte)0x10, cast(byte)0x11, cast(byte)0x11, cast(byte)0x10,
48 cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00, cast(byte)0x00,
49 cast(byte)0x10, cast(byte)0x44, cast(byte)0x44, cast(byte)0x01, cast(byte)0x10, cast(byte)0x55, cast(byte)0x55, cast(byte)0x01,
50 cast(byte)0x10, cast(byte)0x44, cast(byte)0x44, cast(byte)0x01, cast(byte)0x10, cast(byte)0x55, cast(byte)0x55, cast(byte)0x01,
51 cast(byte)0x10, cast(byte)0x04, cast(byte)0x44, cast(byte)0x01, cast(byte)0x10, cast(byte)0x55, cast(byte)0x50, cast(byte)0x01,
52 cast(byte)0x11, cast(byte)0x00, cast(byte)0x44, cast(byte)0x01, cast(byte)0x10, cast(byte)0x55, cast(byte)0x00, cast(byte)0x11,
53 cast(byte)0x11, cast(byte)0x10, cast(byte)0x00, cast(byte)0x01, cast(byte)0x10, cast(byte)0x00, cast(byte)0x01, cast(byte)0x11,
54 cast(byte)0x11, cast(byte)0x11, cast(byte)0x11, cast(byte)0x00, cast(byte)0x00, cast(byte)0x11, cast(byte)0x11, cast(byte)0x11,
55 ];
56
57 static byte[] mskData = [
58 cast(byte)0x03, cast(byte)0xc0,
59 cast(byte)0x1f, cast(byte)0xf8,
60 cast(byte)0x3f, cast(byte)0xfc,
61 cast(byte)0x7f, cast(byte)0xfe,
62 cast(byte)0x7f, cast(byte)0xfe,
63 cast(byte)0x7f, cast(byte)0xfe,
64 cast(byte)0xff, cast(byte)0xff,
65 cast(byte)0xfe, cast(byte)0x7f,
66 cast(byte)0xfe, cast(byte)0x7f,
67 cast(byte)0xff, cast(byte)0xff,
68 cast(byte)0x7f, cast(byte)0xfe,
69 cast(byte)0x7f, cast(byte)0xfe,
70 cast(byte)0x7f, cast(byte)0xfe,
71 cast(byte)0x3f, cast(byte)0xfc,
72 cast(byte)0x1f, cast(byte)0xf8,
73 cast(byte)0x03, cast(byte)0xc0
74 ];
75
76 void main (String [] args) {
77 Display display = new Display();
78 Color white = display.getSystemColor (DWT.COLOR_WHITE);
79 Color black = display.getSystemColor (DWT.COLOR_BLACK);
80 Color yellow = display.getSystemColor (DWT.COLOR_YELLOW);
81 Color red = display.getSystemColor (DWT.COLOR_RED);
82 Color green = display.getSystemColor (DWT.COLOR_GREEN);
83 Color blue = display.getSystemColor (DWT.COLOR_BLUE);
84
85 //Create a source ImageData of depth 4
86 PaletteData palette = new PaletteData ([black.getRGB(), white.getRGB(), yellow.getRGB(),
87 red.getRGB(), blue.getRGB(), green.getRGB()]);
88 ImageData sourceData = new ImageData (16, 16, 4, palette, 1, srcData);
89
90 //Create a mask ImageData of depth 1 (monochrome)
91 palette = new PaletteData ([black.getRGB(), white.getRGB()]);
92 ImageData maskData = new ImageData (16, 16, 1, palette, 1, mskData);
93
94 //Set mask
95 sourceData.maskData = maskData.data;
96 sourceData.maskPad = maskData.scanlinePad;
97
98 //Create cursor
99 Cursor cursor = new Cursor(display, sourceData, 10, 10);
100
101 //Remove mask to draw them separately just to show what they look like
102 sourceData.maskData = null;
103 sourceData.maskPad = -1;
104
105 Shell shell = new Shell(display);
106 Image source = new Image (display,sourceData);
107 Image mask = new Image (display, maskData);
108 shell.addPaintListener(new class() PaintListener{
109 public void paintControl(PaintEvent e) {
110 GC gc = e.gc;
111 int x = 10, y = 10;
112 String stringSource = "source: ";
113 String stringMask = "mask: ";
114 gc.drawString(stringSource, x, y);
115 gc.drawString(stringMask, x, y + 30);
116 x += Math.max(gc.stringExtent(stringSource).x, gc.stringExtent(stringMask).x);
117 gc.drawImage(source, x, y);
118 gc.drawImage(mask, x, y + 30);
119 }
120 });
121 shell.setSize(150, 150);
122 shell.open();
123 shell.setCursor(cursor);
124
125 while (!shell.isDisposed()) {
126 if (!display.readAndDispatch())
127 display.sleep();
128 }
129 cursor.dispose();
130 source.dispose();
131 mask.dispose();
132 display.dispose();
133 }