reflexion 0.1.6 → 0.1.7

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 (225) hide show
  1. checksums.yaml +7 -0
  2. data/.doc/ext/reflex/application.cpp +54 -39
  3. data/.doc/ext/reflex/capture_event.cpp +87 -0
  4. data/.doc/ext/reflex/draw_event.cpp +103 -0
  5. data/.doc/ext/reflex/event.cpp +73 -0
  6. data/.doc/ext/reflex/focus_event.cpp +98 -0
  7. data/.doc/ext/reflex/frame_event.cpp +133 -0
  8. data/.doc/ext/reflex/image_view.cpp +74 -0
  9. data/.doc/ext/reflex/key_event.cpp +124 -0
  10. data/.doc/ext/reflex/native.cpp +45 -6
  11. data/.doc/ext/reflex/pointer_event.cpp +181 -0
  12. data/.doc/ext/reflex/reflex.cpp +17 -41
  13. data/.doc/ext/reflex/scroll_event.cpp +141 -0
  14. data/.doc/ext/reflex/selector.cpp +135 -0
  15. data/.doc/ext/reflex/style.cpp +253 -0
  16. data/.doc/ext/reflex/style_length.cpp +133 -0
  17. data/.doc/ext/reflex/style_length2.cpp +149 -0
  18. data/.doc/ext/reflex/style_length4.cpp +192 -0
  19. data/.doc/ext/reflex/update_event.cpp +77 -0
  20. data/.doc/ext/reflex/view.cpp +408 -88
  21. data/.doc/ext/reflex/wheel_event.cpp +146 -0
  22. data/.doc/ext/reflex/window.cpp +95 -92
  23. data/Rakefile +6 -5
  24. data/VERSION +1 -1
  25. data/ext/reflex/application.cpp +67 -49
  26. data/ext/reflex/capture_event.cpp +92 -0
  27. data/ext/reflex/draw_event.cpp +110 -0
  28. data/ext/reflex/event.cpp +77 -0
  29. data/ext/reflex/extconf.rb +18 -68
  30. data/ext/reflex/focus_event.cpp +104 -0
  31. data/ext/reflex/frame_event.cpp +143 -0
  32. data/ext/reflex/image_view.cpp +77 -0
  33. data/ext/reflex/key_event.cpp +133 -0
  34. data/ext/reflex/native.cpp +45 -6
  35. data/ext/reflex/pointer_event.cpp +195 -0
  36. data/ext/reflex/reflex.cpp +21 -47
  37. data/ext/reflex/scroll_event.cpp +152 -0
  38. data/ext/reflex/selector.cpp +144 -0
  39. data/ext/reflex/style.cpp +277 -0
  40. data/ext/reflex/style_length.cpp +140 -0
  41. data/ext/reflex/style_length2.cpp +157 -0
  42. data/ext/reflex/style_length4.cpp +204 -0
  43. data/ext/reflex/update_event.cpp +81 -0
  44. data/ext/reflex/view.cpp +469 -114
  45. data/ext/reflex/wheel_event.cpp +158 -0
  46. data/ext/reflex/window.cpp +130 -123
  47. data/include/reflex/application.h +12 -7
  48. data/include/reflex/defs.h +13 -89
  49. data/include/reflex/event.h +260 -0
  50. data/include/reflex/exception.h +17 -11
  51. data/include/reflex/image_view.h +45 -0
  52. data/include/reflex/reflex.h +2 -6
  53. data/include/reflex/ruby/application.h +40 -13
  54. data/include/reflex/ruby/event.h +72 -0
  55. data/include/reflex/ruby/image_view.h +25 -0
  56. data/include/reflex/ruby/selector.h +27 -0
  57. data/include/reflex/ruby/style.h +27 -0
  58. data/include/reflex/ruby/style_length.h +37 -0
  59. data/include/reflex/ruby/view.h +193 -38
  60. data/include/reflex/ruby/window.h +123 -39
  61. data/include/reflex/ruby.h +3 -2
  62. data/include/reflex/selector.h +64 -0
  63. data/include/reflex/style.h +144 -0
  64. data/include/reflex/style_length.h +147 -0
  65. data/include/reflex/view.h +182 -19
  66. data/include/reflex/window.h +35 -19
  67. data/include/reflex.h +7 -0
  68. data/lib/reflex/application.rb +14 -5
  69. data/lib/reflex/arc_shape.rb +20 -0
  70. data/lib/reflex/button.rb +75 -0
  71. data/lib/reflex/capture_event.rb +37 -0
  72. data/lib/reflex/color.rb +13 -0
  73. data/lib/reflex/color_space.rb +13 -0
  74. data/lib/reflex/draw_event.rb +19 -0
  75. data/lib/reflex/ellipse_shape.rb +20 -0
  76. data/lib/reflex/ext.rb +1 -1
  77. data/lib/reflex/flags.rb +18 -0
  78. data/lib/reflex/focus_event.rb +38 -0
  79. data/lib/reflex/font.rb +13 -0
  80. data/lib/reflex/frame_event.rb +42 -0
  81. data/lib/reflex/helper.rb +87 -30
  82. data/lib/reflex/image_view.rb +25 -0
  83. data/lib/reflex/key_event.rb +38 -0
  84. data/lib/reflex/line_shape.rb +20 -0
  85. data/lib/reflex/list_view.rb +15 -0
  86. data/lib/reflex/model.rb +149 -0
  87. data/lib/reflex/model_owner.rb +57 -0
  88. data/lib/reflex/model_view.rb +22 -0
  89. data/lib/reflex/module.rb +11 -7
  90. data/lib/reflex/pointer_event.rb +85 -0
  91. data/lib/reflex/rect_shape.rb +20 -0
  92. data/lib/reflex/reflex.rb +13 -2
  93. data/lib/reflex/scroll_event.rb +19 -0
  94. data/lib/reflex/selector.rb +31 -0
  95. data/lib/reflex/shader.rb +13 -0
  96. data/lib/reflex/shape.rb +34 -0
  97. data/lib/reflex/style.rb +55 -0
  98. data/lib/reflex/style_length.rb +30 -0
  99. data/lib/reflex/style_length2.rb +34 -0
  100. data/lib/reflex/style_length4.rb +38 -0
  101. data/lib/reflex/text_view.rb +55 -0
  102. data/lib/reflex/update_event.rb +19 -0
  103. data/lib/reflex/view.rb +38 -4
  104. data/lib/reflex/wheel_event.rb +19 -0
  105. data/lib/reflex/window.rb +7 -5
  106. data/lib/reflex.rb +38 -1
  107. data/lib/reflexion/include.rb +5 -0
  108. data/lib/reflexion.rb +100 -0
  109. data/reflex.gemspec +3 -4
  110. data/samples/app.rb +13 -0
  111. data/samples/bats.rb +91 -0
  112. data/samples/checker.rb +36 -0
  113. data/{examples/ruby/shapes.rb → samples/fans.rb} +12 -16
  114. data/samples/fps.rb +46 -0
  115. data/samples/grid.rb +60 -0
  116. data/{examples/ruby → samples}/hello.rb +14 -16
  117. data/samples/image.rb +44 -0
  118. data/samples/ios/hello/hello/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  119. data/samples/ios/hello/hello/Images.xcassets/LaunchImage.launchimage/Contents.json +51 -0
  120. data/samples/ios/hello/hello/en.lproj/InfoPlist.strings +2 -0
  121. data/samples/ios/hello/hello/hello-Info.plist +47 -0
  122. data/samples/ios/hello/hello/hello-Prefix.pch +10 -0
  123. data/samples/ios/hello/hello/main.cpp +79 -0
  124. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +725 -0
  125. data/{examples/ruby → samples}/key.rb +11 -14
  126. data/samples/layout.rb +89 -0
  127. data/samples/model.rb +86 -0
  128. data/samples/osx/hello/hello/Images.xcassets/AppIcon.appiconset/Contents.json +58 -0
  129. data/samples/osx/hello/hello/en.lproj/Credits.rtf +29 -0
  130. data/samples/osx/hello/hello/en.lproj/InfoPlist.strings +2 -0
  131. data/samples/osx/hello/hello/hello-Info.plist +32 -0
  132. data/samples/osx/hello/hello/hello-Prefix.pch +3 -0
  133. data/samples/osx/hello/hello/main.cpp +79 -0
  134. data/samples/osx/hello/hello.xcodeproj/project.pbxproj +725 -0
  135. data/samples/reflexion/hello.rb +24 -0
  136. data/samples/reflexion/paint.rb +40 -0
  137. data/samples/reflexion/pulse.rb +34 -0
  138. data/samples/repl.rb +69 -0
  139. data/samples/shader.rb +41 -0
  140. data/samples/shapes.rb +30 -0
  141. data/{examples/ruby → samples}/text.rb +7 -8
  142. data/samples/tree.rb +71 -0
  143. data/samples/views.rb +41 -0
  144. data/samples/visuals.rb +22 -0
  145. data/src/event.cpp +225 -0
  146. data/src/exception.cpp +24 -15
  147. data/src/image_view.cpp +70 -0
  148. data/src/ios/app_delegate.h +17 -0
  149. data/src/ios/app_delegate.mm +120 -0
  150. data/src/ios/application.mm +116 -0
  151. data/src/{cocoa/applicationdata.h → ios/application_data.h} +6 -6
  152. data/src/ios/event.h +26 -0
  153. data/src/ios/event.mm +31 -0
  154. data/src/ios/native_window.h +37 -0
  155. data/src/ios/native_window.mm +220 -0
  156. data/src/ios/opengl_view.h +13 -0
  157. data/src/ios/opengl_view.mm +131 -0
  158. data/src/{cocoa → ios}/reflex.mm +8 -12
  159. data/src/ios/window.mm +303 -0
  160. data/src/ios/window_data.h +75 -0
  161. data/src/osx/app_delegate.h +17 -0
  162. data/src/{cocoa/cocoaapplication.mm → osx/app_delegate.mm} +90 -48
  163. data/src/osx/application.mm +132 -0
  164. data/src/osx/application_data.h +45 -0
  165. data/src/osx/event.h +42 -0
  166. data/src/osx/event.mm +112 -0
  167. data/src/osx/native_window.h +26 -0
  168. data/src/osx/native_window.mm +322 -0
  169. data/src/{cocoa/openglview.h → osx/opengl_view.h} +0 -4
  170. data/src/{cocoa/openglview.mm → osx/opengl_view.mm} +66 -23
  171. data/src/osx/reflex.mm +50 -0
  172. data/src/osx/window.mm +308 -0
  173. data/src/osx/window_data.h +75 -0
  174. data/src/selector.cpp +121 -0
  175. data/src/style.cpp +576 -0
  176. data/src/style_length.cpp +341 -0
  177. data/src/view.cpp +1228 -129
  178. data/src/win32/application.cpp +1 -1
  179. data/src/window.cpp +54 -26
  180. data/test/helper.rb +8 -4
  181. data/test/test_capture_event.rb +41 -0
  182. data/test/test_event.rb +20 -0
  183. data/test/test_has_frame.rb +45 -0
  184. data/test/test_model.rb +9 -0
  185. data/test/test_model_owner.rb +9 -0
  186. data/test/test_selector.rb +75 -0
  187. data/test/test_style.rb +70 -0
  188. data/test/test_style_length.rb +38 -0
  189. data/test/test_style_length2.rb +50 -0
  190. data/test/test_style_length4.rb +56 -0
  191. data/test/test_view.rb +97 -23
  192. data/test/test_window.rb +54 -46
  193. metadata +205 -84
  194. data/.doc/ext/reflex/defs.cpp +0 -8
  195. data/.doc/ext/reflex/key.cpp +0 -122
  196. data/.doc/ext/reflex/points.cpp +0 -151
  197. data/.gitignore +0 -14
  198. data/ChangeLog +0 -8
  199. data/examples/hello/.gitignore +0 -2
  200. data/examples/hello/Rakefile +0 -41
  201. data/examples/hello/main.cpp +0 -18
  202. data/examples/ruby/app.rb +0 -13
  203. data/examples/ruby/checker.rb +0 -41
  204. data/examples/ruby/fps.rb +0 -49
  205. data/examples/ruby/grid.rb +0 -65
  206. data/examples/ruby/views.rb +0 -88
  207. data/examples/ruby/visuals.rb +0 -27
  208. data/ext/reflex/defs.cpp +0 -8
  209. data/ext/reflex/key.cpp +0 -129
  210. data/ext/reflex/points.cpp +0 -161
  211. data/include/reflex/ruby/key.h +0 -39
  212. data/include/reflex/ruby/points.h +0 -39
  213. data/lib/reflex/visuals/string.rb +0 -53
  214. data/src/cocoa/application.mm +0 -101
  215. data/src/cocoa/cocoaapplication.h +0 -21
  216. data/src/cocoa/cocoawindow.h +0 -46
  217. data/src/cocoa/cocoawindow.mm +0 -230
  218. data/src/cocoa/defs.h +0 -34
  219. data/src/cocoa/defs.mm +0 -87
  220. data/src/cocoa/window.mm +0 -148
  221. data/src/cocoa/windowdata.h +0 -56
  222. data/src/defs.cpp +0 -47
  223. data/src/helper.h +0 -12
  224. data/src/reflex.cpp +0 -43
  225. /data/{README → README.md} +0 -0
data/ext/reflex/view.cpp CHANGED
@@ -1,9 +1,13 @@
1
1
  #include "reflex/ruby/view.h"
2
2
 
3
3
 
4
+ #include <vector>
4
5
  #include <rucy.h>
5
- #include <reflex/ruby/window.h>
6
- #include "defs.h"
6
+ #include <rays/ruby/point.h>
7
+ #include <rays/ruby/bounds.h>
8
+ #include "reflex/ruby/window.h"
9
+ #include "reflex/ruby/selector.h"
10
+ #include "reflex/ruby/style.h"
7
11
 
8
12
 
9
13
  using namespace Rucy;
@@ -13,224 +17,521 @@ using Reflex::coord;
13
17
 
14
18
  static Class cView;
15
19
 
20
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::View, cView)
16
21
 
17
- namespace Reflex
22
+ #define THIS to<Reflex::View*>(self)
23
+
24
+ #define CHECK RUCY_CHECK_OBJECT(Reflex::View, cView, self)
25
+
26
+ #define CALL(fun) RUCY_WRAPPER_CALL(Reflex::View, THIS, fun)
27
+
28
+
29
+ template <typename T>
30
+ static inline Value
31
+ array (T begin, T end)
18
32
  {
33
+ std::vector<Value> v;
34
+ for (T it = begin; it != end; ++it) v.push_back(value(*it));
35
+ return value(v.size(), &v[0]);
36
+ }
19
37
 
20
38
 
21
- Class
22
- view_class ()
23
- {
24
- return cView;
25
- }
39
+ static
40
+ RUCY_DEF_ALLOC(alloc, klass)
41
+ {
42
+ return value(new Reflex::RubyView<Reflex::View>, klass);
43
+ }
44
+ RUCY_END
26
45
 
46
+ static
47
+ RUCY_DEF0(show)
48
+ {
49
+ CHECK;
50
+ CALL(show());
51
+ return self;
52
+ }
53
+ RUCY_END
27
54
 
28
- }// Reflex
55
+ static
56
+ RUCY_DEF0(hide)
57
+ {
58
+ CHECK;
59
+ CALL(hide());
60
+ return self;
61
+ }
62
+ RUCY_END
29
63
 
64
+ static
65
+ RUCY_DEF0(hidden)
66
+ {
67
+ CHECK;
68
+ return value(THIS->hidden());
69
+ }
70
+ RUCY_END
71
+
72
+ static
73
+ RUCY_DEF0(redraw)
74
+ {
75
+ CHECK;
76
+ THIS->redraw();
77
+ return self;
78
+ }
79
+ RUCY_END
80
+
81
+ static
82
+ RUCY_DEF1(add_child, child)
83
+ {
84
+ CHECK;
85
+ THIS->add_child(to<Reflex::View*>(child));
86
+ return child;
87
+ }
88
+ RUCY_END
30
89
 
31
- typedef Reflex::RubyView<Reflex::View> RubyView;
90
+ static
91
+ RUCY_DEF1(remove_child, child)
92
+ {
93
+ CHECK;
94
+ THIS->remove_child(to<Reflex::View*>(child));
95
+ return child;
96
+ }
97
+ RUCY_END
32
98
 
99
+ static
100
+ RUCY_DEFN(find_children)
101
+ {
102
+ CHECK;
103
+ check_arg_count(__FILE__, __LINE__, "View#find_children", argc, 1, 2);
33
104
 
34
- #define THIS to<Reflex::View*>(self)
105
+ bool recursive = (argc >= 2) ? to<bool>(argv[1]) : false;
106
+
107
+ Reflex::View::ChildList children;
108
+ THIS->find_children(&children, to<Reflex::Selector>(argv[0]), recursive);
109
+ return array(children.begin(), children.end());
110
+ }
111
+ RUCY_END
112
+
113
+ static
114
+ RUCY_DEF0(each_child)
115
+ {
116
+ CHECK;
35
117
 
36
- #define CHECK RUCY_CHECK_OBJECT(self, Reflex::View, cView)
118
+ Value ret;
119
+ Reflex::View::child_iterator end = THIS->child_end();
120
+ for (Reflex::View::child_iterator it = THIS->child_begin(); it != end; ++it)
121
+ ret = rb_yield(value(it->get()));
122
+ return ret;
123
+ }
124
+ RUCY_END
37
125
 
38
- #define CALL(fun) RUCY_WRAPPER_CALL(RubyView, THIS, fun)
126
+ static
127
+ RUCY_DEF1(add_style, style)
128
+ {
129
+ CHECK;
130
+ THIS->add_style(to<Reflex::Style&>(style));
131
+ return style;
132
+ }
133
+ RUCY_END
39
134
 
135
+ static
136
+ RUCY_DEF1(remove_style, style)
137
+ {
138
+ CHECK;
139
+ THIS->remove_style(to<Reflex::Style&>(style));
140
+ return style;
141
+ }
142
+ RUCY_END
40
143
 
41
144
  static
42
- RUBY_DEF_ALLOC(alloc, klass)
145
+ RUCY_DEFN(get_style)
43
146
  {
44
- return value(new RubyView, klass);
147
+ CHECK;
148
+ check_arg_count(__FILE__, __LINE__, "View#get_style", argc, 0, 1);
149
+
150
+ if (argc == 0)
151
+ return value(THIS->style());
152
+ else
153
+ return value(THIS->get_style(to<Reflex::Selector>(argv[0])));
154
+ }
155
+ RUCY_END
156
+
157
+ static
158
+ RUCY_DEFN(find_styles)
159
+ {
160
+ CHECK;
161
+ check_arg_count(__FILE__, __LINE__, "View#find_styles", argc, 1, 2);
162
+
163
+ bool recursive = (argc >= 2) ? to<bool>(argv[1]) : false;
164
+
165
+ Reflex::View::StyleList styles;
166
+ THIS->find_styles(&styles, to<Reflex::Selector>(argv[0]), recursive);
167
+ return array(styles.begin(), styles.end());
168
+ }
169
+ RUCY_END
170
+
171
+ static
172
+ RUCY_DEF0(each_style)
173
+ {
174
+ CHECK;
175
+
176
+ Value ret;
177
+ Reflex::View::style_iterator end = THIS->style_end();
178
+ for (Reflex::View::style_iterator it = THIS->style_begin(); it != end; ++it)
179
+ ret = rb_yield(value(*it));
180
+ return ret;
45
181
  }
46
- RUBY_END
182
+ RUCY_END
47
183
 
48
184
  static
49
- RUBY_DEF0(show)
185
+ RUCY_DEFN(focus)
50
186
  {
51
187
  CHECK;
52
- if (!CALL(show()))
53
- reflex_error("failed to show view.");
188
+ check_arg_count(__FILE__, __LINE__, "View#focus", argc, 0, 1);
189
+
190
+ bool state = (argc >= 1) ? to<bool>(argv[0]) : true;
191
+
192
+ THIS->focus(state);
54
193
  return self;
55
194
  }
56
- RUBY_END
195
+ RUCY_END
57
196
 
58
197
  static
59
- RUBY_DEF0(hide)
198
+ RUCY_DEF0(blur)
60
199
  {
61
200
  CHECK;
62
- if (!CALL(hide()))
63
- reflex_error("failed to hide view.");
201
+ THIS->blur();
64
202
  return self;
65
203
  }
66
- RUBY_END
204
+ RUCY_END
205
+
206
+ static
207
+ RUCY_DEF0(has_focus)
208
+ {
209
+ CHECK;
210
+ return value(THIS->has_focus());
211
+ }
212
+ RUCY_END
67
213
 
68
214
  static
69
- RUBY_DEF0(redraw)
215
+ RUCY_DEF0(resize_to_fit)
70
216
  {
71
217
  CHECK;
72
- if (!THIS->redraw())
73
- reflex_error("failed to redraw view.");
218
+ THIS->resize_to_fit();
74
219
  return self;
75
220
  }
76
- RUBY_END
221
+ RUCY_END
77
222
 
78
223
  static
79
- RUBY_DEF1(add_child, child)
224
+ RUCY_DEF0(content_size)
80
225
  {
81
226
  CHECK;
227
+ return value(THIS->content_size());
228
+ }
229
+ RUCY_END
82
230
 
83
- Reflex::View* c = to<Reflex::View*>(child);
84
- if (!c) argument_error();
231
+ static
232
+ RUCY_DEF1(set_name, name)
233
+ {
234
+ CHECK;
235
+ THIS->set_name(name.is_nil() ? NULL : name.c_str());
236
+ }
237
+ RUCY_END
85
238
 
86
- if (!THIS->add_child(c))
87
- reflex_error("failed to add child view.");
239
+ static
240
+ RUCY_DEF0(get_name)
241
+ {
242
+ CHECK;
243
+ return THIS->name() ? value(THIS->name()) : nil();
244
+ }
245
+ RUCY_END
88
246
 
89
- return self;
247
+ static
248
+ RUCY_DEF1(add_tag, tag)
249
+ {
250
+ CHECK;
251
+ THIS->add_tag(tag.c_str());
90
252
  }
91
- RUBY_END
253
+ RUCY_END
92
254
 
93
255
  static
94
- RUBY_DEF1(remove_child, child)
256
+ RUCY_DEF1(remove_tag, tag)
95
257
  {
96
258
  CHECK;
259
+ THIS->remove_tag(tag.c_str());
260
+ }
261
+ RUCY_END
97
262
 
98
- Reflex::View* c = to<Reflex::View*>(child);
99
- if (!c) argument_error();
263
+ static
264
+ RUCY_DEF0(each_tag)
265
+ {
266
+ CHECK;
100
267
 
101
- if (!THIS->remove_child(c))
102
- reflex_error("failed to remove child view.");
268
+ Value ret;
269
+ Reflex::View::tag_iterator end = THIS->tag_end();
270
+ for (Reflex::View::tag_iterator it = THIS->tag_begin(); it != end; ++it)
271
+ ret = rb_yield(value(*it));
272
+ return ret;
273
+ }
274
+ RUCY_END
103
275
 
104
- return self;
276
+ static
277
+ RUCY_DEF1(set_selector, selector)
278
+ {
279
+ CHECK;
280
+ THIS->set_selector(to<Reflex::Selector>(selector));
105
281
  }
106
- RUBY_END
282
+ RUCY_END
107
283
 
108
284
  static
109
- RUBY_DEFN(find_child)
285
+ RUCY_DEF0(get_selector)
110
286
  {
111
287
  CHECK;
112
- if (argc < 1 || 3 < argc)
113
- arg_count_error("View#find_child", argc, 1, 2, 3);
288
+ return value(THIS->selector());
289
+ }
290
+ RUCY_END
114
291
 
115
- const char* name = to<const char*>(argv[0]);
116
- size_t index = (argc >= 2) ? to<size_t>(argv[1]) : 0;
117
- bool recursive = (argc >= 3) ? to<bool>(argv[2]) : false;
292
+ static
293
+ RUCY_DEF1(set_frame, arg)
294
+ {
295
+ CHECK;
296
+ THIS->set_frame(to<Rays::Bounds>(arg));
297
+ }
298
+ RUCY_END
118
299
 
119
- Reflex::View* c = THIS->find_child(name, index, recursive);
120
- if (!c) return Qnil;
300
+ static
301
+ RUCY_DEF0(get_frame)
302
+ {
303
+ CHECK;
304
+ return value(THIS->frame());
305
+ }
306
+ RUCY_END
121
307
 
122
- return value(c);
308
+ static
309
+ RUCY_DEF1(set_capture, types)
310
+ {
311
+ CHECK;
312
+ THIS->set_capture(to<uint>(types));
123
313
  }
124
- RUBY_END
314
+ RUCY_END
125
315
 
126
316
  static
127
- RUBY_DEF1(set_name, name)
317
+ RUCY_DEF0(get_capture)
128
318
  {
129
319
  CHECK;
130
- if (!THIS->set_name(name.c_str()))
131
- reflex_error("failed to set the name of view.");
132
- return name;
320
+ return value(THIS->capture());
133
321
  }
134
- RUBY_END
322
+ RUCY_END
135
323
 
136
324
  static
137
- RUBY_DEF0(get_name)
325
+ RUCY_DEFN(scroll_to)
138
326
  {
139
327
  CHECK;
140
- const char* s = THIS->name();
141
- if (!s) reflex_error("failed to get name of view.");
142
- return value(s);
328
+ check_arg_count(__FILE__, __LINE__, "View#scroll_to", argc, 1, 2, 3);
329
+
330
+ if (argv[0].is_kind_of(Rays::point_class()))
331
+ THIS->scroll_to(to<Rays::Point&>(argv[0]));
332
+ else
333
+ {
334
+ const Rays::Point& p = THIS->scroll();
335
+ coord x = (argc >= 1 && argv[0]) ? to<coord>(argv[0]) : p.x;
336
+ coord y = (argc >= 2 && argv[1]) ? to<coord>(argv[1]) : p.y;
337
+ coord z = (argc >= 3 && argv[2]) ? to<coord>(argv[2]) : p.z;
338
+ THIS->scroll_to(x, y, z);
339
+ }
340
+
341
+ return self;
143
342
  }
144
- RUBY_END
343
+ RUCY_END
145
344
 
146
345
  static
147
- RUBY_DEF4(set_bounds, x, y, width, height)
346
+ RUCY_DEFN(scroll_by)
148
347
  {
149
348
  CHECK;
150
- if (!THIS->set_bounds(
151
- to<coord>(x), to<coord>(y), to<coord>(width), to<coord>(height)))
349
+ check_arg_count(__FILE__, __LINE__, "View#scroll_by", argc, 1, 2, 3);
350
+
351
+ if (argv[0].is_kind_of(Rays::point_class()))
352
+ THIS->scroll_by(to<Rays::Point&>(argv[0]));
353
+ else
152
354
  {
153
- reflex_error("failed to set the bounds of view.");
355
+ coord x = (argc >= 1 && argv[0]) ? to<coord>(argv[0]) : 0;
356
+ coord y = (argc >= 2 && argv[1]) ? to<coord>(argv[1]) : 0;
357
+ coord z = (argc >= 3 && argv[2]) ? to<coord>(argv[2]) : 0;
358
+ THIS->scroll_by(x, y, z);
154
359
  }
155
- return value(THIS->bounds());
360
+
361
+ return self;
156
362
  }
157
- RUBY_END
363
+ RUCY_END
158
364
 
159
365
  static
160
- RUBY_DEF0(get_bounds)
366
+ RUCY_DEF0(get_scroll)
161
367
  {
162
368
  CHECK;
163
- return value(THIS->bounds());
369
+ return value(THIS->scroll());
164
370
  }
165
- RUBY_END
371
+ RUCY_END
166
372
 
167
373
  static
168
- RUBY_DEF0(hidden)
374
+ RUCY_DEF0(parent)
169
375
  {
170
376
  CHECK;
171
- return value(THIS->hidden());
377
+ return value(THIS->parent());
172
378
  }
173
- RUBY_END
379
+ RUCY_END
174
380
 
175
381
  static
176
- RUBY_DEF0(parent)
382
+ RUCY_DEF0(window)
177
383
  {
178
384
  CHECK;
385
+ return value(THIS->window());
386
+ }
387
+ RUCY_END
179
388
 
180
- Reflex::View* v = THIS->parent();
181
- if (!v) return Qnil;
389
+ static
390
+ RUCY_DEF1(on_attach, event)
391
+ {
392
+ CHECK;
393
+ CALL(on_attach(to<Reflex::Event*>(event)));
394
+ }
395
+ RUCY_END
182
396
 
183
- return value(v);
397
+ static
398
+ RUCY_DEF1(on_detach, event)
399
+ {
400
+ CHECK;
401
+ CALL(on_detach(to<Reflex::Event*>(event)));
184
402
  }
185
- RUBY_END
403
+ RUCY_END
186
404
 
187
405
  static
188
- RUBY_DEF0(window)
406
+ RUCY_DEF1(on_update, event)
189
407
  {
190
408
  CHECK;
409
+ CALL(on_update(to<Reflex::UpdateEvent*>(event)));
410
+ }
411
+ RUCY_END
191
412
 
192
- Reflex::Window* w = THIS->window();
193
- if (!w) return Qnil;
413
+ static
414
+ RUCY_DEF1(on_draw, event)
415
+ {
416
+ CHECK;
417
+ CALL(on_draw(to<Reflex::DrawEvent*>(event)));
418
+ }
419
+ RUCY_END
420
+
421
+ static
422
+ RUCY_DEF1(on_move, event)
423
+ {
424
+ CHECK;
425
+ CALL(on_move(to<Reflex::FrameEvent*>(event)));
426
+ }
427
+ RUCY_END
194
428
 
195
- return value(w);
429
+ static
430
+ RUCY_DEF1(on_resize, event)
431
+ {
432
+ CHECK;
433
+ CALL(on_resize(to<Reflex::FrameEvent*>(event)));
196
434
  }
197
- RUBY_END
435
+ RUCY_END
198
436
 
199
437
  static
200
- RUBY_DEF1(update, dt)
438
+ RUCY_DEF1(on_scroll, event)
201
439
  {
202
440
  CHECK;
203
- CALL(update(to<float>(dt)));
204
- return self;
441
+ CALL(on_scroll(to<Reflex::ScrollEvent*>(event)));
205
442
  }
206
- RUBY_END
443
+ RUCY_END
207
444
 
208
445
  static
209
- RUBY_DEF2(draw, painter, bounds)
446
+ RUCY_DEF1(on_focus, event)
210
447
  {
211
448
  CHECK;
212
- CALL(draw(to<Rays::Painter*>(painter), *to<Rays::Bounds*>(bounds)));
213
- return self;
449
+ CALL(on_focus(to<Reflex::FocusEvent*>(event)));
214
450
  }
215
- RUBY_END
451
+ RUCY_END
216
452
 
217
453
  static
218
- RUBY_DEF2(moved, dx, dy)
454
+ RUCY_DEF1(on_blur, event)
219
455
  {
220
456
  CHECK;
221
- CALL(moved(to<coord>(dx), to<coord>(dy)));
222
- return self;
457
+ CALL(on_blur(to<Reflex::FocusEvent*>(event)));
223
458
  }
224
- RUBY_END
459
+ RUCY_END
225
460
 
226
461
  static
227
- RUBY_DEF2(resized, dwidth, dheight)
462
+ RUCY_DEF1(on_key, event)
228
463
  {
229
464
  CHECK;
230
- CALL(resized(to<coord>(dwidth), to<coord>(dheight)));
231
- return self;
465
+ CALL(on_key(to<Reflex::KeyEvent*>(event)));
232
466
  }
233
- RUBY_END
467
+ RUCY_END
468
+
469
+ static
470
+ RUCY_DEF1(on_key_down, event)
471
+ {
472
+ CHECK;
473
+ CALL(on_key_down(to<Reflex::KeyEvent*>(event)));
474
+ }
475
+ RUCY_END
476
+
477
+ static
478
+ RUCY_DEF1(on_key_up, event)
479
+ {
480
+ CHECK;
481
+ CALL(on_key_up(to<Reflex::KeyEvent*>(event)));
482
+ }
483
+ RUCY_END
484
+
485
+ static
486
+ RUCY_DEF1(on_pointer, event)
487
+ {
488
+ CHECK;
489
+ CALL(on_pointer(to<Reflex::PointerEvent*>(event)));
490
+ }
491
+ RUCY_END
492
+
493
+ static
494
+ RUCY_DEF1(on_pointer_down, event)
495
+ {
496
+ CHECK;
497
+ CALL(on_pointer_down(to<Reflex::PointerEvent*>(event)));
498
+ }
499
+ RUCY_END
500
+
501
+ static
502
+ RUCY_DEF1(on_pointer_up, event)
503
+ {
504
+ CHECK;
505
+ CALL(on_pointer_up(to<Reflex::PointerEvent*>(event)));
506
+ }
507
+ RUCY_END
508
+
509
+ static
510
+ RUCY_DEF1(on_pointer_move, event)
511
+ {
512
+ CHECK;
513
+ CALL(on_pointer_move(to<Reflex::PointerEvent*>(event)));
514
+ }
515
+ RUCY_END
516
+
517
+ static
518
+ RUCY_DEF1(on_wheel, event)
519
+ {
520
+ CHECK;
521
+ CALL(on_wheel(to<Reflex::WheelEvent*>(event)));
522
+ }
523
+ RUCY_END
524
+
525
+ static
526
+ RUCY_DEF1(on_capture, event)
527
+ {
528
+ CHECK;
529
+ CALL(on_capture(to<Reflex::CaptureEvent*>(event)));
530
+ }
531
+ RUCY_END
532
+
533
+ static
534
+ RUCY_DEF_clear_override_flags(cof, Reflex::View, cView);
234
535
 
235
536
 
236
537
  void
@@ -240,21 +541,75 @@ Init_view ()
240
541
 
241
542
  cView = mReflex.define_class("View");
242
543
  cView.define_alloc_func(alloc);
243
- cView.define_method("show", show);
244
- cView.define_method("hide", hide);
245
- cView.define_method("redraw", redraw);
246
- cView.define_method("add_child", add_child);
247
- cView.define_method("remove_child", remove_child);
248
- cView.define_method("find_child", find_child);
544
+ cView.define_method("show", show);
545
+ cView.define_method("hide", hide);
546
+ cView.define_method("hidden?", hidden);
547
+ cView.define_method("redraw", redraw);
548
+ cView.define_method("add_child", add_child);
549
+ cView.define_method("remove_child", remove_child);
550
+ cView.define_method("find_children", find_children);
551
+ cView.define_method("each_child", each_child);
552
+ cView.define_method("add_style", add_style);
553
+ cView.define_method("remove_style", remove_style);
554
+ cView.define_method("get_style", get_style);
555
+ cView.define_method("find_styles", find_styles);
556
+ cView.define_method("each_style", each_style);
557
+ cView.define_method("focus", focus);
558
+ cView.define_method("blur", blur);
559
+ cView.define_method("focus?", has_focus);
560
+ cView.define_method("resize_to_fit", resize_to_fit);
561
+ cView.define_method("content_size", content_size);
249
562
  cView.define_method("name=", set_name);
250
- cView.define_method("name", get_name);
251
- cView.define_private_method("set_bounds", set_bounds);
252
- cView.define_private_method("get_bounds", get_bounds);
253
- cView.define_method("hidden", hidden);
563
+ cView.define_method("name", get_name);
564
+ cView.define_method("add_tag", add_tag);
565
+ cView.define_method("remove_tag", remove_tag);
566
+ cView.define_method("each_tag", each_tag);
567
+ cView.define_method("selector=", set_selector);
568
+ cView.define_method("selector", get_selector);
569
+ cView.define_private_method("set_frame", set_frame);
570
+ cView.define_private_method("get_frame", get_frame);
571
+ cView.define_method("scroll_to", scroll_to);
572
+ cView.define_method("scroll_by", scroll_by);
573
+ cView.define_method("scroll", get_scroll);
574
+ cView.define_method("set_capture", set_capture);
575
+ cView.define_method("get_capture", get_capture);
254
576
  cView.define_method("parent", parent);
255
577
  cView.define_method("window", window);
256
- cView.define_method("update", update);
257
- cView.define_method("draw", draw);
258
- cView.define_method("moved", moved);
259
- cView.define_method("resized", resized);
578
+ cView.define_method("on_attach", on_attach);
579
+ cView.define_method("on_detach", on_detach);
580
+ cView.define_method("on_update", on_update);
581
+ cView.define_method("on_draw", on_draw);
582
+ cView.define_method("on_move", on_move);
583
+ cView.define_method("on_resize", on_resize);
584
+ cView.define_method("on_scroll", on_scroll);
585
+ cView.define_method("on_focus", on_focus);
586
+ cView.define_method("on_blur", on_blur);
587
+ cView.define_method("on_key", on_key);
588
+ cView.define_method("on_key_down", on_key_down);
589
+ cView.define_method("on_key_up", on_key_up);
590
+ cView.define_method("on_pointer", on_pointer);
591
+ cView.define_method("on_pointer_down", on_pointer_down);
592
+ cView.define_method("on_pointer_up", on_pointer_up);
593
+ cView.define_method("on_pointer_move", on_pointer_move);
594
+ cView.define_method("on_wheel", on_wheel);
595
+ cView.define_method("on_capture", on_capture);
596
+ cView.define_const("CAPTURE_NONE", Reflex::View::CAPTURE_NONE);
597
+ cView.define_const("CAPTURE_KEY", Reflex::View::CAPTURE_KEY);
598
+ cView.define_const("CAPTURE_POINTER", Reflex::View::CAPTURE_POINTER);
599
+ cView.define_const("CAPTURE_ALL", Reflex::View::CAPTURE_ALL);
600
+ cView.define_clear_override_flags(cof);
260
601
  }
602
+
603
+
604
+ namespace Reflex
605
+ {
606
+
607
+
608
+ Class
609
+ view_class ()
610
+ {
611
+ return cView;
612
+ }
613
+
614
+
615
+ }// Reflex