Mercurial > projects > dynamin
annotate dynamin/gui/windows_cursor.d @ 36:e0e8d450067c
Change Windows cursor resource names back to their actual values.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Mon, 27 Jul 2009 01:36:17 -0500 |
parents | d55b5b998412 |
children | 73060bc3f004 |
rev | line source |
---|---|
0 | 1 // Written in the D programming language |
2 // www.digitalmars.com/d/ | |
3 | |
4 /* | |
5 * The contents of this file are subject to the Mozilla Public License Version | |
6 * 1.1 (the "License"); you may not use this file except in compliance with | |
7 * the License. You may obtain a copy of the License at | |
8 * http://www.mozilla.org/MPL/ | |
9 * | |
10 * Software distributed under the License is distributed on an "AS IS" basis, | |
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |
12 * for the specific language governing rights and limitations under the | |
13 * License. | |
14 * | |
15 * The Original Code is the Dynamin library. | |
16 * | |
17 * The Initial Developer of the Original Code is Jordan Miner. | |
18 * Portions created by the Initial Developer are Copyright (C) 2007-2009 | |
19 * the Initial Developer. All Rights Reserved. | |
20 * | |
21 * Contributor(s): | |
22 * Jordan Miner <jminer7@gmail.com> | |
23 * | |
24 */ | |
25 | |
26 module dynamin.gui.windows_cursor; | |
27 | |
28 public import dynamin.c.windows; | |
29 public import tango.io.Stdout; | |
30 public import dynamin.gui.control; | |
31 | |
32 // TODO: use import("AeroMouseDrag.png"), import("MouseDrag.png"), etc. | |
33 // to embed png into executable. Then, use lodepng to decode it and use | |
34 // CreateIconIndirect to create a cusor from them if possible. | |
35 | |
36 template CursorBackend() { | |
37 HCURSOR _handle; | |
38 this(HCURSOR h) { | |
39 _handle = h; | |
40 } | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
41 public HCURSOR handle() { return _handle; } |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
42 static: |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
43 Cursor backend_getCursor(int curRes) { |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
44 HCURSOR hcur = LoadImage(null, MAKEINTRESOURCE(curRes), |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
45 IMAGE_CURSOR, 0, 0, LR_SHARED | LR_DEFAULTSIZE); |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
46 if(hcur is null) |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
47 Stdout.format("LoadImage() failed loading cursor {}", curRes).newline; |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
48 return new Cursor(hcur); |
0 | 49 } |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
50 Cursor backend_getCursor(wchar[] name) { |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
51 HCURSOR hcur = LoadImage(GetModuleHandle(null), name.ptr, |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
52 IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE); |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
53 if(hcur is null) |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
54 Stdout.format("LoadImage() failed loading cursor {}", name).newline; |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
55 return new Cursor(hcur); |
0 | 56 } |
57 Cursor backend_None() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
58 return new Cursor(cast(HCURSOR)null); |
0 | 59 } |
60 Cursor backend_Arrow() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
61 return backend_getCursor(OCR_NORMAL); |
0 | 62 } |
63 Cursor backend_WaitArrow() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
64 return backend_getCursor(OCR_APPSTARTING); |
0 | 65 } |
66 Cursor backend_Wait() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
67 return backend_getCursor(OCR_WAIT); |
0 | 68 } |
69 Cursor backend_Text() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
70 return backend_getCursor(OCR_IBEAM); |
0 | 71 } |
72 Cursor backend_Hand() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
73 return backend_getCursor(OCR_HAND); // Windows 98 & newer |
0 | 74 } |
75 Cursor backend_Move() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
76 return backend_getCursor(OCR_SIZEALL); |
0 | 77 } |
78 Cursor backend_ResizeHoriz() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
79 return backend_getCursor(OCR_SIZEWE); |
0 | 80 } |
81 Cursor backend_ResizeVert() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
82 return backend_getCursor(OCR_SIZENS); |
0 | 83 } |
84 Cursor backend_ResizeBackslash() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
85 return backend_getCursor(OCR_SIZENWSE); |
0 | 86 } |
87 Cursor backend_ResizeSlash() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
88 return backend_getCursor(OCR_SIZENESW); |
0 | 89 } |
90 Cursor backend_Drag() { | |
91 if(checkWindowsVersion(WindowsVersion.WindowsVista)) | |
36
e0e8d450067c
Change Windows cursor resource names back to their actual values.
Jordan Miner <jminer7@gmail.com>
parents:
23
diff
changeset
|
92 return backend_getCursor("rAeroDragCur"); |
0 | 93 else |
36
e0e8d450067c
Change Windows cursor resource names back to their actual values.
Jordan Miner <jminer7@gmail.com>
parents:
23
diff
changeset
|
94 return backend_getCursor("rDragCur"); |
0 | 95 } |
96 Cursor backend_InvalidDrag() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
97 return backend_getCursor(OCR_NO); |
0 | 98 } |
99 Cursor backend_ReversedArrow() { | |
100 if(checkWindowsVersion(WindowsVersion.WindowsVista)) | |
36
e0e8d450067c
Change Windows cursor resource names back to their actual values.
Jordan Miner <jminer7@gmail.com>
parents:
23
diff
changeset
|
101 return backend_getCursor("rAeroReversedArrowCur"); |
0 | 102 else |
36
e0e8d450067c
Change Windows cursor resource names back to their actual values.
Jordan Miner <jminer7@gmail.com>
parents:
23
diff
changeset
|
103 return backend_getCursor("rReversedArrowCur"); |
0 | 104 } |
105 Cursor backend_Crosshair() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
106 return backend_getCursor(OCR_CROSS); |
0 | 107 } |
108 } | |
109 |