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,146 @@
1
+ #include "reflex/ruby/constraint.h"
2
+
3
+
4
+ #include <rays/ruby/point.h>
5
+ #include "reflex/exception.h"
6
+ #include "reflex/ruby/view.h"
7
+ #include "reflex/ruby/pin.h"
8
+ #include "defs.h"
9
+ #include "selector.h"
10
+
11
+
12
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Constraint)
13
+
14
+ #define THIS to<Reflex::Constraint*>(self)
15
+
16
+ #define CHECK RUCY_CHECK_PTR(Reflex::Constraint, self)
17
+
18
+
19
+ static
20
+ RUCY_DEF_ALLOC(alloc, klass)
21
+ {
22
+ Reflex::reflex_error(
23
+ __FILE__, __LINE__, "can not instantiate Constraint class");
24
+ }
25
+ RUCY_END
26
+
27
+ static
28
+ RUCY_DEF0(remove)
29
+ {
30
+ CHECK;
31
+ THIS->remove();
32
+ return self;
33
+ }
34
+ RUCY_END
35
+
36
+ static
37
+ RUCY_DEF1(get_pin, index)
38
+ {
39
+ CHECK;
40
+ return value(THIS->pin(to<int>(index)));
41
+ }
42
+ RUCY_END
43
+
44
+ static
45
+ RUCY_DEF1(set_spring, hertz)
46
+ {
47
+ CHECK;
48
+ THIS->set_spring(hertz ? to<float>(hertz) : 0);
49
+ }
50
+ RUCY_END
51
+
52
+ static
53
+ RUCY_DEF0(get_spring)
54
+ {
55
+ CHECK;
56
+ float hertz = THIS->spring();
57
+ return hertz > 0 ? value(hertz) : nil();
58
+ }
59
+ RUCY_END
60
+
61
+ static
62
+ RUCY_DEF1(set_damping, ratio)
63
+ {
64
+ CHECK;
65
+ THIS->set_damping(to<float>(ratio));
66
+ }
67
+ RUCY_END
68
+
69
+ static
70
+ RUCY_DEF0(get_damping)
71
+ {
72
+ CHECK;
73
+ return value(THIS->damping());
74
+ }
75
+ RUCY_END
76
+
77
+ static
78
+ RUCY_DEF1(set_collide, state)
79
+ {
80
+ CHECK;
81
+ THIS->set_collide(to<bool>(state));
82
+ }
83
+ RUCY_END
84
+
85
+ static
86
+ RUCY_DEF0(can_collide)
87
+ {
88
+ CHECK;
89
+ return value(THIS->can_collide());
90
+ }
91
+ RUCY_END
92
+
93
+ static
94
+ RUCY_DEF0(is_removed)
95
+ {
96
+ CHECK;
97
+ return value(THIS->is_removed());
98
+ }
99
+ RUCY_END
100
+
101
+ static
102
+ RUCY_DEF0(is_active)
103
+ {
104
+ CHECK;
105
+ return value(THIS->operator bool());
106
+ }
107
+ RUCY_END
108
+
109
+
110
+ static Class cConstraint;
111
+
112
+ void
113
+ Init_reflex_constraint ()
114
+ {
115
+ Module mReflex = define_module("Reflex");
116
+
117
+ cConstraint = mReflex.define_class("Constraint");
118
+ cConstraint.define_alloc_func(alloc);
119
+ cConstraint.define_method("remove", remove);
120
+ cConstraint.define_private_method("get_pin", get_pin);
121
+ cConstraint.define_method("spring=", set_spring);
122
+ cConstraint.define_method("spring", get_spring);
123
+ cConstraint.define_method("damping=", set_damping);
124
+ cConstraint.define_method("damping", get_damping);
125
+ cConstraint.define_method("collide=", set_collide);
126
+ cConstraint.define_method("collide?", can_collide);
127
+ cConstraint.define_method("removed?", is_removed);
128
+ cConstraint.define_method("active?", is_active);
129
+
130
+ define_selector_methods<Reflex::Constraint>(cConstraint);
131
+ define_wrapper_equality_methods<Reflex::Constraint>(cConstraint);
132
+ }
133
+
134
+
135
+ namespace Reflex
136
+ {
137
+
138
+
139
+ Class
140
+ constraint_class ()
141
+ {
142
+ return cConstraint;
143
+ }
144
+
145
+
146
+ }// Reflex
@@ -11,7 +11,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ContactEvent)
11
11
 
12
12
  #define THIS to<Reflex::ContactEvent*>(self)
13
13
 
14
- #define CHECK RUCY_CHECK_OBJ(Reflex::ContactEvent, self)
14
+ #define CHECK RUCY_CHECK_PTR(Reflex::ContactEvent, self)
15
15
 
16
16
 
17
17
  static
@@ -8,7 +8,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ControlChangeEvent)
8
8
 
9
9
  #define THIS to<Reflex::ControlChangeEvent*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::ControlChangeEvent, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::ControlChangeEvent, self)
12
12
 
13
13
 
14
14
  static
@@ -8,7 +8,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Device)
8
8
 
9
9
  #define THIS to<Reflex::Device*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJECT(Reflex::Device, self)
11
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Device, self)
12
12
 
13
13
 
14
14
  static
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::DeviceEvent)
9
9
 
10
10
  #define THIS to<Reflex::DeviceEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::DeviceEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::DeviceEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -10,7 +10,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::DrawEvent)
10
10
 
11
11
  #define THIS to<Reflex::DrawEvent*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::DrawEvent, self)
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::DrawEvent, self)
14
14
 
15
15
 
16
16
  static
@@ -8,7 +8,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::EllipseShape)
8
8
 
9
9
  #define THIS to<Reflex::EllipseShape*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::EllipseShape, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::EllipseShape, self)
12
12
 
13
13
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
14
14
 
data/ext/reflex/event.cpp CHANGED
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Event)
9
9
 
10
10
  #define THIS to<Reflex::Event*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::Event, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::Event, self)
13
13
 
14
14
 
15
15
  static
@@ -13,8 +13,10 @@ 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', 'xinput' if win32?
17
- frameworks << 'Cocoa' << 'GameController' if osx?
16
+ libs.unshift(
17
+ 'gdi32', 'ole32', 'imm32', 'shell32', 'comdlg32', 'opengl32', 'glew32',
18
+ 'version', 'dwmapi', 'uuid', 'winmm', 'xinput1_4') if win32?
19
+ frameworks.concat %w[Cocoa GameController CoreAudio CoreMIDI] if osx?
18
20
  $LDFLAGS << ' -Wl,--out-implib=libreflex.dll.a' if mingw? || cygwin?
19
21
  end
20
22
 
@@ -0,0 +1,194 @@
1
+ #include "reflex/ruby/file_dialog.h"
2
+
3
+
4
+ #include "reflex/ruby/window.h"
5
+ #include "defs.h"
6
+
7
+
8
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::FileDialog)
9
+
10
+ #define THIS to<Reflex::FileDialog*>(self)
11
+
12
+ #define CHECK RUCY_CHECK_OBJ(Reflex::FileDialog, self)
13
+
14
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
15
+
16
+
17
+ static
18
+ RUCY_DEF_ALLOC(alloc, klass)
19
+ {
20
+ return value(new Reflex::RubyFileDialog<Reflex::FileDialog>, klass);
21
+ }
22
+ RUCY_END
23
+
24
+ static
25
+ RUCY_DEF1(open_file, dir)
26
+ {
27
+ CHECK;
28
+ THIS->open_file(dir.is_nil() ? NULL : dir.c_str());
29
+ return self;
30
+ }
31
+ RUCY_END
32
+
33
+ static
34
+ RUCY_DEF1(open_files, dir)
35
+ {
36
+ CHECK;
37
+ THIS->open_files(dir.is_nil() ? NULL : dir.c_str());
38
+ return self;
39
+ }
40
+ RUCY_END
41
+
42
+ static
43
+ RUCY_DEF1(open_directory, dir)
44
+ {
45
+ CHECK;
46
+ THIS->open_directory(dir.is_nil() ? NULL : dir.c_str());
47
+ return self;
48
+ }
49
+ RUCY_END
50
+
51
+ static
52
+ RUCY_DEF2(save_file, dir, name)
53
+ {
54
+ CHECK;
55
+ THIS->save_file(
56
+ dir.is_nil() ? NULL : dir.c_str(),
57
+ name.is_nil() ? NULL : name.c_str());
58
+ return self;
59
+ }
60
+ RUCY_END
61
+
62
+ static
63
+ RUCY_DEF1(set_owner, owner)
64
+ {
65
+ CHECK;
66
+ THIS->set_owner(owner.is_nil() ? NULL : to<Reflex::Window*>(owner));
67
+ return owner;
68
+ }
69
+ RUCY_END
70
+
71
+ static
72
+ RUCY_DEF0(get_owner)
73
+ {
74
+ CHECK;
75
+ return value(THIS->owner());
76
+ }
77
+ RUCY_END
78
+
79
+ static
80
+ RUCY_DEF1(set_title, title)
81
+ {
82
+ CHECK;
83
+ THIS->set_title(title.c_str());
84
+ return title;
85
+ }
86
+ RUCY_END
87
+
88
+ static
89
+ RUCY_DEF0(get_title)
90
+ {
91
+ CHECK;
92
+ return value(THIS->title());
93
+ }
94
+ RUCY_END
95
+
96
+ static
97
+ RUCY_DEF1(set_extensions, extensions)
98
+ {
99
+ CHECK;
100
+
101
+ Reflex::StringList list;
102
+ if (extensions.is_nil())
103
+ ;// emplace nothing
104
+ else if (extensions.is_s() || extensions.is_sym())
105
+ list.emplace_back(extensions.c_str());
106
+ else if (extensions.is_array())
107
+ {
108
+ size_t size = extensions.size();
109
+ for (size_t i = 0; i < size; ++i)
110
+ {
111
+ if (!extensions[i].is_s() && !extensions[i].is_sym())
112
+ argument_error(__FILE__, __LINE__);
113
+
114
+ list.emplace_back(extensions[i].c_str());
115
+ }
116
+ }
117
+ else
118
+ argument_error(__FILE__, __LINE__);
119
+
120
+ THIS->set_extensions(list);
121
+ return extensions;
122
+ }
123
+ RUCY_END
124
+
125
+ static
126
+ RUCY_DEF0(get_extensions)
127
+ {
128
+ CHECK;
129
+
130
+ const auto& extensions = THIS->extensions();
131
+
132
+ Value values = array(NULL, extensions.size());
133
+ for (const auto& extension : extensions)
134
+ values.push(extension.c_str());
135
+
136
+ return values;
137
+ }
138
+ RUCY_END
139
+
140
+ static
141
+ RUCY_DEF1(on_file, event)
142
+ {
143
+ CHECK;
144
+
145
+ CALL(on_file(to<Reflex::FileEvent*>(event)));
146
+ }
147
+ RUCY_END
148
+
149
+ static
150
+ RUCY_DEF1(on_cancel, event)
151
+ {
152
+ CHECK;
153
+
154
+ CALL(on_cancel(to<Reflex::Event*>(event)));
155
+ }
156
+ RUCY_END
157
+
158
+
159
+ static Class cFileDialog;
160
+
161
+ void
162
+ Init_reflex_file_dialog ()
163
+ {
164
+ Module mReflex = define_module("Reflex");
165
+
166
+ cFileDialog = mReflex.define_class("FileDialog");
167
+ cFileDialog.define_alloc_func(alloc);
168
+ cFileDialog.define_method("open_file!", open_file);
169
+ cFileDialog.define_method("open_files!", open_files);
170
+ cFileDialog.define_method("open_directory!", open_directory);
171
+ cFileDialog.define_method("save_file!", save_file);
172
+ cFileDialog.define_method("owner=", set_owner);
173
+ cFileDialog.define_method("owner", get_owner);
174
+ cFileDialog.define_method("title=", set_title);
175
+ cFileDialog.define_method("title", get_title);
176
+ cFileDialog.define_method("extensions=", set_extensions);
177
+ cFileDialog.define_method("extensions", get_extensions);
178
+ cFileDialog.define_method("on_file", on_file);
179
+ cFileDialog.define_method("on_cancel", on_cancel);
180
+ }
181
+
182
+
183
+ namespace Reflex
184
+ {
185
+
186
+
187
+ Class
188
+ file_dialog_class ()
189
+ {
190
+ return cFileDialog;
191
+ }
192
+
193
+
194
+ }// Reflex
@@ -0,0 +1,108 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include "defs.h"
5
+
6
+
7
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::FileEvent)
8
+
9
+ #define THIS to<Reflex::FileEvent*>(self)
10
+
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::FileEvent, self)
12
+
13
+
14
+ static
15
+ RUCY_DEF_ALLOC(alloc, klass)
16
+ {
17
+ return new_type<Reflex::FileEvent>(klass);
18
+ }
19
+ RUCY_END
20
+
21
+ static
22
+ RUCY_DEF2(initialize, action, paths)
23
+ {
24
+ CHECK;
25
+
26
+ if (!paths.is_array())
27
+ argument_error(__FILE__, __LINE__);
28
+
29
+ Reflex::StringList list;
30
+ int size = paths.size();
31
+ for (int i = 0; i < size; ++i)
32
+ {
33
+ if (paths[i].is_nil())
34
+ argument_error(__FILE__, __LINE__);
35
+
36
+ list.emplace_back(paths[i].c_str());
37
+ }
38
+ *THIS = Reflex::FileEvent((Reflex::FileEvent::Action) to<uint>(action), list);
39
+
40
+ return rb_call_super(0, NULL);
41
+ }
42
+ RUCY_END
43
+
44
+ static
45
+ RUCY_DEF1(initialize_copy, obj)
46
+ {
47
+ CHECK;
48
+ *THIS = to<Reflex::FileEvent&>(obj).dup();
49
+ return self;
50
+ }
51
+ RUCY_END
52
+
53
+ static
54
+ RUCY_DEF0(get_action)
55
+ {
56
+ CHECK;
57
+ return value(THIS->action());
58
+ }
59
+ RUCY_END
60
+
61
+ static
62
+ RUCY_DEF0(get_paths)
63
+ {
64
+ CHECK;
65
+
66
+ const Reflex::StringList& paths = THIS->paths();
67
+
68
+ Value values = array(NULL, paths.size());
69
+ for (const auto& path : paths)
70
+ values.push(path.c_str());
71
+
72
+ return values;
73
+ }
74
+ RUCY_END
75
+
76
+
77
+ static Class cFileEvent;
78
+
79
+ void
80
+ Init_reflex_file_event ()
81
+ {
82
+ Module mReflex = define_module("Reflex");
83
+
84
+ cFileEvent = mReflex.define_class("FileEvent", Reflex::event_class());
85
+ cFileEvent.define_alloc_func(alloc);
86
+ cFileEvent.define_private_method("initialize", initialize);
87
+ cFileEvent.define_private_method("initialize_copy", initialize_copy);
88
+ cFileEvent.define_method("action", get_action);
89
+ cFileEvent.define_method("paths", get_paths);
90
+
91
+ cFileEvent.define_const("ACTION_NONE", Reflex::FileEvent::ACTION_NONE);
92
+ cFileEvent.define_const("OPEN", Reflex::FileEvent::OPEN);
93
+ cFileEvent.define_const("SAVE", Reflex::FileEvent::SAVE);
94
+ }
95
+
96
+
97
+ namespace Reflex
98
+ {
99
+
100
+
101
+ Class
102
+ file_event_class ()
103
+ {
104
+ return cFileEvent;
105
+ }
106
+
107
+
108
+ }// Reflex
@@ -10,7 +10,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Filter)
10
10
 
11
11
  #define THIS to<Reflex::Filter*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::Filter, self)
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::Filter, self)
14
14
 
15
15
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
16
16
 
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::FocusEvent)
9
9
 
10
10
  #define THIS to<Reflex::FocusEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::FocusEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::FocusEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -10,7 +10,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::FrameEvent)
10
10
 
11
11
  #define THIS to<Reflex::FrameEvent*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::FrameEvent, self)
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::FrameEvent, self)
14
14
 
15
15
 
16
16
  static
@@ -0,0 +1,50 @@
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
+ RUCY_DEF_ALLOC(alloc, klass)
13
+ {
14
+ Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate Gamepad class.");
15
+ }
16
+ RUCY_END
17
+
18
+ static
19
+ RUCY_DEF0(s_enable)
20
+ {
21
+ Reflex::enable_gamepad();
22
+ }
23
+ RUCY_END
24
+
25
+
26
+ static Class cGamepad;
27
+
28
+ void
29
+ Init_reflex_gamepad ()
30
+ {
31
+ Module mReflex = define_module("Reflex");
32
+
33
+ cGamepad = mReflex.define_class("Gamepad", Reflex::device_class());
34
+ cGamepad.define_alloc_func(alloc);
35
+ cGamepad.define_singleton_method("enable", s_enable);
36
+ }
37
+
38
+
39
+ namespace Reflex
40
+ {
41
+
42
+
43
+ Class
44
+ gamepad_class ()
45
+ {
46
+ return cGamepad;
47
+ }
48
+
49
+
50
+ }// 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