reflexion 0.3.5 → 0.3.7
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 +16 -0
- data/.doc/ext/reflex/device.cpp +46 -3
- data/.doc/ext/reflex/device_event.cpp +62 -0
- data/.doc/ext/reflex/key_event.cpp +49 -19
- data/.doc/ext/reflex/midi.cpp +82 -0
- data/.doc/ext/reflex/native.cpp +10 -4
- data/.doc/ext/reflex/note_event.cpp +121 -0
- data/.doc/ext/reflex/reflex.cpp +30 -8
- data/.doc/ext/reflex/view.cpp +11 -16
- data/.doc/ext/reflex/window.cpp +24 -0
- data/ChangeLog.md +16 -0
- data/Rakefile +7 -0
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +18 -0
- data/ext/reflex/device.cpp +48 -3
- data/ext/reflex/device_event.cpp +65 -0
- data/ext/reflex/key_event.cpp +49 -19
- data/ext/reflex/midi.cpp +87 -0
- data/ext/reflex/native.cpp +10 -4
- data/ext/reflex/note_event.cpp +130 -0
- data/ext/reflex/reflex.cpp +31 -8
- data/ext/reflex/view.cpp +11 -16
- data/ext/reflex/window.cpp +27 -0
- data/include/reflex/application.h +4 -0
- data/include/reflex/defs.h +58 -21
- data/include/reflex/device.h +22 -0
- data/include/reflex/event.h +64 -2
- data/include/reflex/gamepad.h +175 -0
- data/include/reflex/midi.h +53 -0
- data/include/reflex/reflex.h +2 -0
- data/include/reflex/ruby/application.h +18 -0
- data/include/reflex/ruby/device.h +40 -0
- data/include/reflex/ruby/event.h +22 -0
- data/include/reflex/ruby/midi.h +84 -0
- data/include/reflex/ruby/window.h +27 -0
- data/include/reflex/view.h +9 -1
- data/include/reflex/window.h +6 -0
- data/lib/reflex/note_event.rb +34 -0
- data/lib/reflex/view.rb +2 -1
- data/lib/reflex.rb +9 -8
- data/reflex.gemspec +3 -3
- data/src/application.cpp +70 -0
- data/src/application.h +9 -0
- data/src/device.cpp +24 -0
- data/src/event.cpp +133 -7
- data/src/event.h +5 -0
- data/src/gamepad.cpp +176 -0
- data/src/gamepad.h +74 -0
- data/src/ios/app_delegate.mm +2 -2
- data/src/ios/application.mm +0 -25
- data/src/ios/event.h +0 -5
- data/src/ios/event.mm +11 -87
- data/src/ios/gamepad.mm +314 -0
- data/src/ios/reflex.mm +0 -5
- data/src/midi.cpp +379 -0
- data/src/midi.h +32 -0
- data/src/osx/app_delegate.mm +2 -2
- data/src/osx/application.mm +0 -25
- data/src/osx/event.h +0 -5
- data/src/osx/event.mm +9 -86
- data/src/osx/gamepad.mm +40 -0
- data/src/osx/gamepad_gc.mm +299 -0
- data/src/osx/gamepad_hid.mm +567 -0
- data/src/osx/reflex.mm +0 -5
- data/src/queue.h +71 -0
- data/src/reflex.cpp +18 -0
- data/src/timer.cpp +3 -10
- data/src/view.cpp +39 -0
- data/src/view.h +2 -0
- data/src/win32/application.cpp +5 -26
- data/src/win32/event.cpp +6 -89
- data/src/win32/event.h +1 -1
- data/src/win32/gamepad.cpp +110 -0
- data/src/win32/gamepad.h +20 -0
- data/src/win32/window.cpp +2 -1
- data/src/window.cpp +61 -10
- data/src/window.h +2 -0
- data/test/test_capture_event.rb +20 -16
- data/test/test_key_event.rb +8 -1
- data/test/test_note_event.rb +43 -0
- data/test/test_view.rb +24 -12
- metadata +43 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3520640328cfb50b658b9010aa67ea46133947fe974e2a53652f5279a387629d
|
4
|
+
data.tar.gz: 241019eb81187280e520610adbc0626eb3336e2201ed3c6be71026e828e412c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5eabad841c91594992c6bd852e53a18aaa53c5d5f0f46e4df2cfcf921f31cf2a82a8509ed9431e148b4e209f25eaf30f3ccc75dd5bedaa12db03ab3cb9d98bf9
|
7
|
+
data.tar.gz: a927541d68a6df779112af64db8e5da871ce814638e40a9d9b392f2379e8610fbcae2d54857599d603f119971558d2a3ccf71ede3974bff968477d3d092b819d
|
@@ -81,6 +81,20 @@ VALUE on_quit(VALUE self, VALUE event)
|
|
81
81
|
CALL(on_quit(to<Reflex::Event*>(event)));
|
82
82
|
}
|
83
83
|
|
84
|
+
static
|
85
|
+
VALUE on_device_connect(VALUE self, VALUE event)
|
86
|
+
{
|
87
|
+
CHECK;
|
88
|
+
CALL(on_device_connect(to<Reflex::DeviceEvent*>(event)));
|
89
|
+
}
|
90
|
+
|
91
|
+
static
|
92
|
+
VALUE on_device_disconnect(VALUE self, VALUE event)
|
93
|
+
{
|
94
|
+
CHECK;
|
95
|
+
CALL(on_device_disconnect(to<Reflex::DeviceEvent*>(event)));
|
96
|
+
}
|
97
|
+
|
84
98
|
static
|
85
99
|
VALUE on_motion(VALUE self, VALUE event)
|
86
100
|
{
|
@@ -125,6 +139,8 @@ Init_reflex_application ()
|
|
125
139
|
rb_define_method(cApplication, "each_window", RUBY_METHOD_FUNC(each_window), 0);
|
126
140
|
rb_define_method(cApplication, "on_start", RUBY_METHOD_FUNC(on_start), 1);
|
127
141
|
rb_define_method(cApplication, "on_quit", RUBY_METHOD_FUNC(on_quit), 1);
|
142
|
+
rb_define_method(cApplication, "on_device_connect", RUBY_METHOD_FUNC(on_device_connect), 1);
|
143
|
+
rb_define_method(cApplication, "on_device_disconnect", RUBY_METHOD_FUNC(on_device_disconnect), 1);
|
128
144
|
rb_define_method(cApplication, "on_motion", RUBY_METHOD_FUNC(on_motion), 1);
|
129
145
|
rb_define_method(cApplication, "on_preference", RUBY_METHOD_FUNC(on_preference), 1);
|
130
146
|
rb_define_method(cApplication, "on_about", RUBY_METHOD_FUNC(on_about), 1);
|
data/.doc/ext/reflex/device.cpp
CHANGED
@@ -1,19 +1,62 @@
|
|
1
|
-
#include "reflex/device.h"
|
1
|
+
#include "reflex/ruby/device.h"
|
2
|
+
|
3
|
+
|
2
4
|
#include "defs.h"
|
3
5
|
|
4
6
|
|
7
|
+
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Device)
|
8
|
+
|
9
|
+
#define THIS to<Reflex::Device*>(self)
|
10
|
+
|
11
|
+
#define CHECK RUCY_CHECK_OBJECT(Reflex::Device, self)
|
12
|
+
|
13
|
+
|
14
|
+
static
|
15
|
+
VALUE alloc(VALUE klass)
|
16
|
+
{
|
17
|
+
Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate Device class.");
|
18
|
+
}
|
19
|
+
|
20
|
+
static
|
21
|
+
VALUE name(VALUE self)
|
22
|
+
{
|
23
|
+
CHECK;
|
24
|
+
return value(THIS->name());
|
25
|
+
}
|
26
|
+
|
27
|
+
|
5
28
|
static
|
6
|
-
VALUE
|
29
|
+
VALUE s_vibrate(VALUE self)
|
7
30
|
{
|
8
31
|
Reflex::vibrate();
|
9
32
|
return self;
|
10
33
|
}
|
11
34
|
|
12
35
|
|
36
|
+
static Class cDevice;
|
37
|
+
|
13
38
|
void
|
14
39
|
Init_reflex_device ()
|
15
40
|
{
|
16
41
|
Module mReflex = rb_define_module("Reflex");
|
17
42
|
|
18
|
-
|
43
|
+
cDevice = mReflex.define_class("Device", Reflex::device_class());
|
44
|
+
rb_define_alloc_func(cDevice, alloc);
|
45
|
+
rb_define_method(cDevice, "name", RUBY_METHOD_FUNC(name), 0);
|
46
|
+
|
47
|
+
rb_define_singleton_method(mReflex, "vibrate", RUBY_METHOD_FUNC(s_vibrate), 0);
|
19
48
|
}
|
49
|
+
|
50
|
+
|
51
|
+
namespace Reflex
|
52
|
+
{
|
53
|
+
|
54
|
+
|
55
|
+
Class
|
56
|
+
device_class ()
|
57
|
+
{
|
58
|
+
return cDevice;
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
}// Reflex
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#include "reflex/ruby/event.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include "reflex/ruby/device.h"
|
5
|
+
#include "defs.h"
|
6
|
+
|
7
|
+
|
8
|
+
RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::DeviceEvent)
|
9
|
+
|
10
|
+
#define THIS to<Reflex::DeviceEvent*>(self)
|
11
|
+
|
12
|
+
#define CHECK RUCY_CHECK_OBJ(Reflex::DeviceEvent, self)
|
13
|
+
|
14
|
+
|
15
|
+
static
|
16
|
+
VALUE alloc(VALUE klass)
|
17
|
+
{
|
18
|
+
return new_type<Reflex::DeviceEvent>(klass);
|
19
|
+
}
|
20
|
+
|
21
|
+
static
|
22
|
+
VALUE initialize_copy(VALUE self, VALUE obj)
|
23
|
+
{
|
24
|
+
CHECK;
|
25
|
+
*THIS = to<Reflex::DeviceEvent&>(obj).dup();
|
26
|
+
return self;
|
27
|
+
}
|
28
|
+
|
29
|
+
static
|
30
|
+
VALUE get_device(VALUE self)
|
31
|
+
{
|
32
|
+
CHECK;
|
33
|
+
return value(THIS->device());
|
34
|
+
}
|
35
|
+
|
36
|
+
|
37
|
+
static Class cDeviceEvent;
|
38
|
+
|
39
|
+
void
|
40
|
+
Init_reflex_device_event ()
|
41
|
+
{
|
42
|
+
Module mReflex = rb_define_module("Reflex");
|
43
|
+
|
44
|
+
cDeviceEvent = mReflex.define_class("DeviceEvent", Reflex::event_class());
|
45
|
+
rb_define_alloc_func(cDeviceEvent, alloc);
|
46
|
+
rb_define_private_method(cDeviceEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
|
47
|
+
rb_define_method(cDeviceEvent, "device", RUBY_METHOD_FUNC(get_device), 0);
|
48
|
+
}
|
49
|
+
|
50
|
+
|
51
|
+
namespace Reflex
|
52
|
+
{
|
53
|
+
|
54
|
+
|
55
|
+
Class
|
56
|
+
device_event_class ()
|
57
|
+
{
|
58
|
+
return cDeviceEvent;
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
}// Reflex
|
@@ -256,25 +256,55 @@ VALUE get_key(VALUE self)
|
|
256
256
|
CASE(LAUNCH_APP1): SYMBOL1(launch_app1);
|
257
257
|
CASE(LAUNCH_APP2): SYMBOL1(launch_app2);
|
258
258
|
|
259
|
-
CASE(GAMEPAD_LEFT):
|
260
|
-
CASE(GAMEPAD_RIGHT):
|
261
|
-
CASE(GAMEPAD_UP):
|
262
|
-
CASE(GAMEPAD_DOWN):
|
263
|
-
CASE(
|
264
|
-
CASE(
|
265
|
-
CASE(
|
266
|
-
CASE(
|
267
|
-
CASE(
|
268
|
-
CASE(
|
269
|
-
CASE(
|
270
|
-
CASE(
|
271
|
-
CASE(
|
272
|
-
CASE(
|
273
|
-
CASE(
|
274
|
-
CASE(
|
275
|
-
CASE(
|
276
|
-
CASE(
|
277
|
-
CASE(
|
259
|
+
CASE(GAMEPAD_LEFT): SYMBOL1(gamepad_left);
|
260
|
+
CASE(GAMEPAD_RIGHT): SYMBOL1(gamepad_right);
|
261
|
+
CASE(GAMEPAD_UP): SYMBOL1(gamepad_up);
|
262
|
+
CASE(GAMEPAD_DOWN): SYMBOL1(gamepad_down);
|
263
|
+
CASE(GAMEPAD_LSTICK_LEFT): SYMBOL1(gamepad_lstick_left);
|
264
|
+
CASE(GAMEPAD_LSTICK_RIGHT): SYMBOL1(gamepad_lstick_right);
|
265
|
+
CASE(GAMEPAD_LSTICK_UP): SYMBOL1(gamepad_lstick_up);
|
266
|
+
CASE(GAMEPAD_LSTICK_DOWN): SYMBOL1(gamepad_lstick_down);
|
267
|
+
CASE(GAMEPAD_RSTICK_LEFT): SYMBOL1(gamepad_rstick_left);
|
268
|
+
CASE(GAMEPAD_RSTICK_RIGHT): SYMBOL1(gamepad_rstick_right);
|
269
|
+
CASE(GAMEPAD_RSTICK_UP): SYMBOL1(gamepad_rstick_up);
|
270
|
+
CASE(GAMEPAD_RSTICK_DOWN): SYMBOL1(gamepad_rstick_down);
|
271
|
+
CASE(GAMEPAD_A): SYMBOL1(gamepad_a);
|
272
|
+
CASE(GAMEPAD_B): SYMBOL1(gamepad_b);
|
273
|
+
CASE(GAMEPAD_X): SYMBOL1(gamepad_x);
|
274
|
+
CASE(GAMEPAD_Y): SYMBOL1(gamepad_y);
|
275
|
+
CASE(GAMEPAD_LTRIGGER): SYMBOL1(gamepad_ltrigger);
|
276
|
+
CASE(GAMEPAD_RTRIGGER): SYMBOL1(gamepad_rtrigger);
|
277
|
+
CASE(GAMEPAD_LSHOULDER): SYMBOL1(gamepad_lshoulder);
|
278
|
+
CASE(GAMEPAD_RSHOULDER): SYMBOL1(gamepad_rshoulder);
|
279
|
+
CASE(GAMEPAD_LTHUMB): SYMBOL1(gamepad_lthumb);
|
280
|
+
CASE(GAMEPAD_RTHUMB): SYMBOL1(gamepad_rthumb);
|
281
|
+
CASE(GAMEPAD_LPADDLE_0): SYMBOL1(gamepad_lpaddle_0);
|
282
|
+
CASE(GAMEPAD_LPADDLE_1): SYMBOL1(gamepad_lpaddle_1);
|
283
|
+
CASE(GAMEPAD_RPADDLE_0): SYMBOL1(gamepad_rpaddle_0);
|
284
|
+
CASE(GAMEPAD_RPADDLE_1): SYMBOL1(gamepad_rpaddle_1);
|
285
|
+
CASE(GAMEPAD_HOME): SYMBOL1(gamepad_home);
|
286
|
+
CASE(GAMEPAD_MENU): SYMBOL1(gamepad_menu);
|
287
|
+
CASE(GAMEPAD_OPTION): SYMBOL1(gamepad_option);
|
288
|
+
CASE(GAMEPAD_SHARE): SYMBOL1(gamepad_share);
|
289
|
+
CASE(GAMEPAD_START): SYMBOL1(gamepad_start);
|
290
|
+
CASE(GAMEPAD_SELECT): SYMBOL1(gamepad_select);
|
291
|
+
CASE(GAMEPAD_BUTTON_TOUCH): SYMBOL1(gamepad_button_touch);
|
292
|
+
CASE(GAMEPAD_BUTTON_0): SYMBOL1(gamepad_button_0);
|
293
|
+
CASE(GAMEPAD_BUTTON_1): SYMBOL1(gamepad_button_1);
|
294
|
+
CASE(GAMEPAD_BUTTON_2): SYMBOL1(gamepad_button_2);
|
295
|
+
CASE(GAMEPAD_BUTTON_3): SYMBOL1(gamepad_button_3);
|
296
|
+
CASE(GAMEPAD_BUTTON_4): SYMBOL1(gamepad_button_4);
|
297
|
+
CASE(GAMEPAD_BUTTON_5): SYMBOL1(gamepad_button_5);
|
298
|
+
CASE(GAMEPAD_BUTTON_6): SYMBOL1(gamepad_button_6);
|
299
|
+
CASE(GAMEPAD_BUTTON_7): SYMBOL1(gamepad_button_7);
|
300
|
+
CASE(GAMEPAD_BUTTON_8): SYMBOL1(gamepad_button_8);
|
301
|
+
CASE(GAMEPAD_BUTTON_9): SYMBOL1(gamepad_button_9);
|
302
|
+
CASE(GAMEPAD_BUTTON_10): SYMBOL1(gamepad_button_10);
|
303
|
+
CASE(GAMEPAD_BUTTON_11): SYMBOL1(gamepad_button_11);
|
304
|
+
CASE(GAMEPAD_BUTTON_12): SYMBOL1(gamepad_button_12);
|
305
|
+
CASE(GAMEPAD_BUTTON_13): SYMBOL1(gamepad_button_13);
|
306
|
+
CASE(GAMEPAD_BUTTON_14): SYMBOL1(gamepad_button_14);
|
307
|
+
CASE(GAMEPAD_BUTTON_15): SYMBOL1(gamepad_button_15);
|
278
308
|
|
279
309
|
#undef CASE
|
280
310
|
#undef SYMBOL1
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#include "reflex/ruby/midi.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <ranges>
|
5
|
+
#include "reflex/ruby/device.h"
|
6
|
+
#include "defs.h"
|
7
|
+
|
8
|
+
|
9
|
+
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MIDI)
|
10
|
+
|
11
|
+
#define THIS to<Reflex::MIDI*>(self)
|
12
|
+
|
13
|
+
#define CHECK RUCY_CHECK_OBJECT(Reflex::MIDI, self)
|
14
|
+
|
15
|
+
#define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
|
16
|
+
|
17
|
+
|
18
|
+
static
|
19
|
+
VALUE alloc(VALUE klass)
|
20
|
+
{
|
21
|
+
Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate MIDI class.");
|
22
|
+
}
|
23
|
+
|
24
|
+
static
|
25
|
+
VALUE on_note(VALUE self, VALUE event)
|
26
|
+
{
|
27
|
+
CHECK;
|
28
|
+
CALL(on_note(to<Reflex::NoteEvent*>(event)));
|
29
|
+
}
|
30
|
+
|
31
|
+
static
|
32
|
+
VALUE on_note_on(VALUE self, VALUE event)
|
33
|
+
{
|
34
|
+
CHECK;
|
35
|
+
CALL(on_note_on(to<Reflex::NoteEvent*>(event)));
|
36
|
+
}
|
37
|
+
|
38
|
+
static
|
39
|
+
VALUE on_note_off(VALUE self, VALUE event)
|
40
|
+
{
|
41
|
+
CHECK;
|
42
|
+
CALL(on_note_off(to<Reflex::NoteEvent*>(event)));
|
43
|
+
}
|
44
|
+
|
45
|
+
static
|
46
|
+
VALUE s_get_all(VALUE self)
|
47
|
+
{
|
48
|
+
auto list = Reflex::MIDI::all() |
|
49
|
+
std::views::transform([](auto& ref) {return value(ref);});
|
50
|
+
return array(list.begin(), list.end());
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
static Class cMIDI;
|
55
|
+
|
56
|
+
void
|
57
|
+
Init_reflex_midi ()
|
58
|
+
{
|
59
|
+
Module mReflex = rb_define_module("Reflex");
|
60
|
+
|
61
|
+
cMIDI = mReflex.define_class("MIDI", Reflex::device_class());
|
62
|
+
rb_define_alloc_func(cMIDI, alloc);
|
63
|
+
rb_define_method(cMIDI, "on_note", RUBY_METHOD_FUNC(on_note), 1);
|
64
|
+
rb_define_method(cMIDI, "on_note_on", RUBY_METHOD_FUNC(on_note_on), 1);
|
65
|
+
rb_define_method(cMIDI, "on_note_off", RUBY_METHOD_FUNC(on_note_off), 1);
|
66
|
+
|
67
|
+
rb_define_singleton_method(cMIDI, "all", RUBY_METHOD_FUNC(s_get_all), 0);
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
namespace Reflex
|
72
|
+
{
|
73
|
+
|
74
|
+
|
75
|
+
Class
|
76
|
+
midi_class ()
|
77
|
+
{
|
78
|
+
return cMIDI;
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
}// Reflex
|
data/.doc/ext/reflex/native.cpp
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
void Init_reflex ();
|
5
5
|
void Init_reflex_exception ();
|
6
6
|
|
7
|
+
void Init_reflex_pointer ();
|
7
8
|
void Init_reflex_selector ();
|
8
9
|
void Init_reflex_style ();
|
9
10
|
void Init_reflex_style_length ();
|
@@ -11,19 +12,20 @@ void Init_reflex_timer ();
|
|
11
12
|
void Init_reflex_filter ();
|
12
13
|
|
13
14
|
void Init_reflex_event ();
|
14
|
-
void
|
15
|
+
void Init_reflex_device_event ();
|
15
16
|
void Init_reflex_update_event ();
|
16
17
|
void Init_reflex_draw_event ();
|
17
18
|
void Init_reflex_frame_event ();
|
18
19
|
void Init_reflex_scroll_event ();
|
19
20
|
void Init_reflex_focus_event ();
|
20
21
|
void Init_reflex_key_event ();
|
21
|
-
void Init_reflex_pointer ();
|
22
22
|
void Init_reflex_pointer_event ();
|
23
23
|
void Init_reflex_wheel_event ();
|
24
|
+
void Init_reflex_note_event ();
|
24
25
|
void Init_reflex_capture_event ();
|
25
26
|
void Init_reflex_timer_event ();
|
26
27
|
void Init_reflex_contact_event ();
|
28
|
+
void Init_reflex_motion_event ();
|
27
29
|
|
28
30
|
void Init_reflex_shape ();
|
29
31
|
void Init_reflex_polygon_shape ();
|
@@ -37,6 +39,7 @@ void Init_reflex_window ();
|
|
37
39
|
void Init_reflex_view ();
|
38
40
|
|
39
41
|
void Init_reflex_device ();
|
42
|
+
void Init_reflex_midi ();
|
40
43
|
|
41
44
|
void Init_reflex_image_view ();
|
42
45
|
|
@@ -55,6 +58,7 @@ extern "C" void
|
|
55
58
|
Init_reflex();
|
56
59
|
Init_reflex_exception();
|
57
60
|
|
61
|
+
Init_reflex_pointer();
|
58
62
|
Init_reflex_selector();
|
59
63
|
Init_reflex_style();
|
60
64
|
Init_reflex_style_length();
|
@@ -62,19 +66,20 @@ extern "C" void
|
|
62
66
|
Init_reflex_filter();
|
63
67
|
|
64
68
|
Init_reflex_event();
|
65
|
-
|
69
|
+
Init_reflex_device_event();
|
66
70
|
Init_reflex_update_event();
|
67
71
|
Init_reflex_draw_event();
|
68
72
|
Init_reflex_frame_event();
|
69
73
|
Init_reflex_scroll_event();
|
70
74
|
Init_reflex_focus_event();
|
71
75
|
Init_reflex_key_event();
|
72
|
-
Init_reflex_pointer();
|
73
76
|
Init_reflex_pointer_event();
|
74
77
|
Init_reflex_wheel_event();
|
78
|
+
Init_reflex_note_event();
|
75
79
|
Init_reflex_capture_event();
|
76
80
|
Init_reflex_timer_event();
|
77
81
|
Init_reflex_contact_event();
|
82
|
+
Init_reflex_motion_event();
|
78
83
|
|
79
84
|
Init_reflex_shape();
|
80
85
|
Init_reflex_polygon_shape();
|
@@ -88,6 +93,7 @@ extern "C" void
|
|
88
93
|
Init_reflex_view();
|
89
94
|
|
90
95
|
Init_reflex_device();
|
96
|
+
Init_reflex_midi();
|
91
97
|
|
92
98
|
Init_reflex_image_view();
|
93
99
|
|
@@ -0,0 +1,121 @@
|
|
1
|
+
#include "reflex/ruby/event.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include "defs.h"
|
5
|
+
|
6
|
+
|
7
|
+
RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::NoteEvent)
|
8
|
+
|
9
|
+
#define THIS to<Reflex::NoteEvent*>(self)
|
10
|
+
|
11
|
+
#define CHECK RUCY_CHECK_OBJ(Reflex::NoteEvent, self)
|
12
|
+
|
13
|
+
|
14
|
+
static
|
15
|
+
VALUE alloc(VALUE klass)
|
16
|
+
{
|
17
|
+
return new_type<Reflex::NoteEvent>(klass);
|
18
|
+
}
|
19
|
+
|
20
|
+
static
|
21
|
+
VALUE initialize(VALUE self, VALUE action, VALUE channel, VALUE note, VALUE velocity, VALUE time)
|
22
|
+
{
|
23
|
+
CHECK;
|
24
|
+
|
25
|
+
*THIS = Reflex::NoteEvent(
|
26
|
+
(Reflex::NoteEvent::Action) to<uint>(action),
|
27
|
+
to<int>(channel),
|
28
|
+
to<int>(note),
|
29
|
+
to<float>(velocity),
|
30
|
+
to<double>(time));
|
31
|
+
|
32
|
+
return rb_call_super(0, NULL);
|
33
|
+
}
|
34
|
+
|
35
|
+
static
|
36
|
+
VALUE initialize_copy(VALUE self, VALUE obj)
|
37
|
+
{
|
38
|
+
CHECK;
|
39
|
+
*THIS = to<Reflex::NoteEvent&>(obj).dup();
|
40
|
+
return self;
|
41
|
+
}
|
42
|
+
|
43
|
+
static
|
44
|
+
VALUE get_action(VALUE self)
|
45
|
+
{
|
46
|
+
CHECK;
|
47
|
+
return value(THIS->action());
|
48
|
+
}
|
49
|
+
|
50
|
+
static
|
51
|
+
VALUE get_channel(VALUE self)
|
52
|
+
{
|
53
|
+
CHECK;
|
54
|
+
return value(THIS->channel());
|
55
|
+
}
|
56
|
+
|
57
|
+
static
|
58
|
+
VALUE get_note(VALUE self)
|
59
|
+
{
|
60
|
+
CHECK;
|
61
|
+
return value(THIS->note());
|
62
|
+
}
|
63
|
+
|
64
|
+
static
|
65
|
+
VALUE get_frequency(VALUE self)
|
66
|
+
{
|
67
|
+
CHECK;
|
68
|
+
return value(THIS->frequency());
|
69
|
+
}
|
70
|
+
|
71
|
+
static
|
72
|
+
VALUE get_velocity(VALUE self)
|
73
|
+
{
|
74
|
+
CHECK;
|
75
|
+
return value(THIS->velocity());
|
76
|
+
}
|
77
|
+
|
78
|
+
static
|
79
|
+
VALUE is_captured(VALUE self)
|
80
|
+
{
|
81
|
+
CHECK;
|
82
|
+
return value(THIS->is_captured());
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
static Class cNoteEvent;
|
87
|
+
|
88
|
+
void
|
89
|
+
Init_reflex_note_event ()
|
90
|
+
{
|
91
|
+
Module mReflex = rb_define_module("Reflex");
|
92
|
+
|
93
|
+
cNoteEvent = mReflex.define_class("NoteEvent", Reflex::event_class());
|
94
|
+
rb_define_alloc_func(cNoteEvent, alloc);
|
95
|
+
rb_define_private_method(cNoteEvent, "initialize", RUBY_METHOD_FUNC(initialize), 5);
|
96
|
+
rb_define_private_method(cNoteEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
|
97
|
+
rb_define_method(cNoteEvent, "action", RUBY_METHOD_FUNC(get_action), 0);
|
98
|
+
rb_define_method(cNoteEvent, "channel", RUBY_METHOD_FUNC(get_channel), 0);
|
99
|
+
rb_define_method(cNoteEvent, "note", RUBY_METHOD_FUNC(get_note), 0);
|
100
|
+
rb_define_method(cNoteEvent, "frequency", RUBY_METHOD_FUNC(get_frequency), 0);
|
101
|
+
rb_define_method(cNoteEvent, "velocity", RUBY_METHOD_FUNC(get_velocity), 0);
|
102
|
+
cNoteEvent.define_method("captured?", is_captured);
|
103
|
+
|
104
|
+
cNoteEvent.define_const("ACTION_NONE", Reflex::NoteEvent::ACTION_NONE);
|
105
|
+
cNoteEvent.define_const("ON", Reflex::NoteEvent::ON);
|
106
|
+
cNoteEvent.define_const("OFF", Reflex::NoteEvent::OFF);
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
namespace Reflex
|
111
|
+
{
|
112
|
+
|
113
|
+
|
114
|
+
Class
|
115
|
+
note_event_class ()
|
116
|
+
{
|
117
|
+
return cNoteEvent;
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
}// Reflex
|
data/.doc/ext/reflex/reflex.cpp
CHANGED
@@ -3,21 +3,31 @@
|
|
3
3
|
|
4
4
|
#include "reflex/ruby/view.h"
|
5
5
|
#include "reflex/ruby/timer.h"
|
6
|
+
#include "reflex/ruby/midi.h"
|
6
7
|
#include "../../src/window.h"
|
7
8
|
#include "../../src/timer.h"
|
9
|
+
#include "../../src/midi.h"
|
8
10
|
#include "defs.h"
|
9
11
|
|
10
12
|
|
11
13
|
static Reflex::View*
|
12
14
|
create_root_view ()
|
13
15
|
{
|
14
|
-
return new Reflex::RubyView<Reflex::View
|
16
|
+
return new Reflex::RubyView<Reflex::View>();
|
15
17
|
}
|
16
18
|
|
17
19
|
static Reflex::Timer*
|
18
20
|
create_timer ()
|
19
21
|
{
|
20
|
-
return new Reflex::RubyTimer<Reflex::Timer
|
22
|
+
return new Reflex::RubyTimer<Reflex::Timer>();
|
23
|
+
}
|
24
|
+
|
25
|
+
static Reflex::MIDI*
|
26
|
+
create_midi ()
|
27
|
+
{
|
28
|
+
Reflex::MIDI* midi = new Reflex::RubyMIDI<Reflex::MIDI>();
|
29
|
+
value(midi);// apply MIDI class to ClassWrapper's value
|
30
|
+
return midi;
|
21
31
|
}
|
22
32
|
|
23
33
|
|
@@ -27,6 +37,7 @@ VALUE init(VALUE self)
|
|
27
37
|
Reflex::init();
|
28
38
|
Reflex::Window_set_create_root_view_fun(create_root_view);
|
29
39
|
Reflex::Timer_set_create_fun(create_timer);
|
40
|
+
Reflex::MIDI_set_create_fun(create_midi);
|
30
41
|
|
31
42
|
return self;
|
32
43
|
}
|
@@ -36,11 +47,20 @@ VALUE fin(VALUE self)
|
|
36
47
|
{
|
37
48
|
Reflex::Window_set_create_root_view_fun(NULL);
|
38
49
|
Reflex::Timer_set_create_fun(NULL);
|
50
|
+
Reflex::MIDI_set_create_fun(NULL);
|
39
51
|
Reflex::fin();
|
40
52
|
|
41
53
|
return self;
|
42
54
|
}
|
43
55
|
|
56
|
+
static
|
57
|
+
VALUE process_events(VALUE self)
|
58
|
+
{
|
59
|
+
Reflex::process_events();
|
60
|
+
|
61
|
+
return self;
|
62
|
+
}
|
63
|
+
|
44
64
|
|
45
65
|
static Module mReflex;
|
46
66
|
|
@@ -50,6 +70,7 @@ Init_reflex ()
|
|
50
70
|
mReflex = rb_define_module("Reflex");
|
51
71
|
mReflex.define_singleton_method("init!", init);
|
52
72
|
mReflex.define_singleton_method("fin!", fin);
|
73
|
+
mReflex.define_singleton_method("process_events!", process_events);
|
53
74
|
|
54
75
|
using namespace Reflex;
|
55
76
|
|
@@ -259,16 +280,17 @@ Init_reflex ()
|
|
259
280
|
DEFINE_CONST(KEY_GAMEPAD_X);
|
260
281
|
DEFINE_CONST(KEY_GAMEPAD_Y);
|
261
282
|
|
262
|
-
DEFINE_CONST(
|
263
|
-
DEFINE_CONST(
|
264
|
-
DEFINE_CONST(
|
265
|
-
DEFINE_CONST(
|
266
|
-
DEFINE_CONST(
|
267
|
-
DEFINE_CONST(
|
283
|
+
DEFINE_CONST(KEY_GAMEPAD_LSHOULDER);
|
284
|
+
DEFINE_CONST(KEY_GAMEPAD_RSHOULDER);
|
285
|
+
DEFINE_CONST(KEY_GAMEPAD_LTRIGGER);
|
286
|
+
DEFINE_CONST(KEY_GAMEPAD_RTRIGGER);
|
287
|
+
DEFINE_CONST(KEY_GAMEPAD_LTHUMB);
|
288
|
+
DEFINE_CONST(KEY_GAMEPAD_RTHUMB);
|
268
289
|
|
269
290
|
DEFINE_CONST(KEY_GAMEPAD_HOME);
|
270
291
|
DEFINE_CONST(KEY_GAMEPAD_MENU);
|
271
292
|
DEFINE_CONST(KEY_GAMEPAD_OPTION);
|
293
|
+
DEFINE_CONST(KEY_GAMEPAD_SHARE);
|
272
294
|
DEFINE_CONST(KEY_GAMEPAD_START);
|
273
295
|
DEFINE_CONST(KEY_GAMEPAD_SELECT);
|
274
296
|
|
data/.doc/ext/reflex/view.cpp
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
#include <vector>
|
5
|
+
#include <ranges>
|
5
6
|
#include <rays/ruby/point.h>
|
6
7
|
#include <rays/ruby/bounds.h>
|
7
8
|
#include <rays/ruby/polygon.h>
|
@@ -25,16 +26,6 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::View)
|
|
25
26
|
#define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
|
26
27
|
|
27
28
|
|
28
|
-
template <typename T>
|
29
|
-
static inline Value
|
30
|
-
array (T begin, T end)
|
31
|
-
{
|
32
|
-
std::vector<Value> v;
|
33
|
-
for (T it = begin; it != end; ++it) v.push_back(value(*it));
|
34
|
-
return array(&v[0], v.size());
|
35
|
-
}
|
36
|
-
|
37
|
-
|
38
29
|
static
|
39
30
|
VALUE alloc(VALUE klass)
|
40
31
|
{
|
@@ -194,8 +185,9 @@ VALUE find_children(VALUE self)
|
|
194
185
|
|
195
186
|
bool recursive = (argc >= 2) ? to<bool>(argv[1]) : true;
|
196
187
|
|
197
|
-
|
198
|
-
THIS->find_children(to<Reflex::Selector>(argv[0]), recursive)
|
188
|
+
auto children =
|
189
|
+
THIS->find_children(to<Reflex::Selector>(argv[0]), recursive) |
|
190
|
+
std::views::transform([](auto& ref) {return value(ref);});
|
199
191
|
return array(children.begin(), children.end());
|
200
192
|
}
|
201
193
|
|
@@ -249,8 +241,9 @@ VALUE find_styles(VALUE self)
|
|
249
241
|
|
250
242
|
bool recursive = (argc >= 2) ? to<bool>(argv[1]) : false;
|
251
243
|
|
252
|
-
|
253
|
-
THIS->find_styles(to<Reflex::Selector>(argv[0]), recursive)
|
244
|
+
auto styles =
|
245
|
+
THIS->find_styles(to<Reflex::Selector>(argv[0]), recursive) |
|
246
|
+
std::views::transform([](auto& ref) {return value(ref);});
|
254
247
|
return array(styles.begin(), styles.end());
|
255
248
|
}
|
256
249
|
|
@@ -327,8 +320,9 @@ VALUE find_shapes(VALUE self)
|
|
327
320
|
CHECK;
|
328
321
|
check_arg_count(__FILE__, __LINE__, "View#find_shapes", argc, 1);
|
329
322
|
|
330
|
-
|
331
|
-
THIS->find_shapes(to<Reflex::Selector>(argv[0]))
|
323
|
+
auto shapes =
|
324
|
+
THIS->find_shapes(to<Reflex::Selector>(argv[0])) |
|
325
|
+
std::views::transform([](auto& ref) {return value(ref);});
|
332
326
|
return array(shapes.begin(), shapes.end());
|
333
327
|
}
|
334
328
|
|
@@ -1231,6 +1225,7 @@ Init_reflex_view ()
|
|
1231
1225
|
cView.define_const("CAPTURE_NONE", Reflex::View::CAPTURE_NONE);
|
1232
1226
|
cView.define_const("CAPTURE_KEY", Reflex::View::CAPTURE_KEY);
|
1233
1227
|
cView.define_const("CAPTURE_POINTER", Reflex::View::CAPTURE_POINTER);
|
1228
|
+
cView.define_const("CAPTURE_NOTE", Reflex::View::CAPTURE_NOTE);
|
1234
1229
|
cView.define_const("CAPTURE_ALL", Reflex::View::CAPTURE_ALL);
|
1235
1230
|
|
1236
1231
|
define_selector_methods<Reflex::View>(cView);
|