reflexion 0.1.15 → 0.1.21
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 +4 -5
- data/.doc/ext/reflex/contact_event.cpp +4 -7
- data/.doc/ext/reflex/draw_event.cpp +3 -4
- data/.doc/ext/reflex/frame_event.cpp +7 -8
- data/.doc/ext/reflex/key_event.cpp +7 -8
- data/.doc/ext/reflex/motion_event.cpp +3 -5
- data/.doc/ext/reflex/pointer_event.cpp +23 -14
- data/.doc/ext/reflex/scroll_event.cpp +8 -9
- data/.doc/ext/reflex/update_event.cpp +4 -5
- data/.doc/ext/reflex/wheel_event.cpp +5 -6
- data/.doc/ext/reflex/window.cpp +17 -0
- data/VERSION +1 -1
- data/ext/reflex/capture_event.cpp +3 -4
- data/ext/reflex/contact_event.cpp +3 -6
- data/ext/reflex/draw_event.cpp +2 -3
- data/ext/reflex/frame_event.cpp +6 -7
- data/ext/reflex/key_event.cpp +6 -7
- data/ext/reflex/motion_event.cpp +2 -4
- data/ext/reflex/pointer_event.cpp +22 -13
- data/ext/reflex/scroll_event.cpp +8 -9
- data/ext/reflex/update_event.cpp +3 -4
- data/ext/reflex/wheel_event.cpp +4 -5
- data/ext/reflex/window.cpp +19 -0
- data/include/reflex/event.h +15 -15
- data/include/reflex/exception.h +9 -3
- data/include/reflex/ruby/event.h +11 -11
- data/include/reflex/window.h +4 -0
- data/lib/reflex.rb +2 -1
- data/lib/reflex/camera.rb +13 -0
- data/lib/reflex/pointer_event.rb +4 -0
- data/lib/reflex/window.rb +2 -1
- data/reflex.gemspec +4 -4
- data/samples/camera.rb +45 -0
- data/src/event.cpp +7 -7
- data/src/ios/view_controller.mm +1 -1
- data/src/ios/window.mm +18 -0
- data/src/osx/native_window.mm +1 -1
- data/src/osx/window.mm +22 -0
- data/src/timer.cpp +3 -6
- data/src/window.cpp +13 -1
- data/src/window.h +6 -0
- data/test/test_pointer_event.rb +79 -34
- data/test/test_window.rb +17 -0
- metadata +15 -13
data/src/event.cpp
CHANGED
@@ -28,12 +28,6 @@ namespace Reflex
|
|
28
28
|
}
|
29
29
|
|
30
30
|
|
31
|
-
MotionEvent::MotionEvent (const Point& gravity)
|
32
|
-
: gravity(gravity)
|
33
|
-
{
|
34
|
-
}
|
35
|
-
|
36
|
-
|
37
31
|
UpdateEvent::UpdateEvent (double now, float dt)
|
38
32
|
: now(now), dt(dt)
|
39
33
|
{
|
@@ -170,7 +164,7 @@ namespace Reflex
|
|
170
164
|
if (positions_)
|
171
165
|
{
|
172
166
|
for (size_t i = 0; i < size; ++i)
|
173
|
-
positions[i] = *(
|
167
|
+
positions[i] = *(Coord3*) &positions_[i];
|
174
168
|
}
|
175
169
|
}
|
176
170
|
|
@@ -302,4 +296,10 @@ namespace Reflex
|
|
302
296
|
}
|
303
297
|
|
304
298
|
|
299
|
+
MotionEvent::MotionEvent (const Point& gravity)
|
300
|
+
: gravity(gravity)
|
301
|
+
{
|
302
|
+
}
|
303
|
+
|
304
|
+
|
305
305
|
}// Reflex
|
data/src/ios/view_controller.mm
CHANGED
@@ -371,7 +371,7 @@ ReflexViewController_get_show_fun ()
|
|
371
371
|
b.move_to(0, 0);
|
372
372
|
|
373
373
|
if (win->painter())
|
374
|
-
win->painter()->canvas(b,
|
374
|
+
win->painter()->canvas(b, win->painter()->pixel_density());
|
375
375
|
|
376
376
|
if (win->root())
|
377
377
|
View_set_frame(win->root(), b);
|
data/src/ios/window.mm
CHANGED
@@ -130,6 +130,24 @@ namespace Reflex
|
|
130
130
|
rect.size.height);
|
131
131
|
}
|
132
132
|
|
133
|
+
void
|
134
|
+
Window_set_resizable (Window* window, bool state)
|
135
|
+
{
|
136
|
+
not_implemented_error(__FILE__, __LINE__);
|
137
|
+
}
|
138
|
+
|
139
|
+
bool
|
140
|
+
Window_is_resizable (const Window& window)
|
141
|
+
{
|
142
|
+
return false;
|
143
|
+
}
|
144
|
+
|
145
|
+
float
|
146
|
+
Window_get_pixel_density (const Window& window)
|
147
|
+
{
|
148
|
+
return UIScreen.mainScreen.scale;
|
149
|
+
}
|
150
|
+
|
133
151
|
|
134
152
|
WindowData::WindowData ()
|
135
153
|
{
|
data/src/osx/native_window.mm
CHANGED
@@ -250,7 +250,7 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
250
250
|
b.move_to(0, 0);
|
251
251
|
|
252
252
|
if (win->painter())
|
253
|
-
win->painter()->canvas(b,
|
253
|
+
win->painter()->canvas(b, win->painter()->pixel_density());
|
254
254
|
|
255
255
|
if (win->root())
|
256
256
|
View_set_frame(win->root(), b);
|
data/src/osx/window.mm
CHANGED
@@ -112,6 +112,28 @@ namespace Reflex
|
|
112
112
|
rect.size.height);
|
113
113
|
}
|
114
114
|
|
115
|
+
void
|
116
|
+
Window_set_resizable (Window* window, bool state)
|
117
|
+
{
|
118
|
+
NativeWindow* native = get_native(window);
|
119
|
+
if (state)
|
120
|
+
native.styleMask |= NSResizableWindowMask;
|
121
|
+
else
|
122
|
+
native.styleMask &= ~NSResizableWindowMask;
|
123
|
+
}
|
124
|
+
|
125
|
+
bool
|
126
|
+
Window_is_resizable (const Window& window)
|
127
|
+
{
|
128
|
+
return get_native(&window).styleMask & NSResizableWindowMask;
|
129
|
+
}
|
130
|
+
|
131
|
+
float
|
132
|
+
Window_get_pixel_density (const Window& window)
|
133
|
+
{
|
134
|
+
return get_native(&window).backingScaleFactor;
|
135
|
+
}
|
136
|
+
|
115
137
|
|
116
138
|
WindowData::WindowData ()
|
117
139
|
{
|
data/src/timer.cpp
CHANGED
@@ -162,8 +162,7 @@ namespace Reflex
|
|
162
162
|
{
|
163
163
|
assert(timer && *timer);
|
164
164
|
|
165
|
-
|
166
|
-
for (List::iterator it = timers.begin(); it != end; ++it)
|
165
|
+
for (auto it = timers.begin(), end = timers.end(); it != end; ++it)
|
167
166
|
{
|
168
167
|
if (timer->self->next_time < (*it)->self->next_time)
|
169
168
|
{
|
@@ -219,8 +218,7 @@ namespace Reflex
|
|
219
218
|
if (!timer)
|
220
219
|
argument_error(__FILE__, __LINE__);
|
221
220
|
|
222
|
-
|
223
|
-
for (List::iterator it = timers.begin(); it != end; ++it)
|
221
|
+
for (auto it = timers.begin(), end = timers.end(); it != end; ++it)
|
224
222
|
{
|
225
223
|
if (timer->id() == (*it)->id())
|
226
224
|
timers.erase(it);
|
@@ -261,8 +259,7 @@ namespace Reflex
|
|
261
259
|
void
|
262
260
|
Timers::fire (double now)
|
263
261
|
{
|
264
|
-
|
265
|
-
for (List::iterator it = timers.begin(); it != end; ++it)
|
262
|
+
for (auto it = timers.begin(), end = timers.end(); it != end; ++it)
|
266
263
|
{
|
267
264
|
Timer* timer = it->get();
|
268
265
|
if (!is_time_to_fire(timer, now))
|
data/src/window.cpp
CHANGED
@@ -133,7 +133,7 @@ namespace Reflex
|
|
133
133
|
self->root->set_name(VIEW_TAG_ROOT);
|
134
134
|
View_set_window(self->root.get(), this);
|
135
135
|
|
136
|
-
self->painter.canvas(0, 0, 1, 1);
|
136
|
+
self->painter.canvas(0, 0, 1, 1, Window_get_pixel_density(*this));
|
137
137
|
}
|
138
138
|
|
139
139
|
Window::~Window ()
|
@@ -221,6 +221,18 @@ namespace Reflex
|
|
221
221
|
return Window_get_frame(*this);
|
222
222
|
}
|
223
223
|
|
224
|
+
void
|
225
|
+
Window::set_resizable (bool state)
|
226
|
+
{
|
227
|
+
Window_set_resizable(this, state);
|
228
|
+
}
|
229
|
+
|
230
|
+
bool
|
231
|
+
Window::is_resizable () const
|
232
|
+
{
|
233
|
+
Window_is_resizable(*this);
|
234
|
+
}
|
235
|
+
|
224
236
|
bool
|
225
237
|
Window::hidden () const
|
226
238
|
{
|
data/src/window.h
CHANGED
@@ -78,10 +78,16 @@ namespace Reflex
|
|
78
78
|
|
79
79
|
Bounds Window_get_frame (const Window& window);
|
80
80
|
|
81
|
+
void Window_set_resizable (Window* window, bool state);
|
82
|
+
|
83
|
+
bool Window_is_resizable (const Window& window);
|
84
|
+
|
81
85
|
void Window_set_focus (Window* window, View* view);
|
82
86
|
|
83
87
|
void Window_call_draw_event (Window* window, DrawEvent* event);
|
84
88
|
|
89
|
+
float Window_get_pixel_density (const Window& window);
|
90
|
+
|
85
91
|
|
86
92
|
typedef View* (*Window_CreateRootViewFun) ();
|
87
93
|
|
data/test/test_pointer_event.rb
CHANGED
@@ -6,80 +6,125 @@ require_relative 'helper'
|
|
6
6
|
|
7
7
|
class TestPointerEvent < Test::Unit::TestCase
|
8
8
|
|
9
|
+
E = Reflex::PointerEvent
|
9
10
|
T = true
|
10
11
|
F = false
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
TYPE_NONE = E::TYPE_NONE
|
14
|
+
DOWN = E::TYPE_DOWN
|
15
|
+
UP = E::TYPE_UP
|
16
|
+
MOVE = E::TYPE_MOVE
|
17
|
+
|
18
|
+
POINTER_NONE = E::POINTER_NONE
|
19
|
+
LEFT = E::POINTER_MOUSE_LEFT
|
20
|
+
RIGHT = E::POINTER_MOUSE_RIGHT
|
21
|
+
MIDDLE = E::POINTER_MOUSE_MIDDLE
|
22
|
+
TOUCH = E::POINTER_TOUCH
|
23
|
+
PEN = E::POINTER_PEN
|
24
|
+
|
25
|
+
def event (
|
26
|
+
type = TYPE_NONE, pointer_type = POINTER_NONE,
|
27
|
+
modifiers = 0, count = 0, drag = false,
|
28
|
+
positions: [0])
|
29
|
+
|
30
|
+
Reflex::PointerEvent.new type, pointer_type, modifiers, count, drag, positions
|
14
31
|
end
|
15
32
|
|
16
|
-
def
|
17
|
-
event
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
33
|
+
def test_initialize ()
|
34
|
+
assert_nothing_raised {event positions: 10.times.to_a}
|
35
|
+
assert_raise(ArgumentError) {event positions: 11.times.to_a}
|
36
|
+
assert_raise(ArgumentError) {event positions: []}
|
22
37
|
end
|
23
38
|
|
24
39
|
def test_type ()
|
25
|
-
|
40
|
+
def type (arg)
|
41
|
+
event(arg).tap do |o|
|
42
|
+
def o.test ()
|
43
|
+
[type, down?, up?, move?]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
o = type TYPE_NONE
|
26
49
|
assert_equal [:none, F, F, F], o.test
|
27
50
|
|
28
|
-
o = type
|
51
|
+
o = type DOWN
|
29
52
|
assert_equal [:down, T, F, F], o.test
|
30
53
|
|
31
|
-
o = type
|
54
|
+
o = type UP
|
32
55
|
assert_equal [:up, F, T, F], o.test
|
33
56
|
|
34
|
-
o = type
|
57
|
+
o = type MOVE
|
35
58
|
assert_equal [:move, F, F, T], o.test
|
36
59
|
end
|
37
60
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
41
|
-
|
61
|
+
def test_pointer_type ()
|
62
|
+
def pointer_type (arg)
|
63
|
+
event(TYPE_NONE, arg).tap do |o|
|
64
|
+
def o.test ()
|
65
|
+
[pointer_type, left?, right?, middle?, touch?, pen?]
|
66
|
+
end
|
42
67
|
end
|
43
68
|
end
|
44
|
-
end
|
45
69
|
|
46
|
-
|
47
|
-
o = pointer_type Reflex::PointerEvent::POINTER_NONE
|
70
|
+
o = pointer_type POINTER_NONE
|
48
71
|
assert_equal [[], F, F, F, F, F], o.test
|
49
72
|
|
50
|
-
o = pointer_type
|
73
|
+
o = pointer_type LEFT
|
51
74
|
assert_equal [[:mouse_left], T, F, F, F, F], o.test
|
52
75
|
|
53
|
-
o = pointer_type
|
76
|
+
o = pointer_type RIGHT
|
54
77
|
assert_equal [[:mouse_right], F, T, F, F, F], o.test
|
55
78
|
|
56
|
-
o = pointer_type
|
79
|
+
o = pointer_type MIDDLE
|
57
80
|
assert_equal [[:mouse_middle], F, F, T, F, F], o.test
|
58
81
|
|
59
|
-
o = pointer_type
|
82
|
+
o = pointer_type TOUCH
|
60
83
|
assert_equal [[:touch], F, F, F, T, F], o.test
|
61
84
|
|
62
|
-
o = pointer_type
|
85
|
+
o = pointer_type PEN
|
63
86
|
assert_equal [[:pen], F, F, F, F, T], o.test
|
64
87
|
|
65
|
-
o = pointer_type
|
66
|
-
Reflex::PointerEvent::POINTER_MOUSE_RIGHT
|
88
|
+
o = pointer_type LEFT | RIGHT
|
67
89
|
types = [:mouse_left, :mouse_right]
|
68
90
|
assert_equal [types, T, T, F, F, F], o.test
|
69
91
|
|
70
|
-
o = pointer_type
|
71
|
-
Reflex::PointerEvent::POINTER_MOUSE_RIGHT |
|
72
|
-
Reflex::PointerEvent::POINTER_MOUSE_MIDDLE
|
92
|
+
o = pointer_type LEFT | RIGHT | MIDDLE
|
73
93
|
types = [:mouse_left, :mouse_right, :mouse_middle]
|
74
94
|
assert_equal [types, T, T, T, F, F], o.test
|
75
95
|
|
76
|
-
o = pointer_type
|
77
|
-
Reflex::PointerEvent::POINTER_MOUSE_RIGHT |
|
78
|
-
Reflex::PointerEvent::POINTER_MOUSE_MIDDLE |
|
79
|
-
Reflex::PointerEvent::POINTER_TOUCH |
|
80
|
-
Reflex::PointerEvent::POINTER_PEN
|
96
|
+
o = pointer_type LEFT | RIGHT | MIDDLE | TOUCH | PEN
|
81
97
|
types = [:mouse_left, :mouse_right, :mouse_middle, :touch, :pen]
|
82
98
|
assert_equal [types, T, T, T, T, T], o.test
|
83
99
|
end
|
84
100
|
|
101
|
+
def test_size ()
|
102
|
+
assert_equal 1, event(positions: [0] ).size
|
103
|
+
assert_equal 2, event(positions: [0, 1]).size
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_xy ()
|
107
|
+
assert_equal 0, event(positions: [[0, 1], [2, 3]]).x
|
108
|
+
assert_equal 1, event(positions: [[0, 1], [2, 3]]).y
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_position ()
|
112
|
+
assert_equal [0, 1], event(positions: [[0, 1], [2, 3]]).position.to_a
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_positions ()
|
116
|
+
assert_equal [[0, 0]], event(positions: [0] ).positions.map(&:to_a)
|
117
|
+
assert_equal [[0, 0], [1, 1]], event(positions: [0, 1]).positions.map(&:to_a)
|
118
|
+
|
119
|
+
assert_equal [[0, 1]], event(positions: [[0, 1]] ).positions.map(&:to_a)
|
120
|
+
assert_equal [[0, 1], [2, 3]], event(positions: [[0, 1], [2, 3]]).positions.map(&:to_a)
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_at ()
|
124
|
+
assert_equal [0, 1], event(positions: [[0, 1], [2, 3]])[0].to_a
|
125
|
+
assert_equal [2, 3], event(positions: [[0, 1], [2, 3]])[1].to_a
|
126
|
+
assert_raise(IndexError) {event(positions: [[0, 1], [2, 3]])[-1]}
|
127
|
+
assert_raise(IndexError) {event(positions: [[0, 1], [2, 3]])[2]}
|
128
|
+
end
|
129
|
+
|
85
130
|
end# TestPointerEvent
|
data/test/test_window.rb
CHANGED
@@ -68,6 +68,23 @@ class TestWindow < Test::Unit::TestCase
|
|
68
68
|
w.frame = [bounds(1, 2, 3, 4, 5, 6)]; assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
|
69
69
|
end
|
70
70
|
|
71
|
+
def test_resizable? ()
|
72
|
+
w = win
|
73
|
+
assert_true w.resizable?
|
74
|
+
|
75
|
+
w.resizable = false
|
76
|
+
assert_false w.resizable?
|
77
|
+
|
78
|
+
w.resizable = true
|
79
|
+
assert_true w.resizable?
|
80
|
+
|
81
|
+
w.resizable false
|
82
|
+
assert_false w.resizable?
|
83
|
+
|
84
|
+
w.resizable true
|
85
|
+
assert_true w.resizable?
|
86
|
+
end
|
87
|
+
|
71
88
|
def test_title ()
|
72
89
|
w = win
|
73
90
|
assert_equal '', w.title
|
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.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.1.21
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.1.21
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rucy
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.1.21
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.1.21
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: beeps
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.1.21
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.1.21
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rays
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.1.21
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.1.21
|
69
69
|
description: This library helps you to develop interactive graphical user interface.
|
70
70
|
email: xordog@gmail.com
|
71
71
|
executables: []
|
@@ -200,6 +200,7 @@ files:
|
|
200
200
|
- lib/reflex/bitmap.rb
|
201
201
|
- lib/reflex/bounds.rb
|
202
202
|
- lib/reflex/button.rb
|
203
|
+
- lib/reflex/camera.rb
|
203
204
|
- lib/reflex/capture_event.rb
|
204
205
|
- lib/reflex/color.rb
|
205
206
|
- lib/reflex/color_space.rb
|
@@ -249,6 +250,7 @@ files:
|
|
249
250
|
- reflex.gemspec
|
250
251
|
- samples/app.rb
|
251
252
|
- samples/bats.rb
|
253
|
+
- samples/camera.rb
|
252
254
|
- samples/checker.rb
|
253
255
|
- samples/fans.rb
|
254
256
|
- samples/fps.rb
|
@@ -359,7 +361,7 @@ files:
|
|
359
361
|
homepage: https://github.com/xord/reflex
|
360
362
|
licenses: []
|
361
363
|
metadata: {}
|
362
|
-
post_install_message:
|
364
|
+
post_install_message:
|
363
365
|
rdoc_options: []
|
364
366
|
require_paths:
|
365
367
|
- lib
|
@@ -375,7 +377,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
375
377
|
version: '0'
|
376
378
|
requirements: []
|
377
379
|
rubygems_version: 3.0.3
|
378
|
-
signing_key:
|
380
|
+
signing_key:
|
379
381
|
specification_version: 4
|
380
382
|
summary: A Graphical User Interface Tool Kit.
|
381
383
|
test_files:
|