reflexion 0.1.19 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/contact_event.cpp +6 -6
  3. data/.doc/ext/reflex/event.cpp +9 -1
  4. data/.doc/ext/reflex/focus_event.cpp +6 -6
  5. data/.doc/ext/reflex/key_event.cpp +211 -13
  6. data/.doc/ext/reflex/native.cpp +2 -0
  7. data/.doc/ext/reflex/pointer.cpp +158 -0
  8. data/.doc/ext/reflex/pointer_event.cpp +31 -90
  9. data/.doc/ext/reflex/selector.cpp +8 -0
  10. data/.doc/ext/reflex/view.cpp +57 -0
  11. data/.doc/ext/reflex/window.cpp +41 -0
  12. data/VERSION +1 -1
  13. data/ext/reflex/contact_event.cpp +6 -6
  14. data/ext/reflex/event.cpp +11 -2
  15. data/ext/reflex/focus_event.cpp +6 -6
  16. data/ext/reflex/key_event.cpp +212 -13
  17. data/ext/reflex/native.cpp +2 -0
  18. data/ext/reflex/pointer.cpp +170 -0
  19. data/ext/reflex/pointer_event.cpp +30 -95
  20. data/ext/reflex/selector.cpp +9 -0
  21. data/ext/reflex/view.cpp +67 -3
  22. data/ext/reflex/window.cpp +49 -3
  23. data/include/reflex/defs.h +140 -106
  24. data/include/reflex/event.h +26 -27
  25. data/include/reflex/pointer.h +107 -0
  26. data/include/reflex/ruby/pointer.h +41 -0
  27. data/include/reflex/ruby/view.h +9 -0
  28. data/include/reflex/ruby/window.h +9 -0
  29. data/include/reflex/selector.h +1 -1
  30. data/include/reflex/view.h +6 -4
  31. data/include/reflex/window.h +14 -8
  32. data/lib/reflex/application.rb +3 -3
  33. data/lib/reflex/autoinit.rb +1 -1
  34. data/lib/reflex/button.rb +7 -7
  35. data/lib/reflex/capture_event.rb +7 -7
  36. data/lib/reflex/contact_event.rb +4 -4
  37. data/lib/reflex/draw_event.rb +2 -2
  38. data/lib/reflex/ellipse_shape.rb +2 -2
  39. data/lib/reflex/focus_event.rb +4 -4
  40. data/lib/reflex/frame_event.rb +5 -5
  41. data/lib/reflex/helper.rb +20 -20
  42. data/lib/reflex/image_view.rb +2 -2
  43. data/lib/reflex/key_event.rb +6 -6
  44. data/lib/reflex/model.rb +22 -22
  45. data/lib/reflex/model_owner.rb +7 -7
  46. data/lib/reflex/model_view.rb +1 -1
  47. data/lib/reflex/module.rb +5 -5
  48. data/lib/reflex/pointer.rb +107 -0
  49. data/lib/reflex/pointer_event.rb +16 -54
  50. data/lib/reflex/polygon_shape.rb +2 -2
  51. data/lib/reflex/reflex.rb +3 -3
  52. data/lib/reflex/scroll_event.rb +1 -1
  53. data/lib/reflex/selector.rb +4 -4
  54. data/lib/reflex/shape.rb +13 -13
  55. data/lib/reflex/style.rb +11 -11
  56. data/lib/reflex/style_length.rb +1 -1
  57. data/lib/reflex/text_view.rb +2 -2
  58. data/lib/reflex/timer.rb +2 -2
  59. data/lib/reflex/timer_event.rb +1 -1
  60. data/lib/reflex/update_event.rb +1 -1
  61. data/lib/reflex/view.rb +32 -32
  62. data/lib/reflex/wheel_event.rb +3 -3
  63. data/lib/reflex/window.rb +7 -6
  64. data/lib/reflex.rb +1 -0
  65. data/lib/reflexion.rb +17 -17
  66. data/reflex.gemspec +5 -5
  67. data/samples/reflexion/noise.rb +1 -1
  68. data/samples/tree.rb +1 -1
  69. data/src/event.cpp +189 -37
  70. data/src/event.h +32 -0
  71. data/src/ios/event.h +15 -3
  72. data/src/ios/event.mm +126 -11
  73. data/src/ios/view_controller.mm +50 -22
  74. data/src/ios/window.mm +18 -0
  75. data/src/osx/event.h +14 -3
  76. data/src/osx/event.mm +213 -23
  77. data/src/osx/native_window.mm +84 -17
  78. data/src/osx/window.mm +22 -0
  79. data/src/pointer.cpp +203 -0
  80. data/src/pointer.h +26 -0
  81. data/src/selector.cpp +1 -1
  82. data/src/view.cpp +103 -64
  83. data/src/view.h +0 -4
  84. data/src/window.cpp +334 -98
  85. data/src/window.h +28 -3
  86. data/test/helper.rb +3 -3
  87. data/test/test_application.rb +1 -1
  88. data/test/test_capture_event.rb +6 -6
  89. data/test/test_event.rb +18 -4
  90. data/test/test_has_frame.rb +11 -11
  91. data/test/test_pointer.rb +149 -0
  92. data/test/test_pointer_event.rb +70 -104
  93. data/test/test_reflex.rb +1 -1
  94. data/test/test_selector.rb +15 -8
  95. data/test/test_shape.rb +8 -8
  96. data/test/test_style.rb +13 -13
  97. data/test/test_style_length.rb +5 -5
  98. data/test/test_view.rb +57 -30
  99. data/test/test_window.rb +45 -26
  100. metadata +46 -35
data/ext/reflex/view.cpp CHANGED
@@ -130,6 +130,54 @@ RUCY_DEF0(update_layout)
130
130
  }
131
131
  RUCY_END
132
132
 
133
+ static
134
+ RUCY_DEF1(from_parent, point)
135
+ {
136
+ CHECK;
137
+ return value(THIS->from_parent(to<Rays::Point>(point)));
138
+ }
139
+ RUCY_END
140
+
141
+ static
142
+ RUCY_DEF1(to_parent, point)
143
+ {
144
+ CHECK;
145
+ return value(THIS->to_parent(to<Rays::Point>(point)));
146
+ }
147
+ RUCY_END
148
+
149
+ static
150
+ RUCY_DEF1(from_window, point)
151
+ {
152
+ CHECK;
153
+ return value(THIS->from_window(to<Rays::Point>(point)));
154
+ }
155
+ RUCY_END
156
+
157
+ static
158
+ RUCY_DEF1(to_window, point)
159
+ {
160
+ CHECK;
161
+ return value(THIS->to_window(to<Rays::Point>(point)));
162
+ }
163
+ RUCY_END
164
+
165
+ static
166
+ RUCY_DEF1(from_screen, point)
167
+ {
168
+ CHECK;
169
+ return value(THIS->from_screen(to<Rays::Point>(point)));
170
+ }
171
+ RUCY_END
172
+
173
+ static
174
+ RUCY_DEF1(to_screen, point)
175
+ {
176
+ CHECK;
177
+ return value(THIS->to_screen(to<Rays::Point>(point)));
178
+ }
179
+ RUCY_END
180
+
133
181
  static
134
182
  RUCY_DEF1(add_child, child)
135
183
  {
@@ -1034,6 +1082,14 @@ RUCY_DEF1(on_pointer_move, event)
1034
1082
  }
1035
1083
  RUCY_END
1036
1084
 
1085
+ static
1086
+ RUCY_DEF1(on_pointer_cancel, event)
1087
+ {
1088
+ CHECK;
1089
+ CALL(on_pointer_cancel(to<Reflex::PointerEvent*>(event)));
1090
+ }
1091
+ RUCY_END
1092
+
1037
1093
  static
1038
1094
  RUCY_DEF1(on_wheel, event)
1039
1095
  {
@@ -1102,6 +1158,13 @@ Init_view ()
1102
1158
  cView.define_private_method("start_timer", start_timer);
1103
1159
  cView.define_method("update_layout", update_layout);
1104
1160
 
1161
+ cView.define_method("from_parent", from_parent);
1162
+ cView.define_method( "to_parent", to_parent);
1163
+ cView.define_method("from_window", from_window);
1164
+ cView.define_method( "to_window", to_window);
1165
+ cView.define_method("from_screen", from_screen);
1166
+ cView.define_method( "to_screen", to_screen);
1167
+
1105
1168
  cView.define_method("add_child", add_child);
1106
1169
  cView.define_method("remove_child", remove_child);
1107
1170
  cView.define_method("clear_children", clear_children);
@@ -1201,9 +1264,10 @@ Init_view ()
1201
1264
  cView.define_method("on_key_down", on_key_down);
1202
1265
  cView.define_method("on_key_up", on_key_up);
1203
1266
  cView.define_method("on_pointer", on_pointer);
1204
- cView.define_method("on_pointer_down", on_pointer_down);
1205
- cView.define_method("on_pointer_up", on_pointer_up);
1206
- cView.define_method("on_pointer_move", on_pointer_move);
1267
+ cView.define_method("on_pointer_down", on_pointer_down);
1268
+ cView.define_method("on_pointer_up", on_pointer_up);
1269
+ cView.define_method("on_pointer_move", on_pointer_move);
1270
+ cView.define_method("on_pointer_cancel", on_pointer_cancel);
1207
1271
  cView.define_method("on_wheel", on_wheel);
1208
1272
  cView.define_method("on_capture", on_capture);
1209
1273
  cView.define_method("on_timer", on_timer);
@@ -59,6 +59,22 @@ RUCY_DEF0(redraw)
59
59
  }
60
60
  RUCY_END
61
61
 
62
+ static
63
+ RUCY_DEF1(from_screen, point)
64
+ {
65
+ CHECK;
66
+ return value(THIS->from_screen(to<Rays::Point>(point)));
67
+ }
68
+ RUCY_END
69
+
70
+ static
71
+ RUCY_DEF1(to_screen, point)
72
+ {
73
+ CHECK;
74
+ return value(THIS->to_screen(to<Rays::Point>(point)));
75
+ }
76
+ RUCY_END
77
+
62
78
  static
63
79
  RUCY_DEF1(set_title, title)
64
80
  {
@@ -93,6 +109,23 @@ RUCY_DEF0(get_frame)
93
109
  }
94
110
  RUCY_END
95
111
 
112
+ static
113
+ RUCY_DEF1(set_resizable, state)
114
+ {
115
+ CHECK;
116
+ THIS->set_resizable(to<bool>(state));
117
+ return value(THIS->is_resizable());
118
+ }
119
+ RUCY_END
120
+
121
+ static
122
+ RUCY_DEF0(is_resizable)
123
+ {
124
+ CHECK;
125
+ return value(THIS->is_resizable());
126
+ }
127
+ RUCY_END
128
+
96
129
  static
97
130
  RUCY_DEF0(hidden)
98
131
  {
@@ -241,6 +274,14 @@ RUCY_DEF1(on_pointer_move, event)
241
274
  }
242
275
  RUCY_END
243
276
 
277
+ static
278
+ RUCY_DEF1(on_pointer_cancel, event)
279
+ {
280
+ CHECK;
281
+ CALL(on_pointer_cancel(to<Reflex::PointerEvent*>(event)));
282
+ }
283
+ RUCY_END
284
+
244
285
  static
245
286
  RUCY_DEF1(on_wheel, event)
246
287
  {
@@ -263,10 +304,14 @@ Init_window ()
263
304
  cWindow.define_method("hide", hide);
264
305
  cWindow.define_method("close", close);
265
306
  cWindow.define_method("redraw", redraw);
307
+ cWindow.define_method("from_screen", from_screen);
308
+ cWindow.define_method( "to_screen", to_screen);
266
309
  cWindow.define_method("title=", set_title);
267
310
  cWindow.define_method("title", get_title);
268
311
  cWindow.define_method("frame=", set_frame);
269
312
  cWindow.define_method("frame", get_frame);
313
+ cWindow.define_method("resizable=", set_resizable);
314
+ cWindow.define_method("resizable?", is_resizable);
270
315
  cWindow.define_method("hidden", hidden);
271
316
  cWindow.define_method("root", root);
272
317
  cWindow.define_method("focus", focus);
@@ -282,9 +327,10 @@ Init_window ()
282
327
  cWindow.define_method("on_key_down", on_key_down);
283
328
  cWindow.define_method("on_key_up", on_key_up);
284
329
  cWindow.define_method("on_pointer", on_pointer);
285
- cWindow.define_method("on_pointer_down", on_pointer_down);
286
- cWindow.define_method("on_pointer_up", on_pointer_up);
287
- cWindow.define_method("on_pointer_move", on_pointer_move);
330
+ cWindow.define_method("on_pointer_down", on_pointer_down);
331
+ cWindow.define_method("on_pointer_up", on_pointer_up);
332
+ cWindow.define_method("on_pointer_move", on_pointer_move);
333
+ cWindow.define_method("on_pointer_cancel", on_pointer_cancel);
288
334
  cWindow.define_method("on_wheel", on_wheel);
289
335
  }
290
336
 
@@ -68,98 +68,89 @@ namespace Reflex
68
68
 
69
69
  KEY_NONE = 0,
70
70
 
71
+ KEY_A,
72
+ KEY_B,
73
+ KEY_C,
74
+ KEY_D,
75
+ KEY_E,
76
+ KEY_F,
77
+ KEY_G,
78
+ KEY_H,
79
+ KEY_I,
80
+ KEY_J,
81
+ KEY_K,
82
+ KEY_L,
83
+ KEY_M,
84
+ KEY_N,
85
+ KEY_O,
86
+ KEY_P,
87
+ KEY_Q,
88
+ KEY_R,
89
+ KEY_S,
90
+ KEY_T,
91
+ KEY_U,
92
+ KEY_V,
93
+ KEY_W,
94
+ KEY_X,
95
+ KEY_Y,
96
+ KEY_Z,
97
+
98
+ KEY_0,
99
+ KEY_1,
100
+ KEY_2,
101
+ KEY_3,
102
+ KEY_4,
103
+ KEY_5,
104
+ KEY_6,
105
+ KEY_7,
106
+ KEY_8,
107
+ KEY_9,
108
+
109
+ KEY_MINUS,
110
+ KEY_EQUAL,
111
+ KEY_COMMA,
112
+ KEY_PERIOD,
113
+ KEY_SEMICOLON,
114
+ KEY_QUOTE,
115
+ KEY_SLASH,
116
+ KEY_BACKSLASH,
117
+ KEY_UNDERSCORE,
118
+ KEY_GRAVE,
119
+ KEY_YEN,
120
+ KEY_LBRACKET,
121
+ KEY_RBRACKET,
122
+
123
+ KEY_ENTER,
71
124
  KEY_RETURN,
72
- KEY_ENTER = KEY_RETURN,
73
- KEY_ESCAPE,
74
125
  KEY_SPACE,
75
- KEY_BACKSPACE,
76
126
  KEY_TAB,
127
+ KEY_DELETE,
128
+ KEY_BACKSPACE,
129
+ //KEY_INSERT,
130
+ KEY_ESCAPE,
77
131
 
78
132
  KEY_LEFT,
79
- KEY_UP,
80
133
  KEY_RIGHT,
134
+ KEY_UP,
81
135
  KEY_DOWN,
82
-
83
- KEY_INSERT,
84
- KEY_DELETE,
85
136
  KEY_HOME,
86
137
  KEY_END,
87
138
  KEY_PAGEUP,
88
139
  KEY_PAGEDOWN,
89
140
 
90
- KEY_SHIFT,
91
141
  KEY_LSHIFT,
92
142
  KEY_RSHIFT,
93
-
94
- KEY_CONTROL,
95
143
  KEY_LCONTROL,
96
144
  KEY_RCONTROL,
97
-
98
- KEY_ALT,
99
- KEY_LALT,
100
- KEY_RALT,
101
-
102
- KEY_WIN,
103
- KEY_LWIN,
104
- KEY_RWIN,
105
-
106
- KEY_OPTION = KEY_ALT,
107
- KEY_LOPTION = KEY_LALT,
108
- KEY_ROPTION = KEY_RALT,
109
-
110
- KEY_COMMAND = KEY_WIN,
111
- KEY_LCOMMAND = KEY_LWIN,
112
- KEY_RCOMMAND = KEY_RWIN,
113
-
114
- KEY_CAPSLOCK,
115
- KEY_NUMLOCK,
116
- KEY_SCROLLLOCK,
117
-
118
- KEY_PRINTSCREEN,
119
- KEY_PAUSE,
120
- KEY_BREAK,
121
-
122
- KEY_SLEEP,
123
- KEY_EXEC,//UTE,
124
- KEY_HELP,
125
- KEY_PRINT,
126
- KEY_APPS,
127
- KEY_SELECT,
128
- KEY_CLEAR,
129
- KEY_PLAY,
130
- KEY_ZOOM,
131
-
132
- KEY_IME_KANA,
133
- KEY_IME_KANJI,
134
- KEY_IME_JUNJA,
135
- KEY_IME_PROCESS,
136
- KEY_IME_ACCEPT,
137
- KEY_IME_FINAL,
138
- KEY_IME_CONVERT,
139
- KEY_IME_NONCONVERT,
140
- KEY_IME_MODECHANGE,
141
-
142
- KEY_BROWSER_BACK,
143
- KEY_BROWSER_FORWARD,
144
- KEY_BROWSER_REFRESH,
145
- KEY_BROWSER_STOP,
146
- KEY_BROWSER_SEARCH,
147
- KEY_BROWSER_FAVORITES,
148
- KEY_BROWSER_HOME,
149
-
150
- KEY_VOLUME_MUTE,
151
- KEY_VOLUME_DOWN,
152
- KEY_VOLUME_UP,
153
-
154
- KEY_MEDIA_NEXT_TRACK,
155
- KEY_MEDIA_PREV_TRACK,
156
- KEY_MEDIA_STOP,
157
- KEY_MEDIA_PLAY_PAUSE,
158
-
159
- KEY_LAUNCH_MAIL,
160
- KEY_LAUNCH_MEDIA_SELECT,
161
- KEY_LAUNCH_APP1,
162
- KEY_LAUNCH_APP2,
145
+ //KEY_LALT,
146
+ //KEY_RALT,
147
+ //KEY_LWIN,
148
+ //KEY_RWIN,
149
+ KEY_LCOMMAND,
150
+ KEY_RCOMMAND,
151
+ KEY_LOPTION,
152
+ KEY_ROPTION,
153
+ KEY_FUNCTION,
163
154
 
164
155
  KEY_F1,
165
156
  KEY_F2,
@@ -181,41 +172,84 @@ namespace Reflex
181
172
  KEY_F18,
182
173
  KEY_F19,
183
174
  KEY_F20,
184
- KEY_F21,
185
- KEY_F22,
186
- KEY_F23,
187
- KEY_F24,
188
- KEY_F25,
189
- KEY_F26,
190
- KEY_F27,
191
- KEY_F28,
192
- KEY_F29,
193
- KEY_F30,
194
- KEY_F31,
195
- KEY_F32,
196
- KEY_F33,
197
- KEY_F34,
198
- KEY_F35,
199
-
200
- };// KeyCode
175
+ //KEY_F21,
176
+ //KEY_F22,
177
+ //KEY_F23,
178
+ //KEY_F24,
179
+
180
+ KEY_NUM_0,
181
+ KEY_NUM_1,
182
+ KEY_NUM_2,
183
+ KEY_NUM_3,
184
+ KEY_NUM_4,
185
+ KEY_NUM_5,
186
+ KEY_NUM_6,
187
+ KEY_NUM_7,
188
+ KEY_NUM_8,
189
+ KEY_NUM_9,
190
+
191
+ KEY_NUM_PLUS,
192
+ KEY_NUM_MINUS,
193
+ KEY_NUM_MULTIPLY,
194
+ KEY_NUM_DIVIDE,
195
+ KEY_NUM_EQUAL,
196
+ KEY_NUM_COMMA,
197
+ KEY_NUM_DECIMAL,
198
+ KEY_NUM_CLEAR,
201
199
 
200
+ KEY_CAPSLOCK,
201
+ //KEY_NUMLOCK,
202
+ //KEY_SCROLLLOCK,
202
203
 
203
- enum PointerType
204
- {
205
-
206
- POINTER_NONE = 0,
207
-
208
- POINTER_MOUSE_LEFT = 0x1 << 0,
209
-
210
- POINTER_MOUSE_RIGHT = 0x1 << 1,
211
-
212
- POINTER_MOUSE_MIDDLE = 0x1 << 2,
204
+ //KEY_PRINTSCREEN,
205
+ //KEY_PAUSE,
206
+ //KEY_BREAK,
207
+ KEY_SECTION,
208
+ KEY_HELP,
213
209
 
214
- POINTER_TOUCH = 0x1 << 3,
210
+ KEY_IME_EISU,
211
+ KEY_IME_KANA,
212
+ //KEY_IME_KANJI,
213
+ //KEY_IME_JUNJA,
214
+ //KEY_IME_PROCESS,
215
+ //KEY_IME_ACCEPT,
216
+ //KEY_IME_FINAL,
217
+ //KEY_IME_CONVERT,
218
+ //KEY_IME_NONCONVERT,
219
+ //KEY_IME_MODECHANGE,
215
220
 
216
- POINTER_PEN = 0x1 << 4,
221
+ KEY_VOLUME_UP,
222
+ KEY_VOLUME_DOWN,
223
+ KEY_MUTE,
224
+
225
+ //KEY_SLEEP,
226
+ //KEY_EXEC,
227
+ //KEY_PRINT,
228
+ //KEY_APPS,
229
+ //KEY_SELECT,
230
+ //KEY_CLEAR,
231
+ //KEY_PLAY,
232
+ //KEY_ZOOM,
233
+
234
+ //KEY_BROWSER_BACK,
235
+ //KEY_BROWSER_FORWARD,
236
+ //KEY_BROWSER_REFRESH,
237
+ //KEY_BROWSER_STOP,
238
+ //KEY_BROWSER_SEARCH,
239
+ //KEY_BROWSER_FAVORITES,
240
+ //KEY_BROWSER_HOME,
241
+
242
+ //KEY_MEDIA_NEXT_TRACK,
243
+ //KEY_MEDIA_PREV_TRACK,
244
+ //KEY_MEDIA_STOP,
245
+ //KEY_MEDIA_PLAY_PAUSE,
246
+
247
+ //KEY_LAUNCH_MAIL,
248
+ //KEY_LAUNCH_MEDIA_SELECT,
249
+ //KEY_LAUNCH_APP1,
250
+ //KEY_LAUNCH_APP2,
217
251
 
218
- };// PointType
252
+ };// KeyCode
219
253
 
220
254
 
221
255
  enum Modifier
@@ -4,10 +4,12 @@
4
4
  #define __REFLEX_EVENT_H__
5
5
 
6
6
 
7
+ #include <xot/pimpl.h>
7
8
  #include <rays/point.h>
8
9
  #include <rays/bounds.h>
9
10
  #include <rays/painter.h>
10
11
  #include <reflex/defs.h>
12
+ #include <reflex/pointer.h>
11
13
  #include <reflex/timer.h>
12
14
 
13
15
 
@@ -30,10 +32,14 @@ namespace Reflex
30
32
 
31
33
  bool is_blocked () const;
32
34
 
35
+ double time () const;
36
+
33
37
  private:
34
38
 
35
39
  bool blocked;
36
40
 
41
+ double time_;
42
+
37
43
  };// Event
38
44
 
39
45
 
@@ -161,7 +167,7 @@ namespace Reflex
161
167
 
162
168
  int repeat;
163
169
 
164
- bool capture;
170
+ bool captured;
165
171
 
166
172
  KeyEvent ();
167
173
 
@@ -172,47 +178,40 @@ namespace Reflex
172
178
  };// KeyEvent
173
179
 
174
180
 
175
- struct PointerEvent : public Event
181
+ class PointerEvent : public Event
176
182
  {
177
183
 
178
- enum Type {NONE = 0, DOWN, UP, MOVE};
179
-
180
- enum {MAX = 10};
181
-
182
- Type type;
184
+ typedef PointerEvent This;
183
185
 
184
- uint pointer_type;
186
+ public:
185
187
 
186
- size_t size;
188
+ PointerEvent (bool captured = false);
187
189
 
188
- uint modifiers, count;
190
+ PointerEvent (
191
+ const Pointer& pointer,
192
+ bool captured = false);
189
193
 
190
- bool drag, capture;
194
+ PointerEvent (
195
+ const Pointer* pointers, size_t size,
196
+ bool captured = false);
191
197
 
192
- union
193
- {
194
- struct {coord x, y, z;};
198
+ PointerEvent (const This& obj);
195
199
 
196
- Coord3 positions[MAX];
197
- };
200
+ PointerEvent& operator = (const This& obj);
198
201
 
199
- PointerEvent ();
202
+ ~PointerEvent ();
200
203
 
201
- PointerEvent (
202
- Type type, uint pointer_type, coord x, coord y,
203
- uint modifiers = 0, uint count = 1, bool drag = false);
204
+ size_t size () const;
204
205
 
205
- PointerEvent (
206
- Type type, uint pointer_type, const Point* positions, size_t size,
207
- uint modifiers = 0, uint count = 1, bool drag = false);
206
+ bool empty () const;
208
207
 
209
- Point& position (size_t i = 0);
208
+ bool is_captured () const;
210
209
 
211
- const Point& position (size_t i = 0) const;
210
+ const Pointer& operator [] (size_t index) const;
212
211
 
213
- Point& operator [] (size_t i);
212
+ struct Data;
214
213
 
215
- const Point& operator [] (size_t i) const;
214
+ Xot::PImpl<Data> self;
216
215
 
217
216
  };// PointerEvent
218
217
 
@@ -0,0 +1,107 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_POINTER_H__
4
+ #define __REFLEX_POINTER_H__
5
+
6
+
7
+ #include <xot/pimpl.h>
8
+ #include <xot/util.h>
9
+ #include <rays/point.h>
10
+ #include <reflex/defs.h>
11
+
12
+
13
+ namespace Reflex
14
+ {
15
+
16
+
17
+ class Pointer
18
+ {
19
+
20
+ typedef Pointer This;
21
+
22
+ public:
23
+
24
+ typedef int ID;
25
+
26
+ enum Type
27
+ {
28
+
29
+ TYPE_NONE = 0,
30
+
31
+ MOUSE = Xot::bit(0),
32
+
33
+ MOUSE_LEFT = Xot::bit(1),
34
+
35
+ MOUSE_RIGHT = Xot::bit(2),
36
+
37
+ MOUSE_MIDDLE = Xot::bit(3),
38
+
39
+ TOUCH = Xot::bit(4),
40
+
41
+ PEN = Xot::bit(5),
42
+
43
+ };// Type
44
+
45
+ enum Action
46
+ {
47
+
48
+ ACTION_NONE = 0,
49
+
50
+ DOWN,
51
+
52
+ UP,
53
+
54
+ MOVE,
55
+
56
+ CANCEL,
57
+
58
+ STAY
59
+
60
+ };// Action
61
+
62
+ Pointer ();
63
+
64
+ Pointer (
65
+ ID id, uint type, Action action,
66
+ const Point& position, uint modifiers, uint click_count, bool drag,
67
+ double time);
68
+
69
+ Pointer (const This& obj);
70
+
71
+ Pointer& operator = (const This& obj);
72
+
73
+ ~Pointer ();
74
+
75
+ ID id () const;
76
+
77
+ uint type () const;
78
+
79
+ Action action () const;
80
+
81
+ const Point& position () const;
82
+
83
+ uint modifiers () const;
84
+
85
+ uint click_count () const;
86
+
87
+ bool is_drag () const;
88
+
89
+ double time () const;
90
+
91
+ const Pointer* prev () const;
92
+
93
+ operator bool () const;
94
+
95
+ bool operator ! () const;
96
+
97
+ struct Data;
98
+
99
+ Xot::PImpl<Data> self;
100
+
101
+ };// Pointer
102
+
103
+
104
+ }// Reflex
105
+
106
+
107
+ #endif//EOH
@@ -0,0 +1,41 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_RUBY_POINTER_H__
4
+ #define __REFLEX_RUBY_POINTER_H__
5
+
6
+
7
+ #include <rucy/rucy.h>
8
+ #include <rucy/class.h>
9
+ #include <rucy/extension.h>
10
+ #include <reflex/pointer.h>
11
+
12
+
13
+ namespace Reflex
14
+ {
15
+
16
+
17
+ Rucy::Class pointer_class ();
18
+ // class Reflex::Pointer
19
+
20
+
21
+ }// Reflex
22
+
23
+
24
+ RUCY_DECLARE_VALUE_FROM_TO(Reflex::Pointer)
25
+
26
+
27
+ namespace Rucy
28
+ {
29
+
30
+
31
+ template <> inline Class
32
+ get_ruby_class<Reflex::Pointer> ()
33
+ {
34
+ return Reflex::pointer_class();
35
+ }
36
+
37
+
38
+ }// Rucy
39
+
40
+
41
+ #endif//EOH