reflexion 0.6.0 → 0.7.0

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.
Files changed (275) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +37 -6
  3. data/.doc/ext/reflex/capture_event.cpp +1 -1
  4. data/.doc/ext/reflex/chase_constraint.cpp +1 -1
  5. data/.doc/ext/reflex/clipboard.cpp +1 -1
  6. data/.doc/ext/reflex/color_event.cpp +76 -0
  7. data/.doc/ext/reflex/color_picker.cpp +113 -0
  8. data/.doc/ext/reflex/constraint.cpp +1 -1
  9. data/.doc/ext/reflex/contact_event.cpp +1 -1
  10. data/.doc/ext/reflex/control_change_event.cpp +1 -1
  11. data/.doc/ext/reflex/device.cpp +1 -1
  12. data/.doc/ext/reflex/device_event.cpp +1 -1
  13. data/.doc/ext/reflex/draw_event.cpp +1 -1
  14. data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
  15. data/.doc/ext/reflex/event.cpp +1 -1
  16. data/.doc/ext/reflex/file_dialog.cpp +181 -0
  17. data/.doc/ext/reflex/file_event.cpp +103 -0
  18. data/.doc/ext/reflex/filter.cpp +1 -1
  19. data/.doc/ext/reflex/focus_event.cpp +1 -1
  20. data/.doc/ext/reflex/frame_event.cpp +1 -1
  21. data/.doc/ext/reflex/gamepad.cpp +48 -0
  22. data/.doc/ext/reflex/image_view.cpp +1 -1
  23. data/.doc/ext/reflex/key_event.cpp +1 -274
  24. data/.doc/ext/reflex/line_shape.cpp +1 -1
  25. data/.doc/ext/reflex/link_constraint.cpp +1 -1
  26. data/.doc/ext/reflex/menu.cpp +6 -5
  27. data/.doc/ext/reflex/midi.cpp +9 -2
  28. data/.doc/ext/reflex/midi_event.cpp +1 -1
  29. data/.doc/ext/reflex/motion_event.cpp +1 -1
  30. data/.doc/ext/reflex/native.cpp +18 -6
  31. data/.doc/ext/reflex/note_event.cpp +1 -1
  32. data/.doc/ext/reflex/pin.cpp +1 -1
  33. data/.doc/ext/reflex/pointer.cpp +1 -1
  34. data/.doc/ext/reflex/pointer_event.cpp +2 -2
  35. data/.doc/ext/reflex/polygon_shape.cpp +1 -1
  36. data/.doc/ext/reflex/rect_shape.cpp +1 -1
  37. data/.doc/ext/reflex/reflex.cpp +566 -232
  38. data/.doc/ext/reflex/screen.cpp +27 -1
  39. data/.doc/ext/reflex/scroll_event.cpp +1 -1
  40. data/.doc/ext/reflex/selector.cpp +1 -1
  41. data/.doc/ext/reflex/shape.cpp +1 -1
  42. data/.doc/ext/reflex/snap_constraint.cpp +1 -1
  43. data/.doc/ext/reflex/style.cpp +1 -1
  44. data/.doc/ext/reflex/style_length.cpp +1 -1
  45. data/.doc/ext/reflex/text_event.cpp +104 -0
  46. data/.doc/ext/reflex/timer.cpp +1 -1
  47. data/.doc/ext/reflex/timer_event.cpp +1 -1
  48. data/.doc/ext/reflex/update_event.cpp +1 -1
  49. data/.doc/ext/reflex/view.cpp +110 -56
  50. data/.doc/ext/reflex/wheel_constraint.cpp +1 -1
  51. data/.doc/ext/reflex/wheel_event.cpp +1 -1
  52. data/.doc/ext/reflex/window.cpp +226 -17
  53. data/.github/workflows/release-gem.yml +2 -49
  54. data/.github/workflows/tag.yml +5 -28
  55. data/.github/workflows/test.yml +1 -37
  56. data/ChangeLog.md +54 -0
  57. data/Gemfile.lock +13 -8
  58. data/Rakefile +13 -2
  59. data/Reflex.podspec +2 -2
  60. data/VERSION +1 -1
  61. data/ext/reflex/application.cpp +41 -6
  62. data/ext/reflex/capture_event.cpp +1 -1
  63. data/ext/reflex/chase_constraint.cpp +1 -1
  64. data/ext/reflex/clipboard.cpp +1 -1
  65. data/ext/reflex/color_event.cpp +80 -0
  66. data/ext/reflex/color_picker.cpp +121 -0
  67. data/ext/reflex/constraint.cpp +1 -1
  68. data/ext/reflex/contact_event.cpp +1 -1
  69. data/ext/reflex/control_change_event.cpp +1 -1
  70. data/ext/reflex/device.cpp +1 -1
  71. data/ext/reflex/device_event.cpp +1 -1
  72. data/ext/reflex/draw_event.cpp +1 -1
  73. data/ext/reflex/ellipse_shape.cpp +1 -1
  74. data/ext/reflex/event.cpp +1 -1
  75. data/ext/reflex/extconf.rb +4 -2
  76. data/ext/reflex/file_dialog.cpp +194 -0
  77. data/ext/reflex/file_event.cpp +108 -0
  78. data/ext/reflex/filter.cpp +1 -1
  79. data/ext/reflex/focus_event.cpp +1 -1
  80. data/ext/reflex/frame_event.cpp +1 -1
  81. data/ext/reflex/gamepad.cpp +50 -0
  82. data/ext/reflex/image_view.cpp +1 -1
  83. data/ext/reflex/key_event.cpp +1 -275
  84. data/ext/reflex/line_shape.cpp +1 -1
  85. data/ext/reflex/link_constraint.cpp +1 -1
  86. data/ext/reflex/menu.cpp +8 -7
  87. data/ext/reflex/midi.cpp +11 -3
  88. data/ext/reflex/midi_event.cpp +1 -1
  89. data/ext/reflex/motion_event.cpp +1 -1
  90. data/ext/reflex/native.cpp +18 -6
  91. data/ext/reflex/note_event.cpp +1 -1
  92. data/ext/reflex/pin.cpp +1 -1
  93. data/ext/reflex/pointer.cpp +1 -1
  94. data/ext/reflex/pointer_event.cpp +2 -2
  95. data/ext/reflex/polygon_shape.cpp +1 -1
  96. data/ext/reflex/rect_shape.cpp +1 -1
  97. data/ext/reflex/reflex.cpp +568 -232
  98. data/ext/reflex/screen.cpp +31 -2
  99. data/ext/reflex/scroll_event.cpp +1 -1
  100. data/ext/reflex/selector.cpp +1 -1
  101. data/ext/reflex/selector.h +9 -9
  102. data/ext/reflex/shape.cpp +1 -1
  103. data/ext/reflex/snap_constraint.cpp +1 -1
  104. data/ext/reflex/style.cpp +1 -1
  105. data/ext/reflex/style_length.cpp +1 -1
  106. data/ext/reflex/text_event.cpp +111 -0
  107. data/ext/reflex/timer.cpp +1 -1
  108. data/ext/reflex/timer_event.cpp +1 -1
  109. data/ext/reflex/update_event.cpp +1 -1
  110. data/ext/reflex/view.cpp +121 -61
  111. data/ext/reflex/wheel_constraint.cpp +1 -1
  112. data/ext/reflex/wheel_event.cpp +1 -1
  113. data/ext/reflex/window.cpp +256 -25
  114. data/include/reflex/application.h +10 -0
  115. data/include/reflex/color_picker.h +65 -0
  116. data/include/reflex/event.h +178 -88
  117. data/include/reflex/file_dialog.h +73 -0
  118. data/include/reflex/gamepad.h +3 -0
  119. data/include/reflex/menu.h +3 -3
  120. data/include/reflex/midi.h +3 -0
  121. data/include/reflex/reflex.h +2 -0
  122. data/include/reflex/ruby/application.h +6 -1
  123. data/include/reflex/ruby/color_picker.h +89 -0
  124. data/include/reflex/ruby/event.h +62 -29
  125. data/include/reflex/ruby/file_dialog.h +89 -0
  126. data/include/reflex/ruby/gamepad.h +46 -0
  127. data/include/reflex/ruby/reflex.h +3 -0
  128. data/include/reflex/ruby/view.h +92 -44
  129. data/include/reflex/ruby/window.h +60 -1
  130. data/include/reflex/ruby.h +3 -0
  131. data/include/reflex/screen.h +11 -2
  132. data/include/reflex/view.h +28 -16
  133. data/include/reflex/window.h +40 -8
  134. data/include/reflex.h +3 -0
  135. data/lib/reflex/application.rb +5 -5
  136. data/lib/reflex/autoinit.rb +3 -1
  137. data/lib/reflex/button.rb +3 -3
  138. data/lib/reflex/color_event.rb +16 -0
  139. data/lib/reflex/color_picker.rb +45 -0
  140. data/lib/reflex/control_change_event.rb +17 -0
  141. data/lib/reflex/file_dialog.rb +70 -0
  142. data/lib/reflex/file_event.rb +37 -0
  143. data/lib/reflex/helper.rb +58 -7
  144. data/lib/reflex/key_event.rb +9 -4
  145. data/lib/reflex/menu.rb +17 -1
  146. data/lib/reflex/model.rb +19 -19
  147. data/lib/reflex/note_event.rb +1 -1
  148. data/lib/reflex/pointer.rb +14 -3
  149. data/lib/reflex/pointer_event.rb +12 -1
  150. data/lib/reflex/reflex.rb +5 -0
  151. data/lib/reflex/shape.rb +14 -14
  152. data/lib/reflex/style.rb +16 -16
  153. data/lib/reflex/text_event.rb +40 -0
  154. data/lib/reflex/timer.rb +3 -3
  155. data/lib/reflex/view.rb +29 -14
  156. data/lib/reflex/wheel_event.rb +12 -3
  157. data/lib/reflex/window.rb +25 -13
  158. data/lib/reflex.rb +8 -2
  159. data/reflex.gemspec +4 -4
  160. data/samples/ime.rb +100 -0
  161. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
  162. data/samples/menu.rb +4 -1
  163. data/samples/model.rb +3 -3
  164. data/samples/test/alert.rb +93 -0
  165. data/samples/test/always_on.rb +76 -0
  166. data/samples/test/app_background.rb +51 -0
  167. data/samples/test/boundary.rb +75 -0
  168. data/samples/test/callback_exception.rb +101 -0
  169. data/samples/test/cancel.rb +53 -0
  170. data/samples/test/color_picker.rb +63 -0
  171. data/samples/test/file_dialog.rb +102 -0
  172. data/samples/window_style.rb +156 -0
  173. data/src/application.cpp +159 -18
  174. data/src/application.h +92 -7
  175. data/src/color_picker.cpp +113 -0
  176. data/src/color_picker.h +36 -0
  177. data/src/event.cpp +410 -252
  178. data/src/event.h +12 -0
  179. data/src/file_dialog.cpp +163 -0
  180. data/src/file_dialog.h +52 -0
  181. data/src/gamepad.cpp +42 -5
  182. data/src/gamepad.h +4 -0
  183. data/src/ios/app_delegate.mm +5 -3
  184. data/src/ios/application.mm +24 -0
  185. data/src/ios/color_picker.mm +19 -0
  186. data/src/ios/file_dialog.mm +21 -0
  187. data/src/ios/gamepad.mm +4 -4
  188. data/src/ios/menu.mm +5 -0
  189. data/src/ios/reflex.mm +8 -0
  190. data/src/ios/screen.mm +26 -0
  191. data/src/ios/view_controller.mm +2 -30
  192. data/src/ios/window.mm +38 -9
  193. data/src/menu.cpp +66 -4
  194. data/src/menu.h +17 -1
  195. data/src/midi.cpp +61 -31
  196. data/src/osx/app_delegate.h +4 -0
  197. data/src/osx/app_delegate.mm +102 -22
  198. data/src/osx/application.mm +88 -6
  199. data/src/osx/color_picker.mm +112 -0
  200. data/src/osx/event.h +10 -0
  201. data/src/osx/event.mm +84 -30
  202. data/src/osx/file_dialog.mm +168 -0
  203. data/src/osx/gamepad.mm +2 -2
  204. data/src/osx/gamepad_hid.mm +1 -1
  205. data/src/osx/menu.mm +177 -33
  206. data/src/osx/native_window.h +16 -2
  207. data/src/osx/native_window.mm +114 -57
  208. data/src/osx/opengl_view.h +2 -1
  209. data/src/osx/opengl_view.mm +184 -43
  210. data/src/osx/reflex.mm +38 -0
  211. data/src/osx/screen.mm +36 -0
  212. data/src/osx/window.mm +106 -24
  213. data/src/pointer.cpp +13 -4
  214. data/src/pointer.h +4 -0
  215. data/src/rays.h +46 -0
  216. data/src/sdl/application.cpp +68 -8
  217. data/src/sdl/color_picker.cpp +18 -0
  218. data/src/sdl/event.cpp +24 -3
  219. data/src/sdl/event.h +12 -0
  220. data/src/sdl/file_dialog.cpp +20 -0
  221. data/src/sdl/gamepad.cpp +3 -7
  222. data/src/sdl/menu.cpp +5 -0
  223. data/src/sdl/reflex.cpp +20 -0
  224. data/src/sdl/screen.cpp +36 -0
  225. data/src/sdl/window.cpp +142 -29
  226. data/src/shape.cpp +15 -10
  227. data/src/view.cpp +287 -198
  228. data/src/view.h +4 -2
  229. data/src/vk.h +416 -0
  230. data/src/win32/application.cpp +162 -12
  231. data/src/win32/application.h +20 -0
  232. data/src/win32/color_picker.cpp +82 -0
  233. data/src/win32/event.cpp +114 -12
  234. data/src/win32/event.h +21 -4
  235. data/src/win32/file_dialog.cpp +226 -0
  236. data/src/win32/gamepad.cpp +9 -2
  237. data/src/win32/menu.cpp +191 -53
  238. data/src/win32/menu.h +9 -1
  239. data/src/win32/opengl.cpp +2 -9
  240. data/src/win32/reflex.cpp +44 -3
  241. data/src/win32/screen.cpp +164 -3
  242. data/src/win32/screen.h +8 -0
  243. data/src/win32/tray.cpp +191 -0
  244. data/src/win32/tray.h +22 -0
  245. data/src/win32/vk.cpp +11 -0
  246. data/src/win32/window.cpp +809 -148
  247. data/src/win32/window.h +6 -0
  248. data/src/window.cpp +718 -185
  249. data/src/window.h +66 -33
  250. data/src/world.cpp +9 -1
  251. data/test/helper.rb +17 -0
  252. data/test/test_application.rb +90 -1
  253. data/test/test_chase_constraint.rb +1 -3
  254. data/test/test_color_event.rb +36 -0
  255. data/test/test_color_picker.rb +62 -0
  256. data/test/test_constraint.rb +2 -4
  257. data/test/test_event.rb +1 -1
  258. data/test/test_file_dialog.rb +48 -0
  259. data/test/test_file_event.rb +43 -0
  260. data/test/test_has_text_preedit.rb +54 -0
  261. data/test/test_key_event.rb +20 -5
  262. data/test/test_link_constraint.rb +1 -3
  263. data/test/test_menu.rb +40 -10
  264. data/test/test_pointer.rb +33 -23
  265. data/test/test_pointer_event.rb +24 -9
  266. data/test/test_reflex.rb +36 -0
  267. data/test/test_screen.rb +24 -2
  268. data/test/test_snap_constraint.rb +1 -3
  269. data/test/test_text_event.rb +54 -0
  270. data/test/test_view.rb +41 -4
  271. data/test/test_wheel_constraint.rb +1 -3
  272. data/test/test_wheel_event.rb +13 -5
  273. data/test/test_window.rb +196 -44
  274. metadata +80 -10
  275. data/.github/workflows/utils.rb +0 -127
@@ -0,0 +1,48 @@
1
+ #include "reflex/ruby/gamepad.h"
2
+
3
+
4
+ #include "reflex/ruby/device.h"
5
+ #include "defs.h"
6
+
7
+
8
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Gamepad)
9
+
10
+
11
+ static
12
+ VALUE alloc(VALUE klass)
13
+ {
14
+ Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate Gamepad class.");
15
+ }
16
+
17
+ static
18
+ VALUE s_enable(VALUE self)
19
+ {
20
+ Reflex::enable_gamepad();
21
+ }
22
+
23
+
24
+ static Class cGamepad;
25
+
26
+ void
27
+ Init_reflex_gamepad ()
28
+ {
29
+ Module mReflex = rb_define_module("Reflex");
30
+
31
+ cGamepad = mReflex.define_class("Gamepad", Reflex::device_class());
32
+ rb_define_alloc_func(cGamepad, alloc);
33
+ rb_define_singleton_method(cGamepad, "enable", RUBY_METHOD_FUNC(s_enable), 0);
34
+ }
35
+
36
+
37
+ namespace Reflex
38
+ {
39
+
40
+
41
+ Class
42
+ gamepad_class ()
43
+ {
44
+ return cGamepad;
45
+ }
46
+
47
+
48
+ }// Reflex
@@ -10,7 +10,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ImageView)
10
10
 
11
11
  #define THIS to<Reflex::ImageView*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJECT(Reflex::ImageView, self)
13
+ #define CHECK RUCY_CHECK_OBJ(Reflex::ImageView, self)
14
14
 
15
15
  #define CALL(fun) RUCY_WRAPPER_CALL(Reflex::ImageView, THIS, fun)
16
16
 
@@ -8,7 +8,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::KeyEvent)
8
8
 
9
9
  #define THIS to<Reflex::KeyEvent*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::KeyEvent, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::KeyEvent, self)
12
12
 
13
13
 
14
14
  static
@@ -47,278 +47,6 @@ VALUE get_action(VALUE self)
47
47
  return value(THIS->action());
48
48
  }
49
49
 
50
- static
51
- VALUE get_key(VALUE self)
52
- {
53
- CHECK;
54
- switch (THIS->code())
55
- {
56
- #define CASE(key) case Reflex::KEY_##key
57
- #define SYMBOL1(name) SYMBOL2(_##name, #name)
58
- #define SYMBOL2(var, sym) {RUCY_SYMBOL(var, sym); return var.value();}
59
-
60
- CASE(A): SYMBOL1(a);
61
- CASE(B): SYMBOL1(b);
62
- CASE(C): SYMBOL1(c);
63
- CASE(D): SYMBOL1(d);
64
- CASE(E): SYMBOL1(e);
65
- CASE(F): SYMBOL1(f);
66
- CASE(G): SYMBOL1(g);
67
- CASE(H): SYMBOL1(h);
68
- CASE(I): SYMBOL1(i);
69
- CASE(J): SYMBOL1(j);
70
- CASE(K): SYMBOL1(k);
71
- CASE(L): SYMBOL1(l);
72
- CASE(M): SYMBOL1(m);
73
- CASE(N): SYMBOL1(n);
74
- CASE(O): SYMBOL1(o);
75
- CASE(P): SYMBOL1(p);
76
- CASE(Q): SYMBOL1(q);
77
- CASE(R): SYMBOL1(r);
78
- CASE(S): SYMBOL1(s);
79
- CASE(T): SYMBOL1(t);
80
- CASE(U): SYMBOL1(u);
81
- CASE(V): SYMBOL1(v);
82
- CASE(W): SYMBOL1(w);
83
- CASE(X): SYMBOL1(x);
84
- CASE(Y): SYMBOL1(y);
85
- CASE(Z): SYMBOL1(z);
86
-
87
- CASE(0):
88
- CASE(NUM_0): SYMBOL1(0);
89
- CASE(1):
90
- CASE(NUM_1): SYMBOL1(1);
91
- CASE(2):
92
- CASE(NUM_2): SYMBOL1(2);
93
- CASE(3):
94
- CASE(NUM_3): SYMBOL1(3);
95
- CASE(4):
96
- CASE(NUM_4): SYMBOL1(4);
97
- CASE(5):
98
- CASE(NUM_5): SYMBOL1(5);
99
- CASE(6):
100
- CASE(NUM_6): SYMBOL1(6);
101
- CASE(7):
102
- CASE(NUM_7): SYMBOL1(7);
103
- CASE(8):
104
- CASE(NUM_8): SYMBOL1(8);
105
- CASE(9):
106
- CASE(NUM_9): SYMBOL1(9);
107
-
108
- CASE(MINUS): SYMBOL1(minus);
109
- CASE(EQUAL): SYMBOL1(equal);
110
- CASE(COMMA): SYMBOL1(comma);
111
- CASE(PERIOD): SYMBOL1(period);
112
- CASE(SEMICOLON): SYMBOL1(semicolon);
113
- CASE(QUOTE): SYMBOL1(quote);
114
- CASE(SLASH): SYMBOL1(slash);
115
- CASE(BACKSLASH): SYMBOL1(backslash);
116
- CASE(UNDERSCORE): SYMBOL1(underscore);
117
- CASE(GRAVE): SYMBOL1(grave);
118
- CASE(YEN): SYMBOL1(yen);
119
- CASE(LBRACKET): SYMBOL1(lbracket);
120
- CASE(RBRACKET): SYMBOL1(rbracket);
121
-
122
- #if defined(OSX) || defined(IOS) || defined(WIN32) || defined(LINUX) || defined(WASM)
123
- CASE(ENTER): SYMBOL1(enter);
124
- #else
125
- CASE(ENTER): SYMBOL1(enter);
126
- CASE(RETURN): SYMBOL2(_return, "return");
127
- #endif
128
- CASE(SPACE): SYMBOL1(space);
129
- CASE(TAB): SYMBOL1(tab);
130
- CASE(DELETE): SYMBOL2(_delete, "delete");
131
- CASE(BACKSPACE): SYMBOL1(backspace);
132
- CASE(INSERT): SYMBOL1(insert);
133
- CASE(ESCAPE): SYMBOL1(escape);
134
-
135
- CASE(LEFT): SYMBOL1(left);
136
- CASE(RIGHT): SYMBOL1(right);
137
- CASE(UP): SYMBOL1(up);
138
- CASE(DOWN): SYMBOL1(down);
139
- CASE(HOME): SYMBOL1(home);
140
- CASE(END): SYMBOL1(end);
141
- CASE(PAGEUP): SYMBOL1(pageup);
142
- CASE(PAGEDOWN): SYMBOL1(pagedown);
143
-
144
- #if !defined(OSX) && !defined(IOS) && !defined(LINUX) && !defined(WASM)
145
- CASE(SHIFT):
146
- #endif
147
- CASE(LSHIFT):
148
- CASE(RSHIFT): SYMBOL1(shift);
149
- #if !defined(OSX) && !defined(IOS) && !defined(LINUX) && !defined(WASM)
150
- CASE(CONTROL):
151
- #endif
152
- CASE(LCONTROL):
153
- CASE(RCONTROL): SYMBOL1(control);
154
- CASE(ALT):
155
- #if !defined(IOS) && !defined(LINUX) && !defined(WASM)
156
- CASE(LALT):
157
- #endif
158
- CASE(RALT): SYMBOL1(alt);
159
- CASE(LWIN):
160
- CASE(RWIN): SYMBOL1(win);
161
- #if !defined(IOS) && !defined(LINUX) && !defined(WASM)
162
- CASE(LCOMMAND):
163
- CASE(RCOMMAND): SYMBOL1(command);
164
- CASE(LOPTION):
165
- CASE(ROPTION): SYMBOL1(option);
166
- #endif
167
- CASE(FUNCTION): SYMBOL1(function);
168
-
169
- CASE(F1): SYMBOL1(f1);
170
- CASE(F2): SYMBOL1(f2);
171
- CASE(F3): SYMBOL1(f3);
172
- CASE(F4): SYMBOL1(f4);
173
- CASE(F5): SYMBOL1(f5);
174
- CASE(F6): SYMBOL1(f6);
175
- CASE(F7): SYMBOL1(f7);
176
- CASE(F8): SYMBOL1(f8);
177
- CASE(F9): SYMBOL1(f9);
178
- CASE(F10): SYMBOL1(f10);
179
- CASE(F11): SYMBOL1(f11);
180
- CASE(F12): SYMBOL1(f12);
181
- CASE(F13): SYMBOL1(f13);
182
- CASE(F14): SYMBOL1(f14);
183
- CASE(F15): SYMBOL1(f15);
184
- CASE(F16): SYMBOL1(f16);
185
- CASE(F17): SYMBOL1(f17);
186
- CASE(F18): SYMBOL1(f18);
187
- CASE(F19): SYMBOL1(f19);
188
- CASE(F20): SYMBOL1(f20);
189
- CASE(F21): SYMBOL1(f21);
190
- CASE(F22): SYMBOL1(f22);
191
- CASE(F23): SYMBOL1(f23);
192
- CASE(F24): SYMBOL1(f24);
193
-
194
- CASE(NUM_PLUS): SYMBOL1(plus);
195
- CASE(NUM_MINUS): SYMBOL1(minus);
196
- CASE(NUM_MULTIPLY): SYMBOL1(multiply);
197
- CASE(NUM_DIVIDE): SYMBOL1(divide);
198
- CASE(NUM_EQUAL): SYMBOL1(equal);
199
- CASE(NUM_COMMA): SYMBOL1(comma);
200
- CASE(NUM_DECIMAL): SYMBOL1(decimal);
201
- #if !defined(IOS) && !defined(LINUX) && !defined(WASM)
202
- CASE(NUM_CLEAR): SYMBOL1(clear);
203
- #endif
204
- CASE(NUM_ENTER): SYMBOL1(enter);
205
-
206
- CASE(CAPSLOCK): SYMBOL1(capslock);
207
- CASE(NUMLOCK): SYMBOL1(numlock);
208
- CASE(SCROLLLOCK): SYMBOL1(scrolllock);
209
-
210
- CASE(PRINTSCREEN): SYMBOL1(printscreen);
211
- CASE(PAUSE): SYMBOL1(pause);
212
- CASE(BREAK): SYMBOL2(_break, "break");
213
- CASE(SECTION): SYMBOL1(section);
214
- CASE(HELP): SYMBOL1(help);
215
-
216
- CASE(EISU): SYMBOL1(eisu);
217
- CASE(KANA): SYMBOL1(kana);
218
- CASE(KANJI): SYMBOL1(kanji);
219
- CASE(IME_ON): SYMBOL1(ime_on);
220
- CASE(IME_OFF): SYMBOL1(ime_off);
221
- CASE(IME_MODECHANGE): SYMBOL1(ime_mode_change);
222
- CASE(CONVERT): SYMBOL1(convert);
223
- CASE(NONCONVERT): SYMBOL1(nonconvert);
224
- CASE(ACCEPT): SYMBOL1(accept);
225
- CASE(PROCESS): SYMBOL1(process);
226
-
227
- CASE(VOLUME_UP): SYMBOL1(volume_up);
228
- CASE(VOLUME_DOWN): SYMBOL1(volume_down);
229
- CASE(MUTE): SYMBOL1(mute);
230
-
231
- CASE(SLEEP): SYMBOL1(sleep);
232
- CASE(EXEC): SYMBOL1(exec);
233
- CASE(PRINT): SYMBOL1(print);
234
- CASE(CONTEXT_MENU): SYMBOL1(context_menu);
235
- CASE(SELECT): SYMBOL1(select);
236
- CASE(CLEAR): SYMBOL1(clear);
237
-
238
- CASE(NAVIGATION_VIEW): SYMBOL1(navigation_view);
239
- CASE(NAVIGATION_MENU): SYMBOL1(navigation_menu);
240
- CASE(NAVIGATION_UP): SYMBOL1(navigation_up);
241
- CASE(NAVIGATION_DOWN): SYMBOL1(navigation_down);
242
- CASE(NAVIGATION_LEFT): SYMBOL1(navigation_left);
243
- CASE(NAVIGATION_RIGHT): SYMBOL1(navigation_right);
244
- CASE(NAVIGATION_ACCEPT): SYMBOL1(navigation_accept);
245
- CASE(NAVIGATION_CANCEL): SYMBOL1(navigation_cancel);
246
-
247
- CASE(BROWSER_BACK): SYMBOL1(browser_back);
248
- CASE(BROWSER_FORWARD): SYMBOL1(browser_forward);
249
- CASE(BROWSER_REFRESH): SYMBOL1(browser_refresh);
250
- CASE(BROWSER_STOP): SYMBOL1(browser_stop);
251
- CASE(BROWSER_SEARCH): SYMBOL1(browser_search);
252
- CASE(BROWSER_FAVORITES): SYMBOL1(browser_favorites);
253
- CASE(BROWSER_HOME): SYMBOL1(browser_home);
254
-
255
- CASE(MEDIA_PREV_TRACK): SYMBOL1(media_prev);
256
- CASE(MEDIA_NEXT_TRACK): SYMBOL1(media_next);
257
- CASE(MEDIA_PLAY_PAUSE): SYMBOL1(media_play_pause);
258
- CASE(MEDIA_STOP): SYMBOL1(media_stop);
259
-
260
- CASE(LAUNCH_MAIL): SYMBOL1(launch_mail);
261
- CASE(LAUNCH_MEDIA_SELECT): SYMBOL1(launch_media_select);
262
- CASE(LAUNCH_APP1): SYMBOL1(launch_app1);
263
- CASE(LAUNCH_APP2): SYMBOL1(launch_app2);
264
-
265
- CASE(GAMEPAD_LEFT): SYMBOL1(gamepad_left);
266
- CASE(GAMEPAD_RIGHT): SYMBOL1(gamepad_right);
267
- CASE(GAMEPAD_UP): SYMBOL1(gamepad_up);
268
- CASE(GAMEPAD_DOWN): SYMBOL1(gamepad_down);
269
- CASE(GAMEPAD_LSTICK_LEFT): SYMBOL1(gamepad_lstick_left);
270
- CASE(GAMEPAD_LSTICK_RIGHT): SYMBOL1(gamepad_lstick_right);
271
- CASE(GAMEPAD_LSTICK_UP): SYMBOL1(gamepad_lstick_up);
272
- CASE(GAMEPAD_LSTICK_DOWN): SYMBOL1(gamepad_lstick_down);
273
- CASE(GAMEPAD_RSTICK_LEFT): SYMBOL1(gamepad_rstick_left);
274
- CASE(GAMEPAD_RSTICK_RIGHT): SYMBOL1(gamepad_rstick_right);
275
- CASE(GAMEPAD_RSTICK_UP): SYMBOL1(gamepad_rstick_up);
276
- CASE(GAMEPAD_RSTICK_DOWN): SYMBOL1(gamepad_rstick_down);
277
- CASE(GAMEPAD_A): SYMBOL1(gamepad_a);
278
- CASE(GAMEPAD_B): SYMBOL1(gamepad_b);
279
- CASE(GAMEPAD_X): SYMBOL1(gamepad_x);
280
- CASE(GAMEPAD_Y): SYMBOL1(gamepad_y);
281
- CASE(GAMEPAD_LTRIGGER): SYMBOL1(gamepad_ltrigger);
282
- CASE(GAMEPAD_RTRIGGER): SYMBOL1(gamepad_rtrigger);
283
- CASE(GAMEPAD_LSHOULDER): SYMBOL1(gamepad_lshoulder);
284
- CASE(GAMEPAD_RSHOULDER): SYMBOL1(gamepad_rshoulder);
285
- CASE(GAMEPAD_LTHUMB): SYMBOL1(gamepad_lthumb);
286
- CASE(GAMEPAD_RTHUMB): SYMBOL1(gamepad_rthumb);
287
- CASE(GAMEPAD_LPADDLE_0): SYMBOL1(gamepad_lpaddle_0);
288
- CASE(GAMEPAD_LPADDLE_1): SYMBOL1(gamepad_lpaddle_1);
289
- CASE(GAMEPAD_RPADDLE_0): SYMBOL1(gamepad_rpaddle_0);
290
- CASE(GAMEPAD_RPADDLE_1): SYMBOL1(gamepad_rpaddle_1);
291
- CASE(GAMEPAD_HOME): SYMBOL1(gamepad_home);
292
- CASE(GAMEPAD_MENU): SYMBOL1(gamepad_menu);
293
- CASE(GAMEPAD_OPTION): SYMBOL1(gamepad_option);
294
- CASE(GAMEPAD_SHARE): SYMBOL1(gamepad_share);
295
- CASE(GAMEPAD_START): SYMBOL1(gamepad_start);
296
- CASE(GAMEPAD_SELECT): SYMBOL1(gamepad_select);
297
- CASE(GAMEPAD_BUTTON_TOUCH): SYMBOL1(gamepad_button_touch);
298
- CASE(GAMEPAD_BUTTON_0): SYMBOL1(gamepad_button_0);
299
- CASE(GAMEPAD_BUTTON_1): SYMBOL1(gamepad_button_1);
300
- CASE(GAMEPAD_BUTTON_2): SYMBOL1(gamepad_button_2);
301
- CASE(GAMEPAD_BUTTON_3): SYMBOL1(gamepad_button_3);
302
- CASE(GAMEPAD_BUTTON_4): SYMBOL1(gamepad_button_4);
303
- CASE(GAMEPAD_BUTTON_5): SYMBOL1(gamepad_button_5);
304
- CASE(GAMEPAD_BUTTON_6): SYMBOL1(gamepad_button_6);
305
- CASE(GAMEPAD_BUTTON_7): SYMBOL1(gamepad_button_7);
306
- CASE(GAMEPAD_BUTTON_8): SYMBOL1(gamepad_button_8);
307
- CASE(GAMEPAD_BUTTON_9): SYMBOL1(gamepad_button_9);
308
- CASE(GAMEPAD_BUTTON_10): SYMBOL1(gamepad_button_10);
309
- CASE(GAMEPAD_BUTTON_11): SYMBOL1(gamepad_button_11);
310
- CASE(GAMEPAD_BUTTON_12): SYMBOL1(gamepad_button_12);
311
- CASE(GAMEPAD_BUTTON_13): SYMBOL1(gamepad_button_13);
312
- CASE(GAMEPAD_BUTTON_14): SYMBOL1(gamepad_button_14);
313
- CASE(GAMEPAD_BUTTON_15): SYMBOL1(gamepad_button_15);
314
-
315
- #undef CASE
316
- #undef SYMBOL1
317
- #undef SYMBOL2
318
- }
319
- return nil();
320
- }
321
-
322
50
  static
323
51
  VALUE get_chars(VALUE self)
324
52
  {
@@ -368,7 +96,6 @@ Init_reflex_key_event ()
368
96
  rb_define_private_method(cKeyEvent, "initialize", RUBY_METHOD_FUNC(initialize), 5);
369
97
  rb_define_private_method(cKeyEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
370
98
  rb_define_method(cKeyEvent, "action", RUBY_METHOD_FUNC(get_action), 0);
371
- rb_define_method(cKeyEvent, "key", RUBY_METHOD_FUNC(get_key), 0);
372
99
  rb_define_method(cKeyEvent, "chars", RUBY_METHOD_FUNC(get_chars), 0);
373
100
  rb_define_method(cKeyEvent, "code", RUBY_METHOD_FUNC(get_code), 0);
374
101
  rb_define_method(cKeyEvent, "modifiers", RUBY_METHOD_FUNC(get_modifiers), 0);
@@ -9,7 +9,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::LineShape)
9
9
 
10
10
  #define THIS to<Reflex::LineShape*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::LineShape, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::LineShape, self)
13
13
 
14
14
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
15
15
 
@@ -10,7 +10,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::LinkConstraint)
10
10
 
11
11
  #define THIS to<Reflex::LinkConstraint*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::LinkConstraint, self)
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::LinkConstraint, self)
14
14
 
15
15
 
16
16
  static
@@ -4,6 +4,7 @@
4
4
  #include <ranges>
5
5
  #include <rays/ruby/image.h>
6
6
  #include "reflex/exception.h"
7
+ #include "reflex/ruby/reflex.h"
7
8
  #include "reflex/ruby/selector.h"
8
9
  #include "reflex/ruby/view.h"
9
10
  #include "defs.h"
@@ -14,7 +15,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Menu)
14
15
 
15
16
  #define THIS to<Reflex::Menu*>(self)
16
17
 
17
- #define CHECK RUCY_CHECK_OBJ(Reflex::Menu, self)
18
+ #define CHECK RUCY_CHECK_PTR(Reflex::Menu, self)
18
19
 
19
20
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
20
21
 
@@ -144,7 +145,7 @@ VALUE set_shortcut_key(VALUE self, VALUE key)
144
145
  {
145
146
  CHECK;
146
147
  THIS->set_shortcut(
147
- key ? to<const char*>(key) : NULL,
148
+ key ? to<Reflex::KeyCode>(key) : Reflex::KEY_NONE,
148
149
  THIS->shortcut_modifiers());
149
150
  }
150
151
 
@@ -152,7 +153,7 @@ static
152
153
  VALUE get_shortcut_key(VALUE self)
153
154
  {
154
155
  CHECK;
155
- return value(THIS->shortcut_key());
156
+ return value((int) THIS->shortcut_key());
156
157
  }
157
158
 
158
159
  static
@@ -268,8 +269,8 @@ Init_reflex_menu ()
268
269
  cMenu.define_method("enabled?", is_enabled);
269
270
  cMenu.define_method("check!", check);
270
271
  cMenu.define_method("checked?", is_checked);
271
- rb_define_method(cMenu, "shortcut_key=", RUBY_METHOD_FUNC(set_shortcut_key), 1);
272
- rb_define_method(cMenu, "shortcut_key", RUBY_METHOD_FUNC(get_shortcut_key), 0);
272
+ cMenu.define_private_method("set_shortcut_key!", set_shortcut_key);
273
+ cMenu.define_private_method("shortcut_key!", get_shortcut_key);
273
274
  rb_define_method(cMenu, "shortcut_modifiers=", RUBY_METHOD_FUNC(set_shortcut_modifiers), 1);
274
275
  rb_define_method(cMenu, "shortcut_modifiers", RUBY_METHOD_FUNC(get_shortcut_modifiers), 0);
275
276
  cMenu.define_method("separator?", is_separator);
@@ -10,7 +10,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MIDI)
10
10
 
11
11
  #define THIS to<Reflex::MIDI*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJECT(Reflex::MIDI, self)
13
+ #define CHECK RUCY_CHECK_OBJ(Reflex::MIDI, self)
14
14
 
15
15
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
16
16
 
@@ -60,10 +60,16 @@ static
60
60
  VALUE s_get_all(VALUE self)
61
61
  {
62
62
  auto list = Reflex::MIDI::all() |
63
- std::views::transform([](auto& ref) {return value(ref);});
63
+ std::views::transform([](Reflex::MIDI::Ref ref) {return value(ref);});
64
64
  return array(list.begin(), list.end());
65
65
  }
66
66
 
67
+ static
68
+ VALUE s_enable(VALUE self)
69
+ {
70
+ Reflex::enable_midi();
71
+ }
72
+
67
73
 
68
74
  static Class cMIDI;
69
75
 
@@ -80,6 +86,7 @@ Init_reflex_midi ()
80
86
  rb_define_method(cMIDI, "on_note_off", RUBY_METHOD_FUNC(on_note_off), 1);
81
87
  rb_define_method(cMIDI, "on_control_change", RUBY_METHOD_FUNC(on_control_change), 1);
82
88
  rb_define_singleton_method(cMIDI, "all", RUBY_METHOD_FUNC(s_get_all), 0);
89
+ rb_define_singleton_method(cMIDI, "enable", RUBY_METHOD_FUNC(s_enable), 0);
83
90
 
84
91
  define_wrapper_equality_methods<Reflex::MIDI>(cMIDI);
85
92
  }
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MIDIEvent)
9
9
 
10
10
  #define THIS to<Reflex::MIDIEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::MIDIEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::MIDIEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MotionEvent)
9
9
 
10
10
  #define THIS to<Reflex::MotionEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::MotionEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::MotionEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -19,15 +19,18 @@ void Init_reflex_frame_event ();
19
19
  void Init_reflex_scroll_event ();
20
20
  void Init_reflex_focus_event ();
21
21
  void Init_reflex_key_event ();
22
+ void Init_reflex_text_event ();
22
23
  void Init_reflex_pointer_event ();
23
24
  void Init_reflex_wheel_event ();
24
- void Init_reflex_midi_event ();
25
- void Init_reflex_note_event ();
26
- void Init_reflex_control_change_event ();
27
25
  void Init_reflex_capture_event ();
28
26
  void Init_reflex_timer_event ();
29
27
  void Init_reflex_contact_event ();
30
28
  void Init_reflex_motion_event ();
29
+ void Init_reflex_file_event ();
30
+ void Init_reflex_color_event ();
31
+ void Init_reflex_midi_event ();
32
+ void Init_reflex_note_event ();
33
+ void Init_reflex_control_change_event ();
31
34
 
32
35
  void Init_reflex_shape ();
33
36
  void Init_reflex_polygon_shape ();
@@ -48,9 +51,12 @@ void Init_reflex_view ();
48
51
  void Init_reflex_menu ();
49
52
  void Init_reflex_screen ();
50
53
  void Init_reflex_clipboard ();
54
+ void Init_reflex_file_dialog ();
55
+ void Init_reflex_color_picker ();
51
56
 
52
57
  void Init_reflex_device ();
53
58
  void Init_reflex_midi ();
59
+ void Init_reflex_gamepad ();
54
60
 
55
61
  void Init_reflex_image_view ();
56
62
 
@@ -80,15 +86,18 @@ Init_reflex_ext ()
80
86
  Init_reflex_scroll_event();
81
87
  Init_reflex_focus_event();
82
88
  Init_reflex_key_event();
89
+ Init_reflex_text_event();
83
90
  Init_reflex_pointer_event();
84
91
  Init_reflex_wheel_event();
85
- Init_reflex_midi_event();
86
- Init_reflex_note_event();
87
- Init_reflex_control_change_event();
88
92
  Init_reflex_capture_event();
89
93
  Init_reflex_timer_event();
90
94
  Init_reflex_contact_event();
91
95
  Init_reflex_motion_event();
96
+ Init_reflex_file_event();
97
+ Init_reflex_color_event();
98
+ Init_reflex_midi_event();
99
+ Init_reflex_note_event();
100
+ Init_reflex_control_change_event();
92
101
 
93
102
  Init_reflex_shape();
94
103
  Init_reflex_polygon_shape();
@@ -109,9 +118,12 @@ Init_reflex_ext ()
109
118
  Init_reflex_menu();
110
119
  Init_reflex_screen();
111
120
  Init_reflex_clipboard();
121
+ Init_reflex_file_dialog();
122
+ Init_reflex_color_picker();
112
123
 
113
124
  Init_reflex_device();
114
125
  Init_reflex_midi();
126
+ Init_reflex_gamepad();
115
127
 
116
128
  Init_reflex_image_view();
117
129
 
@@ -8,7 +8,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::NoteEvent)
8
8
 
9
9
  #define THIS to<Reflex::NoteEvent*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::NoteEvent, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::NoteEvent, self)
12
12
 
13
13
 
14
14
  static
@@ -11,7 +11,7 @@ RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(REFLEX_EXPORT, Reflex::Pin)
11
11
 
12
12
  #define THIS to<Reflex::Pin*>(self)
13
13
 
14
- #define CHECK RUCY_CHECK_OBJ(Reflex::Pin, self)
14
+ #define CHECK RUCY_CHECK_PTR(Reflex::Pin, self)
15
15
 
16
16
 
17
17
  static
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Pointer)
9
9
 
10
10
  #define THIS to<Reflex::Pointer*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::Pointer, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::Pointer, self)
13
13
 
14
14
 
15
15
  static
@@ -11,7 +11,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::PointerEvent)
11
11
 
12
12
  #define THIS to<Reflex::PointerEvent*>(self)
13
13
 
14
- #define CHECK RUCY_CHECK_OBJ(Reflex::PointerEvent, self)
14
+ #define CHECK RUCY_CHECK_PTR(Reflex::PointerEvent, self)
15
15
 
16
16
 
17
17
  static
@@ -32,7 +32,7 @@ VALUE initialize(VALUE self)
32
32
  for (size_t i = 0; i < argc; ++i)
33
33
  pointers.emplace_back(to<Reflex::Pointer&>(argv[i]));
34
34
 
35
- *THIS = Reflex::PointerEvent(&pointers[0], pointers.size());
35
+ *THIS = Reflex::PointerEvent(pointers.data(), pointers.size());
36
36
  return rb_call_super(0, NULL);
37
37
  }
38
38
 
@@ -9,7 +9,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::PolygonShape)
9
9
 
10
10
  #define THIS to<Reflex::PolygonShape*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::PolygonShape, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::PolygonShape, self)
13
13
 
14
14
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
15
15
 
@@ -8,7 +8,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::RectShape)
8
8
 
9
9
  #define THIS to<Reflex::RectShape*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::RectShape, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::RectShape, self)
12
12
 
13
13
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
14
14