reflexion 0.2.1 → 0.3.1
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/application.cpp +1 -1
- data/.doc/ext/reflex/capture_event.cpp +1 -1
- data/.doc/ext/reflex/contact_event.cpp +1 -1
- data/.doc/ext/reflex/draw_event.cpp +1 -1
- data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
- data/.doc/ext/reflex/event.cpp +1 -1
- data/.doc/ext/reflex/filter.cpp +1 -1
- data/.doc/ext/reflex/focus_event.cpp +1 -1
- data/.doc/ext/reflex/frame_event.cpp +1 -1
- data/.doc/ext/reflex/image_view.cpp +1 -1
- data/.doc/ext/reflex/key_event.cpp +74 -69
- data/.doc/ext/reflex/line_shape.cpp +1 -1
- data/.doc/ext/reflex/motion_event.cpp +1 -1
- data/.doc/ext/reflex/pointer.cpp +7 -16
- data/.doc/ext/reflex/pointer_event.cpp +1 -1
- data/.doc/ext/reflex/polygon_shape.cpp +1 -1
- data/.doc/ext/reflex/rect_shape.cpp +1 -1
- data/.doc/ext/reflex/reflex.cpp +58 -50
- data/.doc/ext/reflex/screen.cpp +1 -1
- data/.doc/ext/reflex/scroll_event.cpp +1 -1
- data/.doc/ext/reflex/selector.cpp +2 -2
- data/.doc/ext/reflex/shape.cpp +1 -1
- data/.doc/ext/reflex/style.cpp +1 -1
- data/.doc/ext/reflex/style_length.cpp +5 -3
- data/.doc/ext/reflex/timer.cpp +1 -1
- data/.doc/ext/reflex/timer_event.cpp +1 -1
- data/.doc/ext/reflex/update_event.cpp +1 -1
- data/.doc/ext/reflex/view.cpp +17 -9
- data/.doc/ext/reflex/wheel_event.cpp +1 -1
- data/.doc/ext/reflex/window.cpp +1 -1
- data/.github/workflows/release-gem.yml +1 -1
- data/.github/workflows/test.yml +3 -0
- data/ChangeLog.md +17 -0
- data/Gemfile.lock +1 -1
- data/LICENSE +1 -1
- data/Rakefile +1 -2
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +1 -1
- data/ext/reflex/capture_event.cpp +1 -1
- data/ext/reflex/contact_event.cpp +1 -1
- data/ext/reflex/defs.h +2 -0
- data/ext/reflex/draw_event.cpp +1 -1
- data/ext/reflex/ellipse_shape.cpp +1 -1
- data/ext/reflex/event.cpp +1 -1
- data/ext/reflex/extconf.rb +4 -4
- data/ext/reflex/filter.cpp +1 -1
- data/ext/reflex/focus_event.cpp +1 -1
- data/ext/reflex/frame_event.cpp +1 -1
- data/ext/reflex/image_view.cpp +1 -1
- data/ext/reflex/key_event.cpp +74 -69
- data/ext/reflex/line_shape.cpp +1 -1
- data/ext/reflex/motion_event.cpp +1 -1
- data/ext/reflex/pointer.cpp +7 -17
- data/ext/reflex/pointer_event.cpp +1 -1
- data/ext/reflex/polygon_shape.cpp +1 -1
- data/ext/reflex/rect_shape.cpp +1 -1
- data/ext/reflex/reflex.cpp +58 -50
- data/ext/reflex/screen.cpp +1 -1
- data/ext/reflex/scroll_event.cpp +1 -1
- data/ext/reflex/selector.cpp +2 -2
- data/ext/reflex/shape.cpp +1 -1
- data/ext/reflex/style.cpp +1 -1
- data/ext/reflex/style_length.cpp +5 -3
- data/ext/reflex/timer.cpp +1 -1
- data/ext/reflex/timer_event.cpp +1 -1
- data/ext/reflex/update_event.cpp +1 -1
- data/ext/reflex/view.cpp +18 -9
- data/ext/reflex/wheel_event.cpp +1 -1
- data/ext/reflex/window.cpp +1 -1
- data/include/reflex/defs.h +204 -187
- data/include/reflex/pointer.h +3 -5
- data/include/reflex/reflex.h +1 -0
- data/include/reflex/ruby/application.h +2 -2
- data/include/reflex/ruby/event.h +26 -26
- data/include/reflex/ruby/exception.h +3 -3
- data/include/reflex/ruby/filter.h +2 -2
- data/include/reflex/ruby/image_view.h +2 -2
- data/include/reflex/ruby/pointer.h +2 -2
- data/include/reflex/ruby/reflex.h +1 -1
- data/include/reflex/ruby/screen.h +2 -2
- data/include/reflex/ruby/selector.h +2 -2
- data/include/reflex/ruby/shape.h +10 -10
- data/include/reflex/ruby/style.h +4 -4
- data/include/reflex/ruby/timer.h +3 -3
- data/include/reflex/ruby/view.h +2 -2
- data/include/reflex/ruby/window.h +2 -2
- data/include/reflex/view.h +3 -1
- data/lib/reflex/extension.rb +4 -0
- data/lib/reflex/pointer.rb +1 -1
- data/lib/reflex/pointer_event.rb +2 -2
- data/reflex.gemspec +4 -4
- data/src/body.cpp +12 -6
- data/src/event.cpp +17 -31
- data/src/event.h +3 -3
- data/src/filter.cpp +3 -1
- data/src/ios/event.mm +20 -27
- data/src/osx/application.mm +6 -5
- data/src/osx/event.mm +1 -2
- data/src/pointer.cpp +12 -32
- data/src/pointer.h +0 -2
- data/src/selector.cpp +3 -1
- data/src/shape.cpp +5 -3
- data/src/style.cpp +14 -8
- data/src/view.cpp +47 -24
- data/src/win32/application.cpp +48 -35
- data/src/win32/device.cpp +18 -0
- data/src/win32/event.cpp +219 -0
- data/src/win32/event.h +50 -0
- data/src/win32/opengl.cpp +54 -27
- data/src/win32/opengl.h +15 -13
- data/src/win32/reflex.cpp +10 -16
- data/src/win32/screen.cpp +61 -0
- data/src/win32/screen.h +21 -0
- data/src/win32/window.cpp +445 -240
- data/src/window.cpp +28 -30
- data/src/window.h +3 -12
- data/test/test_pointer.rb +8 -10
- data/test/test_pointer_event.rb +8 -9
- data/test/test_window.rb +24 -21
- metadata +15 -12
- data/src/win32/defs.cpp +0 -303
- data/src/win32/defs.h +0 -34
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
#include <reflex/selector.h>
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Reflex::Selector)
|
|
12
|
+
RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(REFLEX_EXPORT, Reflex::Selector)
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
namespace Reflex
|
|
16
16
|
{
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
Rucy::Class selector_class ();
|
|
19
|
+
REFLEX_EXPORT Rucy::Class selector_class ();
|
|
20
20
|
// class Reflex::Selector
|
|
21
21
|
|
|
22
22
|
|
data/include/reflex/ruby/shape.h
CHANGED
|
@@ -10,34 +10,34 @@
|
|
|
10
10
|
#include <reflex/ruby/event.h>
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(Reflex::Shape)
|
|
13
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Shape)
|
|
14
14
|
|
|
15
|
-
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(Reflex::PolygonShape)
|
|
15
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::PolygonShape)
|
|
16
16
|
|
|
17
|
-
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(Reflex::LineShape)
|
|
17
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::LineShape)
|
|
18
18
|
|
|
19
|
-
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(Reflex::RectShape)
|
|
19
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::RectShape)
|
|
20
20
|
|
|
21
|
-
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(Reflex::EllipseShape)
|
|
21
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::EllipseShape)
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
namespace Reflex
|
|
25
25
|
{
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
Rucy::Class shape_class ();
|
|
28
|
+
REFLEX_EXPORT Rucy::Class shape_class ();
|
|
29
29
|
// class Reflex::Shape
|
|
30
30
|
|
|
31
|
-
Rucy::Class polygon_shape_class ();
|
|
31
|
+
REFLEX_EXPORT Rucy::Class polygon_shape_class ();
|
|
32
32
|
// class Reflex::PolygonShape
|
|
33
33
|
|
|
34
|
-
Rucy::Class line_shape_class ();
|
|
34
|
+
REFLEX_EXPORT Rucy::Class line_shape_class ();
|
|
35
35
|
// class Reflex::LineShape
|
|
36
36
|
|
|
37
|
-
Rucy::Class rect_shape_class ();
|
|
37
|
+
REFLEX_EXPORT Rucy::Class rect_shape_class ();
|
|
38
38
|
// class Reflex::RectShape
|
|
39
39
|
|
|
40
|
-
Rucy::Class ellipse_shape_class ();
|
|
40
|
+
REFLEX_EXPORT Rucy::Class ellipse_shape_class ();
|
|
41
41
|
// class Reflex::EllipseShape
|
|
42
42
|
|
|
43
43
|
|
data/include/reflex/ruby/style.h
CHANGED
|
@@ -9,19 +9,19 @@
|
|
|
9
9
|
#include <reflex/style.h>
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Reflex::StyleLength)
|
|
12
|
+
RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(REFLEX_EXPORT, Reflex::StyleLength)
|
|
13
13
|
|
|
14
|
-
RUCY_DECLARE_VALUE_FROM_TO(Reflex::Style)
|
|
14
|
+
RUCY_DECLARE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Style)
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
namespace Reflex
|
|
18
18
|
{
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
Rucy::Class style_length_class ();
|
|
21
|
+
REFLEX_EXPORT Rucy::Class style_length_class ();
|
|
22
22
|
// class Reflex::StyleLength
|
|
23
23
|
|
|
24
|
-
Rucy::Class style_class ();
|
|
24
|
+
REFLEX_EXPORT Rucy::Class style_class ();
|
|
25
25
|
// class Reflex::Style
|
|
26
26
|
|
|
27
27
|
|
data/include/reflex/ruby/timer.h
CHANGED
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
#include <reflex/timer.h>
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(Reflex::Timer)
|
|
12
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Timer)
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
namespace Reflex
|
|
16
16
|
{
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
Rucy::Class timer_class ();
|
|
19
|
+
REFLEX_EXPORT Rucy::Class timer_class ();
|
|
20
20
|
// class Reflex::Timer
|
|
21
21
|
|
|
22
22
|
|
|
@@ -30,7 +30,7 @@ namespace Reflex
|
|
|
30
30
|
|
|
31
31
|
virtual void fire ()
|
|
32
32
|
{
|
|
33
|
-
if (this->value.
|
|
33
|
+
if (this->value.is_a(timer_class()))
|
|
34
34
|
{
|
|
35
35
|
RUCY_SYM(call_timer_block);
|
|
36
36
|
this->value.call(call_timer_block);
|
data/include/reflex/ruby/view.h
CHANGED
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
#include <reflex/ruby/event.h>
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(Reflex::View)
|
|
13
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::View)
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
namespace Reflex
|
|
17
17
|
{
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
Rucy::Class view_class ();
|
|
20
|
+
REFLEX_EXPORT Rucy::Class view_class ();
|
|
21
21
|
// class Reflex::View
|
|
22
22
|
|
|
23
23
|
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
#include <reflex/ruby/event.h>
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(Reflex::Window)
|
|
13
|
+
RUCY_DECLARE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Window)
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
namespace Reflex
|
|
17
17
|
{
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
Rucy::Class window_class ();
|
|
20
|
+
REFLEX_EXPORT Rucy::Class window_class ();
|
|
21
21
|
// class Reflex::Window
|
|
22
22
|
|
|
23
23
|
|
data/include/reflex/view.h
CHANGED
|
@@ -309,7 +309,9 @@ namespace Reflex
|
|
|
309
309
|
//
|
|
310
310
|
// for physics child world
|
|
311
311
|
//
|
|
312
|
-
virtual void
|
|
312
|
+
virtual void create_world (float pixels_per_meter);
|
|
313
|
+
|
|
314
|
+
virtual void update_world (float duration = 0);
|
|
313
315
|
|
|
314
316
|
virtual float meter2pixel (float meter = 1, bool create_world = true);
|
|
315
317
|
|
data/lib/reflex/extension.rb
CHANGED
data/lib/reflex/pointer.rb
CHANGED
|
@@ -95,7 +95,7 @@ module Reflex
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
def inspect()
|
|
98
|
-
"#<Reflex::Pointer id:#{id} #{types} #{action} (#{x.round 2}, #{y.round 2}) mod:#{modifiers}
|
|
98
|
+
"#<Reflex::Pointer id:#{id} #{types} #{action} (#{x.round 2}, #{y.round 2}) mod:#{modifiers} click:#{click_count} drag:#{drag?} time:#{time.round 2}>"
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
end# Pointer
|
data/lib/reflex/pointer_event.rb
CHANGED
|
@@ -16,7 +16,7 @@ module Reflex
|
|
|
16
16
|
:types, :mouse?, :touch?, :pen?,
|
|
17
17
|
:mouse_left?, :left?, :mouse_right?, :right?, :mouse_middle?, :middle?,
|
|
18
18
|
:action, :down?, :up?, :move?, :cancel?, :stay?,
|
|
19
|
-
:position, :pos, :x, :y, :modifiers, :
|
|
19
|
+
:position, :pos, :x, :y, :modifiers, :click_count, :drag?,
|
|
20
20
|
:time, :prev, :down
|
|
21
21
|
|
|
22
22
|
def pointers()
|
|
@@ -24,7 +24,7 @@ module Reflex
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def inspect()
|
|
27
|
-
"#<Reflex::PointerEvent id:#{id} #{types} #{action} (#{x.round 2}, #{y.round 2}) mod:#{modifiers}
|
|
27
|
+
"#<Reflex::PointerEvent id:#{id} #{types} #{action} (#{x.round 2}, #{y.round 2}) mod:#{modifiers} click:#{click_count} drag:#{drag?} time:#{time.round 2}>"
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
end# PointerEvent
|
data/reflex.gemspec
CHANGED
|
@@ -25,10 +25,10 @@ Gem::Specification.new do |s|
|
|
|
25
25
|
s.platform = Gem::Platform::RUBY
|
|
26
26
|
s.required_ruby_version = '>= 3.0.0'
|
|
27
27
|
|
|
28
|
-
s.add_runtime_dependency 'xot', '~> 0.
|
|
29
|
-
s.add_runtime_dependency 'rucy', '~> 0.
|
|
30
|
-
s.add_runtime_dependency 'beeps', '~> 0.
|
|
31
|
-
s.add_runtime_dependency 'rays', '~> 0.
|
|
28
|
+
s.add_runtime_dependency 'xot', '~> 0.3.1'
|
|
29
|
+
s.add_runtime_dependency 'rucy', '~> 0.3.1'
|
|
30
|
+
s.add_runtime_dependency 'beeps', '~> 0.3.1'
|
|
31
|
+
s.add_runtime_dependency 'rays', '~> 0.3.1'
|
|
32
32
|
|
|
33
33
|
s.files = `git ls-files`.split $/
|
|
34
34
|
s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
|
data/src/body.cpp
CHANGED
|
@@ -284,24 +284,30 @@ namespace Reflex
|
|
|
284
284
|
void
|
|
285
285
|
Body_copy_attributes (Body* to, const Body& from)
|
|
286
286
|
{
|
|
287
|
-
if (!to)
|
|
288
|
-
return;
|
|
289
|
-
|
|
290
|
-
if (to->self->ppm != from.self->ppm)
|
|
291
|
-
physics_error(__FILE__, __LINE__);
|
|
287
|
+
if (!to) return;
|
|
292
288
|
|
|
293
289
|
b2Body* b2to = Body_get_b2ptr(to);
|
|
294
290
|
const b2Body* b2from = Body_get_b2ptr(&from);
|
|
295
291
|
assert(b2to && b2from);
|
|
296
292
|
|
|
297
293
|
b2to->SetType( b2from->GetType());
|
|
298
|
-
b2to->SetTransform( b2from->GetPosition(), b2from->GetAngle());
|
|
299
294
|
b2to->SetLinearVelocity( b2from->GetLinearVelocity());
|
|
300
295
|
b2to->SetAngularVelocity(b2from->GetAngularVelocity());
|
|
301
296
|
b2to->SetLinearDamping( b2from->GetLinearDamping());
|
|
302
297
|
b2to->SetAngularDamping( b2from->GetAngularDamping());
|
|
303
298
|
b2to->SetGravityScale( b2from->GetGravityScale());
|
|
304
299
|
b2to->SetBullet( b2from->IsBullet());
|
|
300
|
+
|
|
301
|
+
float ppm_to = to->self->ppm;
|
|
302
|
+
float ppm_from = from.self->ppm;
|
|
303
|
+
if (ppm_to == ppm_from)
|
|
304
|
+
b2to->SetTransform(b2from->GetPosition(), b2from->GetAngle());
|
|
305
|
+
else
|
|
306
|
+
{
|
|
307
|
+
auto pos = b2from->GetPosition();
|
|
308
|
+
pos *= ppm_from / ppm_to;
|
|
309
|
+
b2to->SetTransform(pos, b2from->GetAngle());
|
|
310
|
+
}
|
|
305
311
|
}
|
|
306
312
|
|
|
307
313
|
Body*
|
data/src/event.cpp
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#include "event.h"
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
#include <algorithm>
|
|
4
5
|
#include "reflex/timer.h"
|
|
5
6
|
#include "reflex/shape.h"
|
|
6
7
|
#include "reflex/exception.h"
|
|
@@ -506,11 +507,14 @@ namespace Reflex
|
|
|
506
507
|
|
|
507
508
|
|
|
508
509
|
void
|
|
509
|
-
|
|
510
|
+
KeyEvent_set_chars (KeyEvent* pthis, const char* chars)
|
|
510
511
|
{
|
|
511
|
-
|
|
512
|
-
|
|
512
|
+
pthis->self->chars = chars ? chars : "";
|
|
513
|
+
}
|
|
513
514
|
|
|
515
|
+
void
|
|
516
|
+
KeyEvent_set_captured (KeyEvent* pthis, bool captured)
|
|
517
|
+
{
|
|
514
518
|
pthis->self->captured = captured;
|
|
515
519
|
}
|
|
516
520
|
|
|
@@ -588,28 +592,16 @@ namespace Reflex
|
|
|
588
592
|
{
|
|
589
593
|
}
|
|
590
594
|
|
|
591
|
-
void increment_view_indices ()
|
|
592
|
-
{
|
|
593
|
-
for (auto& pointer : pointers)
|
|
594
|
-
Pointer_set_view_index(&pointer, pointer.view_index() + 1);
|
|
595
|
-
|
|
596
|
-
if (parent) parent->increment_view_indices();
|
|
597
|
-
}
|
|
598
|
-
|
|
599
595
|
};// PointerEvent::Data
|
|
600
596
|
|
|
601
597
|
|
|
602
598
|
void
|
|
603
|
-
PointerEvent_add_pointer (
|
|
604
|
-
PointerEvent* pthis, const Pointer& pointer,
|
|
605
|
-
std::function<void(Pointer*)> fun)
|
|
599
|
+
PointerEvent_add_pointer (PointerEvent* pthis, const Pointer& pointer)
|
|
606
600
|
{
|
|
607
601
|
if (!pthis)
|
|
608
602
|
argument_error(__FILE__, __LINE__);
|
|
609
603
|
|
|
610
604
|
pthis->self->pointers.emplace_back(pointer);
|
|
611
|
-
|
|
612
|
-
if (fun) fun(&pthis->self->pointers.back());
|
|
613
605
|
}
|
|
614
606
|
|
|
615
607
|
void
|
|
@@ -655,15 +647,6 @@ namespace Reflex
|
|
|
655
647
|
fun(pointer);
|
|
656
648
|
}
|
|
657
649
|
|
|
658
|
-
void
|
|
659
|
-
PointerEvent_increment_view_indices (PointerEvent* pthis)
|
|
660
|
-
{
|
|
661
|
-
if (!pthis)
|
|
662
|
-
argument_error(__FILE__, __LINE__);
|
|
663
|
-
|
|
664
|
-
pthis->self->increment_view_indices();
|
|
665
|
-
}
|
|
666
|
-
|
|
667
650
|
void
|
|
668
651
|
PointerEvent_set_captured (PointerEvent* pthis, bool captured)
|
|
669
652
|
{
|
|
@@ -676,23 +659,24 @@ namespace Reflex
|
|
|
676
659
|
void
|
|
677
660
|
PointerEvent_update_for_child_view (PointerEvent* pthis, const View* child)
|
|
678
661
|
{
|
|
679
|
-
if (!pthis
|
|
662
|
+
if (!pthis)
|
|
663
|
+
argument_error(__FILE__, __LINE__);
|
|
664
|
+
if (!child)
|
|
680
665
|
argument_error(__FILE__, __LINE__);
|
|
681
666
|
|
|
682
667
|
const Bounds& frame = child->frame();
|
|
683
|
-
Bounds bounds = frame.dup().move_to(0, 0);
|
|
684
668
|
|
|
685
669
|
std::vector<Pointer> pointers;
|
|
686
670
|
for (const auto& pointer : pthis->self->pointers)
|
|
687
671
|
{
|
|
672
|
+
if (!frame.is_include(pointer.position()))
|
|
673
|
+
continue;
|
|
674
|
+
|
|
688
675
|
pointers.emplace_back(pointer);
|
|
689
676
|
Pointer_update_positions(&pointers.back(), [&](Point* pos)
|
|
690
677
|
{
|
|
691
678
|
*pos = child->from_parent(*pos);
|
|
692
679
|
});
|
|
693
|
-
|
|
694
|
-
if (!bounds.is_include(pointers.back().position()))
|
|
695
|
-
pointers.pop_back();
|
|
696
680
|
}
|
|
697
681
|
pthis->self->pointers = pointers;
|
|
698
682
|
}
|
|
@@ -700,7 +684,9 @@ namespace Reflex
|
|
|
700
684
|
void
|
|
701
685
|
PointerEvent_update_for_capturing_view (PointerEvent* pthis, const View* view)
|
|
702
686
|
{
|
|
703
|
-
if (!pthis
|
|
687
|
+
if (!pthis)
|
|
688
|
+
argument_error(__FILE__, __LINE__);
|
|
689
|
+
if (!view)
|
|
704
690
|
argument_error(__FILE__, __LINE__);
|
|
705
691
|
|
|
706
692
|
for (auto& pointer : pthis->self->pointers)
|
data/src/event.h
CHANGED
|
@@ -19,12 +19,12 @@ namespace Reflex
|
|
|
19
19
|
void DrawEvent_set_bounds (DrawEvent* pthis, const Bounds& bounds);
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
void KeyEvent_set_chars (KeyEvent* pthis, const char* chars);
|
|
23
|
+
|
|
22
24
|
void KeyEvent_set_captured (KeyEvent* pthis, bool captured);
|
|
23
25
|
|
|
24
26
|
|
|
25
|
-
void PointerEvent_add_pointer (
|
|
26
|
-
PointerEvent* pthis, const Pointer& pointer,
|
|
27
|
-
std::function<void(Pointer*)> fun = NULL);
|
|
27
|
+
void PointerEvent_add_pointer (PointerEvent* pthis, const Pointer& pointer);
|
|
28
28
|
|
|
29
29
|
void PointerEvent_erase_pointer (PointerEvent* pthis, Pointer::ID id);
|
|
30
30
|
|
data/src/filter.cpp
CHANGED
data/src/ios/event.mm
CHANGED
|
@@ -69,38 +69,31 @@ namespace Reflex
|
|
|
69
69
|
(flags & UIKeyModifierNumericPad) ? MOD_NUMPAD : 0;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
static Pointer
|
|
73
|
-
create_pointer (UITouch* touch, UIEvent* event, UIView* view)
|
|
74
|
-
{
|
|
75
|
-
Pointer::Action action = get_action(touch);
|
|
76
|
-
|
|
77
|
-
Pointer pointer(
|
|
78
|
-
0,
|
|
79
|
-
get_type(touch),
|
|
80
|
-
action,
|
|
81
|
-
to_point([touch locationInView: view]),
|
|
82
|
-
get_modifiers(event),
|
|
83
|
-
action == Pointer::MOVE,
|
|
84
|
-
(uint) touch.tapCount,
|
|
85
|
-
0,
|
|
86
|
-
touch.timestamp);
|
|
87
|
-
|
|
88
|
-
if (touch.phase != UITouchPhaseBegan)
|
|
89
|
-
{
|
|
90
|
-
Pointer_set_prev_position(
|
|
91
|
-
&pointer, to_point([touch previousLocationInView: view]));
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return pointer;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
72
|
NativePointerEvent::NativePointerEvent (
|
|
98
73
|
NSSet* touches, UIEvent* event, UIView* view)
|
|
99
74
|
{
|
|
100
75
|
for (UITouch* touch in touches)
|
|
101
76
|
{
|
|
102
|
-
Pointer
|
|
103
|
-
|
|
77
|
+
Pointer::Action action = get_action(touch);
|
|
78
|
+
|
|
79
|
+
Pointer pointer(
|
|
80
|
+
0,
|
|
81
|
+
get_type(touch),
|
|
82
|
+
action,
|
|
83
|
+
to_point([touch locationInView: view]),
|
|
84
|
+
get_modifiers(event),
|
|
85
|
+
(uint) touch.tapCount,
|
|
86
|
+
action == Pointer::MOVE,
|
|
87
|
+
touch.timestamp);
|
|
88
|
+
|
|
89
|
+
if (pointer.action() != Pointer::DOWN)
|
|
90
|
+
{
|
|
91
|
+
Pointer_set_prev_position(
|
|
92
|
+
&pointer, to_point([touch previousLocationInView: view]));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (pointer)
|
|
96
|
+
PointerEvent_add_pointer(this, pointer);
|
|
104
97
|
}
|
|
105
98
|
}
|
|
106
99
|
|
data/src/osx/application.mm
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
#import <AppKit/NSApplication.h>
|
|
6
6
|
#include "reflex/exception.h"
|
|
7
|
+
#include "reflex/debug.h"
|
|
7
8
|
#import "app_delegate.h"
|
|
8
9
|
|
|
9
10
|
|
|
@@ -42,11 +43,11 @@ namespace Reflex
|
|
|
42
43
|
static ReflexAppDelegate*
|
|
43
44
|
setup_app_delegate (NSApplication* app)
|
|
44
45
|
{
|
|
45
|
-
id<NSApplicationDelegate> delegate =
|
|
46
|
+
id<NSApplicationDelegate> delegate = app.delegate;
|
|
46
47
|
if (!delegate)
|
|
47
48
|
{
|
|
48
|
-
delegate
|
|
49
|
-
|
|
49
|
+
delegate = [[[ReflexAppDelegate alloc] init] autorelease];
|
|
50
|
+
app.delegate = delegate;
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
if (![delegate isKindOfClass: ReflexAppDelegate.class])
|
|
@@ -58,11 +59,11 @@ namespace Reflex
|
|
|
58
59
|
void
|
|
59
60
|
Application::start ()
|
|
60
61
|
{
|
|
61
|
-
NSApplication* app =
|
|
62
|
+
NSApplication* app = NSApplication.sharedApplication;
|
|
62
63
|
ReflexAppDelegate* delegate = setup_app_delegate(app);
|
|
63
64
|
[delegate bind: this];
|
|
64
65
|
|
|
65
|
-
if (!
|
|
66
|
+
if (!app.isRunning)
|
|
66
67
|
[app run];
|
|
67
68
|
else
|
|
68
69
|
[delegate callOnStart];
|
data/src/osx/event.mm
CHANGED
data/src/pointer.cpp
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#include "pointer.h"
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
#include <limits.h>
|
|
5
4
|
#include <xot/time.h>
|
|
6
5
|
#include "reflex/exception.h"
|
|
7
6
|
|
|
@@ -48,9 +47,7 @@ namespace Reflex
|
|
|
48
47
|
|
|
49
48
|
Point position, prev_position;
|
|
50
49
|
|
|
51
|
-
uint modifiers, flags;
|
|
52
|
-
|
|
53
|
-
ushort click_count, view_index;
|
|
50
|
+
uint modifiers, click_count, flags;
|
|
54
51
|
|
|
55
52
|
double time;
|
|
56
53
|
|
|
@@ -58,16 +55,14 @@ namespace Reflex
|
|
|
58
55
|
|
|
59
56
|
Data (
|
|
60
57
|
ID id = -1, uint types = TYPE_NONE, Action action = ACTION_NONE,
|
|
61
|
-
const Point& position = 0, uint modifiers = 0,
|
|
58
|
+
const Point& position = 0, uint modifiers = 0, uint click_count = 0,
|
|
62
59
|
bool drag = false, bool enter = false, bool exit = false,
|
|
63
|
-
|
|
60
|
+
double time = 0)
|
|
64
61
|
: id(id), types(types), action(action),
|
|
65
|
-
position(position), modifiers(modifiers),
|
|
62
|
+
position(position), modifiers(modifiers), click_count(click_count),
|
|
66
63
|
flags(make_flags(drag, enter, exit)),
|
|
67
|
-
|
|
64
|
+
time(time)
|
|
68
65
|
{
|
|
69
|
-
if (view_index >= USHRT_MAX)
|
|
70
|
-
argument_error(__FILE__, __LINE__);
|
|
71
66
|
}
|
|
72
67
|
|
|
73
68
|
uint make_flags (bool drag, bool enter, bool exit)
|
|
@@ -101,15 +96,6 @@ namespace Reflex
|
|
|
101
96
|
it->self->id = id;
|
|
102
97
|
}
|
|
103
98
|
|
|
104
|
-
void
|
|
105
|
-
Pointer_set_view_index (Pointer* it, uint view_index)
|
|
106
|
-
{
|
|
107
|
-
if (view_index >= USHRT_MAX)
|
|
108
|
-
argument_error(__FILE__, __LINE__);
|
|
109
|
-
|
|
110
|
-
it->self->view_index = view_index;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
99
|
void
|
|
114
100
|
Pointer_add_flag (Pointer* it, uint flag)
|
|
115
101
|
{
|
|
@@ -177,12 +163,12 @@ namespace Reflex
|
|
|
177
163
|
|
|
178
164
|
Pointer::Pointer (
|
|
179
165
|
ID id, uint types, Action action,
|
|
180
|
-
const Point& position, uint modifiers, bool drag,
|
|
181
|
-
|
|
166
|
+
const Point& position, uint modifiers, uint click_count, bool drag,
|
|
167
|
+
double time)
|
|
182
168
|
: self(new Data(
|
|
183
169
|
id, types, action,
|
|
184
|
-
position, modifiers, drag, false, false,
|
|
185
|
-
|
|
170
|
+
position, modifiers, click_count, drag, false, false,
|
|
171
|
+
time))
|
|
186
172
|
{
|
|
187
173
|
}
|
|
188
174
|
|
|
@@ -232,22 +218,16 @@ namespace Reflex
|
|
|
232
218
|
return self->modifiers;
|
|
233
219
|
}
|
|
234
220
|
|
|
235
|
-
bool
|
|
236
|
-
Pointer::is_drag () const
|
|
237
|
-
{
|
|
238
|
-
return Xot::has_flag(self->flags, Data::DRAG);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
221
|
uint
|
|
242
222
|
Pointer::click_count () const
|
|
243
223
|
{
|
|
244
224
|
return self->click_count;
|
|
245
225
|
}
|
|
246
226
|
|
|
247
|
-
|
|
248
|
-
Pointer::
|
|
227
|
+
bool
|
|
228
|
+
Pointer::is_drag () const
|
|
249
229
|
{
|
|
250
|
-
return self->
|
|
230
|
+
return Xot::has_flag(self->flags, Data::DRAG);
|
|
251
231
|
}
|
|
252
232
|
|
|
253
233
|
double
|
data/src/pointer.h
CHANGED
data/src/selector.cpp
CHANGED
data/src/shape.cpp
CHANGED
|
@@ -444,7 +444,9 @@ namespace Reflex
|
|
|
444
444
|
void
|
|
445
445
|
Shape_call_contact_event (Shape* shape, ContactEvent* event)
|
|
446
446
|
{
|
|
447
|
-
if (!shape
|
|
447
|
+
if (!shape)
|
|
448
|
+
argument_error(__FILE__, __LINE__);
|
|
449
|
+
if (!event)
|
|
448
450
|
argument_error(__FILE__, __LINE__);
|
|
449
451
|
|
|
450
452
|
shape->on_contact(event);
|
|
@@ -1024,8 +1026,8 @@ namespace Reflex
|
|
|
1024
1026
|
bool has_angle () const
|
|
1025
1027
|
{
|
|
1026
1028
|
return
|
|
1027
|
-
angle_from != DEFAULT_ANGLE_FROM ||
|
|
1028
|
-
angle_to != DEFAULT_ANGLE_TO;
|
|
1029
|
+
angle_from != (float) DEFAULT_ANGLE_FROM ||
|
|
1030
|
+
angle_to != (float) DEFAULT_ANGLE_TO;
|
|
1029
1031
|
}
|
|
1030
1032
|
|
|
1031
1033
|
Fixture* create_fixtures (Shape* shape) override
|
data/src/style.cpp
CHANGED
|
@@ -202,7 +202,9 @@ namespace Reflex
|
|
|
202
202
|
void
|
|
203
203
|
StyleLength::reset (Type type, Value value)
|
|
204
204
|
{
|
|
205
|
-
if (type < NONE
|
|
205
|
+
if (type < NONE)
|
|
206
|
+
argument_error(__FILE__, __LINE__);
|
|
207
|
+
if (type >= TYPE_MAX)
|
|
206
208
|
argument_error(__FILE__, __LINE__);
|
|
207
209
|
|
|
208
210
|
if (type == FIT && value != 1)
|
|
@@ -615,14 +617,18 @@ namespace Reflex
|
|
|
615
617
|
void
|
|
616
618
|
Style::set_flow (Flow main, Flow sub)
|
|
617
619
|
{
|
|
618
|
-
if (
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
(
|
|
622
|
-
|
|
623
|
-
|
|
620
|
+
if (main < FLOW_NONE)
|
|
621
|
+
argument_error(__FILE__, __LINE__);
|
|
622
|
+
if (main >= FLOW_MAX)
|
|
623
|
+
argument_error(__FILE__, __LINE__);
|
|
624
|
+
if (sub < FLOW_NONE)
|
|
625
|
+
argument_error(__FILE__, __LINE__);
|
|
626
|
+
if (sub >= FLOW_MAX)
|
|
627
|
+
argument_error(__FILE__, __LINE__);
|
|
628
|
+
if (main != FLOW_NONE && (get_flow_dir(main) == get_flow_dir(sub)))
|
|
629
|
+
argument_error(__FILE__, __LINE__);
|
|
630
|
+
if (main == FLOW_NONE && sub != FLOW_NONE)
|
|
624
631
|
argument_error(__FILE__, __LINE__);
|
|
625
|
-
}
|
|
626
632
|
|
|
627
633
|
self->set_flow(main, sub);
|
|
628
634
|
|