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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
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
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
11
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
12 mixin(defineEnum!("ButtonAction",
8
bf7903435f58 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 7
diff changeset
13 "SINGLE_PRESS", "DOUBLE_PRESS", "TRIPLE_PRESS", "RELEASE"));
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
14
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
15 mixin(defineEnum!("ButtonName",
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
16 "LEFT", "MIDDLE", "RIGHT", "FOUR", "FIVE"));
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
17
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
18 mixin(defineEnum!("ScrollDirection",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
19 "UP", "DOWN", "LEFT", "RIGHT"));
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
20
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
21 mixin(defineEnum!("Modifier",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
22 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META",
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
23 "SCROLL_LOCK", "LEFT_BUTTON", "MIDDLE_BUTTON", "RIGHT_BUTTON",
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
24 "UNUSED_BUTTON_1", "UNUSED_BUTTON_2"));
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
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
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
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
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
34 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
35
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 48
diff changeset
36 string toString() {
66
43cc2135ced0 Some code cleanups
"David Bryant <bagnose@gmail.com>"
parents: 64
diff changeset
37 string s = "";
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
38
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
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
43cc2135ced0 Some code cleanups
"David Bryant <bagnose@gmail.com>"
parents: 64
diff changeset
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
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
45 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
46
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
47 return s;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
48 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
49
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 38
diff changeset
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
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
52 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
53
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 38
diff changeset
54 bool isUnset(in Modifier m) const {
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 38
diff changeset
55 return !isSet(m);
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
56 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
57
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
58 private {
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
59 uint _bits;
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
60 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
61 }