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
@@ -1,6 +1,7 @@
1
1
  #include "reflex/ruby/screen.h"
2
2
 
3
3
 
4
+ #include <ranges>
4
5
  #include <rays/ruby/bounds.h>
5
6
  #include "defs.h"
6
7
 
@@ -9,7 +10,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Screen)
9
10
 
10
11
  #define THIS to<Reflex::Screen*>(self)
11
12
 
12
- #define CHECK RUCY_CHECK_OBJECT(Reflex::Screen, self)
13
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Screen, self)
13
14
 
14
15
 
15
16
  static
@@ -18,6 +19,13 @@ VALUE alloc(VALUE klass)
18
19
  Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate Screen class.");
19
20
  }
20
21
 
22
+ static
23
+ VALUE get_name(VALUE self)
24
+ {
25
+ CHECK;
26
+ return value(THIS->name());
27
+ }
28
+
21
29
  static
22
30
  VALUE get_frame(VALUE self)
23
31
  {
@@ -25,6 +33,21 @@ VALUE get_frame(VALUE self)
25
33
  return value(THIS->frame());
26
34
  }
27
35
 
36
+ static
37
+ VALUE get_pixel_density(VALUE self)
38
+ {
39
+ CHECK;
40
+ return value(THIS->pixel_density());
41
+ }
42
+
43
+ static
44
+ VALUE get_all(VALUE self)
45
+ {
46
+ auto list = Reflex::Screen::all() |
47
+ std::views::transform([](const Reflex::Screen& s) {return value(s);});
48
+ return array(list.begin(), list.end());
49
+ }
50
+
28
51
 
29
52
  static Class cScreen;
30
53
 
@@ -35,7 +58,10 @@ Init_reflex_screen ()
35
58
 
36
59
  cScreen = rb_define_class_under(mReflex, "Screen", rb_cObject);
37
60
  rb_define_alloc_func(cScreen, alloc);
61
+ rb_define_method(cScreen, "name", RUBY_METHOD_FUNC(get_name), 0);
38
62
  rb_define_method(cScreen, "frame", RUBY_METHOD_FUNC(get_frame), 0);
63
+ rb_define_method(cScreen, "pixel_density", RUBY_METHOD_FUNC(get_pixel_density), 0);
64
+ rb_define_singleton_method(cScreen, "all", RUBY_METHOD_FUNC(get_all), 0);
39
65
  }
40
66
 
41
67
 
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ScrollEvent)
9
9
 
10
10
  #define THIS to<Reflex::ScrollEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::ScrollEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::ScrollEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -1,7 +1,6 @@
1
1
  #include "reflex/ruby/selector.h"
2
2
 
3
3
 
4
- #include <assert.h>
5
4
  #include "defs.h"
6
5
 
7
6
 
@@ -10,7 +9,7 @@ RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(REFLEX_EXPORT, Reflex::Selector)
10
9
  #define THIS to< Reflex::Selector*>(self)
11
10
  #define C_THIS to<const Reflex::Selector*>(self)
12
11
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::Selector, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::Selector, self)
14
13
 
15
14
 
16
15
  static
@@ -78,7 +77,7 @@ VALUE each_tag(VALUE self)
78
77
  Value ret;
79
78
  Reflex::Selector::const_iterator end = C_THIS->end();
80
79
  for (Reflex::Selector::const_iterator it = C_THIS->begin(); it != end; ++it)
81
- ret = rb_yield(value(*it));
80
+ ret = yield(value(*it));
82
81
  return ret;
83
82
  }
84
83
 
@@ -134,13 +133,14 @@ namespace Rucy
134
133
  template <> REFLEX_EXPORT Reflex::Selector
135
134
  value_to<Reflex::Selector> (int argc, const Value* argv, bool convert)
136
135
  {
137
- if (argc == 1 && argv->is_array())
136
+ if (argc == 1 && argv && argv->is_array())
138
137
  {
139
138
  argc = argv->size();
140
139
  argv = argv->as_array();
141
140
  }
142
141
 
143
- assert(argc > 0 && argv);
142
+ if (argc <= 0 || !argv)
143
+ argument_error(__FILE__, __LINE__);
144
144
 
145
145
  if (convert)
146
146
  {
@@ -12,7 +12,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Shape)
12
12
 
13
13
  #define THIS to<Reflex::Shape*>(self)
14
14
 
15
- #define CHECK RUCY_CHECK_OBJ(Reflex::Shape, self)
15
+ #define CHECK RUCY_CHECK_PTR(Reflex::Shape, self)
16
16
 
17
17
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
18
18
 
@@ -0,0 +1,125 @@
1
+ #include "reflex/ruby/constraint.h"
2
+
3
+
4
+ #include "reflex/exception.h"
5
+ #include "defs.h"
6
+
7
+
8
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::SnapConstraint)
9
+
10
+ #define THIS to<Reflex::SnapConstraint*>(self)
11
+
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::SnapConstraint, self)
13
+
14
+
15
+ static
16
+ VALUE alloc(VALUE klass)
17
+ {
18
+ Reflex::reflex_error(
19
+ __FILE__, __LINE__, "can not instantiate SnapConstraint class");
20
+ }
21
+
22
+ static
23
+ VALUE set_angle(VALUE self, VALUE min, VALUE max)
24
+ {
25
+ CHECK;
26
+ THIS->set_angle(to<float>(min), to<float>(max));
27
+ }
28
+
29
+ static
30
+ VALUE clear_angle(VALUE self)
31
+ {
32
+ CHECK;
33
+ THIS->clear_angle();
34
+ }
35
+
36
+ static
37
+ VALUE angle_min(VALUE self)
38
+ {
39
+ CHECK;
40
+ return value(THIS->angle_min());
41
+ }
42
+
43
+ static
44
+ VALUE angle_max(VALUE self)
45
+ {
46
+ CHECK;
47
+ return value(THIS->angle_max());
48
+ }
49
+
50
+ static
51
+ VALUE has_angle(VALUE self)
52
+ {
53
+ CHECK;
54
+ return value(THIS->has_angle());
55
+ }
56
+
57
+ static
58
+ VALUE set_motor(VALUE self, VALUE degrees_per_second)
59
+ {
60
+ CHECK;
61
+
62
+ if (degrees_per_second.is_nil())
63
+ THIS->clear_motor();
64
+ else
65
+ THIS->set_motor(to<float>(degrees_per_second));
66
+ }
67
+
68
+ static
69
+ VALUE get_motor(VALUE self)
70
+ {
71
+ CHECK;
72
+ return THIS->has_motor() ? value(THIS->motor()) : nil();
73
+ }
74
+
75
+ static
76
+ VALUE set_force(VALUE self, VALUE max_torque)
77
+ {
78
+ CHECK;
79
+ if (max_torque.is_nil())
80
+ THIS->clear_force();
81
+ else
82
+ THIS->set_force(to<float>(max_torque));
83
+ }
84
+
85
+ static
86
+ VALUE get_force(VALUE self)
87
+ {
88
+ CHECK;
89
+ return THIS->has_force() ? value(THIS->force()) : nil();
90
+ }
91
+
92
+
93
+ static Class cSnapConstraint;
94
+
95
+ void
96
+ Init_reflex_snap_constraint ()
97
+ {
98
+ Module mReflex = rb_define_module("Reflex");
99
+
100
+ cSnapConstraint = mReflex.define_class("SnapConstraint", Reflex::constraint_class());
101
+ rb_define_alloc_func(cSnapConstraint, alloc);
102
+ cSnapConstraint.define_private_method( "set_angle!", set_angle);
103
+ cSnapConstraint.define_private_method("clear_angle!", clear_angle);
104
+ cSnapConstraint.define_private_method( "angle_min!", angle_min);
105
+ cSnapConstraint.define_private_method( "angle_max!", angle_max);
106
+ cSnapConstraint.define_private_method( "has_angle!", has_angle);
107
+ rb_define_method(cSnapConstraint, "motor=", RUBY_METHOD_FUNC(set_motor), 1);
108
+ rb_define_method(cSnapConstraint, "motor", RUBY_METHOD_FUNC(get_motor), 0);
109
+ rb_define_method(cSnapConstraint, "force=", RUBY_METHOD_FUNC(set_force), 1);
110
+ rb_define_method(cSnapConstraint, "force", RUBY_METHOD_FUNC(get_force), 0);
111
+ }
112
+
113
+
114
+ namespace Reflex
115
+ {
116
+
117
+
118
+ Class
119
+ snap_constraint_class ()
120
+ {
121
+ return cSnapConstraint;
122
+ }
123
+
124
+
125
+ }// Reflex
@@ -13,7 +13,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Style)
13
13
  #define THIS to< Reflex::Style*>(self)
14
14
  #define C_THIS to<const Reflex::Style*>(self)
15
15
 
16
- #define CHECK RUCY_CHECK_OBJ(Reflex::Style, self)
16
+ #define CHECK RUCY_CHECK_PTR(Reflex::Style, self)
17
17
 
18
18
 
19
19
  static
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(REFLEX_EXPORT, Reflex::StyleLength)
9
9
 
10
10
  #define THIS to<Reflex::StyleLength*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::StyleLength, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::StyleLength, self)
13
13
 
14
14
 
15
15
  static
@@ -213,13 +213,14 @@ namespace Rucy
213
213
  template <> REFLEX_EXPORT Reflex::StyleLength
214
214
  value_to<Reflex::StyleLength> (int argc, const Value* argv, bool convert)
215
215
  {
216
- if (argc == 1 && argv->is_array())
216
+ if (argc == 1 && argv && argv->is_array())
217
217
  {
218
218
  argc = argv->size();
219
219
  argv = argv->as_array();
220
220
  }
221
221
 
222
- assert(argc > 0 && argv);
222
+ if (argc <= 0 || !argv)
223
+ argument_error(__FILE__, __LINE__);
223
224
 
224
225
  if (convert)
225
226
  {
@@ -0,0 +1,104 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include "defs.h"
5
+
6
+
7
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::TextEvent)
8
+
9
+ #define THIS to<Reflex::TextEvent*>(self)
10
+
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::TextEvent, self)
12
+
13
+
14
+ static
15
+ VALUE alloc(VALUE klass)
16
+ {
17
+ return new_type<Reflex::TextEvent>(klass);
18
+ }
19
+
20
+ static
21
+ VALUE initialize(VALUE self, VALUE action, VALUE text, VALUE selection_offset, VALUE selection_size)
22
+ {
23
+ CHECK;
24
+
25
+ *THIS = Reflex::TextEvent(
26
+ (Reflex::TextEvent::Action) to<uint>(action),
27
+ text.is_nil() ? "" : text.c_str(),
28
+ to<int>(selection_offset),
29
+ to<int>(selection_size));
30
+
31
+ return rb_call_super(0, NULL);
32
+ }
33
+
34
+ static
35
+ VALUE initialize_copy(VALUE self, VALUE obj)
36
+ {
37
+ CHECK;
38
+ *THIS = to<Reflex::TextEvent&>(obj).dup();
39
+ return self;
40
+ }
41
+
42
+ static
43
+ VALUE get_action(VALUE self)
44
+ {
45
+ CHECK;
46
+ return value(THIS->action());
47
+ }
48
+
49
+ static
50
+ VALUE get_text(VALUE self)
51
+ {
52
+ CHECK;
53
+ return value(THIS->text());
54
+ }
55
+
56
+ static
57
+ VALUE get_selection_offset(VALUE self)
58
+ {
59
+ CHECK;
60
+ return value(THIS->selection_offset());
61
+ }
62
+
63
+ static
64
+ VALUE get_selection_size(VALUE self)
65
+ {
66
+ CHECK;
67
+ return value(THIS->selection_size());
68
+ }
69
+
70
+
71
+ static Class cTextEvent;
72
+
73
+ void
74
+ Init_reflex_text_event ()
75
+ {
76
+ Module mReflex = rb_define_module("Reflex");
77
+
78
+ cTextEvent = mReflex.define_class("TextEvent", Reflex::event_class());
79
+ rb_define_alloc_func(cTextEvent, alloc);
80
+ rb_define_private_method(cTextEvent, "initialize", RUBY_METHOD_FUNC(initialize), 4);
81
+ rb_define_private_method(cTextEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
82
+ rb_define_method(cTextEvent, "action", RUBY_METHOD_FUNC(get_action), 0);
83
+ rb_define_method(cTextEvent, "text", RUBY_METHOD_FUNC(get_text), 0);
84
+ cTextEvent.define_private_method("selection_offset!", get_selection_offset);
85
+ cTextEvent.define_private_method("selection_size!", get_selection_size);
86
+
87
+ cTextEvent.define_const("ACTION_NONE", Reflex::TextEvent::ACTION_NONE);
88
+ cTextEvent.define_const("PREEDIT", Reflex::TextEvent::PREEDIT);
89
+ cTextEvent.define_const("COMMIT", Reflex::TextEvent::COMMIT);
90
+ }
91
+
92
+
93
+ namespace Reflex
94
+ {
95
+
96
+
97
+ Class
98
+ text_event_class ()
99
+ {
100
+ return cTextEvent;
101
+ }
102
+
103
+
104
+ }// Reflex
@@ -12,7 +12,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Timer)
12
12
 
13
13
  #define THIS to<Reflex::Timer*>(self)
14
14
 
15
- #define CHECK RUCY_CHECK_OBJ(Reflex::Timer, self)
15
+ #define CHECK RUCY_CHECK_PTR(Reflex::Timer, self)
16
16
 
17
17
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
18
18
 
@@ -10,7 +10,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::TimerEvent)
10
10
 
11
11
  #define THIS to<Reflex::TimerEvent*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::TimerEvent, self)
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::TimerEvent, self)
14
14
 
15
15
 
16
16
  static
@@ -8,7 +8,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::UpdateEvent)
8
8
 
9
9
  #define THIS to<Reflex::UpdateEvent*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::UpdateEvent, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::UpdateEvent, self)
12
12
 
13
13
 
14
14
  static