reflexion 0.1.20 → 0.1.24

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 (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