reflexion 0.1.23 → 0.1.26
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.
- checksums.yaml +4 -4
- data/.doc/ext/reflex/capture_event.cpp +6 -5
- data/.doc/ext/reflex/contact_event.cpp +14 -12
- data/.doc/ext/reflex/draw_event.cpp +10 -8
- data/.doc/ext/reflex/event.cpp +2 -10
- data/.doc/ext/reflex/focus_event.cpp +14 -13
- data/.doc/ext/reflex/frame_event.cpp +17 -17
- data/.doc/ext/reflex/key_event.cpp +20 -19
- data/.doc/ext/reflex/pointer_event.cpp +1 -1
- data/.doc/ext/reflex/scroll_event.cpp +14 -17
- 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/wheel_event.cpp +39 -22
- data/VERSION +1 -1
- data/ext/reflex/capture_event.cpp +6 -5
- data/ext/reflex/contact_event.cpp +16 -14
- data/ext/reflex/draw_event.cpp +9 -7
- data/ext/reflex/event.cpp +2 -11
- data/ext/reflex/focus_event.cpp +14 -13
- data/ext/reflex/frame_event.cpp +16 -16
- data/ext/reflex/key_event.cpp +20 -19
- data/ext/reflex/pointer_event.cpp +1 -1
- data/ext/reflex/scroll_event.cpp +15 -18
- 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/wheel_event.cpp +40 -21
- data/include/reflex/event.h +224 -115
- data/include/reflex/shape.h +2 -2
- data/include/reflex/window.h +1 -1
- data/lib/reflex/contact_event.rb +7 -7
- data/lib/reflex/focus_event.rb +8 -8
- data/lib/reflex/key_event.rb +8 -8
- data/lib/reflex/pointer.rb +3 -3
- data/lib/reflex/pointer_event.rb +2 -2
- data/lib/reflex/timer_event.rb +2 -1
- data/lib/reflex/wheel_event.rb +1 -9
- data/lib/reflex/window.rb +1 -1
- data/reflex.gemspec +4 -4
- data/src/event.cpp +630 -76
- data/src/event.h +15 -0
- data/src/image_view.cpp +2 -2
- data/src/ios/app_delegate.h +0 -6
- data/src/ios/app_delegate.mm +1 -0
- data/src/ios/application.mm +6 -0
- data/src/ios/view_controller.mm +15 -9
- data/src/ios/window.mm +2 -4
- data/src/osx/event.h +1 -1
- data/src/osx/event.mm +9 -9
- data/src/osx/native_window.mm +23 -5
- data/src/shape.cpp +11 -13
- data/src/shape.h +1 -1
- data/src/view.cpp +137 -89
- data/src/view.h +5 -6
- data/src/window.cpp +28 -26
- data/src/world.cpp +6 -4
- data/test/test_capture_event.rb +16 -0
- data/test/test_contact_event.rb +40 -0
- data/test/test_draw_event.rb +35 -0
- data/test/test_event.rb +20 -6
- data/test/test_focus_event.rb +34 -0
- data/test/test_frame_event.rb +38 -0
- data/test/test_key_event.rb +33 -0
- data/test/test_pointer.rb +14 -14
- data/test/test_pointer_event.rb +1 -1
- data/test/test_scroll_event.rb +39 -0
- data/test/test_timer_event.rb +38 -0
- data/test/test_update_event.rb +29 -0
- data/test/test_wheel_event.rb +40 -0
- metadata +29 -11
data/src/event.h
CHANGED
@@ -12,6 +12,16 @@ namespace Reflex
|
|
12
12
|
{
|
13
13
|
|
14
14
|
|
15
|
+
void DrawEvent_set_view (DrawEvent* pthis, View* view);
|
16
|
+
|
17
|
+
void DrawEvent_set_painter (DrawEvent* pthis, Painter* painter);
|
18
|
+
|
19
|
+
void DrawEvent_set_bounds (DrawEvent* pthis, const Bounds& bounds);
|
20
|
+
|
21
|
+
|
22
|
+
void KeyEvent_set_captured (KeyEvent* pthis, bool captured);
|
23
|
+
|
24
|
+
|
15
25
|
void PointerEvent_add_pointer (PointerEvent* pthis, const Pointer& pointer);
|
16
26
|
|
17
27
|
void PointerEvent_erase_pointer (PointerEvent* pthis, Pointer::ID id);
|
@@ -21,11 +31,16 @@ namespace Reflex
|
|
21
31
|
void PointerEvent_each_pointer (
|
22
32
|
const PointerEvent* pthis, std::function<void(const Pointer&)> fun);
|
23
33
|
|
34
|
+
void PointerEvent_set_captured (PointerEvent* pthis, bool captured);
|
35
|
+
|
24
36
|
void PointerEvent_update_for_child_view (PointerEvent* pthis, const View* view);
|
25
37
|
|
26
38
|
void PointerEvent_update_for_capturing_view (PointerEvent* pthis, const View* view);
|
27
39
|
|
28
40
|
|
41
|
+
void WheelEvent_set_position (WheelEvent* pthis, const Point& position);
|
42
|
+
|
43
|
+
|
29
44
|
}// Reflex
|
30
45
|
|
31
46
|
|
data/src/image_view.cpp
CHANGED
data/src/ios/app_delegate.h
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
// -*- objc -*-
|
2
2
|
#import <UIKit/UIApplication.h>
|
3
|
-
#include "application.h"
|
4
3
|
|
5
4
|
|
6
5
|
@interface ReflexAppDelegate : UIResponder <UIApplicationDelegate>
|
7
|
-
|
8
|
-
- (void) bind: (Reflex::Application*) application;
|
9
|
-
|
10
|
-
- (BOOL) callOnStart;
|
11
|
-
|
12
6
|
@end// ReflexAppDelegate
|
data/src/ios/app_delegate.mm
CHANGED
data/src/ios/application.mm
CHANGED
data/src/ios/view_controller.mm
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
static ReflexViewController*
|
17
17
|
create_reflex_view_controller ()
|
18
18
|
{
|
19
|
-
return [[ReflexViewController alloc] init];
|
19
|
+
return [[[ReflexViewController alloc] init] autorelease];
|
20
20
|
}
|
21
21
|
|
22
22
|
static UIViewController*
|
@@ -102,7 +102,7 @@ ReflexViewController_get_show_fun ()
|
|
102
102
|
|
103
103
|
@interface ReflexView ()
|
104
104
|
|
105
|
-
@property(nonatomic,
|
105
|
+
@property(nonatomic, unsafe_unretained) ReflexViewController* reflexViewController;
|
106
106
|
|
107
107
|
@end
|
108
108
|
|
@@ -112,7 +112,9 @@ ReflexViewController_get_show_fun ()
|
|
112
112
|
- (void) layoutSubviews
|
113
113
|
{
|
114
114
|
[super layoutSubviews];
|
115
|
-
|
115
|
+
|
116
|
+
if (self.reflexViewController)
|
117
|
+
[self.reflexViewController viewDidResize];
|
116
118
|
}
|
117
119
|
|
118
120
|
@end
|
@@ -153,6 +155,9 @@ ReflexViewController_get_show_fun ()
|
|
153
155
|
|
154
156
|
- (void) dealloc
|
155
157
|
{
|
158
|
+
Reflex::Window* win = self.window;
|
159
|
+
if (win) win->close(true);
|
160
|
+
|
156
161
|
[self cleanup];
|
157
162
|
[super dealloc];
|
158
163
|
}
|
@@ -227,6 +232,11 @@ ReflexViewController_get_show_fun ()
|
|
227
232
|
[self setupReflexView];
|
228
233
|
}
|
229
234
|
|
235
|
+
- (ReflexView*) createReflexView
|
236
|
+
{
|
237
|
+
return [[[ReflexView alloc] initWithFrame: self.view.bounds] autorelease];
|
238
|
+
}
|
239
|
+
|
230
240
|
- (void) setupReflexView
|
231
241
|
{
|
232
242
|
ReflexView* view = [self createReflexView];
|
@@ -256,11 +266,6 @@ ReflexViewController_get_show_fun ()
|
|
256
266
|
self.reflexView = view;
|
257
267
|
}
|
258
268
|
|
259
|
-
- (ReflexView*) createReflexView
|
260
|
-
{
|
261
|
-
return [[[ReflexView alloc] initWithFrame: self.view.bounds] autorelease];
|
262
|
-
}
|
263
|
-
|
264
269
|
- (void) cleanupReflexView
|
265
270
|
{
|
266
271
|
ReflexView* view = self.reflexView;
|
@@ -270,6 +275,7 @@ ReflexViewController_get_show_fun ()
|
|
270
275
|
if (context && context == [EAGLContext currentContext])
|
271
276
|
[EAGLContext setCurrentContext: (EAGLContext*) Rays::get_offscreen_context()];
|
272
277
|
|
278
|
+
view.reflexViewController = nil;
|
273
279
|
[view removeFromSuperview];
|
274
280
|
|
275
281
|
self.reflexView = nil;
|
@@ -376,7 +382,7 @@ ReflexViewController_get_show_fun ()
|
|
376
382
|
|
377
383
|
if (dpos != 0 || dsize != 0)
|
378
384
|
{
|
379
|
-
Reflex::FrameEvent e(b, dpos.x, dpos.y, dsize.x, dsize.y);
|
385
|
+
Reflex::FrameEvent e(b, dpos.x, dpos.y, dsize.x, dsize.y, 0, 0);
|
380
386
|
if (dpos != 0) win->on_move(&e);
|
381
387
|
if (dsize != 0)
|
382
388
|
{
|
data/src/ios/window.mm
CHANGED
@@ -51,8 +51,7 @@ namespace Reflex
|
|
51
51
|
void
|
52
52
|
Window_initialize (Window* window)
|
53
53
|
{
|
54
|
-
ReflexViewController* vc =
|
55
|
-
[ReflexViewController_get_create_fun()() autorelease];
|
54
|
+
ReflexViewController* vc = ReflexViewController_get_create_fun()();
|
56
55
|
if (!vc)
|
57
56
|
reflex_error(__FILE__, __LINE__);
|
58
57
|
|
@@ -95,7 +94,6 @@ namespace Reflex
|
|
95
94
|
void
|
96
95
|
Window_close (Window* window)
|
97
96
|
{
|
98
|
-
not_implemented_error(__FILE__, __LINE__);
|
99
97
|
}
|
100
98
|
|
101
99
|
void
|
@@ -104,7 +102,7 @@ namespace Reflex
|
|
104
102
|
if (!title)
|
105
103
|
argument_error(__FILE__, __LINE__);
|
106
104
|
|
107
|
-
get_vc(window).title = [
|
105
|
+
get_vc(window).title = [NSString stringWithUTF8String: title];
|
108
106
|
}
|
109
107
|
|
110
108
|
const char*
|
data/src/osx/event.h
CHANGED
data/src/osx/event.mm
CHANGED
@@ -169,11 +169,11 @@ namespace Reflex
|
|
169
169
|
return 0;
|
170
170
|
}
|
171
171
|
|
172
|
-
static KeyEvent::
|
173
|
-
|
172
|
+
static KeyEvent::Action
|
173
|
+
get_flag_key_event_action (const NSEvent* e)
|
174
174
|
{
|
175
175
|
uint mask = get_modifier_flag_mask(e);
|
176
|
-
if (mask == 0) return Reflex::KeyEvent::
|
176
|
+
if (mask == 0) return Reflex::KeyEvent::ACTION_NONE;
|
177
177
|
|
178
178
|
return [e modifierFlags] & mask
|
179
179
|
? Reflex::KeyEvent::DOWN
|
@@ -251,18 +251,18 @@ namespace Reflex
|
|
251
251
|
}
|
252
252
|
|
253
253
|
|
254
|
-
NativeKeyEvent::NativeKeyEvent (NSEvent* e,
|
254
|
+
NativeKeyEvent::NativeKeyEvent (NSEvent* e, Action action)
|
255
255
|
: KeyEvent(
|
256
|
-
|
257
|
-
[e isARepeat] ? 1 : 0)
|
256
|
+
action, get_chars(e), get_code([e keyCode]),
|
257
|
+
get_modifiers(e), [e isARepeat] ? 1 : 0)
|
258
258
|
{
|
259
259
|
}
|
260
260
|
|
261
261
|
|
262
262
|
NativeFlagKeyEvent::NativeFlagKeyEvent (NSEvent* e)
|
263
263
|
: KeyEvent(
|
264
|
-
|
265
|
-
0)
|
264
|
+
get_flag_key_event_action(e), "", get_code([e keyCode]),
|
265
|
+
get_modifiers(e), 0)
|
266
266
|
{
|
267
267
|
}
|
268
268
|
|
@@ -295,7 +295,7 @@ namespace Reflex
|
|
295
295
|
NativeWheelEvent::NativeWheelEvent (NSEvent* e, NSView* view)
|
296
296
|
: WheelEvent(0, 0, 0, [e deltaX], [e deltaY], [e deltaZ], get_modifiers(e))
|
297
297
|
{
|
298
|
-
|
298
|
+
WheelEvent_set_position(this, get_pointer_position(e, view));
|
299
299
|
}
|
300
300
|
|
301
301
|
|
data/src/osx/native_window.mm
CHANGED
@@ -34,6 +34,20 @@ count_mouse_buttons (const Reflex::PointerEvent& e)
|
|
34
34
|
return nbuttons;
|
35
35
|
}
|
36
36
|
|
37
|
+
static void
|
38
|
+
update_pixel_density (Reflex::Window* window)
|
39
|
+
{
|
40
|
+
assert(window);
|
41
|
+
|
42
|
+
Rays::Painter* painter = window->painter();
|
43
|
+
if (!painter) return;
|
44
|
+
|
45
|
+
float pd = Window_get_pixel_density(*window);
|
46
|
+
if (painter->pixel_density() != pd)
|
47
|
+
painter->canvas(window->frame().dup().move_to(0, 0), pd);
|
48
|
+
}
|
49
|
+
|
50
|
+
|
37
51
|
@implementation NativeWindow
|
38
52
|
|
39
53
|
{
|
@@ -43,7 +57,7 @@ count_mouse_buttons (const Reflex::PointerEvent& e)
|
|
43
57
|
int update_count;
|
44
58
|
int clicking_count;
|
45
59
|
Reflex::Pointer::ID pointer_id;
|
46
|
-
Reflex::Pointer
|
60
|
+
Reflex::Pointer prev_pointer;
|
47
61
|
}
|
48
62
|
|
49
63
|
- (id) init
|
@@ -196,6 +210,8 @@ count_mouse_buttons (const Reflex::PointerEvent& e)
|
|
196
210
|
Reflex::Window* win = self.window;
|
197
211
|
if (!win) return;
|
198
212
|
|
213
|
+
update_pixel_density(win);
|
214
|
+
|
199
215
|
if (update_count == 0)
|
200
216
|
[self update];
|
201
217
|
|
@@ -269,7 +285,7 @@ count_mouse_buttons (const Reflex::PointerEvent& e)
|
|
269
285
|
|
270
286
|
if (dpos != 0 || dsize != 0)
|
271
287
|
{
|
272
|
-
Reflex::FrameEvent e(b, dpos.x, dpos.y, dsize.x, dsize.y);
|
288
|
+
Reflex::FrameEvent e(b, dpos.x, dpos.y, dsize.x, dsize.y, 0, 0);
|
273
289
|
if (dpos != 0) win->on_move(&e);
|
274
290
|
if (dsize != 0)
|
275
291
|
{
|
@@ -381,9 +397,11 @@ count_mouse_buttons (const Reflex::PointerEvent& e)
|
|
381
397
|
assert(e->size() == 1);
|
382
398
|
|
383
399
|
Reflex::Pointer& pointer = Reflex::PointerEvent_pointer_at(e, 0);
|
384
|
-
if (
|
385
|
-
Reflex::Pointer_set_prev(&pointer, &
|
386
|
-
|
400
|
+
if (prev_pointer)
|
401
|
+
Reflex::Pointer_set_prev(&pointer, &prev_pointer);
|
402
|
+
|
403
|
+
prev_pointer = pointer;
|
404
|
+
Reflex::Pointer_set_prev(&prev_pointer, NULL);
|
387
405
|
}
|
388
406
|
|
389
407
|
- (void) scrollWheel: (NSEvent*) event
|
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