reflexion 0.1.8 → 0.1.9

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +5 -1
  3. data/.doc/ext/reflex/arc_shape.cpp +89 -0
  4. data/.doc/ext/reflex/body.cpp +91 -12
  5. data/.doc/ext/reflex/contact_event.cpp +90 -0
  6. data/.doc/ext/reflex/ellipse_shape.cpp +89 -0
  7. data/.doc/ext/reflex/image_view.cpp +0 -16
  8. data/.doc/ext/reflex/native.cpp +18 -6
  9. data/.doc/ext/reflex/rect_shape.cpp +83 -0
  10. data/.doc/ext/reflex/shape_view.cpp +153 -0
  11. data/.doc/ext/reflex/view.cpp +63 -26
  12. data/.doc/ext/reflex/window.cpp +5 -1
  13. data/VERSION +1 -1
  14. data/ext/reflex/application.cpp +6 -2
  15. data/ext/reflex/arc_shape.cpp +94 -0
  16. data/ext/reflex/body.cpp +101 -13
  17. data/ext/reflex/contact_event.cpp +95 -0
  18. data/ext/reflex/ellipse_shape.cpp +94 -0
  19. data/ext/reflex/image_view.cpp +0 -18
  20. data/ext/reflex/native.cpp +18 -6
  21. data/ext/reflex/rect_shape.cpp +86 -0
  22. data/ext/reflex/shape_view.cpp +161 -0
  23. data/ext/reflex/view.cpp +71 -30
  24. data/ext/reflex/window.cpp +5 -1
  25. data/include/reflex/body.h +42 -12
  26. data/include/reflex/event.h +27 -1
  27. data/include/reflex/fixture.h +6 -5
  28. data/include/reflex/image_view.h +5 -5
  29. data/include/reflex/ruby/application.h +27 -6
  30. data/include/reflex/ruby/event.h +11 -0
  31. data/include/reflex/ruby/shape_view.h +96 -0
  32. data/include/reflex/ruby/view.h +60 -5
  33. data/include/reflex/ruby/window.h +12 -3
  34. data/include/reflex/shape_view.h +146 -0
  35. data/include/reflex/view.h +17 -5
  36. data/lib/reflex/application.rb +9 -9
  37. data/lib/reflex/body.rb +2 -0
  38. data/lib/reflex/contact_event.rb +38 -0
  39. data/lib/reflex/image_view.rb +1 -1
  40. data/lib/reflex/shape_view.rb +25 -0
  41. data/lib/reflex/view.rb +19 -9
  42. data/lib/reflex/window.rb +11 -10
  43. data/lib/reflex.rb +15 -13
  44. data/lib/reflexion.rb +25 -18
  45. data/samples/osx/hello/hello/main.cpp +6 -0
  46. data/samples/physics.rb +22 -12
  47. data/samples/reflexion/breakout.rb +52 -0
  48. data/samples/reflexion/hello.rb +5 -7
  49. data/samples/reflexion/paint.rb +10 -11
  50. data/samples/reflexion/physics.rb +28 -0
  51. data/samples/reflexion/pulse.rb +10 -8
  52. data/samples/shapes.rb +2 -2
  53. data/src/body.cpp +241 -40
  54. data/src/event.cpp +32 -2
  55. data/src/shape_view.cpp +306 -0
  56. data/src/view.cpp +232 -66
  57. data/src/world.cpp +110 -30
  58. data/src/world.h +61 -14
  59. metadata +24 -7
  60. data/lib/reflex/arc_shape.rb +0 -20
  61. data/lib/reflex/ellipse_shape.rb +0 -20
  62. data/lib/reflex/line_shape.rb +0 -20
  63. data/lib/reflex/rect_shape.rb +0 -20
  64. data/lib/reflex/shape.rb +0 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79a0d8b46171362cf5f24dff3960d8495a066497
4
- data.tar.gz: 37d83b584fccb668c2f58fbbde8e73240f29f002
3
+ metadata.gz: 17839f16761a4d363fdfe730341a63687985cf22
4
+ data.tar.gz: 3d1dd6d5ef7a126d949f0d20cb7fdbe97753dc23
5
5
  SHA512:
6
- metadata.gz: ba12b310b4e57c5426aae9c5d90a12bc1220911b1276090da4a0427a504e1ec0ab7e9a9de63ca78e6022112327f183e8ca4f2140bd91151e889202fef90d2d62
7
- data.tar.gz: 73449bffdbe6fb05e268f7f63aba4dccce08b1c8f1d101019df24a96638a25024a81cf8e8a4b13c1e2e4162652f5adedcf73a4bc83064c93fdadfe82a6fc78b8
6
+ metadata.gz: 41c713b7191d8ddc3817f08012c473f765c82c3f60efb9dcb8aa8b355fff0bcdc1c77584d025d515ad199b352370410f0daec814a1b7e4267927cbe0518ad3c7
7
+ data.tar.gz: 63caf9f342985e743b9d78b2ee90d93129b72dc72768187f1d6e12e08f6b502763e508e6a5dec1ead9a1b057639b52110675d6e4f294abb4665136bb0309ed15
@@ -58,6 +58,10 @@ static
58
58
  VALUE on_start(VALUE self, VALUE event)
59
59
  {
60
60
  CHECK;
61
+
62
+ RUCY_SYM(call_start_block);
63
+ self.call(call_start_block);
64
+
61
65
  CALL(on_start(to<Reflex::Event*>(event)));
62
66
  }
63
67
 
@@ -102,7 +106,7 @@ Init_application ()
102
106
  rb_define_method(cApplication, "quit", RUBY_METHOD_FUNC(quit), 0);
103
107
  rb_define_method(cApplication, "name=", RUBY_METHOD_FUNC(set_name), 1);
104
108
  rb_define_method(cApplication, "name", RUBY_METHOD_FUNC(get_name), 0);
105
- cApplication.define_method("on_start!", on_start);
109
+ rb_define_method(cApplication, "on_start", RUBY_METHOD_FUNC(on_start), 1);
106
110
  rb_define_method(cApplication, "on_quit", RUBY_METHOD_FUNC(on_quit), 1);
107
111
  rb_define_method(cApplication, "on_preference", RUBY_METHOD_FUNC(on_preference), 1);
108
112
  rb_define_method(cApplication, "on_about", RUBY_METHOD_FUNC(on_about), 1);
@@ -0,0 +1,89 @@
1
+ #include "reflex/ruby/shape_view.h"
2
+
3
+
4
+ #include <rucy.h>
5
+
6
+
7
+ using namespace Rucy;
8
+
9
+ using Reflex::coord;
10
+
11
+
12
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::ArcShape)
13
+
14
+ #define THIS to<Reflex::ArcShape*>(self)
15
+
16
+ #define CHECK RUCY_CHECK_OBJECT(Reflex::ArcShape, self)
17
+
18
+ #define CALL(fun) RUCY_WRAPPER_CALL(Reflex::ArcShape, THIS, fun)
19
+
20
+
21
+ static
22
+ VALUE alloc(VALUE klass)
23
+ {
24
+ return value(new Reflex::RubyShapeView<Reflex::ArcShape>, klass);
25
+ }
26
+
27
+ static
28
+ VALUE set_angle_from(VALUE self, VALUE degree)
29
+ {
30
+ CHECK;
31
+ THIS->set_angle_from(degree.as_f(true));
32
+ return self;
33
+ }
34
+
35
+ static
36
+ VALUE get_angle_from(VALUE self)
37
+ {
38
+ CHECK;
39
+ return value(THIS->angle_from());
40
+ }
41
+
42
+ static
43
+ VALUE set_angle_to(VALUE self, VALUE degree)
44
+ {
45
+ CHECK;
46
+ THIS->set_angle_to(degree.as_f(true));
47
+ return self;
48
+ }
49
+
50
+ static
51
+ VALUE get_angle_to(VALUE self)
52
+ {
53
+ CHECK;
54
+ return value(THIS->angle_to());
55
+ }
56
+
57
+ static
58
+ RUCY_DEF_clear_override_flags(cof, Reflex::ArcShape);
59
+
60
+
61
+ static Class cArcShape;
62
+
63
+ void
64
+ Init_arc_shape ()
65
+ {
66
+ Module mReflex = rb_define_module("Reflex");
67
+
68
+ cArcShape = mReflex.define_class("ArcShape", Reflex::ellipse_shape_class());
69
+ rb_define_alloc_func(cArcShape, alloc);
70
+ rb_define_method(cArcShape, "angle_from=", RUBY_METHOD_FUNC(set_angle_from), 1);
71
+ rb_define_method(cArcShape, "angle_from", RUBY_METHOD_FUNC(get_angle_from), 0);
72
+ rb_define_method(cArcShape, "angle_to=", RUBY_METHOD_FUNC(set_angle_to), 1);
73
+ rb_define_method(cArcShape, "angle_to=", RUBY_METHOD_FUNC(get_angle_to), 0);
74
+
75
+ }
76
+
77
+
78
+ namespace Reflex
79
+ {
80
+
81
+
82
+ Class
83
+ arc_shape_class ()
84
+ {
85
+ return cArcShape;
86
+ }
87
+
88
+
89
+ }// Reflex
@@ -33,32 +33,37 @@ VALUE add_box(VALUE self, VALUE width, VALUE height)
33
33
  }
34
34
 
35
35
  static
36
- VALUE add_circle(VALUE self, VALUE size)
36
+ VALUE add_ellipse(VALUE self, VALUE width, VALUE height)
37
37
  {
38
38
  CHECK;
39
- return value(THIS->add_circle(size.as_f(true)));
39
+ return value(THIS->add_ellipse(width.as_f(true), height.as_f(true)));
40
40
  }
41
41
 
42
42
  static
43
- VALUE clear_fixtures(VALUE self)
43
+ VALUE add_arc(VALUE self, VALUE width, VALUE height, VALUE angle_from, VALUE angle_to)
44
44
  {
45
45
  CHECK;
46
- THIS->clear_fixtures();
47
- return self;
46
+ return value(THIS->add_arc(
47
+ width.as_f(true), height.as_f(true),
48
+ angle_from.as_f(true), angle_to.as_f(true)));
48
49
  }
49
50
 
50
51
  static
51
- VALUE get_position(VALUE self)
52
+ VALUE clear_fixtures(VALUE self)
52
53
  {
53
54
  CHECK;
54
- return value(THIS->position());
55
+ THIS->clear_fixtures();
56
+ return self;
55
57
  }
56
58
 
57
59
  static
58
- VALUE get_angle(VALUE self)
60
+ VALUE meter2pixel(VALUE self)
59
61
  {
60
62
  CHECK;
61
- return value(THIS->angle());
63
+ check_arg_count(__FILE__, __LINE__, "View#meter2pixel", argc, 0, 1);
64
+
65
+ float meter = argc >= 1 ? argv[0].as_f(true) : 1;
66
+ return value(THIS->meter2pixel(meter));
62
67
  }
63
68
 
64
69
  static
@@ -91,6 +96,50 @@ VALUE is_dynamic(VALUE self)
91
96
  return value(THIS->is_dynamic());
92
97
  }
93
98
 
99
+ static
100
+ VALUE get_position(VALUE self)
101
+ {
102
+ CHECK;
103
+ return value(THIS->position());
104
+ }
105
+
106
+ static
107
+ VALUE get_angle(VALUE self)
108
+ {
109
+ CHECK;
110
+ return value(THIS->angle());
111
+ }
112
+
113
+ static
114
+ VALUE set_linear_velocity(VALUE self, VALUE velocity)
115
+ {
116
+ CHECK;
117
+ THIS->set_linear_velocity(to<Rays::Point&>(velocity));
118
+ return self;
119
+ }
120
+
121
+ static
122
+ VALUE get_linear_velocity(VALUE self)
123
+ {
124
+ CHECK;
125
+ return value(THIS->linear_velocity());
126
+ }
127
+
128
+ static
129
+ VALUE set_angular_velocity(VALUE self, VALUE velocity)
130
+ {
131
+ CHECK;
132
+ THIS->set_angular_velocity(velocity.as_f(true));
133
+ return self;
134
+ }
135
+
136
+ static
137
+ VALUE get_angular_velocity(VALUE self)
138
+ {
139
+ CHECK;
140
+ return value(THIS->angular_velocity());
141
+ }
142
+
94
143
  static
95
144
  VALUE set_density(VALUE self, VALUE density)
96
145
  {
@@ -99,6 +148,13 @@ VALUE set_density(VALUE self, VALUE density)
99
148
  return self;
100
149
  }
101
150
 
151
+ static
152
+ VALUE get_density(VALUE self)
153
+ {
154
+ CHECK;
155
+ return value(THIS->density());
156
+ }
157
+
102
158
  static
103
159
  VALUE set_friction(VALUE self, VALUE friction)
104
160
  {
@@ -107,6 +163,13 @@ VALUE set_friction(VALUE self, VALUE friction)
107
163
  return self;
108
164
  }
109
165
 
166
+ static
167
+ VALUE get_friction(VALUE self)
168
+ {
169
+ CHECK;
170
+ return value(THIS->friction());
171
+ }
172
+
110
173
  static
111
174
  VALUE set_restitution(VALUE self, VALUE restitution)
112
175
  {
@@ -115,6 +178,13 @@ VALUE set_restitution(VALUE self, VALUE restitution)
115
178
  return self;
116
179
  }
117
180
 
181
+ static
182
+ VALUE get_restitution(VALUE self)
183
+ {
184
+ CHECK;
185
+ return value(THIS->restitution());
186
+ }
187
+
118
188
  static
119
189
  VALUE each(VALUE self)
120
190
  {
@@ -138,17 +208,26 @@ Init_body ()
138
208
  cBody = rb_define_class_under(mReflex, "Body", rb_cObject);
139
209
  rb_define_private_method(cBody, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
140
210
  rb_define_method(cBody, "add_box", RUBY_METHOD_FUNC(add_box), 2);
141
- rb_define_method(cBody, "add_circle", RUBY_METHOD_FUNC(add_circle), 1);
211
+ rb_define_method(cBody, "add_ellipse", RUBY_METHOD_FUNC(add_ellipse), 2);
212
+ rb_define_method(cBody, "add_arc", RUBY_METHOD_FUNC(add_arc), 4);
142
213
  rb_define_method(cBody, "clear_fixtures", RUBY_METHOD_FUNC(clear_fixtures), 0);
143
- rb_define_method(cBody, "position", RUBY_METHOD_FUNC(get_position), 0);
144
- rb_define_method(cBody, "angle", RUBY_METHOD_FUNC(get_angle), 0);
214
+ rb_define_method(cBody, "meter2pixel", RUBY_METHOD_FUNC(meter2pixel), -1);
145
215
  rb_define_method(cBody, "static=", RUBY_METHOD_FUNC(set_static), 1);
146
216
  cBody.define_method("static?", is_static);
147
217
  rb_define_method(cBody, "dynamic=", RUBY_METHOD_FUNC(set_dynamic), 1);
148
218
  cBody.define_method("dynamic?", is_dynamic);
219
+ rb_define_method(cBody, "position", RUBY_METHOD_FUNC(get_position), 0);
220
+ rb_define_method(cBody, "angle", RUBY_METHOD_FUNC(get_angle), 0);
221
+ rb_define_method(cBody, "linear_velocity=", RUBY_METHOD_FUNC(set_linear_velocity), 1);
222
+ rb_define_method(cBody, "linear_velocity", RUBY_METHOD_FUNC(get_linear_velocity), 0);
223
+ rb_define_method(cBody, "angular_velocity=", RUBY_METHOD_FUNC(set_angular_velocity), 1);
224
+ rb_define_method(cBody, "angular_velocity", RUBY_METHOD_FUNC(get_angular_velocity), 0);
149
225
  rb_define_method(cBody, "density=", RUBY_METHOD_FUNC(set_density), 1);
226
+ rb_define_method(cBody, "density", RUBY_METHOD_FUNC(get_density), 0);
150
227
  rb_define_method(cBody, "friction=", RUBY_METHOD_FUNC(set_friction), 1);
228
+ rb_define_method(cBody, "friction", RUBY_METHOD_FUNC(get_friction), 0);
151
229
  rb_define_method(cBody, "restitution=", RUBY_METHOD_FUNC(set_restitution), 1);
230
+ rb_define_method(cBody, "restitution", RUBY_METHOD_FUNC(get_restitution), 0);
152
231
  rb_define_method(cBody, "each", RUBY_METHOD_FUNC(each), 0);
153
232
  }
154
233
 
@@ -0,0 +1,90 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include <rucy.h>
5
+ #include "reflex/ruby/view.h"
6
+ #include "defs.h"
7
+
8
+
9
+ using namespace Rucy;
10
+
11
+
12
+ RUCY_DEFINE_VALUE_FROM_TO(Reflex::ContactEvent)
13
+
14
+ #define THIS to<Reflex::ContactEvent*>(self)
15
+
16
+ #define CHECK RUCY_CHECK_OBJ(Reflex::ContactEvent, self)
17
+
18
+
19
+ static
20
+ VALUE alloc(VALUE klass)
21
+ {
22
+ return new_type<Reflex::ContactEvent>(klass);
23
+ }
24
+
25
+ static
26
+ VALUE initialize(VALUE self)
27
+ {
28
+ CHECK;
29
+ check_arg_count(__FILE__, __LINE__, "ContactEvent#initialize", argc, 0, 2);
30
+
31
+ THIS->type = (argc >= 1) ? (Reflex::ContactEvent::Type) to<int>(argv[0]) : Reflex::ContactEvent::NONE;
32
+ THIS->view = (argc >= 2) ? to<Reflex::View*>(argv[1]) : NULL;
33
+
34
+ return rb_call_super(0, NULL);
35
+ }
36
+
37
+ static
38
+ VALUE initialize_copy(VALUE self, VALUE obj)
39
+ {
40
+ CHECK;
41
+ *THIS = to<Reflex::ContactEvent&>(obj);
42
+ return self;
43
+ }
44
+
45
+ static
46
+ VALUE get_type(VALUE self)
47
+ {
48
+ CHECK;
49
+ return value(THIS->type);
50
+ }
51
+
52
+ static
53
+ VALUE get_view(VALUE self)
54
+ {
55
+ CHECK;
56
+ return value(THIS->view);
57
+ }
58
+
59
+
60
+ static Class cContactEvent;
61
+
62
+ void
63
+ Init_contact_event ()
64
+ {
65
+ Module mReflex = rb_define_module("Reflex");
66
+
67
+ cContactEvent = mReflex.define_class("ContactEvent", Reflex::event_class());
68
+ rb_define_alloc_func(cContactEvent, alloc);
69
+ rb_define_private_method(cContactEvent, "initialize", RUBY_METHOD_FUNC(initialize), -1);
70
+ rb_define_private_method(cContactEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
71
+ rb_define_method(cContactEvent, "get_type", RUBY_METHOD_FUNC(get_type), 0);
72
+ rb_define_method(cContactEvent, "view", RUBY_METHOD_FUNC(get_view), 0);
73
+ cContactEvent.define_const("TYPE_NONE", Reflex::ContactEvent::NONE);
74
+ cContactEvent.define_const("TYPE_BEGIN", Reflex::ContactEvent::BEGIN);
75
+ cContactEvent.define_const("TYPE_END", Reflex::ContactEvent::END);
76
+ }
77
+
78
+
79
+ namespace Reflex
80
+ {
81
+
82
+
83
+ Class
84
+ contact_event_class ()
85
+ {
86
+ return cContactEvent;
87
+ }
88
+
89
+
90
+ }// Reflex
@@ -0,0 +1,89 @@
1
+ #include "reflex/ruby/shape_view.h"
2
+
3
+
4
+ #include <rucy.h>
5
+
6
+
7
+ using namespace Rucy;
8
+
9
+ using Reflex::coord;
10
+
11
+
12
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::EllipseShape)
13
+
14
+ #define THIS to<Reflex::EllipseShape*>(self)
15
+
16
+ #define CHECK RUCY_CHECK_OBJECT(Reflex::EllipseShape, self)
17
+
18
+ #define CALL(fun) RUCY_WRAPPER_CALL(Reflex::EllipseShape, THIS, fun)
19
+
20
+
21
+ static
22
+ VALUE alloc(VALUE klass)
23
+ {
24
+ return value(new Reflex::RubyShapeView<Reflex::EllipseShape>, klass);
25
+ }
26
+
27
+ static
28
+ VALUE set_radius_min(VALUE self, VALUE radius)
29
+ {
30
+ CHECK;
31
+ THIS->set_radius_min(radius.as_f(true));
32
+ return radius;
33
+ }
34
+
35
+ static
36
+ VALUE get_radius_min(VALUE self)
37
+ {
38
+ CHECK;
39
+ return value(THIS->radius_min());
40
+ }
41
+
42
+ static
43
+ VALUE set_nsegment(VALUE self, VALUE nsegment)
44
+ {
45
+ CHECK;
46
+ THIS->set_nsegment(nsegment.as_i(true));
47
+ return nsegment;
48
+ }
49
+
50
+ static
51
+ VALUE get_nsegment(VALUE self)
52
+ {
53
+ CHECK;
54
+ return value(THIS->nsegment());
55
+ }
56
+
57
+ static
58
+ RUCY_DEF_clear_override_flags(cof, Reflex::EllipseShape);
59
+
60
+
61
+ static Class cEllipseShape;
62
+
63
+ void
64
+ Init_ellipse_shape ()
65
+ {
66
+ Module mReflex = rb_define_module("Reflex");
67
+
68
+ cEllipseShape = mReflex.define_class("EllipseShape", Reflex::shape_view_class());
69
+ rb_define_alloc_func(cEllipseShape, alloc);
70
+ rb_define_private_method(cEllipseShape, "radius_min=", RUBY_METHOD_FUNC(set_radius_min), 1);
71
+ rb_define_method(cEllipseShape, "radius_min", RUBY_METHOD_FUNC(get_radius_min), 0);
72
+ rb_define_private_method(cEllipseShape, "nsegment=", RUBY_METHOD_FUNC(set_nsegment), 1);
73
+ rb_define_method(cEllipseShape, "nsegment", RUBY_METHOD_FUNC(get_nsegment), 0);
74
+
75
+ }
76
+
77
+
78
+ namespace Reflex
79
+ {
80
+
81
+
82
+ Class
83
+ ellipse_shape_class ()
84
+ {
85
+ return cEllipseShape;
86
+ }
87
+
88
+
89
+ }// Reflex
@@ -42,20 +42,6 @@ VALUE set_image(VALUE self, VALUE image)
42
42
  return image;
43
43
  }
44
44
 
45
- static
46
- VALUE content_size(VALUE self)
47
- {
48
- CHECK;
49
- return value(THIS->content_size());
50
- }
51
-
52
- static
53
- VALUE on_draw(VALUE self, VALUE event)
54
- {
55
- CHECK;
56
- CALL(on_draw(to<Reflex::DrawEvent*>(event)));
57
- }
58
-
59
45
  static
60
46
  RUCY_DEF_clear_override_flags(cof, Reflex::ImageView);
61
47
 
@@ -71,8 +57,6 @@ Init_image_view ()
71
57
  rb_define_alloc_func(cImageView, alloc);
72
58
  rb_define_private_method(cImageView, "set_image", RUBY_METHOD_FUNC(set_image), 1);
73
59
  rb_define_method(cImageView, "image", RUBY_METHOD_FUNC(get_image), 0);
74
- rb_define_method(cImageView, "content_size", RUBY_METHOD_FUNC(content_size), 0);
75
- rb_define_method(cImageView, "on_draw", RUBY_METHOD_FUNC(on_draw), 1);
76
60
 
77
61
  }
78
62
 
@@ -23,16 +23,22 @@ void Init_key_event ();
23
23
  void Init_pointer_event ();
24
24
  void Init_wheel_event ();
25
25
  void Init_capture_event ();
26
+ void Init_contact_event ();
27
+
28
+ void Init_body ();
29
+ void Init_fixture ();
26
30
 
27
31
  void Init_application ();
28
32
  void Init_window ();
29
33
  void Init_view ();
30
34
 
31
- void Init_body ();
32
- void Init_fixture ();
33
-
34
35
  void Init_image_view ();
35
36
 
37
+ void Init_shape_view ();
38
+ void Init_rect_shape ();
39
+ void Init_ellipse_shape ();
40
+ void Init_arc_shape ();
41
+
36
42
 
37
43
  extern "C" void
38
44
  Init_native ()
@@ -59,15 +65,21 @@ Init_native ()
59
65
  Init_pointer_event();
60
66
  Init_wheel_event();
61
67
  Init_capture_event();
68
+ Init_contact_event();
69
+
70
+ Init_body();
71
+ Init_fixture();
62
72
 
63
73
  Init_application();
64
74
  Init_window();
65
75
  Init_view();
66
76
 
67
- Init_body();
68
- Init_fixture();
69
-
70
77
  Init_image_view();
71
78
 
79
+ Init_shape_view();
80
+ Init_rect_shape();
81
+ Init_ellipse_shape();
82
+ Init_arc_shape();
83
+
72
84
  RUCY_CATCH
73
85
  }
@@ -0,0 +1,83 @@
1
+ #include "reflex/ruby/shape_view.h"
2
+
3
+
4
+ #include <rucy.h>
5
+ #include <rays/ruby/point.h>
6
+
7
+
8
+ using namespace Rucy;
9
+
10
+ using Reflex::coord;
11
+
12
+
13
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::RectShape)
14
+
15
+ #define THIS to<Reflex::RectShape*>(self)
16
+
17
+ #define CHECK RUCY_CHECK_OBJECT(Reflex::RectShape, self)
18
+
19
+ #define CALL(fun) RUCY_WRAPPER_CALL(Reflex::RectShape, THIS, fun)
20
+
21
+
22
+ static
23
+ VALUE alloc(VALUE klass)
24
+ {
25
+ return value(new Reflex::RubyShapeView<Reflex::RectShape>, klass);
26
+ }
27
+
28
+ static
29
+ VALUE set_round(VALUE self)
30
+ {
31
+ CHECK;
32
+ check_arg_count(__FILE__, __LINE__, "RectShape#set_fill", argc, 1, 2);
33
+
34
+ if (argc == 1 && argv[0].is_kind_of(Rays::point_class()))
35
+ THIS->set_round(to<Rays::Point&>(argv[0]));
36
+ else
37
+ {
38
+ float w = to<float>(argv[0]);
39
+ float h = (argc >= 2) ? to<float>(argv[1]) : 1;
40
+ THIS->set_round(w, h);
41
+ }
42
+
43
+ return self;
44
+ }
45
+
46
+ static
47
+ VALUE get_round(VALUE self)
48
+ {
49
+ CHECK;
50
+ return value(THIS->round());
51
+ }
52
+
53
+ static
54
+ RUCY_DEF_clear_override_flags(cof, Reflex::RectShape);
55
+
56
+
57
+ static Class cRectShape;
58
+
59
+ void
60
+ Init_rect_shape ()
61
+ {
62
+ Module mReflex = rb_define_module("Reflex");
63
+
64
+ cRectShape = mReflex.define_class("RectShape", Reflex::shape_view_class());
65
+ rb_define_alloc_func(cRectShape, alloc);
66
+ rb_define_private_method(cRectShape, "round=", RUBY_METHOD_FUNC(set_round), -1);
67
+ rb_define_method(cRectShape, "round", RUBY_METHOD_FUNC(get_round), 0);
68
+
69
+ }
70
+
71
+
72
+ namespace Reflex
73
+ {
74
+
75
+
76
+ Class
77
+ rect_shape_class ()
78
+ {
79
+ return cRectShape;
80
+ }
81
+
82
+
83
+ }// Reflex