reflexion 0.1.14 → 0.1.15
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/contact_event.cpp +2 -2
- data/.doc/ext/reflex/pointer_event.cpp +0 -1
- data/.doc/ext/reflex/reflex.cpp +3 -1
- data/VERSION +1 -1
- data/ext/reflex/contact_event.cpp +2 -2
- data/ext/reflex/pointer_event.cpp +0 -1
- data/ext/reflex/reflex.cpp +3 -1
- data/include/reflex/defs.h +0 -2
- data/include/reflex/ruby/reflex.h +1 -0
- data/include/reflex/style.h +30 -4
- data/samples/shapes.rb +16 -0
- data/src/ios/view_controller.h +4 -0
- data/src/ios/view_controller.mm +22 -34
- data/src/osx/native_window.mm +10 -26
- data/src/shape.cpp +4 -4
- data/src/style.cpp +4 -4
- data/src/view.cpp +2 -2
- data/src/window.cpp +27 -0
- data/src/window.h +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5161374ea08be1889e5cc2efe3e1428e8d9d620f8bac6073e5b010bd10bedebe
|
4
|
+
data.tar.gz: 2ba43dca1df02955b05cf58f6a9046f21941a605f8c9d8c1bdc744fb8d808ab2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e237f277deb2ca92edee8663023891f3bba4cc8d2ac8e54ed7317f1dee8907c159afb3e20a7b6c5d798e0d0979b8bec709cf19a18decba5578d782e36c1e8d8
|
7
|
+
data.tar.gz: 61430437a4717c0547f3fb8432e0faa0532391e1bee56fa46083986e4f1c68d7aa194d261264144c1f7416f4c1926e6f7ca4e32a0ca371835337e9a57b5abb65
|
@@ -26,8 +26,8 @@ VALUE initialize(VALUE self)
|
|
26
26
|
check_arg_count(__FILE__, __LINE__, "ContactEvent#initialize", argc, 0, 2);
|
27
27
|
|
28
28
|
THIS->type = (argc >= 1)
|
29
|
-
?
|
30
|
-
:
|
29
|
+
? (Reflex::ContactEvent::Type) to<int>(argv[0])
|
30
|
+
: Reflex::ContactEvent::NONE;
|
31
31
|
THIS->shape = (argc >= 2) ? to<Reflex::Shape*>(argv[1]) : NULL;
|
32
32
|
|
33
33
|
return rb_call_super(0, NULL);
|
@@ -157,7 +157,6 @@ Init_pointer_event ()
|
|
157
157
|
cPointerEvent.define_const("POINTER_MOUSE_MIDDLE", Reflex::POINTER_MOUSE_MIDDLE);
|
158
158
|
cPointerEvent.define_const("POINTER_TOUCH", Reflex::POINTER_TOUCH);
|
159
159
|
cPointerEvent.define_const("POINTER_PEN", Reflex::POINTER_PEN);
|
160
|
-
cPointerEvent.define_const("POINTER_TYPE_LAST", Reflex::POINTER_TYPE_LAST);
|
161
160
|
}
|
162
161
|
|
163
162
|
|
data/.doc/ext/reflex/reflex.cpp
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.15
|
@@ -27,8 +27,8 @@ RUCY_DEFN(initialize)
|
|
27
27
|
check_arg_count(__FILE__, __LINE__, "ContactEvent#initialize", argc, 0, 2);
|
28
28
|
|
29
29
|
THIS->type = (argc >= 1)
|
30
|
-
?
|
31
|
-
:
|
30
|
+
? (Reflex::ContactEvent::Type) to<int>(argv[0])
|
31
|
+
: Reflex::ContactEvent::NONE;
|
32
32
|
THIS->shape = (argc >= 2) ? to<Reflex::Shape*>(argv[1]) : NULL;
|
33
33
|
|
34
34
|
return rb_call_super(0, NULL);
|
@@ -171,7 +171,6 @@ Init_pointer_event ()
|
|
171
171
|
cPointerEvent.define_const("POINTER_MOUSE_MIDDLE", Reflex::POINTER_MOUSE_MIDDLE);
|
172
172
|
cPointerEvent.define_const("POINTER_TOUCH", Reflex::POINTER_TOUCH);
|
173
173
|
cPointerEvent.define_const("POINTER_PEN", Reflex::POINTER_PEN);
|
174
|
-
cPointerEvent.define_const("POINTER_TYPE_LAST", Reflex::POINTER_TYPE_LAST);
|
175
174
|
}
|
176
175
|
|
177
176
|
|
data/ext/reflex/reflex.cpp
CHANGED
data/include/reflex/defs.h
CHANGED
data/include/reflex/style.h
CHANGED
@@ -24,7 +24,22 @@ namespace Reflex
|
|
24
24
|
|
25
25
|
typedef coord Value;
|
26
26
|
|
27
|
-
enum Type
|
27
|
+
enum Type
|
28
|
+
{
|
29
|
+
|
30
|
+
NONE = 0,
|
31
|
+
|
32
|
+
PIXEL,
|
33
|
+
|
34
|
+
PERCENT,
|
35
|
+
|
36
|
+
FILL,
|
37
|
+
|
38
|
+
FIT,
|
39
|
+
|
40
|
+
TYPE_MAX
|
41
|
+
|
42
|
+
};// Type
|
28
43
|
|
29
44
|
StyleLength (Type type = NONE, Value value = 0);
|
30
45
|
|
@@ -60,9 +75,20 @@ namespace Reflex
|
|
60
75
|
|
61
76
|
enum Flow
|
62
77
|
{
|
63
|
-
|
64
|
-
|
65
|
-
|
78
|
+
|
79
|
+
FLOW_NONE = 0,
|
80
|
+
|
81
|
+
FLOW_RIGHT,
|
82
|
+
|
83
|
+
FLOW_DOWN,
|
84
|
+
|
85
|
+
FLOW_LEFT,
|
86
|
+
|
87
|
+
FLOW_UP,
|
88
|
+
|
89
|
+
FLOW_MAX
|
90
|
+
|
91
|
+
};// Flow
|
66
92
|
|
67
93
|
Style (const char* name = NULL);
|
68
94
|
|
data/samples/shapes.rb
CHANGED
@@ -47,6 +47,22 @@ Reflex::Window.new do
|
|
47
47
|
translate 100, 0
|
48
48
|
ellipse x, y, w, h, hole: 10, from: 200, to: 300
|
49
49
|
polygon Rays::Polygon.ellipse x, y2, w, h, hole: 10, from: 200, to: 300
|
50
|
+
|
51
|
+
translate 100, 0
|
52
|
+
curve x, y, x + w, y, x + w, y + h, x, y + h
|
53
|
+
polygon Rays::Polygon.curve x, y2, x + w, y2, x + w, y2 + h, x, y2 + h
|
54
|
+
|
55
|
+
translate 100, 0
|
56
|
+
curve x, y, x + w, y, x + w, y + h, x, y + h, loop: true
|
57
|
+
polygon Rays::Polygon.curve x, y2, x + w, y2, x + w, y2 + h, x, y2 + h, loop: true
|
58
|
+
|
59
|
+
translate 100, 0
|
60
|
+
bezier x, y, x + w, y, x + w, y + h, x, y + h
|
61
|
+
polygon Rays::Polygon.bezier x, y2, x + w, y2, x + w, y2 + h, x, y2 + h
|
62
|
+
|
63
|
+
translate 100, 0
|
64
|
+
bezier x, y, x + w, y, x + w, y + h, x, y + h, loop: true
|
65
|
+
polygon Rays::Polygon.bezier x, y2, x + w, y2, x + w, y2 + h, x, y2 + h, loop: true
|
50
66
|
end
|
51
67
|
|
52
68
|
translate 0, 200
|
data/src/ios/view_controller.h
CHANGED
data/src/ios/view_controller.mm
CHANGED
@@ -144,11 +144,15 @@ ReflexViewController_get_show_fun ()
|
|
144
144
|
}
|
145
145
|
|
146
146
|
- (void) dealloc
|
147
|
+
{
|
148
|
+
[self cleanup];
|
149
|
+
[super dealloc];
|
150
|
+
}
|
151
|
+
|
152
|
+
- (void) cleanup
|
147
153
|
{
|
148
154
|
[self cleanupReflexView];
|
149
155
|
[self unbind];
|
150
|
-
|
151
|
-
[super dealloc];
|
152
156
|
}
|
153
157
|
|
154
158
|
- (void) bind: (Reflex::Window*) window
|
@@ -160,7 +164,8 @@ ReflexViewController_get_show_fun ()
|
|
160
164
|
if (data.view_controller)
|
161
165
|
Reflex::invalid_state_error(__FILE__, __LINE__);
|
162
166
|
|
163
|
-
|
167
|
+
// ruby value references view controller weakly.
|
168
|
+
data.view_controller = self;
|
164
169
|
|
165
170
|
// Reflex::Window is not constructed completely,
|
166
171
|
// so can not call ClassWrapper::retain().
|
@@ -180,8 +185,6 @@ ReflexViewController_get_show_fun ()
|
|
180
185
|
ptr_for_rebind->Xot::template RefCountable<>::release();
|
181
186
|
ptr_for_rebind = NULL;
|
182
187
|
}
|
183
|
-
|
184
|
-
assert(pwindow && !ptr_for_rebind);
|
185
188
|
}
|
186
189
|
|
187
190
|
- (void) unbind
|
@@ -189,12 +192,7 @@ ReflexViewController_get_show_fun ()
|
|
189
192
|
[self rebind];
|
190
193
|
if (!pwindow) return;
|
191
194
|
|
192
|
-
|
193
|
-
if (data.view_controller)
|
194
|
-
{
|
195
|
-
[data.view_controller release];
|
196
|
-
data.view_controller = nil;
|
197
|
-
}
|
195
|
+
Window_get_data(pwindow).view_controller = nil;
|
198
196
|
|
199
197
|
pwindow->release();
|
200
198
|
pwindow = NULL;
|
@@ -211,7 +209,7 @@ ReflexViewController_get_show_fun ()
|
|
211
209
|
[super didReceiveMemoryWarning];
|
212
210
|
|
213
211
|
if ([self isViewLoaded] && !self.view.window)
|
214
|
-
[self
|
212
|
+
[self cleanup];
|
215
213
|
}
|
216
214
|
|
217
215
|
- (void) viewDidLoad
|
@@ -262,7 +260,7 @@ ReflexViewController_get_show_fun ()
|
|
262
260
|
|
263
261
|
EAGLContext* context = view.context;
|
264
262
|
if (context && context == [EAGLContext currentContext])
|
265
|
-
[EAGLContext setCurrentContext:
|
263
|
+
[EAGLContext setCurrentContext: (EAGLContext*) Rays::get_offscreen_context()];
|
266
264
|
|
267
265
|
[view removeFromSuperview];
|
268
266
|
|
@@ -272,7 +270,7 @@ ReflexViewController_get_show_fun ()
|
|
272
270
|
- (void) viewDidAppear: (BOOL) animated
|
273
271
|
{
|
274
272
|
[super viewDidAppear: animated];
|
275
|
-
[self startTimer
|
273
|
+
[self startTimer];
|
276
274
|
}
|
277
275
|
|
278
276
|
- (void) viewDidDisappear: (BOOL) animated
|
@@ -281,6 +279,11 @@ ReflexViewController_get_show_fun ()
|
|
281
279
|
[super viewDidDisappear: animated];
|
282
280
|
}
|
283
281
|
|
282
|
+
- (void) startTimer
|
283
|
+
{
|
284
|
+
[self startTimer: 60];
|
285
|
+
}
|
286
|
+
|
284
287
|
- (void) startTimer: (int) fps
|
285
288
|
{
|
286
289
|
[self stopTimer];
|
@@ -344,22 +347,7 @@ ReflexViewController_get_show_fun ()
|
|
344
347
|
win->self->prev_fps = fps;
|
345
348
|
|
346
349
|
Reflex::DrawEvent e(dt, fps);
|
347
|
-
|
348
|
-
e.painter = win->painter();
|
349
|
-
if (!e.painter)
|
350
|
-
Xot::invalid_state_error(__FILE__, __LINE__);
|
351
|
-
|
352
|
-
Rays::Bounds frame = win->frame();
|
353
|
-
e.bounds.reset(0, 0, frame.width, frame.height);
|
354
|
-
|
355
|
-
e.painter->begin();
|
356
|
-
e.painter->clear();
|
357
|
-
|
358
|
-
win->on_draw(&e);
|
359
|
-
if (!e.is_blocked())
|
360
|
-
Reflex::View_draw_tree(win->root(), e, 0, frame.move_to(0));
|
361
|
-
|
362
|
-
e.painter->end();
|
350
|
+
Window_call_draw_event(win, &e);
|
363
351
|
}
|
364
352
|
|
365
353
|
- (void) viewDidResize
|
@@ -399,7 +387,7 @@ ReflexViewController_get_show_fun ()
|
|
399
387
|
if (!win) return;
|
400
388
|
|
401
389
|
Reflex::NativePointerEvent e(
|
402
|
-
touches, event, self.
|
390
|
+
touches, event, self.reflexView, Reflex::PointerEvent::DOWN);
|
403
391
|
win->on_pointer(&e);
|
404
392
|
}
|
405
393
|
|
@@ -409,7 +397,7 @@ ReflexViewController_get_show_fun ()
|
|
409
397
|
if (!win) return;
|
410
398
|
|
411
399
|
Reflex::NativePointerEvent e(
|
412
|
-
touches, event, self.
|
400
|
+
touches, event, self.reflexView, Reflex::PointerEvent::UP);
|
413
401
|
win->on_pointer(&e);
|
414
402
|
}
|
415
403
|
|
@@ -419,7 +407,7 @@ ReflexViewController_get_show_fun ()
|
|
419
407
|
if (!win) return;
|
420
408
|
|
421
409
|
Reflex::NativePointerEvent e(
|
422
|
-
touches, event, self.
|
410
|
+
touches, event, self.reflexView, Reflex::PointerEvent::UP);
|
423
411
|
win->on_pointer(&e);
|
424
412
|
}
|
425
413
|
|
@@ -429,7 +417,7 @@ ReflexViewController_get_show_fun ()
|
|
429
417
|
if (!win) return;
|
430
418
|
|
431
419
|
Reflex::NativePointerEvent e(
|
432
|
-
touches, event, self.
|
420
|
+
touches, event, self.reflexView, Reflex::PointerEvent::MOVE);
|
433
421
|
win->on_pointer(&e);
|
434
422
|
}
|
435
423
|
|
data/src/osx/native_window.mm
CHANGED
@@ -43,7 +43,7 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
43
43
|
|
44
44
|
[self setDelegate: self];
|
45
45
|
[self setupContentView];
|
46
|
-
[self startTimer
|
46
|
+
[self startTimer];
|
47
47
|
|
48
48
|
return self;
|
49
49
|
}
|
@@ -66,7 +66,8 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
66
66
|
if (data.native)
|
67
67
|
Reflex::invalid_state_error(__FILE__, __LINE__);
|
68
68
|
|
69
|
-
|
69
|
+
// ruby value references native window weakly.
|
70
|
+
data.native = self;
|
70
71
|
|
71
72
|
// Reflex::Window is not constructed completely,
|
72
73
|
// so can not call ClassWrapper::retain().
|
@@ -86,8 +87,6 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
86
87
|
ptr_for_rebind->Xot::template RefCountable<>::release();
|
87
88
|
ptr_for_rebind = NULL;
|
88
89
|
}
|
89
|
-
|
90
|
-
assert(pwindow && !ptr_for_rebind);
|
91
90
|
}
|
92
91
|
|
93
92
|
- (void) unbind
|
@@ -95,12 +94,7 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
95
94
|
[self rebind];
|
96
95
|
if (!pwindow) return;
|
97
96
|
|
98
|
-
|
99
|
-
if (data.native)
|
100
|
-
{
|
101
|
-
[data.native release];
|
102
|
-
data.native = nil;
|
103
|
-
}
|
97
|
+
Window_get_data(pwindow).native = nil;
|
104
98
|
|
105
99
|
pwindow->release();
|
106
100
|
pwindow = NULL;
|
@@ -120,6 +114,11 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
120
114
|
[self setContentView: view];
|
121
115
|
}
|
122
116
|
|
117
|
+
- (void) startTimer
|
118
|
+
{
|
119
|
+
[self startTimer: 60];
|
120
|
+
}
|
121
|
+
|
123
122
|
- (void) startTimer: (int) fps
|
124
123
|
{
|
125
124
|
[self stopTimer];
|
@@ -183,22 +182,7 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
183
182
|
win->self->prev_fps = fps;
|
184
183
|
|
185
184
|
Reflex::DrawEvent e(dt, fps);
|
186
|
-
|
187
|
-
e.painter = win->painter();
|
188
|
-
if (!e.painter)
|
189
|
-
Xot::invalid_state_error(__FILE__, __LINE__);
|
190
|
-
|
191
|
-
Rays::Bounds frame = win->frame();
|
192
|
-
e.bounds.reset(0, 0, frame.width, frame.height);
|
193
|
-
|
194
|
-
e.painter->begin();
|
195
|
-
e.painter->clear();
|
196
|
-
|
197
|
-
win->on_draw(&e);
|
198
|
-
if (!e.is_blocked())
|
199
|
-
Reflex::View_draw_tree(win->root(), e, 0, frame.move_to(0));
|
200
|
-
|
201
|
-
e.painter->end();
|
185
|
+
Window_call_draw_event(win, &e);
|
202
186
|
}
|
203
187
|
|
204
188
|
- (BOOL) windowShouldClose: (id) sender
|
data/src/shape.cpp
CHANGED
@@ -52,8 +52,8 @@ namespace Reflex
|
|
52
52
|
if (!style) return NULL;
|
53
53
|
|
54
54
|
return is_default_shape(shape)
|
55
|
-
?
|
56
|
-
:
|
55
|
+
? &style->background_fill()
|
56
|
+
: &style->foreground_fill();
|
57
57
|
}
|
58
58
|
|
59
59
|
static coord
|
@@ -65,8 +65,8 @@ namespace Reflex
|
|
65
65
|
if (!style) return 0;
|
66
66
|
|
67
67
|
return is_default_shape(shape)
|
68
|
-
?
|
69
|
-
:
|
68
|
+
? style->background_stroke_width()
|
69
|
+
: style->foreground_stroke_width();
|
70
70
|
}
|
71
71
|
|
72
72
|
static bool
|
data/src/style.cpp
CHANGED
@@ -201,7 +201,7 @@ namespace Reflex
|
|
201
201
|
void
|
202
202
|
StyleLength::reset (Type type, Value value)
|
203
203
|
{
|
204
|
-
if (type < NONE ||
|
204
|
+
if (type < NONE || TYPE_MAX <= type)
|
205
205
|
argument_error(__FILE__, __LINE__);
|
206
206
|
|
207
207
|
if (type == FIT && value != 1)
|
@@ -225,7 +225,7 @@ namespace Reflex
|
|
225
225
|
|
226
226
|
StyleLength::operator bool () const
|
227
227
|
{
|
228
|
-
return NONE < self->type && self->type <
|
228
|
+
return NONE < self->type && self->type < TYPE_MAX;
|
229
229
|
}
|
230
230
|
|
231
231
|
bool
|
@@ -615,8 +615,8 @@ namespace Reflex
|
|
615
615
|
Style::set_flow (Flow main, Flow sub)
|
616
616
|
{
|
617
617
|
if (
|
618
|
-
main < FLOW_NONE ||
|
619
|
-
sub < FLOW_NONE ||
|
618
|
+
main < FLOW_NONE || FLOW_MAX <= main ||
|
619
|
+
sub < FLOW_NONE || FLOW_MAX <= sub ||
|
620
620
|
(main != FLOW_NONE && (get_flow_dir(main) == get_flow_dir(sub))) ||
|
621
621
|
(main == FLOW_NONE && sub != FLOW_NONE))
|
622
622
|
{
|
data/src/view.cpp
CHANGED
@@ -189,8 +189,8 @@ namespace Reflex
|
|
189
189
|
{
|
190
190
|
World* world = parent_world();
|
191
191
|
Body* b = world
|
192
|
-
?
|
193
|
-
:
|
192
|
+
? new Body(world, frame.position(), angle)
|
193
|
+
: Body_create_temporary();
|
194
194
|
assert(b);
|
195
195
|
|
196
196
|
pbody.reset(b);
|
data/src/window.cpp
CHANGED
@@ -36,6 +36,33 @@ namespace Reflex
|
|
36
36
|
}
|
37
37
|
}
|
38
38
|
|
39
|
+
void
|
40
|
+
Window_call_draw_event (Window* window, DrawEvent* event)
|
41
|
+
{
|
42
|
+
if (!window || !event)
|
43
|
+
argument_error(__FILE__, __LINE__);
|
44
|
+
|
45
|
+
Painter* painter = window->painter();
|
46
|
+
if (!painter)
|
47
|
+
Xot::invalid_state_error(__FILE__, __LINE__);
|
48
|
+
|
49
|
+
Rays::Bounds frame = window->frame();
|
50
|
+
|
51
|
+
event->painter = painter;
|
52
|
+
event->bounds.reset(0, 0, frame.width, frame.height);
|
53
|
+
|
54
|
+
painter->begin();
|
55
|
+
painter->push_state();
|
56
|
+
painter->clear();
|
57
|
+
|
58
|
+
window->on_draw(event);
|
59
|
+
if (!event->is_blocked())
|
60
|
+
Reflex::View_draw_tree(window->root(), *event, 0, frame.move_to(0));
|
61
|
+
|
62
|
+
painter->pop_state();
|
63
|
+
painter->end();
|
64
|
+
}
|
65
|
+
|
39
66
|
namespace global
|
40
67
|
{
|
41
68
|
|
data/src/window.h
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reflexion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|