Mercurial > projects > doodle
annotate doodle/tk/events.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 | c63719604adb |
children | eb5436b47d13 |
rev | line source |
---|---|
28
1754cb773d41
Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents:
17
diff
changeset
|
1 module doodle.tk.events; |
0 | 2 |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
3 public { |
28
1754cb773d41
Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents:
17
diff
changeset
|
4 import doodle.tk.types; |
1754cb773d41
Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents:
17
diff
changeset
|
5 import doodle.tk.geometry; |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
6 } |
0 | 7 |
63
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
8 // FIXME |
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
9 // Do we need FocusEvent, Enter/LeaveEvent ? |
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
10 // Note, FocusEvent has no mask but Enter/Leave do. |
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
11 // Hence would need to refactor hierarchy slightly, eg InputEvent |
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
12 |
0 | 13 abstract class Event { |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
14 this(in Mask mask) { |
48 | 15 _mask = mask; |
0 | 16 } |
17 | |
48 | 18 Mask mask() const { return _mask; } |
0 | 19 |
20 private { | |
48 | 21 Mask _mask; |
0 | 22 } |
23 } | |
24 | |
13 | 25 final class KeyEvent : Event { |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
26 this(in string str, in uint value, in Mask mask) { |
0 | 27 super(mask); |
48 | 28 _str = str; |
29 _value = value; | |
0 | 30 } |
31 | |
48 | 32 string str() const { return _str; } |
63
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
33 uint value() const { return _value; } |
0 | 34 |
5 | 35 override string toString() const { |
48 | 36 return std.string.format("Key event: %s, %d, %s", _str, _value, _mask); |
0 | 37 } |
38 | |
39 private { | |
48 | 40 string _str; |
41 uint _value; | |
0 | 42 } |
43 } | |
44 | |
13 | 45 abstract class PointerEvent : Event { |
48 | 46 this(in Point pixelPoint, in Point modelPoint, in Mask mask) { |
0 | 47 super(mask); |
48 | 48 _pixelPoint = pixelPoint; |
49 _modelPoint = modelPoint; | |
0 | 50 } |
51 | |
48 | 52 Point pixelPoint() const { return _pixelPoint; } |
53 Point modelPoint() const { return _modelPoint; } | |
0 | 54 |
55 private { | |
48 | 56 Point _pixelPoint; |
57 Point _modelPoint; | |
0 | 58 } |
59 } | |
60 | |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
61 /* |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
62 final class CrossingEvent : PointerEvent { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
63 this(in Mask mask) { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
64 super(mask); |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
65 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
66 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
67 private { |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
68 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
69 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
70 */ |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
71 |
0 | 72 final class ButtonEvent : PointerEvent { |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
73 this(in ButtonAction buttonAction, |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
74 in ButtonName buttonName, |
48 | 75 in Point pixelPoint, |
76 in Point modelPoint, | |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
77 in Mask mask) { |
48 | 78 super(pixelPoint, modelPoint, mask); |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
79 _buttonAction = buttonAction; |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
80 _buttonName = buttonName; |
0 | 81 } |
82 | |
5 | 83 override string toString() const { |
8 | 84 return std.string.format("Button event: %s, %s, %s, %s, %s", |
48 | 85 enumToString(_buttonAction), enumToString(_buttonName), |
86 _pixelPoint, _modelPoint, _mask); | |
0 | 87 } |
88 | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
89 ButtonAction buttonAction() const { return _buttonAction; } |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
90 ButtonName buttonName() const { return _buttonName; } |
0 | 91 |
92 private { | |
48 | 93 ButtonAction _buttonAction; |
94 ButtonName _buttonName; | |
0 | 95 } |
96 } | |
97 | |
98 final class MotionEvent : PointerEvent { | |
48 | 99 this(in Point pixelPoint, |
100 in Point modelPoint, | |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
101 in Mask mask) { |
48 | 102 super(pixelPoint, modelPoint, mask); |
0 | 103 } |
104 | |
5 | 105 override string toString() const { |
8 | 106 return std.string.format("Motion event: %s, %s, %s", |
48 | 107 _pixelPoint, _modelPoint, _mask); |
0 | 108 } |
109 } | |
110 | |
111 final class ScrollEvent : PointerEvent { | |
48 | 112 this(in ScrollDirection scrollDirection, |
113 in Point pixelPoint, | |
114 in Point modelPoint, | |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
115 in Mask mask) { |
48 | 116 super(pixelPoint, modelPoint, mask); |
117 _scrollDirection = scrollDirection; | |
0 | 118 } |
119 | |
5 | 120 override string toString() const { |
8 | 121 return std.string.format("Scroll event: %s, %s, %s, %s", |
48 | 122 enumToString(_scrollDirection), _pixelPoint, _modelPoint, _mask); |
0 | 123 } |
124 | |
48 | 125 ScrollDirection scrollDirection() const { return _scrollDirection; } |
0 | 126 |
127 private { | |
48 | 128 ScrollDirection _scrollDirection; |
0 | 129 } |
130 } |