Mercurial > projects > dynamin
annotate dynamin/gui/windows_cursor.d @ 106:acdbb30fee7e
Port to D2.
Most of the effort was dealing with immutable and const.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Mon, 17 Dec 2012 23:41:50 -0600 |
parents | 73060bc3f004 |
children |
rev | line source |
---|---|
0 | 1 |
2 /* | |
103
73060bc3f004
Change license to Boost 1.0 and MPL 2.0.
Jordan Miner <jminer7@gmail.com>
parents:
36
diff
changeset
|
3 * Copyright Jordan Miner |
0 | 4 * |
103
73060bc3f004
Change license to Boost 1.0 and MPL 2.0.
Jordan Miner <jminer7@gmail.com>
parents:
36
diff
changeset
|
5 * This Source Code Form is subject to the terms of the Mozilla Public |
73060bc3f004
Change license to Boost 1.0 and MPL 2.0.
Jordan Miner <jminer7@gmail.com>
parents:
36
diff
changeset
|
6 * License, v. 2.0. If a copy of the MPL was not distributed with this |
73060bc3f004
Change license to Boost 1.0 and MPL 2.0.
Jordan Miner <jminer7@gmail.com>
parents:
36
diff
changeset
|
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
0 | 8 * |
9 */ | |
10 | |
11 module dynamin.gui.windows_cursor; | |
12 | |
13 public import dynamin.c.windows; | |
14 public import tango.io.Stdout; | |
15 public import dynamin.gui.control; | |
16 | |
17 // TODO: use import("AeroMouseDrag.png"), import("MouseDrag.png"), etc. | |
18 // to embed png into executable. Then, use lodepng to decode it and use | |
19 // CreateIconIndirect to create a cusor from them if possible. | |
20 | |
21 template CursorBackend() { | |
22 HCURSOR _handle; | |
23 this(HCURSOR h) { | |
24 _handle = h; | |
25 } | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
26 public HCURSOR handle() { return _handle; } |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
27 static: |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
28 Cursor backend_getCursor(int curRes) { |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
29 HCURSOR hcur = LoadImage(null, MAKEINTRESOURCE(curRes), |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
30 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
|
31 if(hcur is null) |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
32 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
|
33 return new Cursor(hcur); |
0 | 34 } |
106 | 35 Cursor backend_getCursor(const(wchar)[] name) { |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
36 HCURSOR hcur = LoadImage(GetModuleHandle(null), name.ptr, |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
37 IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE); |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
38 if(hcur is null) |
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
39 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
|
40 return new Cursor(hcur); |
0 | 41 } |
42 Cursor backend_None() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
43 return new Cursor(cast(HCURSOR)null); |
0 | 44 } |
45 Cursor backend_Arrow() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
46 return backend_getCursor(OCR_NORMAL); |
0 | 47 } |
48 Cursor backend_WaitArrow() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
49 return backend_getCursor(OCR_APPSTARTING); |
0 | 50 } |
51 Cursor backend_Wait() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
52 return backend_getCursor(OCR_WAIT); |
0 | 53 } |
54 Cursor backend_Text() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
55 return backend_getCursor(OCR_IBEAM); |
0 | 56 } |
57 Cursor backend_Hand() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
58 return backend_getCursor(OCR_HAND); // Windows 98 & newer |
0 | 59 } |
60 Cursor backend_Move() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
61 return backend_getCursor(OCR_SIZEALL); |
0 | 62 } |
63 Cursor backend_ResizeHoriz() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
64 return backend_getCursor(OCR_SIZEWE); |
0 | 65 } |
66 Cursor backend_ResizeVert() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
67 return backend_getCursor(OCR_SIZENS); |
0 | 68 } |
69 Cursor backend_ResizeBackslash() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
70 return backend_getCursor(OCR_SIZENWSE); |
0 | 71 } |
72 Cursor backend_ResizeSlash() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
73 return backend_getCursor(OCR_SIZENESW); |
0 | 74 } |
75 Cursor backend_Drag() { | |
76 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
|
77 return backend_getCursor("rAeroDragCur"); |
0 | 78 else |
36
e0e8d450067c
Change Windows cursor resource names back to their actual values.
Jordan Miner <jminer7@gmail.com>
parents:
23
diff
changeset
|
79 return backend_getCursor("rDragCur"); |
0 | 80 } |
81 Cursor backend_InvalidDrag() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
82 return backend_getCursor(OCR_NO); |
0 | 83 } |
84 Cursor backend_ReversedArrow() { | |
85 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
|
86 return backend_getCursor("rAeroReversedArrowCur"); |
0 | 87 else |
36
e0e8d450067c
Change Windows cursor resource names back to their actual values.
Jordan Miner <jminer7@gmail.com>
parents:
23
diff
changeset
|
88 return backend_getCursor("rReversedArrowCur"); |
0 | 89 } |
90 Cursor backend_Crosshair() { | |
23
d55b5b998412
Implement built-in mouse cursors with X.
Jordan Miner <jminer7@gmail.com>
parents:
0
diff
changeset
|
91 return backend_getCursor(OCR_CROSS); |
0 | 92 } |
93 } | |
94 |