reflexion 0.1.20 → 0.1.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.doc/ext/reflex/capture_event.cpp +6 -5
- data/.doc/ext/reflex/contact_event.cpp +18 -16
- data/.doc/ext/reflex/draw_event.cpp +10 -8
- data/.doc/ext/reflex/event.cpp +10 -10
- data/.doc/ext/reflex/focus_event.cpp +18 -17
- data/.doc/ext/reflex/frame_event.cpp +17 -17
- data/.doc/ext/reflex/key_event.cpp +227 -28
- data/.doc/ext/reflex/native.cpp +2 -0
- data/.doc/ext/reflex/pointer.cpp +158 -0
- data/.doc/ext/reflex/pointer_event.cpp +32 -91
- data/.doc/ext/reflex/scroll_event.cpp +14 -17
- data/.doc/ext/reflex/selector.cpp +8 -0
- data/.doc/ext/reflex/timer.cpp +9 -1
- data/.doc/ext/reflex/timer_event.cpp +4 -13
- data/.doc/ext/reflex/update_event.cpp +6 -5
- data/.doc/ext/reflex/view.cpp +57 -0
- data/.doc/ext/reflex/wheel_event.cpp +39 -22
- data/.doc/ext/reflex/window.cpp +41 -0
- data/VERSION +1 -1
- data/ext/reflex/capture_event.cpp +6 -5
- data/ext/reflex/contact_event.cpp +18 -16
- data/ext/reflex/draw_event.cpp +9 -7
- data/ext/reflex/event.cpp +11 -11
- data/ext/reflex/focus_event.cpp +18 -17
- data/ext/reflex/frame_event.cpp +16 -16
- data/ext/reflex/key_event.cpp +228 -28
- data/ext/reflex/native.cpp +2 -0
- data/ext/reflex/pointer.cpp +170 -0
- data/ext/reflex/pointer_event.cpp +31 -96
- data/ext/reflex/scroll_event.cpp +15 -18
- data/ext/reflex/selector.cpp +9 -0
- data/ext/reflex/timer.cpp +15 -6
- data/ext/reflex/timer_event.cpp +9 -19
- data/ext/reflex/update_event.cpp +6 -5
- data/ext/reflex/view.cpp +67 -3
- data/ext/reflex/wheel_event.cpp +40 -21
- data/ext/reflex/window.cpp +49 -3
- data/include/reflex/defs.h +140 -106
- data/include/reflex/event.h +232 -124
- data/include/reflex/pointer.h +107 -0
- data/include/reflex/ruby/pointer.h +41 -0
- data/include/reflex/ruby/view.h +9 -0
- data/include/reflex/ruby/window.h +9 -0
- data/include/reflex/selector.h +1 -1
- data/include/reflex/shape.h +2 -2
- data/include/reflex/view.h +6 -4
- data/include/reflex/window.h +14 -8
- data/lib/reflex/application.rb +3 -3
- data/lib/reflex/autoinit.rb +1 -1
- data/lib/reflex/button.rb +7 -7
- data/lib/reflex/capture_event.rb +7 -7
- data/lib/reflex/contact_event.rb +10 -10
- data/lib/reflex/draw_event.rb +2 -2
- data/lib/reflex/ellipse_shape.rb +2 -2
- data/lib/reflex/focus_event.rb +11 -11
- data/lib/reflex/frame_event.rb +5 -5
- data/lib/reflex/helper.rb +20 -20
- data/lib/reflex/image_view.rb +2 -2
- data/lib/reflex/key_event.rb +12 -12
- data/lib/reflex/model.rb +22 -22
- data/lib/reflex/model_owner.rb +7 -7
- data/lib/reflex/model_view.rb +1 -1
- data/lib/reflex/module.rb +5 -5
- data/lib/reflex/pointer.rb +107 -0
- data/lib/reflex/pointer_event.rb +16 -54
- data/lib/reflex/polygon_shape.rb +2 -2
- data/lib/reflex/reflex.rb +3 -3
- data/lib/reflex/scroll_event.rb +1 -1
- data/lib/reflex/selector.rb +4 -4
- data/lib/reflex/shape.rb +13 -13
- data/lib/reflex/style.rb +11 -11
- data/lib/reflex/style_length.rb +1 -1
- data/lib/reflex/text_view.rb +2 -2
- data/lib/reflex/timer.rb +2 -2
- data/lib/reflex/timer_event.rb +3 -2
- data/lib/reflex/update_event.rb +1 -1
- data/lib/reflex/view.rb +32 -32
- data/lib/reflex/wheel_event.rb +2 -10
- data/lib/reflex/window.rb +8 -7
- data/lib/reflex.rb +1 -0
- data/lib/reflexion.rb +17 -17
- data/reflex.gemspec +5 -5
- data/samples/reflexion/noise.rb +1 -1
- data/samples/tree.rb +1 -1
- data/src/event.cpp +792 -86
- data/src/event.h +47 -0
- data/src/image_view.cpp +2 -2
- data/src/ios/event.h +15 -3
- data/src/ios/event.mm +126 -11
- data/src/ios/view_controller.mm +51 -23
- data/src/ios/window.mm +18 -0
- data/src/osx/event.h +15 -4
- data/src/osx/event.mm +214 -24
- data/src/osx/native_window.mm +85 -18
- data/src/osx/window.mm +22 -0
- data/src/pointer.cpp +203 -0
- data/src/pointer.h +26 -0
- data/src/selector.cpp +1 -1
- data/src/shape.cpp +11 -13
- data/src/shape.h +1 -1
- data/src/view.cpp +205 -118
- data/src/view.h +5 -10
- data/src/window.cpp +346 -104
- data/src/window.h +28 -3
- data/src/world.cpp +6 -4
- data/test/helper.rb +3 -3
- data/test/test_application.rb +1 -1
- data/test/test_capture_event.rb +22 -6
- data/test/test_contact_event.rb +40 -0
- data/test/test_draw_event.rb +35 -0
- data/test/test_event.rb +33 -5
- data/test/test_focus_event.rb +34 -0
- data/test/test_frame_event.rb +38 -0
- data/test/test_has_frame.rb +11 -11
- data/test/test_key_event.rb +33 -0
- data/test/test_pointer.rb +149 -0
- data/test/test_pointer_event.rb +70 -104
- data/test/test_reflex.rb +1 -1
- data/test/test_scroll_event.rb +39 -0
- data/test/test_selector.rb +15 -8
- data/test/test_shape.rb +8 -8
- data/test/test_style.rb +13 -13
- data/test/test_style_length.rb +5 -5
- data/test/test_timer_event.rb +38 -0
- data/test/test_update_event.rb +29 -0
- data/test/test_view.rb +57 -30
- data/test/test_wheel_event.rb +40 -0
- data/test/test_window.rb +45 -26
- 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
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,
|
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
|
-
|
441
|
-
shape->on_contact(&e);
|
440
|
+
shape->on_contact(event);
|
442
441
|
|
443
|
-
switch (
|
442
|
+
switch (event->action())
|
444
443
|
{
|
445
|
-
case ContactEvent::BEGIN: shape->on_contact_begin(
|
446
|
-
case ContactEvent::END: shape->on_contact_end(
|
447
|
-
|
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 (
|
451
|
-
return;
|
449
|
+
if (event->is_blocked()) return;
|
452
450
|
|
453
|
-
View_call_contact_event(shape->owner(),
|
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