reflexion 0.1.19 → 0.1.23

Sign up to get free protection for your applications and to get access to all the features.
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