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
@@ -10,8 +10,8 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Application)
10
10
 
11
11
  #define THIS to<Reflex::Application*>(self)
12
12
 
13
- #define CHECK_OBJ RUCY_CHECK_OBJ( Reflex::Application, self)
14
- #define CHECK RUCY_CHECK_OBJECT(Reflex::Application, self)
13
+ #define CHECK_PTR RUCY_CHECK_PTR(Reflex::Application, self)
14
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Application, self)
15
15
 
16
16
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
17
17
 
@@ -26,7 +26,7 @@ RUCY_END
26
26
  static
27
27
  RUCY_DEF0(start)
28
28
  {
29
- CHECK_OBJ;
29
+ CHECK_PTR;
30
30
  CALL(start());
31
31
  return self;
32
32
  }
@@ -75,6 +75,40 @@ RUCY_DEF0(get_menu)
75
75
  }
76
76
  RUCY_END
77
77
 
78
+ static
79
+ RUCY_DEF1(set_background, state)
80
+ {
81
+ CHECK;
82
+ THIS->set_background(to<bool>(state));
83
+ return state;
84
+ }
85
+ RUCY_END
86
+
87
+ static
88
+ RUCY_DEF0(is_background)
89
+ {
90
+ CHECK;
91
+ return value(THIS->background());
92
+ }
93
+ RUCY_END
94
+
95
+ static
96
+ RUCY_DEF1(set_background_menu, menu)
97
+ {
98
+ CHECK;
99
+ THIS->set_background_menu(menu ? to<Reflex::Menu*>(menu) : NULL);
100
+ return menu;
101
+ }
102
+ RUCY_END
103
+
104
+ static
105
+ RUCY_DEF0(get_background_menu)
106
+ {
107
+ CHECK;
108
+ return value(THIS->background_menu());
109
+ }
110
+ RUCY_END
111
+
78
112
  static
79
113
  RUCY_DEF0(each_window)
80
114
  {
@@ -92,9 +126,6 @@ RUCY_DEF1(on_start, event)
92
126
  {
93
127
  CHECK;
94
128
 
95
- RUCY_SYM(call_start_block);
96
- self.call(call_start_block);
97
-
98
129
  CALL(on_start(to<Reflex::Event*>(event)));
99
130
  }
100
131
  RUCY_END
@@ -170,6 +201,10 @@ Init_reflex_application ()
170
201
  cApplication.define_method("name", get_name);
171
202
  cApplication.define_method("menu=", set_menu);
172
203
  cApplication.define_method("menu", get_menu);
204
+ cApplication.define_method("background=", set_background);
205
+ cApplication.define_method("background?", is_background);
206
+ cApplication.define_method("background_menu=", set_background_menu);
207
+ cApplication.define_method("background_menu", get_background_menu);
173
208
  cApplication.define_method("each_window", each_window);
174
209
  cApplication.define_method("on_start", on_start);
175
210
  cApplication.define_method("on_quit", on_quit);
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::CaptureEvent)
9
9
 
10
10
  #define THIS to<Reflex::CaptureEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::CaptureEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::CaptureEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -12,7 +12,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ChaseConstraint)
12
12
 
13
13
  #define THIS to<Reflex::ChaseConstraint*>(self)
14
14
 
15
- #define CHECK RUCY_CHECK_OBJ(Reflex::ChaseConstraint, self)
15
+ #define CHECK RUCY_CHECK_PTR(Reflex::ChaseConstraint, self)
16
16
 
17
17
 
18
18
  static
@@ -27,7 +27,7 @@ RUCY_DEF0(get_text)
27
27
  {
28
28
  Reflex::Clipboard clipboard = Reflex::get_clipboard();
29
29
  const char* text = clipboard.text();
30
- return text ? value(text, rb_utf8_encoding()) : nil();
30
+ return text ? value(text) : nil();
31
31
  }
32
32
  RUCY_END
33
33
 
@@ -0,0 +1,80 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include <rays/ruby/color.h>
5
+ #include "defs.h"
6
+
7
+
8
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ColorEvent)
9
+
10
+ #define THIS to<Reflex::ColorEvent*>(self)
11
+
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::ColorEvent, self)
13
+
14
+
15
+ static
16
+ RUCY_DEF_ALLOC(alloc, klass)
17
+ {
18
+ return new_type<Reflex::ColorEvent>(klass);
19
+ }
20
+ RUCY_END
21
+
22
+ static
23
+ RUCY_DEF1(initialize, color)
24
+ {
25
+ CHECK;
26
+
27
+ if (color.is_nil())
28
+ argument_error(__FILE__, __LINE__);
29
+
30
+ *THIS = Reflex::ColorEvent(to<Rays::Color>(color));
31
+
32
+ return rb_call_super(0, NULL);
33
+ }
34
+ RUCY_END
35
+
36
+ static
37
+ RUCY_DEF1(initialize_copy, obj)
38
+ {
39
+ CHECK;
40
+ *THIS = to<Reflex::ColorEvent&>(obj).dup();
41
+ return self;
42
+ }
43
+ RUCY_END
44
+
45
+ static
46
+ RUCY_DEF0(get_color)
47
+ {
48
+ CHECK;
49
+ return value(THIS->color());
50
+ }
51
+ RUCY_END
52
+
53
+
54
+ static Class cColorEvent;
55
+
56
+ void
57
+ Init_reflex_color_event ()
58
+ {
59
+ Module mReflex = define_module("Reflex");
60
+
61
+ cColorEvent = mReflex.define_class("ColorEvent", Reflex::event_class());
62
+ cColorEvent.define_alloc_func(alloc);
63
+ cColorEvent.define_private_method("initialize", initialize);
64
+ cColorEvent.define_private_method("initialize_copy", initialize_copy);
65
+ cColorEvent.define_method("color", get_color);
66
+ }
67
+
68
+
69
+ namespace Reflex
70
+ {
71
+
72
+
73
+ Class
74
+ color_event_class ()
75
+ {
76
+ return cColorEvent;
77
+ }
78
+
79
+
80
+ }// Reflex
@@ -0,0 +1,121 @@
1
+ #include "reflex/ruby/color_picker.h"
2
+
3
+
4
+ #include <rays/ruby/color.h>
5
+ #include "reflex/ruby/window.h"
6
+ #include "defs.h"
7
+
8
+
9
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ColorPicker)
10
+
11
+ #define THIS to<Reflex::ColorPicker*>(self)
12
+
13
+ #define CHECK RUCY_CHECK_OBJ(Reflex::ColorPicker, self)
14
+
15
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
16
+
17
+
18
+ static
19
+ RUCY_DEF_ALLOC(alloc, klass)
20
+ {
21
+ return value(new Reflex::RubyColorPicker<Reflex::ColorPicker>, klass);
22
+ }
23
+ RUCY_END
24
+
25
+ static
26
+ RUCY_DEF1(pick_color, initial)
27
+ {
28
+ CHECK;
29
+
30
+ if (initial.is_nil())
31
+ THIS->pick_color();
32
+ else
33
+ THIS->pick_color(to<Rays::Color>(initial));
34
+ return self;
35
+ }
36
+ RUCY_END
37
+
38
+ static
39
+ RUCY_DEF1(set_owner, owner)
40
+ {
41
+ CHECK;
42
+ THIS->set_owner(owner.is_nil() ? NULL : to<Reflex::Window*>(owner));
43
+ return owner;
44
+ }
45
+ RUCY_END
46
+
47
+ static
48
+ RUCY_DEF0(get_owner)
49
+ {
50
+ CHECK;
51
+ return value(THIS->owner());
52
+ }
53
+ RUCY_END
54
+
55
+ static
56
+ RUCY_DEF1(set_alpha, state)
57
+ {
58
+ CHECK;
59
+ THIS->set_alpha(to<bool>(state));
60
+ return state;
61
+ }
62
+ RUCY_END
63
+
64
+ static
65
+ RUCY_DEF0(is_alpha)
66
+ {
67
+ CHECK;
68
+ return value(THIS->alpha());
69
+ }
70
+ RUCY_END
71
+
72
+ static
73
+ RUCY_DEF1(on_color, event)
74
+ {
75
+ CHECK;
76
+
77
+ CALL(on_color(to<Reflex::ColorEvent*>(event)));
78
+ }
79
+ RUCY_END
80
+
81
+ static
82
+ RUCY_DEF1(on_close, event)
83
+ {
84
+ CHECK;
85
+
86
+ CALL(on_close(to<Reflex::Event*>(event)));
87
+ }
88
+ RUCY_END
89
+
90
+
91
+ static Class cColorPicker;
92
+
93
+ void
94
+ Init_reflex_color_picker ()
95
+ {
96
+ Module mReflex = define_module("Reflex");
97
+
98
+ cColorPicker = mReflex.define_class("ColorPicker");
99
+ cColorPicker.define_alloc_func(alloc);
100
+ cColorPicker.define_method("pick_color!", pick_color);
101
+ cColorPicker.define_method("owner=", set_owner);
102
+ cColorPicker.define_method("owner", get_owner);
103
+ cColorPicker.define_method("alpha=", set_alpha);
104
+ cColorPicker.define_method("alpha?", is_alpha);
105
+ cColorPicker.define_method("on_color", on_color);
106
+ cColorPicker.define_method("on_close", on_close);
107
+ }
108
+
109
+
110
+ namespace Reflex
111
+ {
112
+
113
+
114
+ Class
115
+ color_picker_class ()
116
+ {
117
+ return cColorPicker;
118
+ }
119
+
120
+
121
+ }// Reflex
@@ -13,7 +13,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Constraint)
13
13
 
14
14
  #define THIS to<Reflex::Constraint*>(self)
15
15
 
16
- #define CHECK RUCY_CHECK_OBJ(Reflex::Constraint, self)
16
+ #define CHECK RUCY_CHECK_PTR(Reflex::Constraint, self)
17
17
 
18
18
 
19
19
  static
@@ -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