Mercurial > projects > doodle
annotate doodle/tk/events.d @ 64:eb5436b47d13
Implemented crossing events
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Thu, 12 Aug 2010 22:21:12 +0930 |
parents | 20d6327c4a75 |
children | 31d10176415d |
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 |
64
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
9 // Do we need FocusEvent. Note, it has no mask. |
63
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
10 // 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
|
11 |
0 | 12 abstract class Event { |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
13 this(in Mask mask) { |
48 | 14 _mask = mask; |
0 | 15 } |
16 | |
48 | 17 Mask mask() const { return _mask; } |
0 | 18 |
19 private { | |
48 | 20 Mask _mask; |
0 | 21 } |
22 } | |
23 | |
13 | 24 final class KeyEvent : Event { |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
25 this(in string str, in uint value, in Mask mask) { |
0 | 26 super(mask); |
48 | 27 _str = str; |
28 _value = value; | |
0 | 29 } |
30 | |
48 | 31 string str() const { return _str; } |
63
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
32 uint value() const { return _value; } |
0 | 33 |
5 | 34 override string toString() const { |
48 | 35 return std.string.format("Key event: %s, %d, %s", _str, _value, _mask); |
0 | 36 } |
37 | |
38 private { | |
48 | 39 string _str; |
40 uint _value; | |
0 | 41 } |
42 } | |
43 | |
13 | 44 abstract class PointerEvent : Event { |
48 | 45 this(in Point pixelPoint, in Point modelPoint, in Mask mask) { |
0 | 46 super(mask); |
48 | 47 _pixelPoint = pixelPoint; |
48 _modelPoint = modelPoint; | |
0 | 49 } |
50 | |
48 | 51 Point pixelPoint() const { return _pixelPoint; } |
52 Point modelPoint() const { return _modelPoint; } | |
0 | 53 |
54 private { | |
48 | 55 Point _pixelPoint; |
56 Point _modelPoint; | |
0 | 57 } |
58 } | |
59 | |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
60 final class CrossingEvent : PointerEvent { |
64
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
61 this(in CrossingMode crossingMode, |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
62 in Point pixelPoint, |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
63 in Point modelPoint, |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
64 in Mask mask) { |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
65 super(pixelPoint, modelPoint, mask); |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
66 _crossingMode = crossingMode; |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
67 } |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
68 |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
69 CrossingMode crossingMode() const { return _crossingMode; } |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
70 |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
71 override string toString() const { |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
72 return std.string.format("Crossing event: %s, %s, %s, %s", enumToString(_crossingMode), pixelPoint, modelPoint, mask); |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
73 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
74 |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
75 private { |
64
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
76 CrossingMode _crossingMode; |
33
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
77 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
78 } |
157b4ad5615d
Added intersection code for lines and segments.
David Bryant <bagnose@gmail.com>
parents:
28
diff
changeset
|
79 |
0 | 80 final class ButtonEvent : PointerEvent { |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
81 this(in ButtonAction buttonAction, |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
82 in ButtonName buttonName, |
48 | 83 in Point pixelPoint, |
84 in Point modelPoint, | |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
85 in Mask mask) { |
48 | 86 super(pixelPoint, modelPoint, mask); |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
87 _buttonAction = buttonAction; |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
88 _buttonName = buttonName; |
0 | 89 } |
90 | |
5 | 91 override string toString() const { |
8 | 92 return std.string.format("Button event: %s, %s, %s, %s, %s", |
48 | 93 enumToString(_buttonAction), enumToString(_buttonName), |
94 _pixelPoint, _modelPoint, _mask); | |
0 | 95 } |
96 | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
97 ButtonAction buttonAction() const { return _buttonAction; } |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
48
diff
changeset
|
98 ButtonName buttonName() const { return _buttonName; } |
0 | 99 |
100 private { | |
48 | 101 ButtonAction _buttonAction; |
102 ButtonName _buttonName; | |
0 | 103 } |
104 } | |
105 | |
106 final class MotionEvent : PointerEvent { | |
48 | 107 this(in Point pixelPoint, |
108 in Point modelPoint, | |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
109 in Mask mask) { |
48 | 110 super(pixelPoint, modelPoint, mask); |
0 | 111 } |
112 | |
5 | 113 override string toString() const { |
8 | 114 return std.string.format("Motion event: %s, %s, %s", |
48 | 115 _pixelPoint, _modelPoint, _mask); |
0 | 116 } |
117 } | |
118 | |
119 final class ScrollEvent : PointerEvent { | |
48 | 120 this(in ScrollDirection scrollDirection, |
121 in Point pixelPoint, | |
122 in Point modelPoint, | |
16
9e63308b749c
* Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents:
13
diff
changeset
|
123 in Mask mask) { |
48 | 124 super(pixelPoint, modelPoint, mask); |
125 _scrollDirection = scrollDirection; | |
0 | 126 } |
127 | |
5 | 128 override string toString() const { |
8 | 129 return std.string.format("Scroll event: %s, %s, %s, %s", |
48 | 130 enumToString(_scrollDirection), _pixelPoint, _modelPoint, _mask); |
0 | 131 } |
132 | |
48 | 133 ScrollDirection scrollDirection() const { return _scrollDirection; } |
0 | 134 |
135 private { | |
48 | 136 ScrollDirection _scrollDirection; |
0 | 137 } |
138 } |