reflexion 0.5.3 → 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 (309) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +56 -7
  3. data/.doc/ext/reflex/capture_event.cpp +1 -1
  4. data/.doc/ext/reflex/chase_constraint.cpp +84 -0
  5. data/.doc/ext/reflex/clipboard.cpp +65 -0
  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 +135 -0
  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 +178 -0
  26. data/.doc/ext/reflex/menu.cpp +303 -0
  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 +40 -10
  31. data/.doc/ext/reflex/note_event.cpp +1 -1
  32. data/.doc/ext/reflex/pin.cpp +156 -0
  33. data/.doc/ext/reflex/pointer.cpp +3 -1
  34. data/.doc/ext/reflex/pointer_event.cpp +3 -3
  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 +606 -237
  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 +5 -5
  41. data/.doc/ext/reflex/shape.cpp +1 -1
  42. data/.doc/ext/reflex/snap_constraint.cpp +125 -0
  43. data/.doc/ext/reflex/style.cpp +1 -1
  44. data/.doc/ext/reflex/style_length.cpp +4 -3
  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 +206 -79
  50. data/.doc/ext/reflex/wheel_constraint.cpp +142 -0
  51. data/.doc/ext/reflex/wheel_event.cpp +1 -1
  52. data/.doc/ext/reflex/window.cpp +282 -31
  53. data/.github/workflows/release-gem.yml +2 -40
  54. data/.github/workflows/tag.yml +5 -28
  55. data/.github/workflows/test.yml +1 -28
  56. data/ChangeLog.md +79 -0
  57. data/Gemfile.lock +13 -8
  58. data/README.md +1 -0
  59. data/Rakefile +13 -2
  60. data/Reflex.podspec +2 -2
  61. data/VERSION +1 -1
  62. data/ext/reflex/application.cpp +62 -7
  63. data/ext/reflex/capture_event.cpp +1 -1
  64. data/ext/reflex/chase_constraint.cpp +89 -0
  65. data/ext/reflex/clipboard.cpp +69 -0
  66. data/ext/reflex/color_event.cpp +80 -0
  67. data/ext/reflex/color_picker.cpp +121 -0
  68. data/ext/reflex/constraint.cpp +146 -0
  69. data/ext/reflex/contact_event.cpp +1 -1
  70. data/ext/reflex/control_change_event.cpp +1 -1
  71. data/ext/reflex/device.cpp +1 -1
  72. data/ext/reflex/device_event.cpp +1 -1
  73. data/ext/reflex/draw_event.cpp +1 -1
  74. data/ext/reflex/ellipse_shape.cpp +1 -1
  75. data/ext/reflex/event.cpp +1 -1
  76. data/ext/reflex/extconf.rb +4 -2
  77. data/ext/reflex/file_dialog.cpp +194 -0
  78. data/ext/reflex/file_event.cpp +108 -0
  79. data/ext/reflex/filter.cpp +1 -1
  80. data/ext/reflex/focus_event.cpp +1 -1
  81. data/ext/reflex/frame_event.cpp +1 -1
  82. data/ext/reflex/gamepad.cpp +50 -0
  83. data/ext/reflex/image_view.cpp +1 -1
  84. data/ext/reflex/key_event.cpp +1 -275
  85. data/ext/reflex/line_shape.cpp +1 -1
  86. data/ext/reflex/link_constraint.cpp +194 -0
  87. data/ext/reflex/menu.cpp +331 -0
  88. data/ext/reflex/midi.cpp +11 -3
  89. data/ext/reflex/midi_event.cpp +1 -1
  90. data/ext/reflex/motion_event.cpp +1 -1
  91. data/ext/reflex/native.cpp +40 -10
  92. data/ext/reflex/note_event.cpp +1 -1
  93. data/ext/reflex/pin.cpp +165 -0
  94. data/ext/reflex/pointer.cpp +3 -1
  95. data/ext/reflex/pointer_event.cpp +3 -3
  96. data/ext/reflex/polygon_shape.cpp +1 -1
  97. data/ext/reflex/rect_shape.cpp +1 -1
  98. data/ext/reflex/reflex.cpp +608 -237
  99. data/ext/reflex/screen.cpp +31 -2
  100. data/ext/reflex/scroll_event.cpp +1 -1
  101. data/ext/reflex/selector.cpp +5 -5
  102. data/ext/reflex/selector.h +10 -10
  103. data/ext/reflex/shape.cpp +1 -1
  104. data/ext/reflex/snap_constraint.cpp +135 -0
  105. data/ext/reflex/style.cpp +1 -1
  106. data/ext/reflex/style_length.cpp +4 -3
  107. data/ext/reflex/text_event.cpp +111 -0
  108. data/ext/reflex/timer.cpp +1 -1
  109. data/ext/reflex/timer_event.cpp +1 -1
  110. data/ext/reflex/update_event.cpp +1 -1
  111. data/ext/reflex/view.cpp +236 -96
  112. data/ext/reflex/wheel_constraint.cpp +154 -0
  113. data/ext/reflex/wheel_event.cpp +1 -1
  114. data/ext/reflex/window.cpp +318 -40
  115. data/include/reflex/application.h +19 -0
  116. data/include/reflex/clipboard.h +53 -0
  117. data/include/reflex/color_picker.h +65 -0
  118. data/include/reflex/constraint.h +275 -0
  119. data/include/reflex/defs.h +204 -195
  120. data/include/reflex/event.h +180 -88
  121. data/include/reflex/file_dialog.h +73 -0
  122. data/include/reflex/gamepad.h +3 -0
  123. data/include/reflex/menu.h +120 -0
  124. data/include/reflex/midi.h +3 -0
  125. data/include/reflex/pin.h +68 -0
  126. data/include/reflex/pointer.h +4 -0
  127. data/include/reflex/reflex.h +2 -0
  128. data/include/reflex/ruby/application.h +6 -1
  129. data/include/reflex/ruby/clipboard.h +23 -0
  130. data/include/reflex/ruby/color_picker.h +89 -0
  131. data/include/reflex/ruby/constraint.h +94 -0
  132. data/include/reflex/ruby/event.h +62 -29
  133. data/include/reflex/ruby/file_dialog.h +89 -0
  134. data/include/reflex/ruby/gamepad.h +46 -0
  135. data/include/reflex/ruby/menu.h +103 -0
  136. data/include/reflex/ruby/pin.h +40 -0
  137. data/include/reflex/ruby/reflex.h +3 -0
  138. data/include/reflex/ruby/view.h +123 -39
  139. data/include/reflex/ruby/window.h +96 -19
  140. data/include/reflex/ruby.h +3 -0
  141. data/include/reflex/screen.h +11 -2
  142. data/include/reflex/view.h +66 -27
  143. data/include/reflex/window.h +57 -12
  144. data/include/reflex.h +8 -0
  145. data/lib/reflex/application.rb +5 -5
  146. data/lib/reflex/autoinit.rb +3 -1
  147. data/lib/reflex/button.rb +3 -3
  148. data/lib/reflex/chase_constraint.rb +15 -0
  149. data/lib/reflex/clipboard.rb +19 -0
  150. data/lib/reflex/color_event.rb +16 -0
  151. data/lib/reflex/color_picker.rb +45 -0
  152. data/lib/reflex/constraint.rb +29 -0
  153. data/lib/reflex/control_change_event.rb +17 -0
  154. data/lib/reflex/extension.rb +1 -1
  155. data/lib/reflex/file_dialog.rb +70 -0
  156. data/lib/reflex/file_event.rb +37 -0
  157. data/lib/reflex/helper.rb +79 -0
  158. data/lib/reflex/key_event.rb +14 -14
  159. data/lib/reflex/link_constraint.rb +31 -0
  160. data/lib/reflex/menu.rb +92 -0
  161. data/lib/reflex/model.rb +19 -19
  162. data/lib/reflex/note_event.rb +1 -1
  163. data/lib/reflex/pin.rb +39 -0
  164. data/lib/reflex/pointer.rb +30 -1
  165. data/lib/reflex/pointer_event.rb +13 -2
  166. data/lib/reflex/reflex.rb +5 -0
  167. data/lib/reflex/shape.rb +14 -14
  168. data/lib/reflex/snap_constraint.rb +28 -0
  169. data/lib/reflex/style.rb +16 -16
  170. data/lib/reflex/text_event.rb +40 -0
  171. data/lib/reflex/timer.rb +3 -3
  172. data/lib/reflex/view.rb +85 -18
  173. data/lib/reflex/wheel_constraint.rb +28 -0
  174. data/lib/reflex/wheel_event.rb +19 -1
  175. data/lib/reflex/window.rb +25 -13
  176. data/lib/reflex.rb +23 -8
  177. data/pod.rake +1 -1
  178. data/reflex.gemspec +4 -4
  179. data/samples/constraint.rb +152 -0
  180. data/samples/ime.rb +100 -0
  181. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
  182. data/samples/menu.rb +32 -0
  183. data/samples/model.rb +3 -3
  184. data/samples/test/alert.rb +93 -0
  185. data/samples/test/always_on.rb +76 -0
  186. data/samples/test/app_background.rb +51 -0
  187. data/samples/test/boundary.rb +75 -0
  188. data/samples/test/callback_exception.rb +101 -0
  189. data/samples/test/cancel.rb +53 -0
  190. data/samples/test/color_picker.rb +63 -0
  191. data/samples/test/file_dialog.rb +102 -0
  192. data/samples/window_style.rb +156 -0
  193. data/src/application.cpp +180 -20
  194. data/src/application.h +95 -5
  195. data/src/clipboard.cpp +81 -0
  196. data/src/color_picker.cpp +113 -0
  197. data/src/color_picker.h +36 -0
  198. data/src/constraint.cpp +1662 -0
  199. data/src/constraint.h +64 -0
  200. data/src/event.cpp +416 -252
  201. data/src/event.h +13 -2
  202. data/src/file_dialog.cpp +163 -0
  203. data/src/file_dialog.h +52 -0
  204. data/src/gamepad.cpp +42 -5
  205. data/src/gamepad.h +4 -0
  206. data/src/ios/app_delegate.mm +5 -3
  207. data/src/ios/application.mm +29 -0
  208. data/src/ios/clipboard.mm +44 -0
  209. data/src/ios/color_picker.mm +19 -0
  210. data/src/ios/event.h +6 -2
  211. data/src/ios/event.mm +31 -12
  212. data/src/ios/file_dialog.mm +21 -0
  213. data/src/ios/gamepad.mm +4 -4
  214. data/src/ios/menu.mm +41 -0
  215. data/src/ios/reflex.mm +8 -0
  216. data/src/ios/screen.mm +26 -0
  217. data/src/ios/view_controller.mm +47 -42
  218. data/src/ios/window.mm +44 -9
  219. data/src/menu.cpp +387 -0
  220. data/src/menu.h +81 -0
  221. data/src/midi.cpp +61 -31
  222. data/src/osx/app_delegate.h +4 -0
  223. data/src/osx/app_delegate.mm +168 -139
  224. data/src/osx/application.mm +103 -5
  225. data/src/osx/clipboard.mm +45 -0
  226. data/src/osx/color_picker.mm +112 -0
  227. data/src/osx/event.h +10 -0
  228. data/src/osx/event.mm +114 -30
  229. data/src/osx/file_dialog.mm +168 -0
  230. data/src/osx/gamepad.mm +2 -2
  231. data/src/osx/gamepad_hid.mm +1 -1
  232. data/src/osx/menu.h +25 -0
  233. data/src/osx/menu.mm +516 -0
  234. data/src/osx/native_window.h +16 -2
  235. data/src/osx/native_window.mm +141 -57
  236. data/src/osx/opengl_view.h +2 -1
  237. data/src/osx/opengl_view.mm +229 -37
  238. data/src/osx/reflex.mm +38 -0
  239. data/src/osx/screen.mm +36 -0
  240. data/src/osx/window.mm +117 -24
  241. data/src/pin.cpp +137 -0
  242. data/src/pointer.cpp +36 -16
  243. data/src/pointer.h +10 -0
  244. data/src/rays.h +46 -0
  245. data/src/sdl/application.cpp +73 -8
  246. data/src/sdl/clipboard.cpp +39 -0
  247. data/src/sdl/color_picker.cpp +18 -0
  248. data/src/sdl/event.cpp +44 -6
  249. data/src/sdl/event.h +18 -3
  250. data/src/sdl/file_dialog.cpp +20 -0
  251. data/src/sdl/gamepad.cpp +3 -7
  252. data/src/sdl/menu.cpp +40 -0
  253. data/src/sdl/reflex.cpp +20 -0
  254. data/src/sdl/screen.cpp +36 -0
  255. data/src/sdl/window.cpp +168 -37
  256. data/src/shape.cpp +15 -10
  257. data/src/view.cpp +583 -233
  258. data/src/view.h +22 -4
  259. data/src/vk.h +416 -0
  260. data/src/win32/application.cpp +167 -12
  261. data/src/win32/application.h +20 -0
  262. data/src/win32/clipboard.cpp +210 -0
  263. data/src/win32/color_picker.cpp +82 -0
  264. data/src/win32/event.cpp +123 -11
  265. data/src/win32/event.h +22 -3
  266. data/src/win32/file_dialog.cpp +226 -0
  267. data/src/win32/gamepad.cpp +9 -2
  268. data/src/win32/menu.cpp +490 -0
  269. data/src/win32/menu.h +35 -0
  270. data/src/win32/opengl.cpp +2 -9
  271. data/src/win32/reflex.cpp +44 -3
  272. data/src/win32/screen.cpp +164 -3
  273. data/src/win32/screen.h +8 -0
  274. data/src/win32/tray.cpp +191 -0
  275. data/src/win32/tray.h +22 -0
  276. data/src/win32/vk.cpp +11 -0
  277. data/src/win32/window.cpp +858 -135
  278. data/src/win32/window.h +9 -0
  279. data/src/window.cpp +929 -183
  280. data/src/window.h +77 -33
  281. data/src/world.cpp +86 -15
  282. data/src/world.h +9 -2
  283. data/test/helper.rb +24 -0
  284. data/test/test_application.rb +101 -1
  285. data/test/test_chase_constraint.rb +122 -0
  286. data/test/test_clipboard.rb +54 -0
  287. data/test/test_color_event.rb +36 -0
  288. data/test/test_color_picker.rb +62 -0
  289. data/test/test_constraint.rb +184 -0
  290. data/test/test_event.rb +1 -1
  291. data/test/test_file_dialog.rb +48 -0
  292. data/test/test_file_event.rb +43 -0
  293. data/test/test_has_text_preedit.rb +54 -0
  294. data/test/test_key_event.rb +23 -2
  295. data/test/test_link_constraint.rb +237 -0
  296. data/test/test_menu.rb +237 -0
  297. data/test/test_pin.rb +65 -0
  298. data/test/test_pointer.rb +50 -26
  299. data/test/test_pointer_event.rb +25 -10
  300. data/test/test_reflex.rb +36 -0
  301. data/test/test_screen.rb +24 -2
  302. data/test/test_snap_constraint.rb +140 -0
  303. data/test/test_text_event.rb +54 -0
  304. data/test/test_view.rb +152 -25
  305. data/test/test_wheel_constraint.rb +125 -0
  306. data/test/test_wheel_event.rb +24 -10
  307. data/test/test_window.rb +205 -43
  308. metadata +154 -10
  309. data/.github/workflows/utils.rb +0 -127
@@ -0,0 +1,178 @@
1
+ #include "reflex/ruby/constraint.h"
2
+
3
+
4
+ #include <rays/ruby/point.h>
5
+ #include "reflex/exception.h"
6
+ #include "defs.h"
7
+
8
+
9
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::LinkConstraint)
10
+
11
+ #define THIS to<Reflex::LinkConstraint*>(self)
12
+
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::LinkConstraint, self)
14
+
15
+
16
+ static
17
+ VALUE alloc(VALUE klass)
18
+ {
19
+ Reflex::reflex_error(
20
+ __FILE__, __LINE__, "can not instantiate LinkConstraint class");
21
+ }
22
+
23
+ static
24
+ VALUE set_axis(VALUE self)
25
+ {
26
+ CHECK;
27
+ if (argc == 1 && argv[0].is_nil())
28
+ THIS->clear_axis();
29
+ else
30
+ THIS->set_axis(to<Rays::Point>(argc, argv));
31
+ }
32
+
33
+ static
34
+ VALUE get_axis(VALUE self)
35
+ {
36
+ CHECK;
37
+ return THIS->has_axis() ? value(THIS->axis()) : nil();
38
+ }
39
+
40
+ static
41
+ VALUE set_distance(VALUE self, VALUE distance)
42
+ {
43
+ CHECK;
44
+ if (distance.is_nil())
45
+ THIS->clear_distance();
46
+ else
47
+ THIS->set_distance(to<coord>(distance));
48
+ }
49
+
50
+ static
51
+ VALUE get_distance(VALUE self)
52
+ {
53
+ CHECK;
54
+ return value(THIS->distance());
55
+ }
56
+
57
+ static
58
+ VALUE has_distance(VALUE self)
59
+ {
60
+ CHECK;
61
+ return value(THIS->has_distance());
62
+ }
63
+
64
+ static
65
+ VALUE current_distance(VALUE self)
66
+ {
67
+ CHECK;
68
+ return value(THIS->current_distance());
69
+ }
70
+
71
+ static
72
+ VALUE set_range(VALUE self, VALUE min, VALUE max)
73
+ {
74
+ CHECK;
75
+ THIS->set_range(to<coord>(min), to<coord>(max));
76
+ }
77
+
78
+ static
79
+ VALUE clear_range(VALUE self)
80
+ {
81
+ CHECK;
82
+ THIS->clear_range();
83
+ }
84
+
85
+ static
86
+ VALUE range_min(VALUE self)
87
+ {
88
+ CHECK;
89
+ return value(THIS->range_min());
90
+ }
91
+
92
+ static
93
+ VALUE range_max(VALUE self)
94
+ {
95
+ CHECK;
96
+ return value(THIS->range_max());
97
+ }
98
+
99
+ static
100
+ VALUE has_range(VALUE self)
101
+ {
102
+ CHECK;
103
+ return value(THIS->has_range());
104
+ }
105
+
106
+ static
107
+ VALUE set_motor(VALUE self, VALUE pixels_per_second)
108
+ {
109
+ CHECK;
110
+ if (pixels_per_second.is_nil())
111
+ THIS->clear_motor();
112
+ else
113
+ THIS->set_motor(to<coord>(pixels_per_second));
114
+ }
115
+
116
+ static
117
+ VALUE get_motor(VALUE self)
118
+ {
119
+ CHECK;
120
+ return THIS->has_motor() ? value(THIS->motor()) : nil();
121
+ }
122
+
123
+ static
124
+ VALUE set_force(VALUE self, VALUE max_force)
125
+ {
126
+ CHECK;
127
+ if (max_force.is_nil())
128
+ THIS->clear_force();
129
+ else
130
+ THIS->set_force(to<float>(max_force));
131
+ }
132
+
133
+ static
134
+ VALUE get_force(VALUE self)
135
+ {
136
+ CHECK;
137
+ return THIS->has_force() ? value(THIS->force()) : nil();
138
+ }
139
+
140
+
141
+ static Class cLinkConstraint;
142
+
143
+ void
144
+ Init_reflex_link_constraint ()
145
+ {
146
+ Module mReflex = rb_define_module("Reflex");
147
+
148
+ cLinkConstraint = mReflex.define_class("LinkConstraint", Reflex::constraint_class());
149
+ rb_define_alloc_func(cLinkConstraint, alloc);
150
+ rb_define_method(cLinkConstraint, "axis=", RUBY_METHOD_FUNC(set_axis), -1);
151
+ rb_define_method(cLinkConstraint, "axis", RUBY_METHOD_FUNC(get_axis), 0);
152
+ rb_define_method(cLinkConstraint, "distance=", RUBY_METHOD_FUNC(set_distance), 1);
153
+ rb_define_method(cLinkConstraint, "distance", RUBY_METHOD_FUNC(get_distance), 0);
154
+ rb_define_method(cLinkConstraint, "current_distance", RUBY_METHOD_FUNC(current_distance), 0);
155
+ cLinkConstraint.define_private_method( "set_range!", set_range);
156
+ cLinkConstraint.define_private_method("clear_range!", clear_range);
157
+ cLinkConstraint.define_private_method( "range_min!", range_min);
158
+ cLinkConstraint.define_private_method( "range_max!", range_max);
159
+ cLinkConstraint.define_private_method( "has_range!", has_range);
160
+ rb_define_method(cLinkConstraint, "motor=", RUBY_METHOD_FUNC(set_motor), 1);
161
+ rb_define_method(cLinkConstraint, "motor", RUBY_METHOD_FUNC(get_motor), 0);
162
+ rb_define_method(cLinkConstraint, "force=", RUBY_METHOD_FUNC(set_force), 1);
163
+ rb_define_method(cLinkConstraint, "force", RUBY_METHOD_FUNC(get_force), 0);
164
+ }
165
+
166
+
167
+ namespace Reflex
168
+ {
169
+
170
+
171
+ Class
172
+ link_constraint_class ()
173
+ {
174
+ return cLinkConstraint;
175
+ }
176
+
177
+
178
+ }// Reflex
@@ -0,0 +1,303 @@
1
+ #include "reflex/ruby/menu.h"
2
+
3
+
4
+ #include <ranges>
5
+ #include <rays/ruby/image.h>
6
+ #include "reflex/exception.h"
7
+ #include "reflex/ruby/reflex.h"
8
+ #include "reflex/ruby/selector.h"
9
+ #include "reflex/ruby/view.h"
10
+ #include "defs.h"
11
+ #include "selector.h"
12
+
13
+
14
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Menu)
15
+
16
+ #define THIS to<Reflex::Menu*>(self)
17
+
18
+ #define CHECK RUCY_CHECK_PTR(Reflex::Menu, self)
19
+
20
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
21
+
22
+
23
+ static
24
+ VALUE alloc(VALUE klass)
25
+ {
26
+ return value(new Reflex::RubyMenu<Reflex::Menu>, klass);
27
+ }
28
+
29
+ static
30
+ VALUE popup(VALUE self)
31
+ {
32
+ CHECK;
33
+ check_arg_count(__FILE__, __LINE__, "Menu#popup", argc, 2, 3);
34
+
35
+ Reflex::View* view = NULL;
36
+ if (argv[0].is_a(Reflex::view_class()))
37
+ {
38
+ view = to<Reflex::View*>(argv[0]);
39
+ argc--;
40
+ argv++;
41
+ }
42
+ THIS->popup(view, to<Rays::Point>(argc, argv));
43
+ return self;
44
+ }
45
+
46
+ static
47
+ VALUE add_child(VALUE self, VALUE child, VALUE index)
48
+ {
49
+ CHECK;
50
+ THIS->add_child(to<Reflex::Menu*>(child), index.is_nil() ? -1 : to<int>(index));
51
+ return child;
52
+ }
53
+
54
+ static
55
+ VALUE remove_child(VALUE self, VALUE child)
56
+ {
57
+ CHECK;
58
+ THIS->remove_child(to<Reflex::Menu*>(child));
59
+ return child;
60
+ }
61
+
62
+ static
63
+ VALUE clear_children(VALUE self)
64
+ {
65
+ CHECK;
66
+ THIS->clear_children();
67
+ return self;
68
+ }
69
+
70
+ static
71
+ VALUE find_children(VALUE self)
72
+ {
73
+ CHECK;
74
+ check_arg_count(__FILE__, __LINE__, "Menu#find_children", argc, 1, 2);
75
+
76
+ bool recursive = (argc >= 2) ? to<bool>(argv[1]) : true;
77
+
78
+ auto children =
79
+ THIS->find_children(to<Reflex::Selector>(argv[0]), recursive) |
80
+ std::views::transform([](auto& ref) {return value(ref);});
81
+ return array(children.begin(), children.end());
82
+ }
83
+
84
+ static
85
+ VALUE set_label(VALUE self, VALUE label)
86
+ {
87
+ CHECK;
88
+ THIS->set_label(label ? to<const char*>(label) : NULL);
89
+ }
90
+
91
+ static
92
+ VALUE get_label(VALUE self)
93
+ {
94
+ CHECK;
95
+ return value(THIS->label());
96
+ }
97
+
98
+ static
99
+ VALUE set_image(VALUE self, VALUE image)
100
+ {
101
+ CHECK;
102
+ THIS->set_image(image ? to<Rays::Image&>(image) : Rays::Image());
103
+ return image;
104
+ }
105
+
106
+ static
107
+ VALUE get_image(VALUE self)
108
+ {
109
+ CHECK;
110
+ const Rays::Image& image = THIS->image();
111
+ return image ? value(image) : nil();
112
+ }
113
+
114
+ static
115
+ VALUE enable(VALUE self, VALUE state)
116
+ {
117
+ CHECK;
118
+ THIS->enable(to<bool>(state));
119
+ }
120
+
121
+ static
122
+ VALUE is_enabled(VALUE self)
123
+ {
124
+ CHECK;
125
+ return value(THIS->is_enabled());
126
+ }
127
+
128
+ static
129
+ VALUE check(VALUE self, VALUE state)
130
+ {
131
+ CHECK;
132
+ THIS->check(to<bool>(state));
133
+ }
134
+
135
+ static
136
+ VALUE is_checked(VALUE self)
137
+ {
138
+ CHECK;
139
+ return value(THIS->is_checked());
140
+ }
141
+
142
+
143
+ static
144
+ VALUE set_shortcut_key(VALUE self, VALUE key)
145
+ {
146
+ CHECK;
147
+ THIS->set_shortcut(
148
+ key ? to<Reflex::KeyCode>(key) : Reflex::KEY_NONE,
149
+ THIS->shortcut_modifiers());
150
+ }
151
+
152
+ static
153
+ VALUE get_shortcut_key(VALUE self)
154
+ {
155
+ CHECK;
156
+ return value((int) THIS->shortcut_key());
157
+ }
158
+
159
+ static
160
+ VALUE set_shortcut_modifiers(VALUE self, VALUE modifiers)
161
+ {
162
+ CHECK;
163
+ THIS->set_shortcut(THIS->shortcut_key(), to<uint>(modifiers));
164
+ }
165
+
166
+ static
167
+ VALUE get_shortcut_modifiers(VALUE self)
168
+ {
169
+ CHECK;
170
+ return value(THIS->shortcut_modifiers());
171
+ }
172
+
173
+ static
174
+ VALUE is_separator(VALUE self)
175
+ {
176
+ CHECK;
177
+ return value(THIS->is_separator());
178
+ }
179
+
180
+ static
181
+ VALUE get_parent(VALUE self)
182
+ {
183
+ CHECK;
184
+ return value(THIS->parent());
185
+ }
186
+
187
+ static
188
+ VALUE get_size(VALUE self)
189
+ {
190
+ CHECK;
191
+ return value((int) THIS->size());
192
+ }
193
+
194
+ static
195
+ VALUE is_empty(VALUE self)
196
+ {
197
+ CHECK;
198
+ return value(THIS->empty());
199
+ }
200
+
201
+ static
202
+ VALUE each(VALUE self)
203
+ {
204
+ CHECK;
205
+
206
+ std::vector<Reflex::Menu::Ref> children(THIS->begin(), THIS->end());
207
+
208
+ Value ret;
209
+ for (auto& child : children)
210
+ ret = yield(value(child.get()));
211
+ return ret;
212
+ }
213
+
214
+ static
215
+ VALUE on_show(VALUE self, VALUE event)
216
+ {
217
+ CHECK;
218
+ CALL(on_show(to<Reflex::Event*>(event)));
219
+ }
220
+
221
+ static
222
+ VALUE on_hide(VALUE self, VALUE event)
223
+ {
224
+ CHECK;
225
+ CALL(on_hide(to<Reflex::Event*>(event)));
226
+ }
227
+
228
+ static
229
+ VALUE on_open_submenu(VALUE self, VALUE event)
230
+ {
231
+ CHECK;
232
+ CALL(on_open_submenu(to<Reflex::Event*>(event)));
233
+ }
234
+
235
+ static
236
+ VALUE on_close_submenu(VALUE self, VALUE event)
237
+ {
238
+ CHECK;
239
+ CALL(on_close_submenu(to<Reflex::Event*>(event)));
240
+ }
241
+
242
+ static
243
+ VALUE on_click(VALUE self, VALUE event)
244
+ {
245
+ CHECK;
246
+ CALL(on_click(to<Reflex::Event*>(event)));
247
+ }
248
+
249
+
250
+ static Class cMenu;
251
+
252
+ void
253
+ Init_reflex_menu ()
254
+ {
255
+ Module mReflex = rb_define_module("Reflex");
256
+
257
+ cMenu = rb_define_class_under(mReflex, "Menu", rb_cObject);
258
+ rb_define_alloc_func(cMenu, alloc);
259
+ rb_define_method(cMenu, "popup", RUBY_METHOD_FUNC(popup), -1);
260
+ cMenu.define_method( "add_child!", add_child);
261
+ rb_define_method(cMenu, "remove_child", RUBY_METHOD_FUNC(remove_child), 1);
262
+ rb_define_method(cMenu, "clear_children", RUBY_METHOD_FUNC(clear_children), 0);
263
+ rb_define_method(cMenu, "find_children", RUBY_METHOD_FUNC(find_children), -1);
264
+ rb_define_method(cMenu, "label=", RUBY_METHOD_FUNC(set_label), 1);
265
+ rb_define_method(cMenu, "label", RUBY_METHOD_FUNC(get_label), 0);
266
+ rb_define_method(cMenu, "image=", RUBY_METHOD_FUNC(set_image), 1);
267
+ rb_define_method(cMenu, "image", RUBY_METHOD_FUNC(get_image), 0);
268
+ cMenu.define_method("enable!", enable);
269
+ cMenu.define_method("enabled?", is_enabled);
270
+ cMenu.define_method("check!", check);
271
+ cMenu.define_method("checked?", is_checked);
272
+ cMenu.define_private_method("set_shortcut_key!", set_shortcut_key);
273
+ cMenu.define_private_method("shortcut_key!", get_shortcut_key);
274
+ rb_define_method(cMenu, "shortcut_modifiers=", RUBY_METHOD_FUNC(set_shortcut_modifiers), 1);
275
+ rb_define_method(cMenu, "shortcut_modifiers", RUBY_METHOD_FUNC(get_shortcut_modifiers), 0);
276
+ cMenu.define_method("separator?", is_separator);
277
+ rb_define_method(cMenu, "parent", RUBY_METHOD_FUNC(get_parent), 0);
278
+ rb_define_method(cMenu, "size", RUBY_METHOD_FUNC(get_size), 0);
279
+ cMenu.define_method("empty?", is_empty);
280
+ cMenu.define_method("each!", each);
281
+ rb_define_method(cMenu, "on_show", RUBY_METHOD_FUNC(on_show), 1);
282
+ rb_define_method(cMenu, "on_hide", RUBY_METHOD_FUNC(on_hide), 1);
283
+ rb_define_method(cMenu, "on_open_submenu", RUBY_METHOD_FUNC(on_open_submenu), 1);
284
+ rb_define_method(cMenu, "on_close_submenu", RUBY_METHOD_FUNC(on_close_submenu), 1);
285
+ rb_define_method(cMenu, "on_click", RUBY_METHOD_FUNC(on_click), 1);
286
+
287
+ define_wrapper_equality_methods<Reflex::Menu>(cMenu);
288
+ define_selector_methods<Reflex::Menu>(cMenu);
289
+ }
290
+
291
+
292
+ namespace Reflex
293
+ {
294
+
295
+
296
+ Class
297
+ menu_class ()
298
+ {
299
+ return cMenu;
300
+ }
301
+
302
+
303
+ }// Reflex
@@ -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
@@ -4,8 +4,8 @@
4
4
  void Init_reflex ();
5
5
  void Init_reflex_exception ();
6
6
 
7
- void Init_reflex_pointer ();
8
7
  void Init_reflex_selector ();
8
+ void Init_reflex_pointer ();
9
9
  void Init_reflex_style ();
10
10
  void Init_reflex_style_length ();
11
11
  void Init_reflex_timer ();
@@ -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 ();
@@ -35,13 +38,25 @@ void Init_reflex_line_shape ();
35
38
  void Init_reflex_rect_shape ();
36
39
  void Init_reflex_ellipse_shape ();
37
40
 
41
+ void Init_reflex_pin ();
42
+ void Init_reflex_constraint ();
43
+ void Init_reflex_snap_constraint ();
44
+ void Init_reflex_link_constraint ();
45
+ void Init_reflex_wheel_constraint ();
46
+ void Init_reflex_chase_constraint ();
47
+
38
48
  void Init_reflex_application ();
39
- void Init_reflex_screen ();
40
49
  void Init_reflex_window ();
41
50
  void Init_reflex_view ();
51
+ void Init_reflex_menu ();
52
+ void Init_reflex_screen ();
53
+ void Init_reflex_clipboard ();
54
+ void Init_reflex_file_dialog ();
55
+ void Init_reflex_color_picker ();
42
56
 
43
57
  void Init_reflex_device ();
44
58
  void Init_reflex_midi ();
59
+ void Init_reflex_gamepad ();
45
60
 
46
61
  void Init_reflex_image_view ();
47
62
 
@@ -56,8 +71,8 @@ Init_reflex_ext ()
56
71
  Init_reflex();
57
72
  Init_reflex_exception();
58
73
 
59
- Init_reflex_pointer();
60
74
  Init_reflex_selector();
75
+ Init_reflex_pointer();
61
76
  Init_reflex_style();
62
77
  Init_reflex_style_length();
63
78
  Init_reflex_timer();
@@ -71,15 +86,18 @@ Init_reflex_ext ()
71
86
  Init_reflex_scroll_event();
72
87
  Init_reflex_focus_event();
73
88
  Init_reflex_key_event();
89
+ Init_reflex_text_event();
74
90
  Init_reflex_pointer_event();
75
91
  Init_reflex_wheel_event();
76
- Init_reflex_midi_event();
77
- Init_reflex_note_event();
78
- Init_reflex_control_change_event();
79
92
  Init_reflex_capture_event();
80
93
  Init_reflex_timer_event();
81
94
  Init_reflex_contact_event();
82
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();
83
101
 
84
102
  Init_reflex_shape();
85
103
  Init_reflex_polygon_shape();
@@ -87,13 +105,25 @@ Init_reflex_ext ()
87
105
  Init_reflex_rect_shape();
88
106
  Init_reflex_ellipse_shape();
89
107
 
108
+ Init_reflex_pin();
109
+ Init_reflex_constraint();
110
+ Init_reflex_snap_constraint();
111
+ Init_reflex_link_constraint();
112
+ Init_reflex_wheel_constraint();
113
+ Init_reflex_chase_constraint();
114
+
90
115
  Init_reflex_application();
91
- Init_reflex_screen();
92
116
  Init_reflex_window();
93
117
  Init_reflex_view();
118
+ Init_reflex_menu();
119
+ Init_reflex_screen();
120
+ Init_reflex_clipboard();
121
+ Init_reflex_file_dialog();
122
+ Init_reflex_color_picker();
94
123
 
95
124
  Init_reflex_device();
96
125
  Init_reflex_midi();
126
+ Init_reflex_gamepad();
97
127
 
98
128
  Init_reflex_image_view();
99
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