reflexion 0.5.2 → 0.6.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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +19 -1
  3. data/.doc/ext/reflex/chase_constraint.cpp +84 -0
  4. data/.doc/ext/reflex/clipboard.cpp +65 -0
  5. data/.doc/ext/reflex/constraint.cpp +135 -0
  6. data/.doc/ext/reflex/key_event.cpp +6 -6
  7. data/.doc/ext/reflex/link_constraint.cpp +178 -0
  8. data/.doc/ext/reflex/menu.cpp +302 -0
  9. data/.doc/ext/reflex/native.cpp +22 -4
  10. data/.doc/ext/reflex/pin.cpp +156 -0
  11. data/.doc/ext/reflex/pointer.cpp +2 -0
  12. data/.doc/ext/reflex/pointer_event.cpp +1 -1
  13. data/.doc/ext/reflex/reflex.cpp +42 -7
  14. data/.doc/ext/reflex/selector.cpp +4 -4
  15. data/.doc/ext/reflex/snap_constraint.cpp +125 -0
  16. data/.doc/ext/reflex/style_length.cpp +3 -2
  17. data/.doc/ext/reflex/view.cpp +96 -23
  18. data/.doc/ext/reflex/wheel_constraint.cpp +142 -0
  19. data/.doc/ext/reflex/window.cpp +59 -17
  20. data/.github/workflows/release-gem.yml +10 -1
  21. data/.github/workflows/test.yml +9 -0
  22. data/ChangeLog.md +30 -0
  23. data/README.md +1 -0
  24. data/VERSION +1 -1
  25. data/ext/reflex/application.cpp +21 -1
  26. data/ext/reflex/chase_constraint.cpp +89 -0
  27. data/ext/reflex/clipboard.cpp +69 -0
  28. data/ext/reflex/constraint.cpp +146 -0
  29. data/ext/reflex/key_event.cpp +6 -6
  30. data/ext/reflex/link_constraint.cpp +194 -0
  31. data/ext/reflex/menu.cpp +330 -0
  32. data/ext/reflex/native.cpp +22 -4
  33. data/ext/reflex/pin.cpp +165 -0
  34. data/ext/reflex/pointer.cpp +2 -0
  35. data/ext/reflex/pointer_event.cpp +1 -1
  36. data/ext/reflex/reflex.cpp +42 -7
  37. data/ext/reflex/selector.cpp +4 -4
  38. data/ext/reflex/selector.h +1 -1
  39. data/ext/reflex/snap_constraint.cpp +135 -0
  40. data/ext/reflex/style_length.cpp +3 -2
  41. data/ext/reflex/view.cpp +117 -37
  42. data/ext/reflex/wheel_constraint.cpp +154 -0
  43. data/ext/reflex/window.cpp +65 -18
  44. data/include/reflex/application.h +9 -0
  45. data/include/reflex/clipboard.h +53 -0
  46. data/include/reflex/constraint.h +275 -0
  47. data/include/reflex/defs.h +204 -195
  48. data/include/reflex/event.h +2 -0
  49. data/include/reflex/menu.h +120 -0
  50. data/include/reflex/pin.h +68 -0
  51. data/include/reflex/pointer.h +4 -0
  52. data/include/reflex/ruby/clipboard.h +23 -0
  53. data/include/reflex/ruby/constraint.h +94 -0
  54. data/include/reflex/ruby/menu.h +103 -0
  55. data/include/reflex/ruby/pin.h +40 -0
  56. data/include/reflex/ruby/view.h +36 -0
  57. data/include/reflex/ruby/window.h +36 -18
  58. data/include/reflex/view.h +39 -12
  59. data/include/reflex/window.h +17 -4
  60. data/include/reflex.h +5 -0
  61. data/lib/reflex/chase_constraint.rb +15 -0
  62. data/lib/reflex/clipboard.rb +19 -0
  63. data/lib/reflex/constraint.rb +29 -0
  64. data/lib/reflex/extension.rb +1 -1
  65. data/lib/reflex/helper.rb +28 -0
  66. data/lib/reflex/key_event.rb +7 -12
  67. data/lib/reflex/link_constraint.rb +31 -0
  68. data/lib/reflex/menu.rb +76 -0
  69. data/lib/reflex/pin.rb +39 -0
  70. data/lib/reflex/pointer.rb +18 -0
  71. data/lib/reflex/pointer_event.rb +1 -1
  72. data/lib/reflex/snap_constraint.rb +28 -0
  73. data/lib/reflex/view.rb +56 -4
  74. data/lib/reflex/wheel_constraint.rb +28 -0
  75. data/lib/reflex/wheel_event.rb +9 -0
  76. data/lib/reflex.rb +15 -6
  77. data/pod.rake +4 -2
  78. data/reflex.gemspec +3 -3
  79. data/samples/constraint.rb +152 -0
  80. data/samples/menu.rb +29 -0
  81. data/src/application.cpp +21 -2
  82. data/src/application.h +5 -0
  83. data/src/clipboard.cpp +81 -0
  84. data/src/constraint.cpp +1662 -0
  85. data/src/constraint.h +64 -0
  86. data/src/event.cpp +7 -1
  87. data/src/event.h +1 -2
  88. data/src/ios/application.mm +5 -0
  89. data/src/ios/clipboard.mm +44 -0
  90. data/src/ios/event.h +6 -2
  91. data/src/ios/event.mm +31 -12
  92. data/src/ios/menu.mm +36 -0
  93. data/src/ios/view_controller.mm +45 -12
  94. data/src/ios/window.mm +6 -0
  95. data/src/menu.cpp +325 -0
  96. data/src/menu.h +65 -0
  97. data/src/osx/app_delegate.mm +74 -125
  98. data/src/osx/application.mm +16 -0
  99. data/src/osx/clipboard.mm +45 -0
  100. data/src/osx/event.mm +40 -10
  101. data/src/osx/menu.h +25 -0
  102. data/src/osx/menu.mm +372 -0
  103. data/src/osx/native_window.mm +27 -0
  104. data/src/osx/opengl_view.mm +51 -0
  105. data/src/osx/window.mm +11 -0
  106. data/src/pin.cpp +137 -0
  107. data/src/pointer.cpp +27 -16
  108. data/src/pointer.h +6 -0
  109. data/src/sdl/application.cpp +5 -0
  110. data/src/sdl/clipboard.cpp +39 -0
  111. data/src/sdl/event.cpp +20 -3
  112. data/src/sdl/event.h +6 -3
  113. data/src/sdl/menu.cpp +35 -0
  114. data/src/sdl/window.cpp +26 -8
  115. data/src/view.cpp +313 -52
  116. data/src/view.h +18 -2
  117. data/src/win32/application.cpp +5 -0
  118. data/src/win32/clipboard.cpp +210 -0
  119. data/src/win32/event.cpp +11 -1
  120. data/src/win32/event.h +2 -0
  121. data/src/win32/menu.cpp +352 -0
  122. data/src/win32/menu.h +27 -0
  123. data/src/win32/window.cpp +62 -0
  124. data/src/win32/window.h +3 -0
  125. data/src/window.cpp +235 -22
  126. data/src/window.h +13 -2
  127. data/src/world.cpp +77 -14
  128. data/src/world.h +9 -2
  129. data/test/helper.rb +7 -0
  130. data/test/test_application.rb +11 -0
  131. data/test/test_chase_constraint.rb +124 -0
  132. data/test/test_clipboard.rb +54 -0
  133. data/test/test_constraint.rb +186 -0
  134. data/test/test_key_event.rb +6 -0
  135. data/test/test_link_constraint.rb +239 -0
  136. data/test/test_menu.rb +207 -0
  137. data/test/test_pin.rb +65 -0
  138. data/test/test_pointer.rb +23 -9
  139. data/test/test_pointer_event.rb +1 -1
  140. data/test/test_snap_constraint.rb +142 -0
  141. data/test/test_view.rb +113 -23
  142. data/test/test_wheel_constraint.rb +127 -0
  143. data/test/test_wheel_event.rb +15 -9
  144. data/test/test_window.rb +10 -0
  145. metadata +82 -8
@@ -0,0 +1,330 @@
1
+ #include "reflex/ruby/menu.h"
2
+
3
+
4
+ #include <ranges>
5
+ #include <rays/ruby/image.h>
6
+ #include "reflex/exception.h"
7
+ #include "reflex/ruby/selector.h"
8
+ #include "reflex/ruby/view.h"
9
+ #include "defs.h"
10
+ #include "selector.h"
11
+
12
+
13
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Menu)
14
+
15
+ #define THIS to<Reflex::Menu*>(self)
16
+
17
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Menu, self)
18
+
19
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
20
+
21
+
22
+ static
23
+ RUCY_DEF_ALLOC(alloc, klass)
24
+ {
25
+ return value(new Reflex::RubyMenu<Reflex::Menu>, klass);
26
+ }
27
+ RUCY_END
28
+
29
+ static
30
+ RUCY_DEFN(popup)
31
+ {
32
+ CHECK;
33
+ check_arg_count(__FILE__, __LINE__, "Menu#popup", argc, 2, 3);
34
+
35
+ Reflex::View* view = NULL;
36
+ if (argv[0].is_a(Reflex::view_class()))
37
+ {
38
+ view = to<Reflex::View*>(argv[0]);
39
+ argc--;
40
+ argv++;
41
+ }
42
+ THIS->popup(view, to<Rays::Point>(argc, argv));
43
+ return self;
44
+ }
45
+ RUCY_END
46
+
47
+ static
48
+ RUCY_DEF2(add_child, child, index)
49
+ {
50
+ CHECK;
51
+ THIS->add_child(to<Reflex::Menu*>(child), index.is_nil() ? -1 : to<int>(index));
52
+ return child;
53
+ }
54
+ RUCY_END
55
+
56
+ static
57
+ RUCY_DEF1(remove_child, child)
58
+ {
59
+ CHECK;
60
+ THIS->remove_child(to<Reflex::Menu*>(child));
61
+ return child;
62
+ }
63
+ RUCY_END
64
+
65
+ static
66
+ RUCY_DEF0(clear_children)
67
+ {
68
+ CHECK;
69
+ THIS->clear_children();
70
+ return self;
71
+ }
72
+ RUCY_END
73
+
74
+ static
75
+ RUCY_DEFN(find_children)
76
+ {
77
+ CHECK;
78
+ check_arg_count(__FILE__, __LINE__, "Menu#find_children", argc, 1, 2);
79
+
80
+ bool recursive = (argc >= 2) ? to<bool>(argv[1]) : true;
81
+
82
+ auto children =
83
+ THIS->find_children(to<Reflex::Selector>(argv[0]), recursive) |
84
+ std::views::transform([](auto& ref) {return value(ref);});
85
+ return array(children.begin(), children.end());
86
+ }
87
+ RUCY_END
88
+
89
+ static
90
+ RUCY_DEF1(set_label, label)
91
+ {
92
+ CHECK;
93
+ THIS->set_label(label ? to<const char*>(label) : NULL);
94
+ }
95
+ RUCY_END
96
+
97
+ static
98
+ RUCY_DEF0(get_label)
99
+ {
100
+ CHECK;
101
+ return value(THIS->label());
102
+ }
103
+ RUCY_END
104
+
105
+ static
106
+ RUCY_DEF1(set_image, image)
107
+ {
108
+ CHECK;
109
+ THIS->set_image(image ? to<Rays::Image&>(image) : Rays::Image());
110
+ return image;
111
+ }
112
+ RUCY_END
113
+
114
+ static
115
+ RUCY_DEF0(get_image)
116
+ {
117
+ CHECK;
118
+ const Rays::Image& image = THIS->image();
119
+ return image ? value(image) : nil();
120
+ }
121
+ RUCY_END
122
+
123
+ static
124
+ RUCY_DEF1(enable, state)
125
+ {
126
+ CHECK;
127
+ THIS->enable(to<bool>(state));
128
+ }
129
+ RUCY_END
130
+
131
+ static
132
+ RUCY_DEF0(is_enabled)
133
+ {
134
+ CHECK;
135
+ return value(THIS->is_enabled());
136
+ }
137
+ RUCY_END
138
+
139
+ static
140
+ RUCY_DEF1(check, state)
141
+ {
142
+ CHECK;
143
+ THIS->check(to<bool>(state));
144
+ }
145
+ RUCY_END
146
+
147
+ static
148
+ RUCY_DEF0(is_checked)
149
+ {
150
+ CHECK;
151
+ return value(THIS->is_checked());
152
+ }
153
+ RUCY_END
154
+
155
+
156
+ static
157
+ RUCY_DEF1(set_shortcut_key, key)
158
+ {
159
+ CHECK;
160
+ THIS->set_shortcut(
161
+ key ? to<const char*>(key) : NULL,
162
+ THIS->shortcut_modifiers());
163
+ }
164
+ RUCY_END
165
+
166
+ static
167
+ RUCY_DEF0(get_shortcut_key)
168
+ {
169
+ CHECK;
170
+ return value(THIS->shortcut_key());
171
+ }
172
+ RUCY_END
173
+
174
+ static
175
+ RUCY_DEF1(set_shortcut_modifiers, modifiers)
176
+ {
177
+ CHECK;
178
+ THIS->set_shortcut(THIS->shortcut_key(), to<uint>(modifiers));
179
+ }
180
+ RUCY_END
181
+
182
+ static
183
+ RUCY_DEF0(get_shortcut_modifiers)
184
+ {
185
+ CHECK;
186
+ return value(THIS->shortcut_modifiers());
187
+ }
188
+ RUCY_END
189
+
190
+ static
191
+ RUCY_DEF0(is_separator)
192
+ {
193
+ CHECK;
194
+ return value(THIS->is_separator());
195
+ }
196
+ RUCY_END
197
+
198
+ static
199
+ RUCY_DEF0(get_parent)
200
+ {
201
+ CHECK;
202
+ return value(THIS->parent());
203
+ }
204
+ RUCY_END
205
+
206
+ static
207
+ RUCY_DEF0(get_size)
208
+ {
209
+ CHECK;
210
+ return value((int) THIS->size());
211
+ }
212
+ RUCY_END
213
+
214
+ static
215
+ RUCY_DEF0(is_empty)
216
+ {
217
+ CHECK;
218
+ return value(THIS->empty());
219
+ }
220
+ RUCY_END
221
+
222
+ static
223
+ RUCY_DEF0(each)
224
+ {
225
+ CHECK;
226
+
227
+ std::vector<Reflex::Menu::Ref> children(THIS->begin(), THIS->end());
228
+
229
+ Value ret;
230
+ for (auto& child : children)
231
+ ret = yield(value(child.get()));
232
+ return ret;
233
+ }
234
+ RUCY_END
235
+
236
+ static
237
+ RUCY_DEF1(on_show, event)
238
+ {
239
+ CHECK;
240
+ CALL(on_show(to<Reflex::Event*>(event)));
241
+ }
242
+ RUCY_END
243
+
244
+ static
245
+ RUCY_DEF1(on_hide, event)
246
+ {
247
+ CHECK;
248
+ CALL(on_hide(to<Reflex::Event*>(event)));
249
+ }
250
+ RUCY_END
251
+
252
+ static
253
+ RUCY_DEF1(on_open_submenu, event)
254
+ {
255
+ CHECK;
256
+ CALL(on_open_submenu(to<Reflex::Event*>(event)));
257
+ }
258
+ RUCY_END
259
+
260
+ static
261
+ RUCY_DEF1(on_close_submenu, event)
262
+ {
263
+ CHECK;
264
+ CALL(on_close_submenu(to<Reflex::Event*>(event)));
265
+ }
266
+ RUCY_END
267
+
268
+ static
269
+ RUCY_DEF1(on_click, event)
270
+ {
271
+ CHECK;
272
+ CALL(on_click(to<Reflex::Event*>(event)));
273
+ }
274
+ RUCY_END
275
+
276
+
277
+ static Class cMenu;
278
+
279
+ void
280
+ Init_reflex_menu ()
281
+ {
282
+ Module mReflex = define_module("Reflex");
283
+
284
+ cMenu = mReflex.define_class("Menu");
285
+ cMenu.define_alloc_func(alloc);
286
+ cMenu.define_method("popup", popup);
287
+ cMenu.define_method( "add_child!", add_child);
288
+ cMenu.define_method("remove_child", remove_child);
289
+ cMenu.define_method( "clear_children", clear_children);
290
+ cMenu.define_method( "find_children", find_children);
291
+ cMenu.define_method("label=", set_label);
292
+ cMenu.define_method("label", get_label);
293
+ cMenu.define_method("image=", set_image);
294
+ cMenu.define_method("image", get_image);
295
+ cMenu.define_method("enable!", enable);
296
+ cMenu.define_method("enabled?", is_enabled);
297
+ cMenu.define_method("check!", check);
298
+ cMenu.define_method("checked?", is_checked);
299
+ cMenu.define_method("shortcut_key=", set_shortcut_key);
300
+ cMenu.define_method("shortcut_key", get_shortcut_key);
301
+ cMenu.define_method("shortcut_modifiers=", set_shortcut_modifiers);
302
+ cMenu.define_method("shortcut_modifiers", get_shortcut_modifiers);
303
+ cMenu.define_method("separator?", is_separator);
304
+ cMenu.define_method("parent", get_parent);
305
+ cMenu.define_method("size", get_size);
306
+ cMenu.define_method("empty?", is_empty);
307
+ cMenu.define_method("each!", each);
308
+ cMenu.define_method("on_show", on_show);
309
+ cMenu.define_method("on_hide", on_hide);
310
+ cMenu.define_method("on_open_submenu", on_open_submenu);
311
+ cMenu.define_method("on_close_submenu", on_close_submenu);
312
+ cMenu.define_method("on_click", on_click);
313
+
314
+ define_wrapper_equality_methods<Reflex::Menu>(cMenu);
315
+ define_selector_methods<Reflex::Menu>(cMenu);
316
+ }
317
+
318
+
319
+ namespace Reflex
320
+ {
321
+
322
+
323
+ Class
324
+ menu_class ()
325
+ {
326
+ return cMenu;
327
+ }
328
+
329
+
330
+ }// Reflex
@@ -4,8 +4,8 @@
4
4
  void Init_reflex ();
5
5
  void Init_reflex_exception ();
6
6
 
7
- void Init_reflex_pointer ();
8
7
  void Init_reflex_selector ();
8
+ void Init_reflex_pointer ();
9
9
  void Init_reflex_style ();
10
10
  void Init_reflex_style_length ();
11
11
  void Init_reflex_timer ();
@@ -35,10 +35,19 @@ void Init_reflex_line_shape ();
35
35
  void Init_reflex_rect_shape ();
36
36
  void Init_reflex_ellipse_shape ();
37
37
 
38
+ void Init_reflex_pin ();
39
+ void Init_reflex_constraint ();
40
+ void Init_reflex_snap_constraint ();
41
+ void Init_reflex_link_constraint ();
42
+ void Init_reflex_wheel_constraint ();
43
+ void Init_reflex_chase_constraint ();
44
+
38
45
  void Init_reflex_application ();
39
- void Init_reflex_screen ();
40
46
  void Init_reflex_window ();
41
47
  void Init_reflex_view ();
48
+ void Init_reflex_menu ();
49
+ void Init_reflex_screen ();
50
+ void Init_reflex_clipboard ();
42
51
 
43
52
  void Init_reflex_device ();
44
53
  void Init_reflex_midi ();
@@ -56,8 +65,8 @@ Init_reflex_ext ()
56
65
  Init_reflex();
57
66
  Init_reflex_exception();
58
67
 
59
- Init_reflex_pointer();
60
68
  Init_reflex_selector();
69
+ Init_reflex_pointer();
61
70
  Init_reflex_style();
62
71
  Init_reflex_style_length();
63
72
  Init_reflex_timer();
@@ -87,10 +96,19 @@ Init_reflex_ext ()
87
96
  Init_reflex_rect_shape();
88
97
  Init_reflex_ellipse_shape();
89
98
 
99
+ Init_reflex_pin();
100
+ Init_reflex_constraint();
101
+ Init_reflex_snap_constraint();
102
+ Init_reflex_link_constraint();
103
+ Init_reflex_wheel_constraint();
104
+ Init_reflex_chase_constraint();
105
+
90
106
  Init_reflex_application();
91
- Init_reflex_screen();
92
107
  Init_reflex_window();
93
108
  Init_reflex_view();
109
+ Init_reflex_menu();
110
+ Init_reflex_screen();
111
+ Init_reflex_clipboard();
94
112
 
95
113
  Init_reflex_device();
96
114
  Init_reflex_midi();
@@ -0,0 +1,165 @@
1
+ #include "reflex/ruby/pin.h"
2
+
3
+
4
+ #include <rays/ruby/point.h>
5
+ #include "reflex/ruby/constraint.h"
6
+ #include "reflex/ruby/view.h"
7
+ #include "defs.h"
8
+
9
+
10
+ RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(REFLEX_EXPORT, Reflex::Pin)
11
+
12
+ #define THIS to<Reflex::Pin*>(self)
13
+
14
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Pin, self)
15
+
16
+
17
+ static
18
+ RUCY_DEF_ALLOC(alloc, klass)
19
+ {
20
+ return new_type<Reflex::Pin>(klass);
21
+ }
22
+ RUCY_END
23
+
24
+ static
25
+ RUCY_DEFN(initialize)
26
+ {
27
+ CHECK;
28
+ *THIS = to<Reflex::Pin>(argc, argv);
29
+ }
30
+ RUCY_END
31
+
32
+ static
33
+ RUCY_DEF1(initialize_copy, obj)
34
+ {
35
+ CHECK;
36
+ *THIS = to<Reflex::Pin&>(obj);
37
+ }
38
+ RUCY_END
39
+
40
+ static
41
+ RUCY_DEFN(snap)
42
+ {
43
+ CHECK;
44
+ return value(THIS->snap(to<Reflex::Pin>(argc, argv)));
45
+ }
46
+ RUCY_END
47
+
48
+ static
49
+ RUCY_DEFN(link)
50
+ {
51
+ CHECK;
52
+ return value(THIS->link(to<Reflex::Pin>(argc, argv)));
53
+ }
54
+ RUCY_END
55
+
56
+ static
57
+ RUCY_DEFN(wheel)
58
+ {
59
+ CHECK;
60
+ return value(THIS->wheel(to<Reflex::Pin>(argc, argv)));
61
+ }
62
+ RUCY_END
63
+
64
+ static
65
+ RUCY_DEFN(chase)
66
+ {
67
+ CHECK;
68
+ return value(THIS->chase(to<Reflex::Pin>(argc, argv)));
69
+ }
70
+ RUCY_END
71
+
72
+ static
73
+ RUCY_DEF0(get_view)
74
+ {
75
+ CHECK;
76
+ return value(THIS->view());
77
+ }
78
+ RUCY_END
79
+
80
+ static
81
+ RUCY_DEF0(get_position)
82
+ {
83
+ CHECK;
84
+ const Rays::Point* pos = THIS->position();
85
+ return pos ? value(*pos) : nil();
86
+ }
87
+ RUCY_END
88
+
89
+
90
+ static Class cPin;
91
+
92
+ void
93
+ Init_reflex_pin ()
94
+ {
95
+ Module mReflex = define_module("Reflex");
96
+
97
+ cPin = mReflex.define_class("Pin");
98
+ cPin.define_alloc_func(alloc);
99
+ cPin.define_private_method("initialize", initialize);
100
+ cPin.define_private_method("initialize_copy", initialize_copy);
101
+ cPin.define_private_method("snap!", snap);
102
+ cPin.define_private_method("link!", link);
103
+ cPin.define_private_method("wheel!", wheel);
104
+ cPin.define_private_method("chase!", chase);
105
+ cPin.define_method("view", get_view);
106
+ cPin.define_method("position", get_position);
107
+ }
108
+
109
+
110
+ namespace Rucy
111
+ {
112
+
113
+
114
+ template <> REFLEX_EXPORT Reflex::Pin
115
+ value_to<Reflex::Pin> (int argc, const Value* argv, bool convert)
116
+ {
117
+ if (argc == 1 && argv && argv->is_array())
118
+ {
119
+ argc = argv->size();
120
+ argv = argv->as_array();
121
+ }
122
+
123
+ if (convert)
124
+ {
125
+ if (argc == 0 || argv->is_nil())
126
+ return Reflex::Pin();
127
+
128
+ if (argv->is_a(Reflex::view_class()))
129
+ {
130
+ Reflex::View* view = value_to<Reflex::View*>(*argv);
131
+ argc -= 1;
132
+ argv += 1;
133
+
134
+ if (argc == 0)
135
+ return Reflex::Pin(view);
136
+ else
137
+ return Reflex::Pin(view, value_to<Rays::Point>(argc, argv, convert));
138
+ }
139
+
140
+ if (!argv->is_a(Reflex::pin_class()))
141
+ return Reflex::Pin(value_to<Rays::Point>(argc, argv, convert));
142
+ }
143
+
144
+ if (argc != 1)
145
+ argument_error(__FILE__, __LINE__);
146
+
147
+ return value_to<Reflex::Pin&>(*argv, convert);
148
+ }
149
+
150
+
151
+ }// Rucy
152
+
153
+
154
+ namespace Reflex
155
+ {
156
+
157
+
158
+ Class
159
+ pin_class ()
160
+ {
161
+ return cPin;
162
+ }
163
+
164
+
165
+ }// Reflex
@@ -163,6 +163,8 @@ Init_reflex_pointer ()
163
163
  cPointer.define_const("UP", Reflex::Pointer::UP);
164
164
  cPointer.define_const("MOVE", Reflex::Pointer::MOVE);
165
165
  cPointer.define_const("CANCEL", Reflex::Pointer::CANCEL);
166
+ cPointer.define_const("ENTER", Reflex::Pointer::ENTER);
167
+ cPointer.define_const("LEAVE", Reflex::Pointer::LEAVE);
166
168
  cPointer.define_const("STAY", Reflex::Pointer::STAY);
167
169
  }
168
170
 
@@ -92,7 +92,7 @@ RUCY_DEF0(each)
92
92
 
93
93
  Value ret;
94
94
  for (size_t i = 0, size = THIS->size(); i < size; ++i)
95
- ret = rb_yield(value((*THIS)[i]));
95
+ ret = yield(value((*THIS)[i]));
96
96
  return ret;
97
97
  }
98
98
  RUCY_END
@@ -2,9 +2,11 @@
2
2
 
3
3
 
4
4
  #include "reflex/ruby/view.h"
5
+ #include "reflex/ruby/constraint.h"
5
6
  #include "reflex/ruby/timer.h"
6
7
  #include "reflex/ruby/midi.h"
7
8
  #include "../../src/window.h"
9
+ #include "../../src/constraint.h"
8
10
  #include "../../src/timer.h"
9
11
  #include "../../src/midi.h"
10
12
  #include "defs.h"
@@ -16,6 +18,30 @@ create_root_view ()
16
18
  return new Reflex::RubyView<Reflex::View>();
17
19
  }
18
20
 
21
+ static Reflex::SnapConstraint*
22
+ create_snap_constraint ()
23
+ {
24
+ return new Reflex::RubyConstraint<Reflex::SnapConstraint>();
25
+ }
26
+
27
+ static Reflex::LinkConstraint*
28
+ create_link_constraint ()
29
+ {
30
+ return new Reflex::RubyConstraint<Reflex::LinkConstraint>();
31
+ }
32
+
33
+ static Reflex::WheelConstraint*
34
+ create_wheel_constraint ()
35
+ {
36
+ return new Reflex::RubyConstraint<Reflex::WheelConstraint>();
37
+ }
38
+
39
+ static Reflex::ChaseConstraint*
40
+ create_chase_constraint ()
41
+ {
42
+ return new Reflex::RubyConstraint<Reflex::ChaseConstraint>();
43
+ }
44
+
19
45
  static Reflex::Timer*
20
46
  create_timer ()
21
47
  {
@@ -35,9 +61,13 @@ static
35
61
  RUCY_DEF0(init)
36
62
  {
37
63
  Reflex::init();
38
- Reflex::Window_set_create_root_view_fun(create_root_view);
39
- Reflex::Timer_set_create_fun(create_timer);
40
- Reflex::MIDI_set_create_fun(create_midi);
64
+ Reflex:: Window_set_create_root_view_fun(create_root_view);
65
+ Reflex:: SnapConstraint_set_create_fun(create_snap_constraint);
66
+ Reflex:: LinkConstraint_set_create_fun(create_link_constraint);
67
+ Reflex::WheelConstraint_set_create_fun(create_wheel_constraint);
68
+ Reflex::ChaseConstraint_set_create_fun(create_chase_constraint);
69
+ Reflex:: Timer_set_create_fun(create_timer);
70
+ Reflex:: MIDI_set_create_fun(create_midi);
41
71
 
42
72
  return self;
43
73
  }
@@ -46,9 +76,13 @@ RUCY_END
46
76
  static
47
77
  RUCY_DEF0(fin)
48
78
  {
49
- Reflex::Window_set_create_root_view_fun(NULL);
50
- Reflex::Timer_set_create_fun(NULL);
51
- Reflex::MIDI_set_create_fun(NULL);
79
+ Reflex:: Window_set_create_root_view_fun(NULL);
80
+ Reflex:: SnapConstraint_set_create_fun(NULL);
81
+ Reflex:: LinkConstraint_set_create_fun(NULL);
82
+ Reflex::WheelConstraint_set_create_fun(NULL);
83
+ Reflex::ChaseConstraint_set_create_fun(NULL);
84
+ Reflex:: Timer_set_create_fun(NULL);
85
+ Reflex:: MIDI_set_create_fun(NULL);
52
86
  Reflex::fin();
53
87
 
54
88
  return self;
@@ -242,7 +276,7 @@ Init_reflex ()
242
276
  DEFINE_CONST(KEY_SLEEP);
243
277
  DEFINE_CONST(KEY_EXEC);
244
278
  DEFINE_CONST(KEY_PRINT);
245
- DEFINE_CONST(KEY_APPS);
279
+ DEFINE_CONST(KEY_CONTEXT_MENU);
246
280
  DEFINE_CONST(KEY_SELECT);
247
281
  DEFINE_CONST(KEY_CLEAR);
248
282
 
@@ -307,6 +341,7 @@ Init_reflex ()
307
341
  DEFINE_CONST(MOD_FUNCTION);
308
342
  DEFINE_CONST(MOD_NUMPAD);
309
343
  DEFINE_CONST(MOD_CAPS);
344
+ DEFINE_CONST(MOD_SCROLL);
310
345
 
311
346
  #undef DEFINE_CONST
312
347
  }
@@ -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
 
@@ -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
  {
@@ -83,7 +83,7 @@ RUCY_DEF0(each_tag)
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