reflexion 0.3.4 → 0.3.6
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 +50 -0
- data/.doc/ext/reflex/native.cpp +6 -4
- data/.doc/ext/reflex/reflex.cpp +24 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +12 -0
- data/CONTRIBUTING.md +7 -0
- data/ChangeLog.md +20 -0
- data/README.md +46 -2
- 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/extconf.rb +3 -3
- data/ext/reflex/key_event.cpp +50 -0
- data/ext/reflex/native.cpp +6 -4
- data/ext/reflex/reflex.cpp +24 -0
- data/include/reflex/application.h +4 -0
- data/include/reflex/defs.h +60 -0
- data/include/reflex/device.h +22 -0
- data/include/reflex/event.h +25 -0
- data/include/reflex/gamepad.h +175 -0
- data/include/reflex/ruby/application.h +18 -0
- data/include/reflex/ruby/device.h +40 -0
- data/include/reflex/ruby/event.h +11 -0
- data/reflex.gemspec +3 -3
- data/src/application.cpp +67 -0
- data/src/application.h +9 -0
- data/src/device.cpp +24 -0
- data/src/event.cpp +38 -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.mm +2 -3
- data/src/ios/gamepad.mm +313 -0
- data/src/osx/app_delegate.mm +2 -2
- data/src/osx/application.mm +0 -25
- data/src/osx/event.h +3 -0
- data/src/osx/event.mm +11 -3
- 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/view.cpp +52 -18
- data/src/win32/application.cpp +5 -26
- data/src/win32/event.cpp +8 -7
- data/src/win32/event.h +5 -0
- data/src/win32/gamepad.cpp +110 -0
- data/src/win32/gamepad.h +20 -0
- data/src/win32/window.cpp +9 -1
- data/src/window.cpp +15 -0
- data/src/window.h +9 -0
- metadata +30 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6208109e523193e989fd8aab8deb156b0cedac3f2d686104e44dec97c4cc9a5e
|
4
|
+
data.tar.gz: 8b9060b45cd8f0a2603411895d7739f7ba4df40e21d03ab9f78d4e3fbb09133f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e90800b628b22f0b174ba433acfddc5232687408e6845880eed7e898f03e417906f381b7d58c7c01e19dbe7965738f1ee43bf9594a2329c83a97c84ad5f843ec
|
7
|
+
data.tar.gz: fbc4b887c236dce6096fb8ab1ded816da3a4c08a2c5873f2826fc044d02dae123004e9c7d8da3b5999410b906cbaafbd742c07198bae71027ddd80259d25e212
|
@@ -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,6 +256,56 @@ 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): 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);
|
308
|
+
|
259
309
|
#undef CASE
|
260
310
|
#undef SYMBOL1
|
261
311
|
#undef SYMBOL2
|
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,19 @@ 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
24
|
void Init_reflex_capture_event ();
|
25
25
|
void Init_reflex_timer_event ();
|
26
26
|
void Init_reflex_contact_event ();
|
27
|
+
void Init_reflex_motion_event ();
|
27
28
|
|
28
29
|
void Init_reflex_shape ();
|
29
30
|
void Init_reflex_polygon_shape ();
|
@@ -55,6 +56,7 @@ extern "C" void
|
|
55
56
|
Init_reflex();
|
56
57
|
Init_reflex_exception();
|
57
58
|
|
59
|
+
Init_reflex_pointer();
|
58
60
|
Init_reflex_selector();
|
59
61
|
Init_reflex_style();
|
60
62
|
Init_reflex_style_length();
|
@@ -62,19 +64,19 @@ extern "C" void
|
|
62
64
|
Init_reflex_filter();
|
63
65
|
|
64
66
|
Init_reflex_event();
|
65
|
-
|
67
|
+
Init_reflex_device_event();
|
66
68
|
Init_reflex_update_event();
|
67
69
|
Init_reflex_draw_event();
|
68
70
|
Init_reflex_frame_event();
|
69
71
|
Init_reflex_scroll_event();
|
70
72
|
Init_reflex_focus_event();
|
71
73
|
Init_reflex_key_event();
|
72
|
-
Init_reflex_pointer();
|
73
74
|
Init_reflex_pointer_event();
|
74
75
|
Init_reflex_wheel_event();
|
75
76
|
Init_reflex_capture_event();
|
76
77
|
Init_reflex_timer_event();
|
77
78
|
Init_reflex_contact_event();
|
79
|
+
Init_reflex_motion_event();
|
78
80
|
|
79
81
|
Init_reflex_shape();
|
80
82
|
Init_reflex_polygon_shape();
|
data/.doc/ext/reflex/reflex.cpp
CHANGED
@@ -249,6 +249,30 @@ Init_reflex ()
|
|
249
249
|
DEFINE_CONST(KEY_LAUNCH_APP1);
|
250
250
|
DEFINE_CONST(KEY_LAUNCH_APP2);
|
251
251
|
|
252
|
+
DEFINE_CONST(KEY_GAMEPAD_LEFT);
|
253
|
+
DEFINE_CONST(KEY_GAMEPAD_RIGHT);
|
254
|
+
DEFINE_CONST(KEY_GAMEPAD_UP);
|
255
|
+
DEFINE_CONST(KEY_GAMEPAD_DOWN);
|
256
|
+
|
257
|
+
DEFINE_CONST(KEY_GAMEPAD_A);
|
258
|
+
DEFINE_CONST(KEY_GAMEPAD_B);
|
259
|
+
DEFINE_CONST(KEY_GAMEPAD_X);
|
260
|
+
DEFINE_CONST(KEY_GAMEPAD_Y);
|
261
|
+
|
262
|
+
DEFINE_CONST(KEY_GAMEPAD_LSHOULDER);
|
263
|
+
DEFINE_CONST(KEY_GAMEPAD_RSHOULDER);
|
264
|
+
DEFINE_CONST(KEY_GAMEPAD_LTRIGGER);
|
265
|
+
DEFINE_CONST(KEY_GAMEPAD_RTRIGGER);
|
266
|
+
DEFINE_CONST(KEY_GAMEPAD_LTHUMB);
|
267
|
+
DEFINE_CONST(KEY_GAMEPAD_RTHUMB);
|
268
|
+
|
269
|
+
DEFINE_CONST(KEY_GAMEPAD_HOME);
|
270
|
+
DEFINE_CONST(KEY_GAMEPAD_MENU);
|
271
|
+
DEFINE_CONST(KEY_GAMEPAD_OPTION);
|
272
|
+
DEFINE_CONST(KEY_GAMEPAD_SHARE);
|
273
|
+
DEFINE_CONST(KEY_GAMEPAD_START);
|
274
|
+
DEFINE_CONST(KEY_GAMEPAD_SELECT);
|
275
|
+
|
252
276
|
DEFINE_CONST(MOD_SHIFT);
|
253
277
|
DEFINE_CONST(MOD_CONTROL);
|
254
278
|
DEFINE_CONST(MOD_ALT);
|
@@ -0,0 +1,12 @@
|
|
1
|
+
## Pull Requests Not Accepted 🚫
|
2
|
+
|
3
|
+
Thank you for your interest in contributing!
|
4
|
+
However, this repository does not accept pull requests directly.
|
5
|
+
|
6
|
+
### Where to Contribute?
|
7
|
+
|
8
|
+
Please submit your changes to the [xord/all](https://github.com/xord/all) monorepo, which serves as the primary repository for all our main libraries.
|
9
|
+
|
10
|
+
For more details, please refer to our [contribution guidelines](../CONTRIBUTING.md).
|
11
|
+
|
12
|
+
Thanks for your understanding! 🙌
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# Contribution Guide
|
2
|
+
|
3
|
+
Thank you for your interest in contributing!
|
4
|
+
However, this repository does not accept pull requests.
|
5
|
+
Instead, please submit your changes to the [xord/all](https://github.com/xord/all) monorepo, which serves as the primary repository for all our main libraries.
|
6
|
+
|
7
|
+
For any questions, feel free to open an issue.
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,26 @@
|
|
1
1
|
# reflex ChangeLog
|
2
2
|
|
3
3
|
|
4
|
+
## [v0.3.6] - 2025-04-08
|
5
|
+
|
6
|
+
- Add Gamepad class
|
7
|
+
- Add Device and DeviceEvent classes
|
8
|
+
- Add Application#on_device_connect/disconnect
|
9
|
+
- Add Application_call_start() and Application_call_quit()
|
10
|
+
|
11
|
+
|
12
|
+
## [v0.3.5] - 2025-03-24
|
13
|
+
|
14
|
+
- Add PULL_REQUEST_TEMPLATE.md
|
15
|
+
- Add CONTRIBUTING.md
|
16
|
+
- Handle gamepad events on macOS, iOS, and Win32
|
17
|
+
- Call activate/deactivate event for window on Win32
|
18
|
+
- Define constants for gamepad keys
|
19
|
+
- Delay removing child to avoid breaking child list looped on View_update_tree()
|
20
|
+
|
21
|
+
- Fix a crash caused by add/remove_child()
|
22
|
+
|
23
|
+
|
4
24
|
## [v0.3.4] - 2025-03-07
|
5
25
|
|
6
26
|
- Captured key and pointer events can be blocked before being sent to the window and views
|
data/README.md
CHANGED
@@ -1,4 +1,48 @@
|
|
1
|
-
|
2
1
|
# Reflex - A Graphical User Interface Tool Kit for Ruby.
|
3
2
|
|
4
|
-
|
3
|
+

|
4
|
+

|
5
|
+

|
6
|
+
|
7
|
+
## ⚠️ Notice
|
8
|
+
|
9
|
+
This repository is a read-only mirror of our monorepo.
|
10
|
+
We do not accept pull requests or direct contributions here.
|
11
|
+
|
12
|
+
### 🔄 Where to Contribute?
|
13
|
+
|
14
|
+
All development happens in our [xord/all](https://github.com/xord/all) monorepo, which contains all our main libraries.
|
15
|
+
If you'd like to contribute, please submit your changes there.
|
16
|
+
|
17
|
+
For more details, check out our [Contribution Guidelines](./CONTRIBUTING.md).
|
18
|
+
|
19
|
+
Thanks for your support! 🙌
|
20
|
+
|
21
|
+
## 🚀 About
|
22
|
+
|
23
|
+
**Reflex** is a graphical user interface (GUI) toolkit for Ruby.
|
24
|
+
|
25
|
+
It is designed to help developers create intuitive and responsive user interfaces for their Ruby applications.
|
26
|
+
**Reflex** provides core components such as Window and View, making it easier to build the foundation of your GUI applications.
|
27
|
+
|
28
|
+
## 📦 Installation
|
29
|
+
|
30
|
+
Add this line to your Gemfile:
|
31
|
+
```ruby
|
32
|
+
$ gem 'reflexion'
|
33
|
+
```
|
34
|
+
|
35
|
+
Then, install gem:
|
36
|
+
```bash
|
37
|
+
$ bundle install
|
38
|
+
```
|
39
|
+
|
40
|
+
Or install it directly:
|
41
|
+
```bash
|
42
|
+
$ gem install reflexion
|
43
|
+
```
|
44
|
+
|
45
|
+
## 📜 License
|
46
|
+
|
47
|
+
**Reflex** is licensed under the MIT License.
|
48
|
+
See the [LICENSE](./LICENSE) file for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.6
|
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/extconf.rb
CHANGED
@@ -13,9 +13,9 @@ require 'reflex/extension'
|
|
13
13
|
Xot::ExtConf.new Xot, Rucy, Rays, Reflex do
|
14
14
|
setup do
|
15
15
|
headers << 'ruby.h'
|
16
|
-
libs.unshift 'gdi32', 'winmm', 'opengl32', 'glew32' if win32?
|
17
|
-
frameworks << 'Cocoa'
|
18
|
-
$LDFLAGS << ' -Wl,--out-implib=native.dll.a'
|
16
|
+
libs.unshift 'gdi32', 'winmm', 'opengl32', 'glew32', 'xinput' if win32?
|
17
|
+
frameworks << 'Cocoa' << 'GameController' if osx?
|
18
|
+
$LDFLAGS << ' -Wl,--out-implib=native.dll.a' if mingw? || cygwin?
|
19
19
|
|
20
20
|
unless osx?
|
21
21
|
lib_dirs << Rays::Extension.ext_dir
|
data/ext/reflex/key_event.cpp
CHANGED
@@ -260,6 +260,56 @@ 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): 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);
|
312
|
+
|
263
313
|
#undef CASE
|
264
314
|
#undef SYMBOL1
|
265
315
|
#undef SYMBOL2
|