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
@@ -19,6 +20,14 @@ RUCY_DEF_ALLOC(alloc, klass)
19
20
  }
20
21
  RUCY_END
21
22
 
23
+ static
24
+ RUCY_DEF0(get_name)
25
+ {
26
+ CHECK;
27
+ return value(THIS->name());
28
+ }
29
+ RUCY_END
30
+
22
31
  static
23
32
  RUCY_DEF0(get_frame)
24
33
  {
@@ -27,6 +36,23 @@ RUCY_DEF0(get_frame)
27
36
  }
28
37
  RUCY_END
29
38
 
39
+ static
40
+ RUCY_DEF0(get_pixel_density)
41
+ {
42
+ CHECK;
43
+ return value(THIS->pixel_density());
44
+ }
45
+ RUCY_END
46
+
47
+ static
48
+ RUCY_DEF0(get_all)
49
+ {
50
+ auto list = Reflex::Screen::all() |
51
+ std::views::transform([](const Reflex::Screen& s) {return value(s);});
52
+ return array(list.begin(), list.end());
53
+ }
54
+ RUCY_END
55
+
30
56
 
31
57
  static Class cScreen;
32
58
 
@@ -37,7 +63,10 @@ Init_reflex_screen ()
37
63
 
38
64
  cScreen = mReflex.define_class("Screen");
39
65
  cScreen.define_alloc_func(alloc);
40
- cScreen.define_method("frame", get_frame);
66
+ cScreen.define_method("name", get_name);
67
+ cScreen.define_method("frame", get_frame);
68
+ cScreen.define_method("pixel_density", get_pixel_density);
69
+ cScreen.define_singleton_method("all", get_all);
41
70
  }
42
71
 
43
72
 
@@ -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
@@ -86,7 +85,7 @@ RUCY_DEF0(each_tag)
86
85
  Value ret;
87
86
  Reflex::Selector::const_iterator end = C_THIS->end();
88
87
  for (Reflex::Selector::const_iterator it = C_THIS->begin(); it != end; ++it)
89
- ret = rb_yield(value(*it));
88
+ ret = yield(value(*it));
90
89
  return ret;
91
90
  }
92
91
  RUCY_END
@@ -146,13 +145,14 @@ namespace Rucy
146
145
  template <> REFLEX_EXPORT Reflex::Selector
147
146
  value_to<Reflex::Selector> (int argc, const Value* argv, bool convert)
148
147
  {
149
- if (argc == 1 && argv->is_array())
148
+ if (argc == 1 && argv && argv->is_array())
150
149
  {
151
150
  argc = argv->size();
152
151
  argv = argv->as_array();
153
152
  }
154
153
 
155
- assert(argc > 0 && argv);
154
+ if (argc <= 0 || !argv)
155
+ argument_error(__FILE__, __LINE__);
156
156
 
157
157
  if (convert)
158
158
  {
@@ -11,7 +11,7 @@ template <typename T>
11
11
  static
12
12
  RUCY_DEF1(set_name, name)
13
13
  {
14
- RUCY_CHECK_OBJ(T, self);
14
+ RUCY_CHECK_PTR(T, self);
15
15
  Reflex::HasSelector* this_ = Rucy::to<T*>(self);
16
16
 
17
17
  this_->set_name(name.is_nil() ? NULL : name.c_str());
@@ -22,7 +22,7 @@ template <typename T>
22
22
  static
23
23
  RUCY_DEF0(get_name)
24
24
  {
25
- RUCY_CHECK_OBJ(T, self);
25
+ RUCY_CHECK_PTR(T, self);
26
26
  const Reflex::HasSelector* this_ = Rucy::to<const T*>(self);
27
27
 
28
28
  return this_->name() ? Rucy::value(this_->name()) : Rucy::nil();
@@ -33,7 +33,7 @@ template <typename T>
33
33
  static
34
34
  RUCY_DEF1(add_tag, tag)
35
35
  {
36
- RUCY_CHECK_OBJ(T, self);
36
+ RUCY_CHECK_PTR(T, self);
37
37
  Reflex::HasSelector* this_ = Rucy::to<T*>(self);
38
38
 
39
39
  this_->add_tag(tag.c_str());
@@ -44,7 +44,7 @@ template <typename T>
44
44
  static
45
45
  RUCY_DEF1(remove_tag, tag)
46
46
  {
47
- RUCY_CHECK_OBJ(T, self);
47
+ RUCY_CHECK_PTR(T, self);
48
48
  Reflex::HasSelector* this_ = Rucy::to<T*>(self);
49
49
 
50
50
  this_->remove_tag(tag.c_str());
@@ -55,7 +55,7 @@ template <typename T>
55
55
  static
56
56
  RUCY_DEF0(clear_tags)
57
57
  {
58
- RUCY_CHECK_OBJ(T, self);
58
+ RUCY_CHECK_PTR(T, self);
59
59
  Reflex::HasSelector* this_ = Rucy::to<T*>(self);
60
60
 
61
61
  this_->clear_tags();
@@ -66,7 +66,7 @@ template <typename T>
66
66
  static
67
67
  RUCY_DEF1(has_tag, tag)
68
68
  {
69
- RUCY_CHECK_OBJ(T, self);
69
+ RUCY_CHECK_PTR(T, self);
70
70
  const Reflex::HasSelector* this_ = Rucy::to<const T*>(self);
71
71
 
72
72
  return Rucy::value(this_->has_tag(tag.c_str()));
@@ -77,13 +77,13 @@ template <typename T>
77
77
  static
78
78
  RUCY_DEF0(each_tag)
79
79
  {
80
- RUCY_CHECK_OBJ(T, self);
80
+ RUCY_CHECK_PTR(T, self);
81
81
  const Reflex::HasSelector* this_ = Rucy::to<const T*>(self);
82
82
 
83
83
  Rucy::Value ret;
84
84
  Reflex::Selector::const_iterator end = this_->tag_end();
85
85
  for (Reflex::Selector::const_iterator it = this_->tag_begin(); it != end; ++it)
86
- ret = rb_yield(Rucy::value(*it));
86
+ ret = Rucy::yield(Rucy::value(*it));
87
87
  return ret;
88
88
  }
89
89
  RUCY_END
@@ -92,7 +92,7 @@ template <typename T>
92
92
  static
93
93
  RUCY_DEF1(set_selector, selector)
94
94
  {
95
- RUCY_CHECK_OBJ(T, self);
95
+ RUCY_CHECK_PTR(T, self);
96
96
  Reflex::HasSelector* this_ = Rucy::to<T*>(self);
97
97
 
98
98
  this_->set_selector(Rucy::to<Reflex::Selector>(selector));
@@ -103,7 +103,7 @@ template <typename T>
103
103
  static
104
104
  RUCY_DEF0(get_selector)
105
105
  {
106
- RUCY_CHECK_OBJ(T, self);
106
+ RUCY_CHECK_PTR(T, self);
107
107
  const Reflex::HasSelector* this_ = Rucy::to<const T*>(self);
108
108
 
109
109
  return Rucy::value(this_->selector());
data/ext/reflex/shape.cpp CHANGED
@@ -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,135 @@
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
+ RUCY_DEF_ALLOC(alloc, klass)
17
+ {
18
+ Reflex::reflex_error(
19
+ __FILE__, __LINE__, "can not instantiate SnapConstraint class");
20
+ }
21
+ RUCY_END
22
+
23
+ static
24
+ RUCY_DEF2(set_angle, min, max)
25
+ {
26
+ CHECK;
27
+ THIS->set_angle(to<float>(min), to<float>(max));
28
+ }
29
+ RUCY_END
30
+
31
+ static
32
+ RUCY_DEF0(clear_angle)
33
+ {
34
+ CHECK;
35
+ THIS->clear_angle();
36
+ }
37
+ RUCY_END
38
+
39
+ static
40
+ RUCY_DEF0(angle_min)
41
+ {
42
+ CHECK;
43
+ return value(THIS->angle_min());
44
+ }
45
+ RUCY_END
46
+
47
+ static
48
+ RUCY_DEF0(angle_max)
49
+ {
50
+ CHECK;
51
+ return value(THIS->angle_max());
52
+ }
53
+ RUCY_END
54
+
55
+ static
56
+ RUCY_DEF0(has_angle)
57
+ {
58
+ CHECK;
59
+ return value(THIS->has_angle());
60
+ }
61
+ RUCY_END
62
+
63
+ static
64
+ RUCY_DEF1(set_motor, degrees_per_second)
65
+ {
66
+ CHECK;
67
+
68
+ if (degrees_per_second.is_nil())
69
+ THIS->clear_motor();
70
+ else
71
+ THIS->set_motor(to<float>(degrees_per_second));
72
+ }
73
+ RUCY_END
74
+
75
+ static
76
+ RUCY_DEF0(get_motor)
77
+ {
78
+ CHECK;
79
+ return THIS->has_motor() ? value(THIS->motor()) : nil();
80
+ }
81
+ RUCY_END
82
+
83
+ static
84
+ RUCY_DEF1(set_force, max_torque)
85
+ {
86
+ CHECK;
87
+ if (max_torque.is_nil())
88
+ THIS->clear_force();
89
+ else
90
+ THIS->set_force(to<float>(max_torque));
91
+ }
92
+ RUCY_END
93
+
94
+ static
95
+ RUCY_DEF0(get_force)
96
+ {
97
+ CHECK;
98
+ return THIS->has_force() ? value(THIS->force()) : nil();
99
+ }
100
+ RUCY_END
101
+
102
+
103
+ static Class cSnapConstraint;
104
+
105
+ void
106
+ Init_reflex_snap_constraint ()
107
+ {
108
+ Module mReflex = define_module("Reflex");
109
+
110
+ cSnapConstraint = mReflex.define_class("SnapConstraint", Reflex::constraint_class());
111
+ cSnapConstraint.define_alloc_func(alloc);
112
+ cSnapConstraint.define_private_method( "set_angle!", set_angle);
113
+ cSnapConstraint.define_private_method("clear_angle!", clear_angle);
114
+ cSnapConstraint.define_private_method( "angle_min!", angle_min);
115
+ cSnapConstraint.define_private_method( "angle_max!", angle_max);
116
+ cSnapConstraint.define_private_method( "has_angle!", has_angle);
117
+ cSnapConstraint.define_method("motor=", set_motor);
118
+ cSnapConstraint.define_method("motor", get_motor);
119
+ cSnapConstraint.define_method("force=", set_force);
120
+ cSnapConstraint.define_method("force", get_force);
121
+ }
122
+
123
+
124
+ namespace Reflex
125
+ {
126
+
127
+
128
+ Class
129
+ snap_constraint_class ()
130
+ {
131
+ return cSnapConstraint;
132
+ }
133
+
134
+
135
+ }// Reflex
data/ext/reflex/style.cpp CHANGED
@@ -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
@@ -219,13 +219,14 @@ namespace Rucy
219
219
  template <> REFLEX_EXPORT Reflex::StyleLength
220
220
  value_to<Reflex::StyleLength> (int argc, const Value* argv, bool convert)
221
221
  {
222
- if (argc == 1 && argv->is_array())
222
+ if (argc == 1 && argv && argv->is_array())
223
223
  {
224
224
  argc = argv->size();
225
225
  argv = argv->as_array();
226
226
  }
227
227
 
228
- assert(argc > 0 && argv);
228
+ if (argc <= 0 || !argv)
229
+ argument_error(__FILE__, __LINE__);
229
230
 
230
231
  if (convert)
231
232
  {
@@ -0,0 +1,111 @@
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
+ RUCY_DEF_ALLOC(alloc, klass)
16
+ {
17
+ return new_type<Reflex::TextEvent>(klass);
18
+ }
19
+ RUCY_END
20
+
21
+ static
22
+ RUCY_DEF4(initialize, action, text, selection_offset, selection_size)
23
+ {
24
+ CHECK;
25
+
26
+ *THIS = Reflex::TextEvent(
27
+ (Reflex::TextEvent::Action) to<uint>(action),
28
+ text.is_nil() ? "" : text.c_str(),
29
+ to<int>(selection_offset),
30
+ to<int>(selection_size));
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::TextEvent&>(obj).dup();
41
+ return self;
42
+ }
43
+ RUCY_END
44
+
45
+ static
46
+ RUCY_DEF0(get_action)
47
+ {
48
+ CHECK;
49
+ return value(THIS->action());
50
+ }
51
+ RUCY_END
52
+
53
+ static
54
+ RUCY_DEF0(get_text)
55
+ {
56
+ CHECK;
57
+ return value(THIS->text());
58
+ }
59
+ RUCY_END
60
+
61
+ static
62
+ RUCY_DEF0(get_selection_offset)
63
+ {
64
+ CHECK;
65
+ return value(THIS->selection_offset());
66
+ }
67
+ RUCY_END
68
+
69
+ static
70
+ RUCY_DEF0(get_selection_size)
71
+ {
72
+ CHECK;
73
+ return value(THIS->selection_size());
74
+ }
75
+ RUCY_END
76
+
77
+
78
+ static Class cTextEvent;
79
+
80
+ void
81
+ Init_reflex_text_event ()
82
+ {
83
+ Module mReflex = define_module("Reflex");
84
+
85
+ cTextEvent = mReflex.define_class("TextEvent", Reflex::event_class());
86
+ cTextEvent.define_alloc_func(alloc);
87
+ cTextEvent.define_private_method("initialize", initialize);
88
+ cTextEvent.define_private_method("initialize_copy", initialize_copy);
89
+ cTextEvent.define_method("action", get_action);
90
+ cTextEvent.define_method("text", get_text);
91
+ cTextEvent.define_private_method("selection_offset!", get_selection_offset);
92
+ cTextEvent.define_private_method("selection_size!", get_selection_size);
93
+
94
+ cTextEvent.define_const("ACTION_NONE", Reflex::TextEvent::ACTION_NONE);
95
+ cTextEvent.define_const("PREEDIT", Reflex::TextEvent::PREEDIT);
96
+ cTextEvent.define_const("COMMIT", Reflex::TextEvent::COMMIT);
97
+ }
98
+
99
+
100
+ namespace Reflex
101
+ {
102
+
103
+
104
+ Class
105
+ text_event_class ()
106
+ {
107
+ return cTextEvent;
108
+ }
109
+
110
+
111
+ }// Reflex
data/ext/reflex/timer.cpp CHANGED
@@ -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