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
data/ext/reflex/view.cpp CHANGED
@@ -10,6 +10,7 @@
10
10
  #include "reflex/ruby/timer.h"
11
11
  #include "reflex/ruby/style.h"
12
12
  #include "reflex/ruby/shape.h"
13
+ #include "reflex/ruby/constraint.h"
13
14
  #include "reflex/ruby/filter.h"
14
15
  #include "reflex/ruby/window.h"
15
16
  #include "defs.h"
@@ -21,7 +22,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::View)
21
22
  #define THIS to< Reflex::View*>(self)
22
23
  #define C_THIS to<const Reflex::View*>(self)
23
24
 
24
- #define CHECK RUCY_CHECK_OBJECT(Reflex::View, self)
25
+ #define CHECK RUCY_CHECK_OBJ(Reflex::View, self)
25
26
 
26
27
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
27
28
 
@@ -52,7 +53,7 @@ RUCY_DEF0(hide)
52
53
  RUCY_END
53
54
 
54
55
  static
55
- RUCY_DEF0(hidden)
56
+ RUCY_DEF0(is_hidden)
56
57
  {
57
58
  CHECK;
58
59
  return value(THIS->hidden());
@@ -102,7 +103,7 @@ static
102
103
  RUCY_DEFN(start_timer)
103
104
  {
104
105
  CHECK;
105
- check_arg_count(__FILE__, __LINE__, "View#start_timer", argc, 1, 2);
106
+ check_arg_count(__FILE__, __LINE__, "View#start_timer!", argc, 1, 2);
106
107
 
107
108
  Reflex::Timer* timer = THIS->start_timer(
108
109
  to<float>(argv[0]),
@@ -121,6 +122,31 @@ RUCY_DEF0(update_layout)
121
122
  }
122
123
  RUCY_END
123
124
 
125
+ static
126
+ RUCY_DEF0(fit_to_content)
127
+ {
128
+ CHECK;
129
+ THIS->fit_to_content();
130
+ return self;
131
+ }
132
+ RUCY_END
133
+
134
+ static
135
+ RUCY_DEF0(content_bounds)
136
+ {
137
+ CHECK;
138
+ return value(CALL(content_bounds()));
139
+ }
140
+ RUCY_END
141
+
142
+ static
143
+ RUCY_DEF0(get_text_input_bounds)
144
+ {
145
+ CHECK;
146
+ return value(CALL(text_input_bounds()));
147
+ }
148
+ RUCY_END
149
+
124
150
  static
125
151
  RUCY_DEF1(from_parent, point)
126
152
  {
@@ -170,10 +196,10 @@ RUCY_DEF1(to_screen, point)
170
196
  RUCY_END
171
197
 
172
198
  static
173
- RUCY_DEF1(add_child, child)
199
+ RUCY_DEF2(add_child, child, index)
174
200
  {
175
201
  CHECK;
176
- THIS->add_child(to<Reflex::View*>(child));
202
+ THIS->add_child(to<Reflex::View*>(child), index.is_nil() ? -1 : to<int>(index));
177
203
  return child;
178
204
  }
179
205
  RUCY_END
@@ -216,9 +242,11 @@ RUCY_DEF0(each_child)
216
242
  {
217
243
  CHECK;
218
244
 
245
+ Reflex::View::ChildList children(THIS->child_begin(), THIS->child_end());
246
+
219
247
  Value ret;
220
- for (auto it = THIS->child_begin(), end = THIS->child_end(); it != end; ++it)
221
- ret = rb_yield(value(it->get()));
248
+ for (auto& child : children)
249
+ ret = yield(value(child.get()));
222
250
  return ret;
223
251
  }
224
252
  RUCY_END
@@ -276,10 +304,11 @@ RUCY_DEF0(each_style)
276
304
  {
277
305
  CHECK;
278
306
 
307
+ Reflex::View::StyleList styles(THIS->style_begin(), THIS->style_end());
308
+
279
309
  Value ret;
280
- Reflex::View::style_iterator end = THIS->style_end();
281
- for (Reflex::View::style_iterator it = THIS->style_begin(); it != end; ++it)
282
- ret = rb_yield(value(*it));
310
+ for (auto& style : styles)
311
+ ret = yield(value(style));
283
312
  return ret;
284
313
  }
285
314
  RUCY_END
@@ -318,10 +347,10 @@ RUCY_DEF0(get_shape)
318
347
  RUCY_END
319
348
 
320
349
  static
321
- RUCY_DEF1(add_shape, shape)
350
+ RUCY_DEF2(add_shape, shape, index)
322
351
  {
323
352
  CHECK;
324
- THIS->add_shape(to_shape(shape));
353
+ THIS->add_shape(to_shape(shape), index.is_nil() ? -1 : to<int>(index));
325
354
  return shape;
326
355
  }
327
356
  RUCY_END
@@ -362,62 +391,83 @@ RUCY_DEF0(each_shape)
362
391
  {
363
392
  CHECK;
364
393
 
394
+ Reflex::View::ShapeList shapes(THIS->shape_begin(), THIS->shape_end());
395
+
365
396
  Value ret;
366
- Reflex::View::shape_iterator end = THIS->shape_end();
367
- for (Reflex::View::shape_iterator it = THIS->shape_begin(); it != end; ++it)
368
- ret = rb_yield(value(it->get()));
397
+ for (auto& shape : shapes)
398
+ ret = yield(value(shape.get()));
369
399
  return ret;
370
400
  }
371
401
  RUCY_END
372
402
 
373
403
  static
374
- RUCY_DEF1(set_filter, filter)
404
+ RUCY_DEF0(clear_constraints)
375
405
  {
376
406
  CHECK;
377
- THIS->set_filter(filter ? to<Reflex::Filter*>(filter) : NULL);
378
- return filter;
407
+ THIS->clear_constraints();
408
+ return self;
379
409
  }
380
410
  RUCY_END
381
411
 
382
412
  static
383
- RUCY_DEF0(get_filter)
413
+ RUCY_DEFN(find_constraints)
384
414
  {
385
415
  CHECK;
386
- return value(THIS->filter());
416
+ check_arg_count(__FILE__, __LINE__, "View#find_constraints", argc, 1);
417
+
418
+ auto constraints =
419
+ THIS->find_constraints(to<Reflex::Selector>(argv[0])) |
420
+ std::views::transform([](auto& ref) {return value(ref.get());});
421
+ return array(constraints.begin(), constraints.end());
387
422
  }
388
423
  RUCY_END
389
424
 
390
425
  static
391
- RUCY_DEFN(set_frame)
426
+ RUCY_DEF0(each_constraint)
392
427
  {
393
428
  CHECK;
394
- THIS->set_frame(to<Rays::Bounds>(argc, argv));
395
- return value(THIS->frame());
429
+
430
+ Reflex::View::ConstraintList constraints(
431
+ THIS->constraint_begin(), THIS->constraint_end());
432
+
433
+ Value ret;
434
+ for (auto& constraint : constraints)
435
+ ret = yield(value(constraint.get()));
436
+ return ret;
396
437
  }
397
438
  RUCY_END
398
439
 
399
440
  static
400
- RUCY_DEF0(get_frame)
441
+ RUCY_DEF1(set_filter, filter)
401
442
  {
402
443
  CHECK;
403
- return value(THIS->frame());
444
+ THIS->set_filter(filter ? to<Reflex::Filter*>(filter) : NULL);
445
+ return filter;
404
446
  }
405
447
  RUCY_END
406
448
 
407
449
  static
408
- RUCY_DEF0(content_bounds)
450
+ RUCY_DEF0(get_filter)
409
451
  {
410
452
  CHECK;
411
- return value(CALL(content_bounds()));
453
+ return value(THIS->filter());
412
454
  }
413
455
  RUCY_END
414
456
 
415
457
  static
416
- RUCY_DEF0(fit_to_content)
458
+ RUCY_DEFN(set_frame)
417
459
  {
418
460
  CHECK;
419
- THIS->fit_to_content();
420
- return self;
461
+ THIS->set_frame(to<Rays::Bounds>(argc, argv));
462
+ return value(THIS->frame());
463
+ }
464
+ RUCY_END
465
+
466
+ static
467
+ RUCY_DEF0(get_frame)
468
+ {
469
+ CHECK;
470
+ return value(THIS->frame());
421
471
  }
422
472
  RUCY_END
423
473
 
@@ -603,24 +653,24 @@ RUCY_DEF0(get_clip)
603
653
  RUCY_END
604
654
 
605
655
  static
606
- RUCY_DEF1(set_cache, cache)
656
+ RUCY_DEF1(set_draw_cache, state)
607
657
  {
608
658
  CHECK;
609
659
 
610
- if (cache)
611
- THIS-> add_flag(Reflex::View::FLAG_CACHE);
660
+ if (state)
661
+ THIS-> add_flag(Reflex::View::FLAG_DRAW_CACHE);
612
662
  else
613
- THIS->remove_flag(Reflex::View::FLAG_CACHE);
663
+ THIS->remove_flag(Reflex::View::FLAG_DRAW_CACHE);
614
664
 
615
- return cache;
665
+ return state;
616
666
  }
617
667
  RUCY_END
618
668
 
619
669
  static
620
- RUCY_DEF0(get_cache)
670
+ RUCY_DEF0(has_draw_cache)
621
671
  {
622
672
  CHECK;
623
- return value(THIS->has_flag(Reflex::View::FLAG_CACHE));
673
+ return value(THIS->has_flag(Reflex::View::FLAG_DRAW_CACHE));
624
674
  }
625
675
  RUCY_END
626
676
 
@@ -690,6 +740,28 @@ RUCY_DEF0(get_fix_angle)
690
740
  }
691
741
  RUCY_END
692
742
 
743
+ static
744
+ RUCY_DEF1(set_text_input, state)
745
+ {
746
+ CHECK;
747
+
748
+ if (state)
749
+ THIS-> add_flag(Reflex::View::FLAG_TEXT_INPUT);
750
+ else
751
+ THIS->remove_flag(Reflex::View::FLAG_TEXT_INPUT);
752
+
753
+ return state;
754
+ }
755
+ RUCY_END
756
+
757
+ static
758
+ RUCY_DEF0(get_text_input)
759
+ {
760
+ CHECK;
761
+ return value(THIS->has_flag(Reflex::View::FLAG_TEXT_INPUT));
762
+ }
763
+ RUCY_END
764
+
693
765
  static
694
766
  RUCY_DEF0(parent)
695
767
  {
@@ -904,13 +976,11 @@ RUCY_DEF1(create_world, pixels_per_meter)
904
976
  RUCY_END
905
977
 
906
978
  static
907
- RUCY_DEFN(update_world)
979
+ RUCY_DEF0(update_world)
908
980
  {
909
981
  CHECK;
910
- check_arg_count(__FILE__, __LINE__, "View#update_world", argc, 0, 1);
911
982
 
912
- float duration = argc >= 1 ? to<float>(argv[0]) : 0;
913
- THIS->update_world(duration);
983
+ THIS->update_world();
914
984
  return self;
915
985
  }
916
986
  RUCY_END
@@ -1002,6 +1072,22 @@ RUCY_DEF1(on_detach, event)
1002
1072
  }
1003
1073
  RUCY_END
1004
1074
 
1075
+ static
1076
+ RUCY_DEF1(on_activate, event)
1077
+ {
1078
+ CHECK;
1079
+ CALL(on_activate(to<Reflex::Event*>(event)));
1080
+ }
1081
+ RUCY_END
1082
+
1083
+ static
1084
+ RUCY_DEF1(on_deactivate, event)
1085
+ {
1086
+ CHECK;
1087
+ CALL(on_deactivate(to<Reflex::Event*>(event)));
1088
+ }
1089
+ RUCY_END
1090
+
1005
1091
  static
1006
1092
  RUCY_DEF1(on_show, event)
1007
1093
  {
@@ -1107,90 +1193,90 @@ RUCY_DEF1(on_key_up, event)
1107
1193
  RUCY_END
1108
1194
 
1109
1195
  static
1110
- RUCY_DEF1(on_pointer, event)
1196
+ RUCY_DEF1(on_text, event)
1111
1197
  {
1112
1198
  CHECK;
1113
- CALL(on_pointer(to<Reflex::PointerEvent*>(event)));
1199
+ CALL(on_text(to<Reflex::TextEvent*>(event)));
1114
1200
  }
1115
1201
  RUCY_END
1116
1202
 
1117
1203
  static
1118
- RUCY_DEF1(on_pointer_down, event)
1204
+ RUCY_DEF1(on_text_preedit, event)
1119
1205
  {
1120
1206
  CHECK;
1121
- CALL(on_pointer_down(to<Reflex::PointerEvent*>(event)));
1207
+ CALL(on_text_preedit(to<Reflex::TextEvent*>(event)));
1122
1208
  }
1123
1209
  RUCY_END
1124
1210
 
1125
1211
  static
1126
- RUCY_DEF1(on_pointer_up, event)
1212
+ RUCY_DEF1(on_text_commit, event)
1127
1213
  {
1128
1214
  CHECK;
1129
- CALL(on_pointer_up(to<Reflex::PointerEvent*>(event)));
1215
+ CALL(on_text_commit(to<Reflex::TextEvent*>(event)));
1130
1216
  }
1131
1217
  RUCY_END
1132
1218
 
1133
1219
  static
1134
- RUCY_DEF1(on_pointer_move, event)
1220
+ RUCY_DEF1(on_pointer, event)
1135
1221
  {
1136
1222
  CHECK;
1137
- CALL(on_pointer_move(to<Reflex::PointerEvent*>(event)));
1223
+ CALL(on_pointer(to<Reflex::PointerEvent*>(event)));
1138
1224
  }
1139
1225
  RUCY_END
1140
1226
 
1141
1227
  static
1142
- RUCY_DEF1(on_pointer_cancel, event)
1228
+ RUCY_DEF1(on_pointer_down, event)
1143
1229
  {
1144
1230
  CHECK;
1145
- CALL(on_pointer_cancel(to<Reflex::PointerEvent*>(event)));
1231
+ CALL(on_pointer_down(to<Reflex::PointerEvent*>(event)));
1146
1232
  }
1147
1233
  RUCY_END
1148
1234
 
1149
1235
  static
1150
- RUCY_DEF1(on_wheel, event)
1236
+ RUCY_DEF1(on_pointer_up, event)
1151
1237
  {
1152
1238
  CHECK;
1153
- CALL(on_wheel(to<Reflex::WheelEvent*>(event)));
1239
+ CALL(on_pointer_up(to<Reflex::PointerEvent*>(event)));
1154
1240
  }
1155
1241
  RUCY_END
1156
1242
 
1157
1243
  static
1158
- RUCY_DEF1(on_midi, event)
1244
+ RUCY_DEF1(on_pointer_move, event)
1159
1245
  {
1160
1246
  CHECK;
1161
- CALL(on_midi(to<Reflex::MIDIEvent*>(event)));
1247
+ CALL(on_pointer_move(to<Reflex::PointerEvent*>(event)));
1162
1248
  }
1163
1249
  RUCY_END
1164
1250
 
1165
1251
  static
1166
- RUCY_DEF1(on_note, event)
1252
+ RUCY_DEF1(on_pointer_cancel, event)
1167
1253
  {
1168
1254
  CHECK;
1169
- CALL(on_note(to<Reflex::NoteEvent*>(event)));
1255
+ CALL(on_pointer_cancel(to<Reflex::PointerEvent*>(event)));
1170
1256
  }
1171
1257
  RUCY_END
1172
1258
 
1173
1259
  static
1174
- RUCY_DEF1(on_note_on, event)
1260
+ RUCY_DEF1(on_pointer_enter, event)
1175
1261
  {
1176
1262
  CHECK;
1177
- CALL(on_note_on(to<Reflex::NoteEvent*>(event)));
1263
+ CALL(on_pointer_enter(to<Reflex::PointerEvent*>(event)));
1178
1264
  }
1179
1265
  RUCY_END
1180
1266
 
1181
1267
  static
1182
- RUCY_DEF1(on_note_off, event)
1268
+ RUCY_DEF1(on_pointer_leave, event)
1183
1269
  {
1184
1270
  CHECK;
1185
- CALL(on_note_off(to<Reflex::NoteEvent*>(event)));
1271
+ CALL(on_pointer_leave(to<Reflex::PointerEvent*>(event)));
1186
1272
  }
1187
1273
  RUCY_END
1188
1274
 
1189
1275
  static
1190
- RUCY_DEF1(on_control_change, event)
1276
+ RUCY_DEF1(on_wheel, event)
1191
1277
  {
1192
1278
  CHECK;
1193
- CALL(on_control_change(to<Reflex::ControlChangeEvent*>(event)));
1279
+ CALL(on_wheel(to<Reflex::WheelEvent*>(event)));
1194
1280
  }
1195
1281
  RUCY_END
1196
1282
 
@@ -1242,6 +1328,46 @@ RUCY_DEF1(on_contact_end, event)
1242
1328
  }
1243
1329
  RUCY_END
1244
1330
 
1331
+ static
1332
+ RUCY_DEF1(on_midi, event)
1333
+ {
1334
+ CHECK;
1335
+ CALL(on_midi(to<Reflex::MIDIEvent*>(event)));
1336
+ }
1337
+ RUCY_END
1338
+
1339
+ static
1340
+ RUCY_DEF1(on_note, event)
1341
+ {
1342
+ CHECK;
1343
+ CALL(on_note(to<Reflex::NoteEvent*>(event)));
1344
+ }
1345
+ RUCY_END
1346
+
1347
+ static
1348
+ RUCY_DEF1(on_note_on, event)
1349
+ {
1350
+ CHECK;
1351
+ CALL(on_note_on(to<Reflex::NoteEvent*>(event)));
1352
+ }
1353
+ RUCY_END
1354
+
1355
+ static
1356
+ RUCY_DEF1(on_note_off, event)
1357
+ {
1358
+ CHECK;
1359
+ CALL(on_note_off(to<Reflex::NoteEvent*>(event)));
1360
+ }
1361
+ RUCY_END
1362
+
1363
+ static
1364
+ RUCY_DEF1(on_control_change, event)
1365
+ {
1366
+ CHECK;
1367
+ CALL(on_control_change(to<Reflex::ControlChangeEvent*>(event)));
1368
+ }
1369
+ RUCY_END
1370
+
1245
1371
 
1246
1372
  static Class cView;
1247
1373
 
@@ -1252,15 +1378,18 @@ Init_reflex_view ()
1252
1378
 
1253
1379
  cView = mReflex.define_class("View");
1254
1380
  cView.define_alloc_func(alloc);
1255
- cView.define_method("show", show);
1256
- cView.define_method("hide", hide);
1257
- cView.define_method("hidden?", hidden);
1381
+ cView.define_method("show", show);
1382
+ cView.define_method("hide", hide);
1383
+ cView.define_method("hidden?", is_hidden);
1258
1384
  cView.define_method("redraw", redraw);
1259
1385
  cView.define_method("focus", focus);
1260
1386
  cView.define_method("blur", blur);
1261
1387
  cView.define_method("focus?", has_focus);
1262
- cView.define_private_method("start_timer", start_timer);
1388
+ cView.define_private_method("start_timer!", start_timer);
1263
1389
  cView.define_method("update_layout", update_layout);
1390
+ cView.define_method("fit_to_content", fit_to_content);
1391
+ cView.define_method( "content_bounds", content_bounds);
1392
+ cView.define_method( "text_input_bounds", get_text_input_bounds);
1264
1393
 
1265
1394
  cView.define_method("from_parent", from_parent);
1266
1395
  cView.define_method( "to_parent", to_parent);
@@ -1269,33 +1398,35 @@ Init_reflex_view ()
1269
1398
  cView.define_method("from_screen", from_screen);
1270
1399
  cView.define_method( "to_screen", to_screen);
1271
1400
 
1272
- cView.define_method( "add_child", add_child);
1273
- cView.define_method("remove_child", remove_child);
1274
- cView.define_method( "clear_children", clear_children);
1275
- cView.define_method( "find_children", find_children);
1276
- cView.define_method( "each_child", each_child);
1277
-
1278
- cView.define_method( "add_style", add_style);
1279
- cView.define_method("remove_style", remove_style);
1280
- cView.define_method( "get_style", get_style);
1281
- cView.define_method( "find_styles", find_styles);
1282
- cView.define_method( "each_style", each_style);
1283
-
1284
- cView.define_method( "shape=", set_shape);
1285
- cView.define_method( "shape", get_shape);
1286
- cView.define_method( "add_shape", add_shape);
1287
- cView.define_method("remove_shape", remove_shape);
1288
- cView.define_method( "clear_shapes", clear_shapes);
1289
- cView.define_method( "find_shapes", find_shapes);
1290
- cView.define_method( "each_shape", each_shape);
1401
+ cView.define_method( "add_child!", add_child);
1402
+ cView.define_method( "remove_child", remove_child);
1403
+ cView.define_method( "clear_children", clear_children);
1404
+ cView.define_method( "find_children", find_children);
1405
+ cView.define_private_method("each_child!", each_child);
1406
+
1407
+ cView.define_method( "add_style", add_style);
1408
+ cView.define_method( "remove_style", remove_style);
1409
+ cView.define_method( "get_style", get_style);
1410
+ cView.define_method( "find_styles", find_styles);
1411
+ cView.define_private_method("each_style!", each_style);
1412
+
1413
+ cView.define_method( "shape=", set_shape);
1414
+ cView.define_method( "shape", get_shape);
1415
+ cView.define_method( "add_shape!", add_shape);
1416
+ cView.define_method( "remove_shape", remove_shape);
1417
+ cView.define_method( "clear_shapes", clear_shapes);
1418
+ cView.define_method( "find_shapes", find_shapes);
1419
+ cView.define_private_method("each_shape!", each_shape);
1420
+
1421
+ cView.define_method( "clear_constraints", clear_constraints);
1422
+ cView.define_method( "find_constraints", find_constraints);
1423
+ cView.define_private_method("each_constraint!", each_constraint);
1291
1424
 
1292
1425
  cView.define_method("filter=", set_filter);
1293
1426
  cView.define_method("filter", get_filter);
1294
1427
 
1295
1428
  cView.define_method("frame=", set_frame);
1296
1429
  cView.define_method("frame", get_frame);
1297
- cView.define_method("content_bounds", content_bounds);
1298
- cView.define_method("fit_to_content", fit_to_content);
1299
1430
  cView.define_method("angle=", set_angle);
1300
1431
  cView.define_method("angle", get_angle);
1301
1432
  cView.define_method("pivot=", set_pivot);
@@ -1309,14 +1440,16 @@ Init_reflex_view ()
1309
1440
  cView.define_method("capture", get_capture);
1310
1441
  cView.define_method("clip=", set_clip);
1311
1442
  cView.define_method("clip?", get_clip);
1312
- cView.define_method("cache=", set_cache);
1313
- cView.define_method("cache?", get_cache);
1443
+ cView.define_method("draw_cache=", set_draw_cache);
1444
+ cView.define_method("draw_cache?", has_draw_cache);
1314
1445
  cView.define_method("resize_to_fit=", set_resize_to_fit);
1315
1446
  cView.define_method("resize_to_fit?", get_resize_to_fit);
1316
1447
  cView.define_method("scroll_to_fit=", set_scroll_to_fit);
1317
1448
  cView.define_method("scroll_to_fit?", get_scroll_to_fit);
1318
1449
  cView.define_method("fix_angle=", set_fix_angle);
1319
1450
  cView.define_method("fix_angle?", get_fix_angle);
1451
+ cView.define_private_method("set_text_input_flag!", set_text_input);
1452
+ cView.define_private_method( "text_input_flag!", get_text_input);
1320
1453
  cView.define_method("parent", parent);
1321
1454
  cView.define_method("window", window);
1322
1455
 
@@ -1356,6 +1489,8 @@ Init_reflex_view ()
1356
1489
 
1357
1490
  cView.define_method("on_attach", on_attach);
1358
1491
  cView.define_method("on_detach", on_detach);
1492
+ cView.define_method("on_activate", on_activate);
1493
+ cView.define_method("on_deactivate", on_deactivate);
1359
1494
  cView.define_method("on_show", on_show);
1360
1495
  cView.define_method("on_hide", on_hide);
1361
1496
  cView.define_method("on_update", on_update);
@@ -1369,23 +1504,28 @@ Init_reflex_view ()
1369
1504
  cView.define_method("on_key", on_key);
1370
1505
  cView.define_method("on_key_down", on_key_down);
1371
1506
  cView.define_method("on_key_up", on_key_up);
1507
+ cView.define_method("on_text", on_text);
1508
+ cView.define_method("on_text_preedit", on_text_preedit);
1509
+ cView.define_method("on_text_commit", on_text_commit);
1372
1510
  cView.define_method("on_pointer", on_pointer);
1373
1511
  cView.define_method("on_pointer_down", on_pointer_down);
1374
1512
  cView.define_method("on_pointer_up", on_pointer_up);
1375
1513
  cView.define_method("on_pointer_move", on_pointer_move);
1376
1514
  cView.define_method("on_pointer_cancel", on_pointer_cancel);
1515
+ cView.define_method("on_pointer_enter", on_pointer_enter);
1516
+ cView.define_method("on_pointer_leave", on_pointer_leave);
1377
1517
  cView.define_method("on_wheel", on_wheel);
1518
+ cView.define_method("on_capture", on_capture);
1519
+ cView.define_method("on_timer", on_timer);
1520
+ cView.define_method( "will_contact?", will_contact);
1521
+ cView.define_private_method("call_contact!", on_contact);
1522
+ cView.define_private_method("call_contact_begin!", on_contact_begin);
1523
+ cView.define_private_method("call_contact_end!", on_contact_end);
1378
1524
  cView.define_method("on_midi", on_midi);
1379
1525
  cView.define_method("on_note", on_note);
1380
1526
  cView.define_method("on_note_on", on_note_on);
1381
1527
  cView.define_method("on_note_off", on_note_off);
1382
1528
  cView.define_method("on_control_change", on_control_change);
1383
- cView.define_method("on_capture", on_capture);
1384
- cView.define_method("on_timer", on_timer);
1385
- cView.define_method( "will_contact?", will_contact);
1386
- cView.define_private_method("call_contact!", on_contact);
1387
- cView.define_private_method("call_contact_begin!", on_contact_begin);
1388
- cView.define_private_method("call_contact_end!", on_contact_end);
1389
1529
 
1390
1530
  cView.define_const("CAPTURE_NONE", Reflex::View::CAPTURE_NONE);
1391
1531
  cView.define_const("CAPTURE_KEY", Reflex::View::CAPTURE_KEY);