reflexion 0.1.20 → 0.1.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/capture_event.cpp +6 -5
  3. data/.doc/ext/reflex/contact_event.cpp +18 -16
  4. data/.doc/ext/reflex/draw_event.cpp +10 -8
  5. data/.doc/ext/reflex/event.cpp +10 -10
  6. data/.doc/ext/reflex/focus_event.cpp +18 -17
  7. data/.doc/ext/reflex/frame_event.cpp +17 -17
  8. data/.doc/ext/reflex/key_event.cpp +227 -28
  9. data/.doc/ext/reflex/native.cpp +2 -0
  10. data/.doc/ext/reflex/pointer.cpp +158 -0
  11. data/.doc/ext/reflex/pointer_event.cpp +32 -91
  12. data/.doc/ext/reflex/scroll_event.cpp +14 -17
  13. data/.doc/ext/reflex/selector.cpp +8 -0
  14. data/.doc/ext/reflex/timer.cpp +9 -1
  15. data/.doc/ext/reflex/timer_event.cpp +4 -13
  16. data/.doc/ext/reflex/update_event.cpp +6 -5
  17. data/.doc/ext/reflex/view.cpp +57 -0
  18. data/.doc/ext/reflex/wheel_event.cpp +39 -22
  19. data/.doc/ext/reflex/window.cpp +41 -0
  20. data/VERSION +1 -1
  21. data/ext/reflex/capture_event.cpp +6 -5
  22. data/ext/reflex/contact_event.cpp +18 -16
  23. data/ext/reflex/draw_event.cpp +9 -7
  24. data/ext/reflex/event.cpp +11 -11
  25. data/ext/reflex/focus_event.cpp +18 -17
  26. data/ext/reflex/frame_event.cpp +16 -16
  27. data/ext/reflex/key_event.cpp +228 -28
  28. data/ext/reflex/native.cpp +2 -0
  29. data/ext/reflex/pointer.cpp +170 -0
  30. data/ext/reflex/pointer_event.cpp +31 -96
  31. data/ext/reflex/scroll_event.cpp +15 -18
  32. data/ext/reflex/selector.cpp +9 -0
  33. data/ext/reflex/timer.cpp +15 -6
  34. data/ext/reflex/timer_event.cpp +9 -19
  35. data/ext/reflex/update_event.cpp +6 -5
  36. data/ext/reflex/view.cpp +67 -3
  37. data/ext/reflex/wheel_event.cpp +40 -21
  38. data/ext/reflex/window.cpp +49 -3
  39. data/include/reflex/defs.h +140 -106
  40. data/include/reflex/event.h +232 -124
  41. data/include/reflex/pointer.h +107 -0
  42. data/include/reflex/ruby/pointer.h +41 -0
  43. data/include/reflex/ruby/view.h +9 -0
  44. data/include/reflex/ruby/window.h +9 -0
  45. data/include/reflex/selector.h +1 -1
  46. data/include/reflex/shape.h +2 -2
  47. data/include/reflex/view.h +6 -4
  48. data/include/reflex/window.h +14 -8
  49. data/lib/reflex/application.rb +3 -3
  50. data/lib/reflex/autoinit.rb +1 -1
  51. data/lib/reflex/button.rb +7 -7
  52. data/lib/reflex/capture_event.rb +7 -7
  53. data/lib/reflex/contact_event.rb +10 -10
  54. data/lib/reflex/draw_event.rb +2 -2
  55. data/lib/reflex/ellipse_shape.rb +2 -2
  56. data/lib/reflex/focus_event.rb +11 -11
  57. data/lib/reflex/frame_event.rb +5 -5
  58. data/lib/reflex/helper.rb +20 -20
  59. data/lib/reflex/image_view.rb +2 -2
  60. data/lib/reflex/key_event.rb +12 -12
  61. data/lib/reflex/model.rb +22 -22
  62. data/lib/reflex/model_owner.rb +7 -7
  63. data/lib/reflex/model_view.rb +1 -1
  64. data/lib/reflex/module.rb +5 -5
  65. data/lib/reflex/pointer.rb +107 -0
  66. data/lib/reflex/pointer_event.rb +16 -54
  67. data/lib/reflex/polygon_shape.rb +2 -2
  68. data/lib/reflex/reflex.rb +3 -3
  69. data/lib/reflex/scroll_event.rb +1 -1
  70. data/lib/reflex/selector.rb +4 -4
  71. data/lib/reflex/shape.rb +13 -13
  72. data/lib/reflex/style.rb +11 -11
  73. data/lib/reflex/style_length.rb +1 -1
  74. data/lib/reflex/text_view.rb +2 -2
  75. data/lib/reflex/timer.rb +2 -2
  76. data/lib/reflex/timer_event.rb +3 -2
  77. data/lib/reflex/update_event.rb +1 -1
  78. data/lib/reflex/view.rb +32 -32
  79. data/lib/reflex/wheel_event.rb +2 -10
  80. data/lib/reflex/window.rb +8 -7
  81. data/lib/reflex.rb +1 -0
  82. data/lib/reflexion.rb +17 -17
  83. data/reflex.gemspec +5 -5
  84. data/samples/reflexion/noise.rb +1 -1
  85. data/samples/tree.rb +1 -1
  86. data/src/event.cpp +792 -86
  87. data/src/event.h +47 -0
  88. data/src/image_view.cpp +2 -2
  89. data/src/ios/event.h +15 -3
  90. data/src/ios/event.mm +126 -11
  91. data/src/ios/view_controller.mm +51 -23
  92. data/src/ios/window.mm +18 -0
  93. data/src/osx/event.h +15 -4
  94. data/src/osx/event.mm +214 -24
  95. data/src/osx/native_window.mm +85 -18
  96. data/src/osx/window.mm +22 -0
  97. data/src/pointer.cpp +203 -0
  98. data/src/pointer.h +26 -0
  99. data/src/selector.cpp +1 -1
  100. data/src/shape.cpp +11 -13
  101. data/src/shape.h +1 -1
  102. data/src/view.cpp +205 -118
  103. data/src/view.h +5 -10
  104. data/src/window.cpp +346 -104
  105. data/src/window.h +28 -3
  106. data/src/world.cpp +6 -4
  107. data/test/helper.rb +3 -3
  108. data/test/test_application.rb +1 -1
  109. data/test/test_capture_event.rb +22 -6
  110. data/test/test_contact_event.rb +40 -0
  111. data/test/test_draw_event.rb +35 -0
  112. data/test/test_event.rb +33 -5
  113. data/test/test_focus_event.rb +34 -0
  114. data/test/test_frame_event.rb +38 -0
  115. data/test/test_has_frame.rb +11 -11
  116. data/test/test_key_event.rb +33 -0
  117. data/test/test_pointer.rb +149 -0
  118. data/test/test_pointer_event.rb +70 -104
  119. data/test/test_reflex.rb +1 -1
  120. data/test/test_scroll_event.rb +39 -0
  121. data/test/test_selector.rb +15 -8
  122. data/test/test_shape.rb +8 -8
  123. data/test/test_style.rb +13 -13
  124. data/test/test_style_length.rb +5 -5
  125. data/test/test_timer_event.rb +38 -0
  126. data/test/test_update_event.rb +29 -0
  127. data/test/test_view.rb +57 -30
  128. data/test/test_wheel_event.rb +40 -0
  129. data/test/test_window.rb +45 -26
  130. metadata +64 -35
data/src/pointer.cpp ADDED
@@ -0,0 +1,203 @@
1
+ #include "pointer.h"
2
+
3
+
4
+ #include <xot/time.h>
5
+ #include "reflex/exception.h"
6
+
7
+
8
+ namespace Reflex
9
+ {
10
+
11
+
12
+ class PrevPointerPtr : public Xot::PImpl<Pointer>
13
+ {
14
+
15
+ typedef Xot::PImpl<Pointer> Super;
16
+
17
+ public:
18
+
19
+ PrevPointerPtr () : Super(NULL) {}
20
+
21
+ };// PrevPointerPtr
22
+
23
+
24
+ struct Pointer::Data
25
+ {
26
+
27
+ enum Flag
28
+ {
29
+
30
+ DRAG = Xot::bit(0),
31
+
32
+ ENTER = Xot::bit(1),
33
+
34
+ EXIT = Xot::bit(2),
35
+
36
+ };// Flag
37
+
38
+ ID id;
39
+
40
+ uint type;
41
+
42
+ Action action;
43
+
44
+ Point position;
45
+
46
+ uint modifiers, click_count, flags;
47
+
48
+ double time;
49
+
50
+ PrevPointerPtr prev;
51
+
52
+ Data (
53
+ ID id = -1, uint type = TYPE_NONE, Action action = ACTION_NONE,
54
+ const Point& position = 0, uint modifiers = 0, uint click_count = 0,
55
+ bool drag = false, bool enter = false, bool exit = false,
56
+ double time = 0)
57
+ : id(id), type(type), action(action),
58
+ position(position), modifiers(modifiers), click_count(click_count),
59
+ flags(make_flags(drag, enter, exit)),
60
+ time(time)
61
+ {
62
+ }
63
+
64
+ uint make_flags (bool drag, bool enter, bool exit)
65
+ {
66
+ return
67
+ (drag ? DRAG : 0) |
68
+ (enter ? ENTER : 0) |
69
+ (exit ? EXIT : 0);
70
+ }
71
+
72
+ };// Pointer::Data
73
+
74
+
75
+ void
76
+ Pointer_update_positions (Pointer* pthis, std::function<void(Point*)> fun)
77
+ {
78
+ assert(pthis);
79
+
80
+ auto& self = pthis->self;
81
+ fun(&self->position);
82
+ if (self->prev)
83
+ fun(&self->prev->self->position);
84
+ }
85
+
86
+ void
87
+ Pointer_set_id (Pointer* pthis, Pointer::ID id)
88
+ {
89
+ pthis->self->id = id;
90
+ }
91
+
92
+ void
93
+ Pointer_set_prev (Pointer* pthis, const Pointer* prev)
94
+ {
95
+ if (prev)
96
+ pthis->self->prev.reset(new Pointer(*prev));
97
+ else
98
+ pthis->self->prev.reset();
99
+ }
100
+
101
+
102
+ Pointer::Pointer ()
103
+ {
104
+ }
105
+
106
+ Pointer::Pointer (
107
+ ID id, uint type, Action action,
108
+ const Point& position, uint modifiers, uint click_count, bool drag,
109
+ double time)
110
+ : self(new Data(
111
+ id, type, action,
112
+ position, modifiers, click_count, drag, false, false,
113
+ time))
114
+ {
115
+ }
116
+
117
+ Pointer::Pointer (const This& obj)
118
+ : self(new Data(*obj.self))
119
+ {
120
+ }
121
+
122
+ Pointer&
123
+ Pointer::operator = (const This& obj)
124
+ {
125
+ if (&obj == this) return *this;
126
+
127
+ *self = *obj.self;
128
+ return *this;
129
+ }
130
+
131
+ Pointer::~Pointer ()
132
+ {
133
+ }
134
+
135
+ Pointer::ID
136
+ Pointer::id () const
137
+ {
138
+ return self->id;
139
+ }
140
+
141
+ uint
142
+ Pointer::type () const
143
+ {
144
+ return self->type;
145
+ }
146
+
147
+ Pointer::Action
148
+ Pointer::action () const
149
+ {
150
+ return self->action;
151
+ }
152
+
153
+ const Point&
154
+ Pointer::position () const
155
+ {
156
+ return self->position;
157
+ }
158
+
159
+ uint
160
+ Pointer::modifiers () const
161
+ {
162
+ return self->modifiers;
163
+ }
164
+
165
+ uint
166
+ Pointer::click_count () const
167
+ {
168
+ return self->click_count;
169
+ }
170
+
171
+ bool
172
+ Pointer::is_drag () const
173
+ {
174
+ return self->flags & Data::DRAG;
175
+ }
176
+
177
+ double
178
+ Pointer::time () const
179
+ {
180
+ return self->time;
181
+ }
182
+
183
+ const Pointer*
184
+ Pointer::prev () const
185
+ {
186
+ return self->prev.get();
187
+ }
188
+
189
+ Pointer::operator bool () const
190
+ {
191
+ return
192
+ self->type != TYPE_NONE &&
193
+ ACTION_NONE < self->action && self->action <= STAY;
194
+ }
195
+
196
+ bool
197
+ Pointer::operator ! () const
198
+ {
199
+ return !operator bool();
200
+ }
201
+
202
+
203
+ }// Reflex
data/src/pointer.h ADDED
@@ -0,0 +1,26 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_SRC_POINTER_H__
4
+ #define __REFLEX_SRC_POINTER_H__
5
+
6
+
7
+ #include <functional>
8
+ #include <reflex/pointer.h>
9
+
10
+
11
+ namespace Reflex
12
+ {
13
+
14
+
15
+ void Pointer_update_positions (
16
+ Pointer* pthis, std::function<void(Point*)> fun);
17
+
18
+ void Pointer_set_id (Pointer* pthis, Pointer::ID id);
19
+
20
+ void Pointer_set_prev (Pointer* pthis, const Pointer* prev);
21
+
22
+
23
+ }// Reflex
24
+
25
+
26
+ #endif//EOH
data/src/selector.cpp CHANGED
@@ -139,7 +139,7 @@ namespace Reflex
139
139
  }
140
140
 
141
141
  bool
142
- Selector::is_empty () const
142
+ Selector::empty () const
143
143
  {
144
144
  return self->name.empty() && self->tags.empty();
145
145
  }
data/src/shape.cpp CHANGED
@@ -432,25 +432,23 @@ namespace Reflex
432
432
  }
433
433
 
434
434
  void
435
- Shape_call_contact_event (Shape* shape, const ContactEvent& event)
435
+ Shape_call_contact_event (Shape* shape, ContactEvent* event)
436
436
  {
437
- if (!shape)
437
+ if (!shape || !event)
438
438
  argument_error(__FILE__, __LINE__);
439
439
 
440
- ContactEvent e = event;
441
- shape->on_contact(&e);
440
+ shape->on_contact(event);
442
441
 
443
- switch (e.type)
442
+ switch (event->action())
444
443
  {
445
- case ContactEvent::BEGIN: shape->on_contact_begin(&e); break;
446
- case ContactEvent::END: shape->on_contact_end(&e); break;
447
- case ContactEvent::NONE: break;
444
+ case ContactEvent::BEGIN: shape->on_contact_begin(event); break;
445
+ case ContactEvent::END: shape->on_contact_end(event); break;
446
+ default: break;
448
447
  }
449
448
 
450
- if (e.is_blocked())
451
- return;
449
+ if (event->is_blocked()) return;
452
450
 
453
- View_call_contact_event(shape->owner(), e);
451
+ View_call_contact_event(shape->owner(), event);
454
452
  }
455
453
 
456
454
 
@@ -587,9 +585,9 @@ namespace Reflex
587
585
  void
588
586
  Shape::on_draw (DrawEvent* e)
589
587
  {
590
- assert(e && e->painter);
588
+ assert(e && e->painter());
591
589
 
592
- e->painter->polygon(self->polygon);
590
+ e->painter()->polygon(self->polygon);
593
591
  }
594
592
 
595
593
  void
data/src/shape.h CHANGED
@@ -52,7 +52,7 @@ namespace Reflex
52
52
 
53
53
  void Shape_update (Shape* shape, bool force = false);
54
54
 
55
- void Shape_call_contact_event (Shape* shape, const ContactEvent& event);
55
+ void Shape_call_contact_event (Shape* shape, ContactEvent* event);
56
56
 
57
57
 
58
58
  }// Reflex