Mercurial > projects > doodle
annotate doodle/tk/types.d @ 66:43cc2135ced0
Some code cleanups
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Thu, 12 Aug 2010 22:43:42 +0930 |
parents | eb5436b47d13 |
children |
rev | line source |
---|---|
29
960b408d3ac5
Builds and runs ok with builder now.
Graham St Jack <graham.stjack@internode.on.net>
parents:
28
diff
changeset
|
1 module doodle.tk.types; |
0 | 2 |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
3 public { |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
4 import std.string; |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
5 } |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
6 |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
7 private { |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
8 import std.typecons; |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
9 import std.algorithm; |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
10 } |
0 | 11 |
7 | 12 mixin(defineEnum!("ButtonAction", |
8 | 13 "SINGLE_PRESS", "DOUBLE_PRESS", "TRIPLE_PRESS", "RELEASE")); |
26 | 14 |
7 | 15 mixin(defineEnum!("ButtonName", |
16 "LEFT", "MIDDLE", "RIGHT", "FOUR", "FIVE")); | |
26 | 17 |
5 | 18 mixin(defineEnum!("ScrollDirection", |
19 "UP", "DOWN", "LEFT", "RIGHT")); | |
26 | 20 |
5 | 21 mixin(defineEnum!("Modifier", |
22 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META", | |
26 | 23 "SCROLL_LOCK", "LEFT_BUTTON", "MIDDLE_BUTTON", "RIGHT_BUTTON", |
24 "UNUSED_BUTTON_1", "UNUSED_BUTTON_2")); | |
5 | 25 |
64
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
26 mixin(defineEnum!("CrossingMode", // FIXME what to do about GRAB2/UNGRAB2 |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
27 "NORMAL", "GRAB", "UNGRAB", "GRAB2", "UNGRAB2", "STATE_CHANGED")); |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
28 |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
29 struct Mask { |
5 | 30 this(in Modifier[] modifiers) { |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
31 foreach (ref m; modifiers) { |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
32 _bits |= 1 << m; |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
33 } |
5 | 34 } |
35 | |
63
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
48
diff
changeset
|
36 string toString() { |
66 | 37 string s = ""; |
5 | 38 |
26 | 39 // FIXME this is terrible |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
40 for (int i = 0; i < uint.sizeof * 8; ++i) { |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
41 if (_bits & (1 << i)) { |
66 | 42 if (s.length != 0) s ~= "|"; |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
43 s ~= enumToString(cast(Modifier)i); |
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
44 } |
5 | 45 } |
46 | |
47 return s; | |
48 } | |
49 | |
48 | 50 bool isSet(in Modifier m) const { |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
51 return _bits & (1 << m); |
5 | 52 } |
53 | |
48 | 54 bool isUnset(in Modifier m) const { |
55 return !isSet(m); | |
0 | 56 } |
57 | |
58 private { | |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
59 uint _bits; |
5 | 60 } |
61 } |