annotate doodle/tk/types.d @ 63:20d6327c4a75

Event progress. Got key press/release working and panning via keyboard.
author daveb
date Thu, 12 Aug 2010 16:35:24 +0930
parents 1b4c9ba58673
children eb5436b47d13
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
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
26 struct Mask {
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
27 this(in Modifier[] modifiers) {
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
28 foreach (ref m; modifiers) {
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
29 _bits |= 1 << m;
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
30 }
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
31 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
32
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 48
diff changeset
33 string toString() {
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
34 string s;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
35
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
36 // FIXME this is terrible
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
37 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
38 if (_bits & (1 << i)) {
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
39 if (s != "") s ~= "|";
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
40 s ~= enumToString(cast(Modifier)i);
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
41 }
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
42 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
43
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
44 return s;
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
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 38
diff changeset
47 bool isSet(in Modifier m) const {
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
48 return _bits & (1 << m);
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
49 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
50
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 38
diff changeset
51 bool isUnset(in Modifier m) const {
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 38
diff changeset
52 return !isSet(m);
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
53 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
54
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
55 private {
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
56 uint _bits;
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
57 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
58 }