reflexion 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
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