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
data/.doc/ext/reflex/window.cpp
CHANGED
@@ -369,6 +369,27 @@ VALUE on_wheel(VALUE self, VALUE event)
|
|
369
369
|
CALL(on_wheel(to<Reflex::WheelEvent*>(event)));
|
370
370
|
}
|
371
371
|
|
372
|
+
static
|
373
|
+
VALUE on_note(VALUE self, VALUE event)
|
374
|
+
{
|
375
|
+
CHECK;
|
376
|
+
CALL(on_note(to<Reflex::NoteEvent*>(event)));
|
377
|
+
}
|
378
|
+
|
379
|
+
static
|
380
|
+
VALUE on_note_on(VALUE self, VALUE event)
|
381
|
+
{
|
382
|
+
CHECK;
|
383
|
+
CALL(on_note_on(to<Reflex::NoteEvent*>(event)));
|
384
|
+
}
|
385
|
+
|
386
|
+
static
|
387
|
+
VALUE on_note_off(VALUE self, VALUE event)
|
388
|
+
{
|
389
|
+
CHECK;
|
390
|
+
CALL(on_note_off(to<Reflex::NoteEvent*>(event)));
|
391
|
+
}
|
392
|
+
|
372
393
|
|
373
394
|
static Class cWindow;
|
374
395
|
|
@@ -422,6 +443,9 @@ Init_reflex_window ()
|
|
422
443
|
rb_define_method(cWindow, "on_pointer_move", RUBY_METHOD_FUNC(on_pointer_move), 1);
|
423
444
|
rb_define_method(cWindow, "on_pointer_cancel", RUBY_METHOD_FUNC(on_pointer_cancel), 1);
|
424
445
|
rb_define_method(cWindow, "on_wheel", RUBY_METHOD_FUNC(on_wheel), 1);
|
446
|
+
rb_define_method(cWindow, "on_note", RUBY_METHOD_FUNC(on_note), 1);
|
447
|
+
rb_define_method(cWindow, "on_note_on", RUBY_METHOD_FUNC(on_note_on), 1);
|
448
|
+
rb_define_method(cWindow, "on_note_off", RUBY_METHOD_FUNC(on_note_off), 1);
|
425
449
|
|
426
450
|
cWindow.define_const("ORIENTATION_PORTRAIT", Reflex::Window::FLAG_PORTRAIT);
|
427
451
|
cWindow.define_const("ORIENTATION_LANDSCAPE", Reflex::Window::FLAG_LANDSCAPE);
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,22 @@
|
|
1
1
|
# reflex ChangeLog
|
2
2
|
|
3
3
|
|
4
|
+
## [v0.3.7] - 2025-05-11
|
5
|
+
|
6
|
+
- Add MIDI class
|
7
|
+
- Add NoteEvent class and on_note and on_note_on/off event handlers
|
8
|
+
- Add reflex/test/test_note_event.rb
|
9
|
+
- KeyEvent can take 'time' parameter
|
10
|
+
|
11
|
+
|
12
|
+
## [v0.3.6] - 2025-04-08
|
13
|
+
|
14
|
+
- Add Gamepad class
|
15
|
+
- Add Device and DeviceEvent classes
|
16
|
+
- Add Application#on_device_connect/disconnect
|
17
|
+
- Add Application_call_start() and Application_call_quit()
|
18
|
+
|
19
|
+
|
4
20
|
## [v0.3.5] - 2025-03-24
|
5
21
|
|
6
22
|
- Add PULL_REQUEST_TEMPLATE.md
|
data/Rakefile
CHANGED
@@ -21,6 +21,13 @@ use_external_library 'https://github.com/erincatto/box2d',
|
|
21
21
|
incdirs: %w[include src],
|
22
22
|
srcdirs: 'src'
|
23
23
|
|
24
|
+
use_external_library 'https://github.com/thestk/rtmidi',
|
25
|
+
tag: '6.0.0',
|
26
|
+
incdirs: 'rtmidi',
|
27
|
+
srcdirs: 'rtmidi',
|
28
|
+
defs: '__MACOSX_CORE__',
|
29
|
+
&proc {sh %( mkdir rtmidi && cp RtMidi.* rtmidi )}
|
30
|
+
|
24
31
|
default_tasks :ext
|
25
32
|
use_bundler
|
26
33
|
build_native_library
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.7
|
data/ext/reflex/application.cpp
CHANGED
@@ -89,6 +89,22 @@ RUCY_DEF1(on_quit, event)
|
|
89
89
|
}
|
90
90
|
RUCY_END
|
91
91
|
|
92
|
+
static
|
93
|
+
RUCY_DEF1(on_device_connect, event)
|
94
|
+
{
|
95
|
+
CHECK;
|
96
|
+
CALL(on_device_connect(to<Reflex::DeviceEvent*>(event)));
|
97
|
+
}
|
98
|
+
RUCY_END
|
99
|
+
|
100
|
+
static
|
101
|
+
RUCY_DEF1(on_device_disconnect, event)
|
102
|
+
{
|
103
|
+
CHECK;
|
104
|
+
CALL(on_device_disconnect(to<Reflex::DeviceEvent*>(event)));
|
105
|
+
}
|
106
|
+
RUCY_END
|
107
|
+
|
92
108
|
static
|
93
109
|
RUCY_DEF1(on_motion, event)
|
94
110
|
{
|
@@ -137,6 +153,8 @@ Init_reflex_application ()
|
|
137
153
|
cApplication.define_method("each_window", each_window);
|
138
154
|
cApplication.define_method("on_start", on_start);
|
139
155
|
cApplication.define_method("on_quit", on_quit);
|
156
|
+
cApplication.define_method("on_device_connect", on_device_connect);
|
157
|
+
cApplication.define_method("on_device_disconnect", on_device_disconnect);
|
140
158
|
cApplication.define_method("on_motion", on_motion);
|
141
159
|
cApplication.define_method("on_preference", on_preference);
|
142
160
|
cApplication.define_method("on_about", on_about);
|
data/ext/reflex/device.cpp
CHANGED
@@ -1,9 +1,34 @@
|
|
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
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
16
|
+
{
|
17
|
+
Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate Device class.");
|
18
|
+
}
|
19
|
+
RUCY_END
|
20
|
+
|
21
|
+
static
|
22
|
+
RUCY_DEF0(name)
|
23
|
+
{
|
24
|
+
CHECK;
|
25
|
+
return value(THIS->name());
|
26
|
+
}
|
27
|
+
RUCY_END
|
28
|
+
|
29
|
+
|
5
30
|
static
|
6
|
-
RUCY_DEF0(
|
31
|
+
RUCY_DEF0(s_vibrate)
|
7
32
|
{
|
8
33
|
Reflex::vibrate();
|
9
34
|
return self;
|
@@ -11,10 +36,30 @@ RUCY_DEF0(vibrate)
|
|
11
36
|
RUCY_END
|
12
37
|
|
13
38
|
|
39
|
+
static Class cDevice;
|
40
|
+
|
14
41
|
void
|
15
42
|
Init_reflex_device ()
|
16
43
|
{
|
17
44
|
Module mReflex = define_module("Reflex");
|
18
45
|
|
19
|
-
mReflex.
|
46
|
+
cDevice = mReflex.define_class("Device", Reflex::device_class());
|
47
|
+
cDevice.define_alloc_func(alloc);
|
48
|
+
cDevice.define_method("name", name);
|
49
|
+
|
50
|
+
mReflex.define_singleton_method("vibrate", s_vibrate);
|
20
51
|
}
|
52
|
+
|
53
|
+
|
54
|
+
namespace Reflex
|
55
|
+
{
|
56
|
+
|
57
|
+
|
58
|
+
Class
|
59
|
+
device_class ()
|
60
|
+
{
|
61
|
+
return cDevice;
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
}// Reflex
|
@@ -0,0 +1,65 @@
|
|
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
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
17
|
+
{
|
18
|
+
return new_type<Reflex::DeviceEvent>(klass);
|
19
|
+
}
|
20
|
+
RUCY_END
|
21
|
+
|
22
|
+
static
|
23
|
+
RUCY_DEF1(initialize_copy, obj)
|
24
|
+
{
|
25
|
+
CHECK;
|
26
|
+
*THIS = to<Reflex::DeviceEvent&>(obj).dup();
|
27
|
+
return self;
|
28
|
+
}
|
29
|
+
RUCY_END
|
30
|
+
|
31
|
+
static
|
32
|
+
RUCY_DEF0(get_device)
|
33
|
+
{
|
34
|
+
CHECK;
|
35
|
+
return value(THIS->device());
|
36
|
+
}
|
37
|
+
RUCY_END
|
38
|
+
|
39
|
+
|
40
|
+
static Class cDeviceEvent;
|
41
|
+
|
42
|
+
void
|
43
|
+
Init_reflex_device_event ()
|
44
|
+
{
|
45
|
+
Module mReflex = define_module("Reflex");
|
46
|
+
|
47
|
+
cDeviceEvent = mReflex.define_class("DeviceEvent", Reflex::event_class());
|
48
|
+
cDeviceEvent.define_alloc_func(alloc);
|
49
|
+
cDeviceEvent.define_private_method("initialize_copy", initialize_copy);
|
50
|
+
cDeviceEvent.define_method("device", get_device);
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
namespace Reflex
|
55
|
+
{
|
56
|
+
|
57
|
+
|
58
|
+
Class
|
59
|
+
device_event_class ()
|
60
|
+
{
|
61
|
+
return cDeviceEvent;
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
}// Reflex
|
data/ext/reflex/key_event.cpp
CHANGED
@@ -260,25 +260,55 @@ RUCY_DEF0(get_key)
|
|
260
260
|
CASE(LAUNCH_APP1): SYMBOL1(launch_app1);
|
261
261
|
CASE(LAUNCH_APP2): SYMBOL1(launch_app2);
|
262
262
|
|
263
|
-
CASE(GAMEPAD_LEFT):
|
264
|
-
CASE(GAMEPAD_RIGHT):
|
265
|
-
CASE(GAMEPAD_UP):
|
266
|
-
CASE(GAMEPAD_DOWN):
|
267
|
-
CASE(
|
268
|
-
CASE(
|
269
|
-
CASE(
|
270
|
-
CASE(
|
271
|
-
CASE(
|
272
|
-
CASE(
|
273
|
-
CASE(
|
274
|
-
CASE(
|
275
|
-
CASE(
|
276
|
-
CASE(
|
277
|
-
CASE(
|
278
|
-
CASE(
|
279
|
-
CASE(
|
280
|
-
CASE(
|
281
|
-
CASE(
|
263
|
+
CASE(GAMEPAD_LEFT): SYMBOL1(gamepad_left);
|
264
|
+
CASE(GAMEPAD_RIGHT): SYMBOL1(gamepad_right);
|
265
|
+
CASE(GAMEPAD_UP): SYMBOL1(gamepad_up);
|
266
|
+
CASE(GAMEPAD_DOWN): SYMBOL1(gamepad_down);
|
267
|
+
CASE(GAMEPAD_LSTICK_LEFT): SYMBOL1(gamepad_lstick_left);
|
268
|
+
CASE(GAMEPAD_LSTICK_RIGHT): SYMBOL1(gamepad_lstick_right);
|
269
|
+
CASE(GAMEPAD_LSTICK_UP): SYMBOL1(gamepad_lstick_up);
|
270
|
+
CASE(GAMEPAD_LSTICK_DOWN): SYMBOL1(gamepad_lstick_down);
|
271
|
+
CASE(GAMEPAD_RSTICK_LEFT): SYMBOL1(gamepad_rstick_left);
|
272
|
+
CASE(GAMEPAD_RSTICK_RIGHT): SYMBOL1(gamepad_rstick_right);
|
273
|
+
CASE(GAMEPAD_RSTICK_UP): SYMBOL1(gamepad_rstick_up);
|
274
|
+
CASE(GAMEPAD_RSTICK_DOWN): SYMBOL1(gamepad_rstick_down);
|
275
|
+
CASE(GAMEPAD_A): SYMBOL1(gamepad_a);
|
276
|
+
CASE(GAMEPAD_B): SYMBOL1(gamepad_b);
|
277
|
+
CASE(GAMEPAD_X): SYMBOL1(gamepad_x);
|
278
|
+
CASE(GAMEPAD_Y): SYMBOL1(gamepad_y);
|
279
|
+
CASE(GAMEPAD_LTRIGGER): SYMBOL1(gamepad_ltrigger);
|
280
|
+
CASE(GAMEPAD_RTRIGGER): SYMBOL1(gamepad_rtrigger);
|
281
|
+
CASE(GAMEPAD_LSHOULDER): SYMBOL1(gamepad_lshoulder);
|
282
|
+
CASE(GAMEPAD_RSHOULDER): SYMBOL1(gamepad_rshoulder);
|
283
|
+
CASE(GAMEPAD_LTHUMB): SYMBOL1(gamepad_lthumb);
|
284
|
+
CASE(GAMEPAD_RTHUMB): SYMBOL1(gamepad_rthumb);
|
285
|
+
CASE(GAMEPAD_LPADDLE_0): SYMBOL1(gamepad_lpaddle_0);
|
286
|
+
CASE(GAMEPAD_LPADDLE_1): SYMBOL1(gamepad_lpaddle_1);
|
287
|
+
CASE(GAMEPAD_RPADDLE_0): SYMBOL1(gamepad_rpaddle_0);
|
288
|
+
CASE(GAMEPAD_RPADDLE_1): SYMBOL1(gamepad_rpaddle_1);
|
289
|
+
CASE(GAMEPAD_HOME): SYMBOL1(gamepad_home);
|
290
|
+
CASE(GAMEPAD_MENU): SYMBOL1(gamepad_menu);
|
291
|
+
CASE(GAMEPAD_OPTION): SYMBOL1(gamepad_option);
|
292
|
+
CASE(GAMEPAD_SHARE): SYMBOL1(gamepad_share);
|
293
|
+
CASE(GAMEPAD_START): SYMBOL1(gamepad_start);
|
294
|
+
CASE(GAMEPAD_SELECT): SYMBOL1(gamepad_select);
|
295
|
+
CASE(GAMEPAD_BUTTON_TOUCH): SYMBOL1(gamepad_button_touch);
|
296
|
+
CASE(GAMEPAD_BUTTON_0): SYMBOL1(gamepad_button_0);
|
297
|
+
CASE(GAMEPAD_BUTTON_1): SYMBOL1(gamepad_button_1);
|
298
|
+
CASE(GAMEPAD_BUTTON_2): SYMBOL1(gamepad_button_2);
|
299
|
+
CASE(GAMEPAD_BUTTON_3): SYMBOL1(gamepad_button_3);
|
300
|
+
CASE(GAMEPAD_BUTTON_4): SYMBOL1(gamepad_button_4);
|
301
|
+
CASE(GAMEPAD_BUTTON_5): SYMBOL1(gamepad_button_5);
|
302
|
+
CASE(GAMEPAD_BUTTON_6): SYMBOL1(gamepad_button_6);
|
303
|
+
CASE(GAMEPAD_BUTTON_7): SYMBOL1(gamepad_button_7);
|
304
|
+
CASE(GAMEPAD_BUTTON_8): SYMBOL1(gamepad_button_8);
|
305
|
+
CASE(GAMEPAD_BUTTON_9): SYMBOL1(gamepad_button_9);
|
306
|
+
CASE(GAMEPAD_BUTTON_10): SYMBOL1(gamepad_button_10);
|
307
|
+
CASE(GAMEPAD_BUTTON_11): SYMBOL1(gamepad_button_11);
|
308
|
+
CASE(GAMEPAD_BUTTON_12): SYMBOL1(gamepad_button_12);
|
309
|
+
CASE(GAMEPAD_BUTTON_13): SYMBOL1(gamepad_button_13);
|
310
|
+
CASE(GAMEPAD_BUTTON_14): SYMBOL1(gamepad_button_14);
|
311
|
+
CASE(GAMEPAD_BUTTON_15): SYMBOL1(gamepad_button_15);
|
282
312
|
|
283
313
|
#undef CASE
|
284
314
|
#undef SYMBOL1
|
data/ext/reflex/midi.cpp
ADDED
@@ -0,0 +1,87 @@
|
|
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
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
20
|
+
{
|
21
|
+
Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate MIDI class.");
|
22
|
+
}
|
23
|
+
RUCY_END
|
24
|
+
|
25
|
+
static
|
26
|
+
RUCY_DEF1(on_note, event)
|
27
|
+
{
|
28
|
+
CHECK;
|
29
|
+
CALL(on_note(to<Reflex::NoteEvent*>(event)));
|
30
|
+
}
|
31
|
+
RUCY_END
|
32
|
+
|
33
|
+
static
|
34
|
+
RUCY_DEF1(on_note_on, event)
|
35
|
+
{
|
36
|
+
CHECK;
|
37
|
+
CALL(on_note_on(to<Reflex::NoteEvent*>(event)));
|
38
|
+
}
|
39
|
+
RUCY_END
|
40
|
+
|
41
|
+
static
|
42
|
+
RUCY_DEF1(on_note_off, event)
|
43
|
+
{
|
44
|
+
CHECK;
|
45
|
+
CALL(on_note_off(to<Reflex::NoteEvent*>(event)));
|
46
|
+
}
|
47
|
+
RUCY_END
|
48
|
+
|
49
|
+
static
|
50
|
+
RUCY_DEF0(s_get_all)
|
51
|
+
{
|
52
|
+
auto list = Reflex::MIDI::all() |
|
53
|
+
std::views::transform([](auto& ref) {return value(ref);});
|
54
|
+
return array(list.begin(), list.end());
|
55
|
+
}
|
56
|
+
RUCY_END
|
57
|
+
|
58
|
+
|
59
|
+
static Class cMIDI;
|
60
|
+
|
61
|
+
void
|
62
|
+
Init_reflex_midi ()
|
63
|
+
{
|
64
|
+
Module mReflex = define_module("Reflex");
|
65
|
+
|
66
|
+
cMIDI = mReflex.define_class("MIDI", Reflex::device_class());
|
67
|
+
cMIDI.define_alloc_func(alloc);
|
68
|
+
cMIDI.define_method("on_note", on_note);
|
69
|
+
cMIDI.define_method("on_note_on", on_note_on);
|
70
|
+
cMIDI.define_method("on_note_off", on_note_off);
|
71
|
+
|
72
|
+
cMIDI.define_singleton_method("all", s_get_all);
|
73
|
+
}
|
74
|
+
|
75
|
+
|
76
|
+
namespace Reflex
|
77
|
+
{
|
78
|
+
|
79
|
+
|
80
|
+
Class
|
81
|
+
midi_class ()
|
82
|
+
{
|
83
|
+
return cMIDI;
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
}// Reflex
|
data/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,130 @@
|
|
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
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
16
|
+
{
|
17
|
+
return new_type<Reflex::NoteEvent>(klass);
|
18
|
+
}
|
19
|
+
RUCY_END
|
20
|
+
|
21
|
+
static
|
22
|
+
RUCY_DEF5(initialize, action, channel, note, velocity, time)
|
23
|
+
{
|
24
|
+
CHECK;
|
25
|
+
|
26
|
+
*THIS = Reflex::NoteEvent(
|
27
|
+
(Reflex::NoteEvent::Action) to<uint>(action),
|
28
|
+
to<int>(channel),
|
29
|
+
to<int>(note),
|
30
|
+
to<float>(velocity),
|
31
|
+
to<double>(time));
|
32
|
+
|
33
|
+
return rb_call_super(0, NULL);
|
34
|
+
}
|
35
|
+
RUCY_END
|
36
|
+
|
37
|
+
static
|
38
|
+
RUCY_DEF1(initialize_copy, obj)
|
39
|
+
{
|
40
|
+
CHECK;
|
41
|
+
*THIS = to<Reflex::NoteEvent&>(obj).dup();
|
42
|
+
return self;
|
43
|
+
}
|
44
|
+
RUCY_END
|
45
|
+
|
46
|
+
static
|
47
|
+
RUCY_DEF0(get_action)
|
48
|
+
{
|
49
|
+
CHECK;
|
50
|
+
return value(THIS->action());
|
51
|
+
}
|
52
|
+
RUCY_END
|
53
|
+
|
54
|
+
static
|
55
|
+
RUCY_DEF0(get_channel)
|
56
|
+
{
|
57
|
+
CHECK;
|
58
|
+
return value(THIS->channel());
|
59
|
+
}
|
60
|
+
RUCY_END
|
61
|
+
|
62
|
+
static
|
63
|
+
RUCY_DEF0(get_note)
|
64
|
+
{
|
65
|
+
CHECK;
|
66
|
+
return value(THIS->note());
|
67
|
+
}
|
68
|
+
RUCY_END
|
69
|
+
|
70
|
+
static
|
71
|
+
RUCY_DEF0(get_frequency)
|
72
|
+
{
|
73
|
+
CHECK;
|
74
|
+
return value(THIS->frequency());
|
75
|
+
}
|
76
|
+
RUCY_END
|
77
|
+
|
78
|
+
static
|
79
|
+
RUCY_DEF0(get_velocity)
|
80
|
+
{
|
81
|
+
CHECK;
|
82
|
+
return value(THIS->velocity());
|
83
|
+
}
|
84
|
+
RUCY_END
|
85
|
+
|
86
|
+
static
|
87
|
+
RUCY_DEF0(is_captured)
|
88
|
+
{
|
89
|
+
CHECK;
|
90
|
+
return value(THIS->is_captured());
|
91
|
+
}
|
92
|
+
RUCY_END
|
93
|
+
|
94
|
+
|
95
|
+
static Class cNoteEvent;
|
96
|
+
|
97
|
+
void
|
98
|
+
Init_reflex_note_event ()
|
99
|
+
{
|
100
|
+
Module mReflex = define_module("Reflex");
|
101
|
+
|
102
|
+
cNoteEvent = mReflex.define_class("NoteEvent", Reflex::event_class());
|
103
|
+
cNoteEvent.define_alloc_func(alloc);
|
104
|
+
cNoteEvent.define_private_method("initialize", initialize);
|
105
|
+
cNoteEvent.define_private_method("initialize_copy", initialize_copy);
|
106
|
+
cNoteEvent.define_method("action", get_action);
|
107
|
+
cNoteEvent.define_method("channel", get_channel);
|
108
|
+
cNoteEvent.define_method("note", get_note);
|
109
|
+
cNoteEvent.define_method("frequency", get_frequency);
|
110
|
+
cNoteEvent.define_method("velocity", get_velocity);
|
111
|
+
cNoteEvent.define_method("captured?", is_captured);
|
112
|
+
|
113
|
+
cNoteEvent.define_const("ACTION_NONE", Reflex::NoteEvent::ACTION_NONE);
|
114
|
+
cNoteEvent.define_const("ON", Reflex::NoteEvent::ON);
|
115
|
+
cNoteEvent.define_const("OFF", Reflex::NoteEvent::OFF);
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
namespace Reflex
|
120
|
+
{
|
121
|
+
|
122
|
+
|
123
|
+
Class
|
124
|
+
note_event_class ()
|
125
|
+
{
|
126
|
+
return cNoteEvent;
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
}// Reflex
|