reflexion 0.1.11 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (333) hide show
  1. checksums.yaml +5 -5
  2. data/.doc/ext/reflex/application.cpp +9 -5
  3. data/.doc/ext/reflex/capture_event.cpp +4 -9
  4. data/.doc/ext/reflex/contact_event.cpp +17 -13
  5. data/.doc/ext/reflex/draw_event.cpp +3 -8
  6. data/.doc/ext/reflex/ellipse_shape.cpp +51 -24
  7. data/.doc/ext/reflex/event.cpp +0 -4
  8. data/.doc/ext/reflex/filter.cpp +81 -0
  9. data/.doc/ext/reflex/focus_event.cpp +9 -13
  10. data/.doc/ext/reflex/frame_event.cpp +47 -14
  11. data/.doc/ext/reflex/image_view.cpp +1 -10
  12. data/.doc/ext/reflex/key_event.cpp +9 -14
  13. data/.doc/ext/reflex/line_shape.cpp +99 -0
  14. data/.doc/ext/reflex/motion_event.cpp +73 -0
  15. data/.doc/ext/reflex/native.cpp +18 -18
  16. data/.doc/ext/reflex/pointer_event.cpp +27 -25
  17. data/.doc/ext/reflex/polygon_shape.cpp +65 -0
  18. data/.doc/ext/reflex/rect_shape.cpp +102 -23
  19. data/.doc/ext/reflex/reflex.cpp +24 -3
  20. data/.doc/ext/reflex/scroll_event.cpp +8 -15
  21. data/.doc/ext/reflex/selector.cpp +43 -15
  22. data/.doc/ext/reflex/shape.cpp +211 -0
  23. data/.doc/ext/reflex/style.cpp +359 -185
  24. data/.doc/ext/reflex/style_length.cpp +163 -35
  25. data/.doc/ext/reflex/timer.cpp +101 -0
  26. data/.doc/ext/reflex/timer_event.cpp +123 -0
  27. data/.doc/ext/reflex/update_event.cpp +12 -8
  28. data/.doc/ext/reflex/view.cpp +548 -144
  29. data/.doc/ext/reflex/wheel_event.cpp +5 -28
  30. data/.doc/ext/reflex/window.cpp +7 -15
  31. data/LICENSE +21 -0
  32. data/README.md +1 -1
  33. data/Rakefile +14 -12
  34. data/VERSION +1 -1
  35. data/ext/reflex/application.cpp +10 -5
  36. data/ext/reflex/capture_event.cpp +4 -9
  37. data/ext/reflex/contact_event.cpp +18 -13
  38. data/ext/reflex/defs.h +5 -2
  39. data/ext/reflex/draw_event.cpp +3 -8
  40. data/ext/reflex/ellipse_shape.cpp +56 -25
  41. data/ext/reflex/event.cpp +0 -4
  42. data/ext/reflex/extconf.rb +1 -2
  43. data/ext/reflex/filter.cpp +86 -0
  44. data/ext/reflex/focus_event.cpp +11 -15
  45. data/ext/reflex/frame_event.cpp +52 -14
  46. data/ext/reflex/image_view.cpp +1 -10
  47. data/ext/reflex/key_event.cpp +9 -14
  48. data/ext/reflex/line_shape.cpp +104 -0
  49. data/ext/reflex/motion_event.cpp +77 -0
  50. data/ext/reflex/native.cpp +18 -18
  51. data/ext/reflex/pointer_event.cpp +27 -25
  52. data/ext/reflex/polygon_shape.cpp +68 -0
  53. data/ext/reflex/rect_shape.cpp +113 -24
  54. data/ext/reflex/reflex.cpp +24 -3
  55. data/ext/reflex/scroll_event.cpp +8 -15
  56. data/ext/reflex/selector.cpp +46 -16
  57. data/ext/reflex/selector.h +130 -0
  58. data/ext/reflex/shape.cpp +231 -0
  59. data/ext/reflex/style.cpp +363 -192
  60. data/ext/reflex/style_length.cpp +164 -37
  61. data/ext/reflex/timer.cpp +108 -0
  62. data/ext/reflex/timer_event.cpp +133 -0
  63. data/ext/reflex/update_event.cpp +13 -8
  64. data/ext/reflex/view.cpp +594 -150
  65. data/ext/reflex/wheel_event.cpp +5 -30
  66. data/ext/reflex/window.cpp +7 -15
  67. data/include/reflex.h +5 -4
  68. data/include/reflex/application.h +2 -0
  69. data/include/reflex/debug.h +22 -0
  70. data/include/reflex/defs.h +45 -2
  71. data/include/reflex/event.h +55 -11
  72. data/include/reflex/exception.h +17 -2
  73. data/include/reflex/filter.h +56 -0
  74. data/include/reflex/image_view.h +1 -1
  75. data/include/reflex/ruby.h +6 -4
  76. data/include/reflex/ruby/application.h +17 -9
  77. data/include/reflex/ruby/event.h +22 -0
  78. data/include/reflex/ruby/filter.h +69 -0
  79. data/include/reflex/ruby/reflex.h +1 -0
  80. data/include/reflex/ruby/selector.h +1 -1
  81. data/include/reflex/ruby/shape.h +140 -0
  82. data/include/reflex/ruby/style.h +1 -1
  83. data/include/reflex/ruby/timer.h +69 -0
  84. data/include/reflex/ruby/view.h +43 -76
  85. data/include/reflex/ruby/window.h +17 -32
  86. data/include/reflex/selector.h +54 -2
  87. data/include/reflex/shape.h +211 -0
  88. data/include/reflex/style.h +136 -76
  89. data/include/reflex/timer.h +73 -0
  90. data/include/reflex/view.h +181 -59
  91. data/include/reflex/window.h +4 -3
  92. data/lib/reflex.rb +13 -6
  93. data/lib/reflex/application.rb +6 -3
  94. data/lib/reflex/button.rb +2 -2
  95. data/lib/reflex/{texture.rb → camera.rb} +2 -2
  96. data/lib/reflex/capture_event.rb +7 -6
  97. data/lib/reflex/contact_event.rb +10 -12
  98. data/lib/reflex/draw_event.rb +6 -1
  99. data/lib/reflex/ellipse_shape.rb +27 -0
  100. data/lib/reflex/filter.rb +18 -0
  101. data/lib/reflex/fixture.rb +4 -0
  102. data/lib/reflex/focus_event.rb +10 -12
  103. data/lib/reflex/frame_event.rb +1 -1
  104. data/lib/reflex/helper.rb +17 -29
  105. data/lib/reflex/key_event.rb +13 -11
  106. data/lib/reflex/line_shape.rb +18 -0
  107. data/lib/reflex/matrix.rb +13 -0
  108. data/lib/reflex/module.rb +4 -19
  109. data/lib/reflex/pointer_event.rb +28 -35
  110. data/lib/reflex/polygon.rb +14 -0
  111. data/lib/reflex/polygon_shape.rb +23 -0
  112. data/lib/reflex/polyline.rb +13 -0
  113. data/lib/reflex/rect_shape.rb +20 -0
  114. data/lib/reflex/reflex.rb +1 -3
  115. data/lib/reflex/scroll_event.rb +1 -1
  116. data/lib/reflex/selector.rb +2 -2
  117. data/lib/reflex/shape.rb +62 -0
  118. data/lib/reflex/style.rb +78 -11
  119. data/lib/reflex/style_length.rb +0 -11
  120. data/lib/reflex/text_view.rb +7 -24
  121. data/lib/reflex/timer.rb +30 -0
  122. data/lib/reflex/timer_event.rb +29 -0
  123. data/lib/reflex/update_event.rb +1 -1
  124. data/lib/reflex/view.rb +127 -32
  125. data/lib/reflex/wheel_event.rb +9 -1
  126. data/lib/reflex/window.rb +29 -9
  127. data/lib/reflexion.rb +23 -7
  128. data/reflex.gemspec +7 -8
  129. data/samples/bats.rb +4 -4
  130. data/samples/camera.rb +32 -0
  131. data/samples/fans.rb +1 -1
  132. data/samples/fps.rb +5 -3
  133. data/samples/hello.rb +4 -6
  134. data/samples/image.rb +5 -4
  135. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +0 -2
  136. data/samples/layout.rb +16 -7
  137. data/samples/model.rb +10 -7
  138. data/samples/physics.rb +22 -20
  139. data/samples/reflexion/breakout.rb +4 -5
  140. data/samples/reflexion/hello.rb +2 -2
  141. data/samples/reflexion/jump_action.rb +191 -0
  142. data/samples/reflexion/noise.rb +23 -0
  143. data/samples/reflexion/paint.rb +7 -6
  144. data/samples/reflexion/physics.rb +15 -8
  145. data/samples/reflexion/pulse.rb +24 -10
  146. data/samples/shader.rb +8 -6
  147. data/samples/shapes.rb +79 -14
  148. data/samples/tree.rb +9 -10
  149. data/samples/views.rb +3 -3
  150. data/samples/visuals.rb +2 -5
  151. data/src/body.cpp +146 -345
  152. data/src/body.h +91 -0
  153. data/src/event.cpp +65 -15
  154. data/src/exception.cpp +13 -3
  155. data/src/filter.cpp +76 -0
  156. data/src/fixture.cpp +164 -39
  157. data/src/fixture.h +85 -0
  158. data/src/image_view.cpp +4 -4
  159. data/src/ios/app_delegate.h +5 -10
  160. data/src/ios/app_delegate.mm +79 -41
  161. data/src/ios/application.h +32 -0
  162. data/src/ios/application.mm +35 -25
  163. data/src/ios/event.mm +8 -4
  164. data/src/ios/reflex.mm +0 -7
  165. data/src/ios/view_controller.h +37 -0
  166. data/src/ios/view_controller.mm +424 -0
  167. data/src/ios/window.h +40 -0
  168. data/src/ios/window.mm +59 -250
  169. data/src/osx/app_delegate.h +5 -10
  170. data/src/osx/app_delegate.mm +52 -55
  171. data/src/osx/application.h +32 -0
  172. data/src/osx/application.mm +44 -39
  173. data/src/osx/native_window.h +0 -15
  174. data/src/osx/native_window.mm +127 -127
  175. data/src/osx/opengl_view.h +0 -2
  176. data/src/osx/opengl_view.mm +12 -3
  177. data/src/osx/reflex.mm +0 -9
  178. data/src/osx/window.h +42 -0
  179. data/src/osx/window.mm +45 -252
  180. data/src/selector.cpp +232 -7
  181. data/src/selector.h +52 -0
  182. data/src/shape.cpp +1191 -0
  183. data/src/shape.h +61 -0
  184. data/src/style.cpp +573 -376
  185. data/src/style.h +39 -0
  186. data/src/timer.cpp +288 -0
  187. data/src/timer.h +55 -0
  188. data/src/view.cpp +1624 -984
  189. data/src/view.h +56 -0
  190. data/src/win32/window.cpp +3 -4
  191. data/src/window.cpp +302 -20
  192. data/src/window.h +94 -0
  193. data/src/world.cpp +112 -111
  194. data/src/world.h +34 -53
  195. data/task/box2d.rake +31 -10
  196. data/test/test_capture_event.rb +8 -6
  197. data/test/test_pointer_event.rb +130 -0
  198. data/test/test_selector.rb +1 -1
  199. data/test/test_shape.rb +71 -0
  200. data/test/test_style.rb +77 -11
  201. data/test/test_style_length.rb +42 -13
  202. data/test/test_view.rb +138 -14
  203. metadata +118 -202
  204. data/.doc/ext/reflex/arc_shape.cpp +0 -89
  205. data/.doc/ext/reflex/body.cpp +0 -299
  206. data/.doc/ext/reflex/fixture.cpp +0 -101
  207. data/.doc/ext/reflex/shape_view.cpp +0 -153
  208. data/ext/reflex/arc_shape.cpp +0 -94
  209. data/ext/reflex/body.cpp +0 -328
  210. data/ext/reflex/fixture.cpp +0 -108
  211. data/ext/reflex/shape_view.cpp +0 -161
  212. data/include/reflex/bitmap.h +0 -20
  213. data/include/reflex/body.h +0 -128
  214. data/include/reflex/bounds.h +0 -20
  215. data/include/reflex/color.h +0 -20
  216. data/include/reflex/color_space.h +0 -20
  217. data/include/reflex/fixture.h +0 -117
  218. data/include/reflex/font.h +0 -20
  219. data/include/reflex/image.h +0 -20
  220. data/include/reflex/matrix.h +0 -20
  221. data/include/reflex/painter.h +0 -20
  222. data/include/reflex/point.h +0 -24
  223. data/include/reflex/ruby/body.h +0 -41
  224. data/include/reflex/ruby/fixture.h +0 -41
  225. data/include/reflex/ruby/shape_view.h +0 -96
  226. data/include/reflex/shader.h +0 -20
  227. data/include/reflex/shape_view.h +0 -146
  228. data/include/reflex/texture.h +0 -20
  229. data/lib/reflex/body.rb +0 -22
  230. data/lib/reflex/flags.rb +0 -18
  231. data/lib/reflex/shape_view.rb +0 -25
  232. data/src/ios/application_data.h +0 -45
  233. data/src/ios/native_window.h +0 -39
  234. data/src/ios/native_window.mm +0 -224
  235. data/src/ios/opengl_view.h +0 -13
  236. data/src/ios/opengl_view.mm +0 -139
  237. data/src/ios/window_data.h +0 -75
  238. data/src/osx/application_data.h +0 -45
  239. data/src/osx/window_data.h +0 -75
  240. data/src/physics/Box2D/Box2D.h +0 -68
  241. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.cpp +0 -193
  242. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.h +0 -105
  243. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.cpp +0 -99
  244. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.h +0 -91
  245. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.cpp +0 -138
  246. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.h +0 -74
  247. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.cpp +0 -467
  248. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.h +0 -101
  249. data/src/physics/Box2D/Collision/Shapes/b2Shape.h +0 -101
  250. data/src/physics/Box2D/Collision/b2BroadPhase.cpp +0 -119
  251. data/src/physics/Box2D/Collision/b2BroadPhase.h +0 -257
  252. data/src/physics/Box2D/Collision/b2CollideCircle.cpp +0 -154
  253. data/src/physics/Box2D/Collision/b2CollideEdge.cpp +0 -698
  254. data/src/physics/Box2D/Collision/b2CollidePolygon.cpp +0 -239
  255. data/src/physics/Box2D/Collision/b2Collision.cpp +0 -252
  256. data/src/physics/Box2D/Collision/b2Collision.h +0 -277
  257. data/src/physics/Box2D/Collision/b2Distance.cpp +0 -603
  258. data/src/physics/Box2D/Collision/b2Distance.h +0 -141
  259. data/src/physics/Box2D/Collision/b2DynamicTree.cpp +0 -778
  260. data/src/physics/Box2D/Collision/b2DynamicTree.h +0 -289
  261. data/src/physics/Box2D/Collision/b2TimeOfImpact.cpp +0 -486
  262. data/src/physics/Box2D/Collision/b2TimeOfImpact.h +0 -58
  263. data/src/physics/Box2D/Common/b2BlockAllocator.cpp +0 -215
  264. data/src/physics/Box2D/Common/b2BlockAllocator.h +0 -62
  265. data/src/physics/Box2D/Common/b2Draw.cpp +0 -44
  266. data/src/physics/Box2D/Common/b2Draw.h +0 -86
  267. data/src/physics/Box2D/Common/b2GrowableStack.h +0 -85
  268. data/src/physics/Box2D/Common/b2Math.cpp +0 -94
  269. data/src/physics/Box2D/Common/b2Math.h +0 -720
  270. data/src/physics/Box2D/Common/b2Settings.cpp +0 -44
  271. data/src/physics/Box2D/Common/b2Settings.h +0 -151
  272. data/src/physics/Box2D/Common/b2StackAllocator.cpp +0 -83
  273. data/src/physics/Box2D/Common/b2StackAllocator.h +0 -60
  274. data/src/physics/Box2D/Common/b2Timer.cpp +0 -101
  275. data/src/physics/Box2D/Common/b2Timer.h +0 -50
  276. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp +0 -53
  277. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h +0 -39
  278. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp +0 -53
  279. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h +0 -39
  280. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.cpp +0 -52
  281. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.h +0 -39
  282. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.cpp +0 -247
  283. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.h +0 -349
  284. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.cpp +0 -838
  285. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.h +0 -95
  286. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp +0 -49
  287. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h +0 -39
  288. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp +0 -49
  289. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h +0 -39
  290. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp +0 -49
  291. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h +0 -38
  292. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.cpp +0 -52
  293. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.h +0 -39
  294. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.cpp +0 -260
  295. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.h +0 -169
  296. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.cpp +0 -251
  297. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.h +0 -119
  298. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.cpp +0 -419
  299. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.h +0 -125
  300. data/src/physics/Box2D/Dynamics/Joints/b2Joint.cpp +0 -211
  301. data/src/physics/Box2D/Dynamics/Joints/b2Joint.h +0 -226
  302. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.cpp +0 -304
  303. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.h +0 -133
  304. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.cpp +0 -222
  305. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.h +0 -129
  306. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp +0 -629
  307. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.h +0 -196
  308. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.cpp +0 -348
  309. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.h +0 -152
  310. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp +0 -502
  311. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.h +0 -204
  312. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.cpp +0 -241
  313. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.h +0 -114
  314. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.cpp +0 -344
  315. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.h +0 -126
  316. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.cpp +0 -419
  317. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.h +0 -210
  318. data/src/physics/Box2D/Dynamics/b2Body.cpp +0 -549
  319. data/src/physics/Box2D/Dynamics/b2Body.h +0 -860
  320. data/src/physics/Box2D/Dynamics/b2ContactManager.cpp +0 -296
  321. data/src/physics/Box2D/Dynamics/b2ContactManager.h +0 -52
  322. data/src/physics/Box2D/Dynamics/b2Fixture.cpp +0 -303
  323. data/src/physics/Box2D/Dynamics/b2Fixture.h +0 -345
  324. data/src/physics/Box2D/Dynamics/b2Island.cpp +0 -539
  325. data/src/physics/Box2D/Dynamics/b2Island.h +0 -93
  326. data/src/physics/Box2D/Dynamics/b2TimeStep.h +0 -70
  327. data/src/physics/Box2D/Dynamics/b2World.cpp +0 -1339
  328. data/src/physics/Box2D/Dynamics/b2World.h +0 -354
  329. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.cpp +0 -36
  330. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.h +0 -155
  331. data/src/physics/Box2D/Rope/b2Rope.cpp +0 -259
  332. data/src/physics/Box2D/Rope/b2Rope.h +0 -115
  333. data/src/shape_view.cpp +0 -306
@@ -1,13 +1,9 @@
1
1
  #include "reflex/ruby/event.h"
2
2
 
3
3
 
4
- #include <rucy.h>
5
4
  #include "defs.h"
6
5
 
7
6
 
8
- using namespace Rucy;
9
-
10
-
11
7
  RUCY_DEFINE_VALUE_FROM_TO(Reflex::UpdateEvent)
12
8
 
13
9
  #define THIS to<Reflex::UpdateEvent*>(self)
@@ -22,12 +18,12 @@ VALUE alloc(VALUE klass)
22
18
  }
23
19
 
24
20
  static
25
- VALUE initialize(VALUE self)
21
+ VALUE initialize(VALUE self, VALUE now, VALUE dt)
26
22
  {
27
23
  CHECK;
28
- check_arg_count(__FILE__, __LINE__, "UpdateEvent#initialize", argc, 0, 1);
29
24
 
30
- THIS->dt = (argc >= 1) ? argv[0].as_f() : 0;
25
+ THIS->now = to<double>(now);
26
+ THIS->dt = to<float>(dt);
31
27
 
32
28
  return rb_call_super(0, NULL);
33
29
  }
@@ -40,6 +36,13 @@ VALUE initialize_copy(VALUE self, VALUE obj)
40
36
  return self;
41
37
  }
42
38
 
39
+ static
40
+ VALUE now(VALUE self)
41
+ {
42
+ CHECK;
43
+ return value(THIS->now);
44
+ }
45
+
43
46
  static
44
47
  VALUE dt(VALUE self)
45
48
  {
@@ -57,8 +60,9 @@ Init_update_event ()
57
60
 
58
61
  cUpdateEvent = mReflex.define_class("UpdateEvent", Reflex::event_class());
59
62
  rb_define_alloc_func(cUpdateEvent, alloc);
60
- rb_define_private_method(cUpdateEvent, "initialize", RUBY_METHOD_FUNC(initialize), -1);
63
+ rb_define_private_method(cUpdateEvent, "initialize", RUBY_METHOD_FUNC(initialize), 2);
61
64
  rb_define_private_method(cUpdateEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
65
+ rb_define_method(cUpdateEvent, "now", RUBY_METHOD_FUNC(now), 0);
62
66
  rb_define_method(cUpdateEvent, "dt", RUBY_METHOD_FUNC(dt), 0);
63
67
  }
64
68
 
@@ -2,27 +2,27 @@
2
2
 
3
3
 
4
4
  #include <vector>
5
- #include <rucy.h>
6
5
  #include <rays/ruby/point.h>
7
6
  #include <rays/ruby/bounds.h>
8
- #include "reflex/ruby/window.h"
7
+ #include <rays/ruby/polygon.h>
9
8
  #include "reflex/ruby/selector.h"
9
+ #include "reflex/ruby/timer.h"
10
10
  #include "reflex/ruby/style.h"
11
- #include "reflex/ruby/body.h"
12
-
13
-
14
- using namespace Rucy;
15
-
16
- using Reflex::coord;
11
+ #include "reflex/ruby/shape.h"
12
+ #include "reflex/ruby/filter.h"
13
+ #include "reflex/ruby/window.h"
14
+ #include "defs.h"
15
+ #include "selector.h"
17
16
 
18
17
 
19
18
  RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::View)
20
19
 
21
- #define THIS to<Reflex::View*>(self)
20
+ #define THIS to< Reflex::View*>(self)
21
+ #define C_THIS to<const Reflex::View*>(self)
22
22
 
23
23
  #define CHECK RUCY_CHECK_OBJECT(Reflex::View, self)
24
24
 
25
- #define CALL(fun) RUCY_WRAPPER_CALL(Reflex::View, THIS, fun)
25
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
26
26
 
27
27
 
28
28
  template <typename T>
@@ -72,6 +72,54 @@ VALUE redraw(VALUE self)
72
72
  return self;
73
73
  }
74
74
 
75
+ static
76
+ VALUE focus(VALUE self)
77
+ {
78
+ CHECK;
79
+ check_arg_count(__FILE__, __LINE__, "View#focus", argc, 0, 1);
80
+
81
+ bool state = (argc >= 1) ? to<bool>(argv[0]) : true;
82
+
83
+ THIS->focus(state);
84
+ return self;
85
+ }
86
+
87
+ static
88
+ VALUE blur(VALUE self)
89
+ {
90
+ CHECK;
91
+ THIS->blur();
92
+ return self;
93
+ }
94
+
95
+ static
96
+ VALUE has_focus(VALUE self)
97
+ {
98
+ CHECK;
99
+ return value(THIS->has_focus());
100
+ }
101
+
102
+ static
103
+ VALUE start_timer(VALUE self)
104
+ {
105
+ CHECK;
106
+ check_arg_count(__FILE__, __LINE__, "View#start_timer", argc, 1, 2);
107
+
108
+ Reflex::Timer* timer = THIS->start_timer(
109
+ to<float>(argv[0]),
110
+ argc >= 2 ? to<int>(argv[1]) : 1);
111
+
112
+ return value(timer);
113
+ }
114
+
115
+ static
116
+ VALUE update_layout(VALUE self)
117
+ {
118
+ CHECK;
119
+ THIS->update_layout();
120
+ return self;
121
+ }
122
+
75
123
  static
76
124
  VALUE add_child(VALUE self, VALUE child)
77
125
  {
@@ -88,16 +136,24 @@ VALUE remove_child(VALUE self, VALUE child)
88
136
  return child;
89
137
  }
90
138
 
139
+ static
140
+ VALUE clear_children(VALUE self)
141
+ {
142
+ CHECK;
143
+ THIS->clear_children();
144
+ return self;
145
+ }
146
+
91
147
  static
92
148
  VALUE find_children(VALUE self)
93
149
  {
94
150
  CHECK;
95
151
  check_arg_count(__FILE__, __LINE__, "View#find_children", argc, 1, 2);
96
152
 
97
- bool recursive = (argc >= 2) ? to<bool>(argv[1]) : false;
153
+ bool recursive = (argc >= 2) ? to<bool>(argv[1]) : true;
98
154
 
99
- Reflex::View::ChildList children;
100
- THIS->find_children(&children, to<Reflex::Selector>(argv[0]), recursive);
155
+ Reflex::View::ChildList children =
156
+ THIS->find_children(to<Reflex::Selector>(argv[0]), recursive);
101
157
  return array(children.begin(), children.end());
102
158
  }
103
159
 
@@ -136,9 +192,9 @@ VALUE get_style(VALUE self, VALUE selector)
136
192
 
137
193
  Reflex::Style* s = NULL;
138
194
  if (selector)
139
- s = THIS->get_style(to<Reflex::Selector>(selector), true);
195
+ s = THIS->get_style(to<Reflex::Selector>(selector));
140
196
  else
141
- s = THIS->style(true);
197
+ s = THIS->style();
142
198
 
143
199
  return s ? value(*s) : nil();
144
200
  }
@@ -151,8 +207,8 @@ VALUE find_styles(VALUE self)
151
207
 
152
208
  bool recursive = (argc >= 2) ? to<bool>(argv[1]) : false;
153
209
 
154
- Reflex::View::StyleList styles;
155
- THIS->find_styles(&styles, to<Reflex::Selector>(argv[0]), recursive);
210
+ Reflex::View::StyleList styles =
211
+ THIS->find_styles(to<Reflex::Selector>(argv[0]), recursive);
156
212
  return array(styles.begin(), styles.end());
157
213
  }
158
214
 
@@ -168,128 +224,188 @@ VALUE each_style(VALUE self)
168
224
  return ret;
169
225
  }
170
226
 
227
+ static Reflex::Shape::Ref
228
+ to_shape (Value value)
229
+ {
230
+ if (value.is_nil())
231
+ return NULL;
232
+
233
+ if (value.is_kind_of(Rays::polygon_class()))
234
+ {
235
+ Reflex::PolygonShape* shape = new Reflex::PolygonShape();
236
+ shape->set_polygon(to<Rays::Polygon&>(value));
237
+ return shape;
238
+ }
239
+ else
240
+ return to<Reflex::Shape*>(value);
241
+ }
242
+
171
243
  static
172
- VALUE focus(VALUE self)
244
+ VALUE set_shape(VALUE self, VALUE shape)
173
245
  {
174
246
  CHECK;
175
- check_arg_count(__FILE__, __LINE__, "View#focus", argc, 0, 1);
176
-
177
- bool state = (argc >= 1) ? to<bool>(argv[0]) : true;
247
+ THIS->set_shape(to_shape(shape));
248
+ return shape;
249
+ }
178
250
 
179
- THIS->focus(state);
180
- return self;
251
+ static
252
+ VALUE get_shape(VALUE self)
253
+ {
254
+ CHECK;
255
+ return value(THIS->shape());
181
256
  }
182
257
 
183
258
  static
184
- VALUE blur(VALUE self)
259
+ VALUE add_shape(VALUE self, VALUE shape)
185
260
  {
186
261
  CHECK;
187
- THIS->blur();
188
- return self;
262
+ THIS->add_shape(to_shape(shape));
263
+ return shape;
189
264
  }
190
265
 
191
266
  static
192
- VALUE has_focus(VALUE self)
267
+ VALUE remove_shape(VALUE self, VALUE shape)
193
268
  {
194
269
  CHECK;
195
- return value(THIS->has_focus());
270
+ THIS->remove_shape(to<Reflex::Shape*>(shape));
271
+ return shape;
196
272
  }
197
273
 
198
274
  static
199
- VALUE resize_to_fit(VALUE self)
275
+ VALUE clear_shapes(VALUE self)
200
276
  {
201
277
  CHECK;
202
- THIS->resize_to_fit();
278
+ THIS->clear_shapes();
203
279
  return self;
204
280
  }
205
281
 
206
282
  static
207
- VALUE content_size(VALUE self)
283
+ VALUE find_shapes(VALUE self)
208
284
  {
209
285
  CHECK;
210
- return value(CALL(content_size()));
286
+ check_arg_count(__FILE__, __LINE__, "View#find_shapes", argc, 1);
287
+
288
+ Reflex::View::ShapeList shapes =
289
+ THIS->find_shapes(to<Reflex::Selector>(argv[0]));
290
+ return array(shapes.begin(), shapes.end());
211
291
  }
212
292
 
213
293
  static
214
- VALUE make_body(VALUE self)
294
+ VALUE each_shape(VALUE self)
215
295
  {
216
296
  CHECK;
217
- CALL(make_body());
297
+
298
+ Value ret;
299
+ Reflex::View::shape_iterator end = THIS->shape_end();
300
+ for (Reflex::View::shape_iterator it = THIS->shape_begin(); it != end; ++it)
301
+ ret = rb_yield(value(it->get()));
302
+ return ret;
218
303
  }
219
304
 
220
305
  static
221
- VALUE clear_body(VALUE self)
306
+ VALUE set_filter(VALUE self, VALUE filter)
222
307
  {
223
308
  CHECK;
224
- THIS->clear_body();
309
+ THIS->set_filter(filter ? to<Reflex::Filter*>(filter) : NULL);
310
+ return filter;
225
311
  }
226
312
 
227
313
  static
228
- VALUE set_name(VALUE self, VALUE name)
314
+ VALUE get_filter(VALUE self)
229
315
  {
230
316
  CHECK;
231
- THIS->set_name(name.is_nil() ? NULL : name.c_str());
317
+ return value(THIS->filter());
232
318
  }
233
319
 
234
320
  static
235
- VALUE get_name(VALUE self)
321
+ VALUE set_frame(VALUE self)
236
322
  {
237
323
  CHECK;
238
- return THIS->name() ? value(THIS->name()) : nil();
324
+ THIS->set_frame(to<Rays::Bounds>(argc, argv));
325
+ return value(THIS->frame());
239
326
  }
240
327
 
241
328
  static
242
- VALUE add_tag(VALUE self, VALUE tag)
329
+ VALUE get_frame(VALUE self)
243
330
  {
244
331
  CHECK;
245
- THIS->add_tag(tag.c_str());
332
+ return value(THIS->frame());
246
333
  }
247
334
 
248
335
  static
249
- VALUE remove_tag(VALUE self, VALUE tag)
336
+ VALUE content_bounds(VALUE self)
250
337
  {
251
338
  CHECK;
252
- THIS->remove_tag(tag.c_str());
339
+ return value(CALL(content_bounds()));
253
340
  }
254
341
 
255
342
  static
256
- VALUE each_tag(VALUE self)
343
+ VALUE fit_to_content(VALUE self)
257
344
  {
258
345
  CHECK;
346
+ THIS->fit_to_content();
347
+ return self;
348
+ }
259
349
 
260
- Value ret;
261
- Reflex::View::tag_iterator end = THIS->tag_end();
262
- for (Reflex::View::tag_iterator it = THIS->tag_begin(); it != end; ++it)
263
- ret = rb_yield(value(*it));
264
- return ret;
350
+ static
351
+ VALUE set_angle(VALUE self, VALUE degree)
352
+ {
353
+ CHECK;
354
+ THIS->set_angle(to<float>(degree));
355
+ return degree;
265
356
  }
266
357
 
267
358
  static
268
- VALUE set_selector(VALUE self, VALUE selector)
359
+ VALUE get_angle(VALUE self)
269
360
  {
270
361
  CHECK;
271
- THIS->set_selector(to<Reflex::Selector>(selector));
362
+ return value(THIS->angle());
272
363
  }
273
364
 
274
365
  static
275
- VALUE get_selector(VALUE self)
366
+ VALUE scroll_to(VALUE self)
276
367
  {
277
368
  CHECK;
278
- return value(THIS->selector());
369
+ check_arg_count(__FILE__, __LINE__, "View#scroll_to", argc, 1, 2, 3);
370
+
371
+ if (argv[0].is_kind_of(Rays::point_class()))
372
+ THIS->scroll_to(to<Rays::Point&>(argv[0]));
373
+ else
374
+ {
375
+ const Rays::Point& p = THIS->scroll();
376
+ coord x = (argc >= 1 && argv[0]) ? to<coord>(argv[0]) : p.x;
377
+ coord y = (argc >= 2 && argv[1]) ? to<coord>(argv[1]) : p.y;
378
+ coord z = (argc >= 3 && argv[2]) ? to<coord>(argv[2]) : p.z;
379
+ THIS->scroll_to(x, y, z);
380
+ }
381
+
382
+ return self;
279
383
  }
280
384
 
281
385
  static
282
- VALUE set_frame(VALUE self, VALUE arg)
386
+ VALUE scroll_by(VALUE self)
283
387
  {
284
388
  CHECK;
285
- THIS->set_frame(to<Rays::Bounds>(arg));
389
+ check_arg_count(__FILE__, __LINE__, "View#scroll_by", argc, 1, 2, 3);
390
+
391
+ if (argv[0].is_kind_of(Rays::point_class()))
392
+ THIS->scroll_by(to<Rays::Point&>(argv[0]));
393
+ else
394
+ {
395
+ coord x = (argc >= 1 && argv[0]) ? to<coord>(argv[0]) : 0;
396
+ coord y = (argc >= 2 && argv[1]) ? to<coord>(argv[1]) : 0;
397
+ coord z = (argc >= 3 && argv[2]) ? to<coord>(argv[2]) : 0;
398
+ THIS->scroll_by(x, y, z);
399
+ }
400
+
401
+ return self;
286
402
  }
287
403
 
288
404
  static
289
- VALUE get_frame(VALUE self)
405
+ VALUE get_scroll(VALUE self)
290
406
  {
291
407
  CHECK;
292
- return value(THIS->frame());
408
+ return value(THIS->scroll());
293
409
  }
294
410
 
295
411
  static
@@ -297,6 +413,7 @@ VALUE set_zoom(VALUE self, VALUE zoom)
297
413
  {
298
414
  CHECK;
299
415
  THIS->set_zoom(to<float>(zoom));
416
+ return zoom;
300
417
  }
301
418
 
302
419
  static
@@ -307,70 +424,98 @@ VALUE get_zoom(VALUE self)
307
424
  }
308
425
 
309
426
  static
310
- VALUE get_angle(VALUE self)
427
+ VALUE set_capture(VALUE self, VALUE types)
311
428
  {
312
429
  CHECK;
313
- return value(THIS->angle());
430
+ THIS->set_capture(to<uint>(types));
431
+ return types;
314
432
  }
315
433
 
316
434
  static
317
- VALUE set_capture(VALUE self, VALUE types)
435
+ VALUE get_capture(VALUE self)
318
436
  {
319
437
  CHECK;
320
- THIS->set_capture(to<uint>(types));
438
+ return value(THIS->capture());
321
439
  }
322
440
 
323
441
  static
324
- VALUE get_capture(VALUE self)
442
+ VALUE set_clip(VALUE self, VALUE clip)
325
443
  {
326
444
  CHECK;
327
- return value(THIS->capture());
445
+
446
+ if (clip)
447
+ THIS-> add_flag(Reflex::View::FLAG_CLIP);
448
+ else
449
+ THIS->remove_flag(Reflex::View::FLAG_CLIP);
450
+
451
+ return clip;
328
452
  }
329
453
 
330
454
  static
331
- VALUE scroll_to(VALUE self)
455
+ VALUE get_clip(VALUE self)
332
456
  {
333
457
  CHECK;
334
- check_arg_count(__FILE__, __LINE__, "View#scroll_to", argc, 1, 2, 3);
458
+ return value(THIS->has_flag(Reflex::View::FLAG_CLIP));
459
+ }
335
460
 
336
- if (argv[0].is_kind_of(Rays::point_class()))
337
- THIS->scroll_to(to<Rays::Point&>(argv[0]));
461
+ static
462
+ VALUE set_cache(VALUE self, VALUE cache)
463
+ {
464
+ CHECK;
465
+
466
+ if (cache)
467
+ THIS-> add_flag(Reflex::View::FLAG_CACHE);
338
468
  else
339
- {
340
- const Rays::Point& p = THIS->scroll();
341
- coord x = (argc >= 1 && argv[0]) ? to<coord>(argv[0]) : p.x;
342
- coord y = (argc >= 2 && argv[1]) ? to<coord>(argv[1]) : p.y;
343
- coord z = (argc >= 3 && argv[2]) ? to<coord>(argv[2]) : p.z;
344
- THIS->scroll_to(x, y, z);
345
- }
469
+ THIS->remove_flag(Reflex::View::FLAG_CACHE);
346
470
 
347
- return self;
471
+ return cache;
348
472
  }
349
473
 
350
474
  static
351
- VALUE scroll_by(VALUE self)
475
+ VALUE get_cache(VALUE self)
352
476
  {
353
477
  CHECK;
354
- check_arg_count(__FILE__, __LINE__, "View#scroll_by", argc, 1, 2, 3);
478
+ return value(THIS->has_flag(Reflex::View::FLAG_CACHE));
479
+ }
355
480
 
356
- if (argv[0].is_kind_of(Rays::point_class()))
357
- THIS->scroll_by(to<Rays::Point&>(argv[0]));
481
+ static
482
+ VALUE set_resize_to_fit(VALUE self, VALUE resize)
483
+ {
484
+ CHECK;
485
+
486
+ if (resize)
487
+ THIS-> add_flag(Reflex::View::FLAG_RESIZE_TO_FIT);
358
488
  else
359
- {
360
- coord x = (argc >= 1 && argv[0]) ? to<coord>(argv[0]) : 0;
361
- coord y = (argc >= 2 && argv[1]) ? to<coord>(argv[1]) : 0;
362
- coord z = (argc >= 3 && argv[2]) ? to<coord>(argv[2]) : 0;
363
- THIS->scroll_by(x, y, z);
364
- }
489
+ THIS->remove_flag(Reflex::View::FLAG_RESIZE_TO_FIT);
365
490
 
366
- return self;
491
+ return resize;
367
492
  }
368
493
 
369
494
  static
370
- VALUE get_scroll(VALUE self)
495
+ VALUE get_resize_to_fit(VALUE self)
371
496
  {
372
497
  CHECK;
373
- return value(THIS->scroll());
498
+ return value(THIS->has_flag(Reflex::View::FLAG_RESIZE_TO_FIT));
499
+ }
500
+
501
+ static
502
+ VALUE set_scroll_to_fit(VALUE self, VALUE scroll)
503
+ {
504
+ CHECK;
505
+
506
+ if (scroll)
507
+ THIS-> add_flag(Reflex::View::FLAG_SCROLL_TO_FIT);
508
+ else
509
+ THIS->remove_flag(Reflex::View::FLAG_SCROLL_TO_FIT);
510
+
511
+ return scroll;
512
+ }
513
+
514
+ static
515
+ VALUE get_scroll_to_fit(VALUE self)
516
+ {
517
+ CHECK;
518
+ return value(THIS->has_flag(Reflex::View::FLAG_SCROLL_TO_FIT));
374
519
  }
375
520
 
376
521
  static
@@ -388,10 +533,211 @@ VALUE window(VALUE self)
388
533
  }
389
534
 
390
535
  static
391
- VALUE body(VALUE self)
536
+ VALUE apply_force(VALUE self)
537
+ {
538
+ CHECK;
539
+ THIS->apply_force(to<Rays::Point>(argc, argv));
540
+ return self;
541
+ }
542
+
543
+ static
544
+ VALUE apply_torque(VALUE self, VALUE torque)
545
+ {
546
+ CHECK;
547
+ THIS->apply_torque(to<float>(torque));
548
+ return self;
549
+ }
550
+
551
+ static
552
+ VALUE apply_linear_impulse(VALUE self)
553
+ {
554
+ CHECK;
555
+ THIS->apply_linear_impulse(to<Rays::Point>(argc, argv));
556
+ return self;
557
+ }
558
+
559
+ static
560
+ VALUE apply_angular_impulse(VALUE self, VALUE impulse)
561
+ {
562
+ CHECK;
563
+ THIS->apply_angular_impulse(to<float>(impulse));
564
+ return self;
565
+ }
566
+
567
+ static
568
+ VALUE set_static(VALUE self, VALUE state)
569
+ {
570
+ CHECK;
571
+ THIS->set_static(state);
572
+ return state;
573
+ }
574
+
575
+ static
576
+ VALUE is_static(VALUE self)
577
+ {
578
+ CHECK;
579
+ return value(THIS->is_static());
580
+ }
581
+
582
+ static
583
+ VALUE set_dynamic(VALUE self, VALUE state)
584
+ {
585
+ CHECK;
586
+ THIS->set_dynamic(state);
587
+ return state;
588
+ }
589
+
590
+ static
591
+ VALUE is_dynamic(VALUE self)
592
+ {
593
+ CHECK;
594
+ return value(THIS->is_dynamic());
595
+ }
596
+
597
+ static
598
+ VALUE set_density(VALUE self, VALUE density)
599
+ {
600
+ CHECK;
601
+ THIS->set_density(to<float>(density));
602
+ return density;
603
+ }
604
+
605
+ static
606
+ VALUE get_density(VALUE self)
607
+ {
608
+ CHECK;
609
+ return value(THIS->density());
610
+ }
611
+
612
+ static
613
+ VALUE set_friction(VALUE self, VALUE friction)
614
+ {
615
+ CHECK;
616
+ THIS->set_friction(to<float>(friction));
617
+ return friction;
618
+ }
619
+
620
+ static
621
+ VALUE get_friction(VALUE self)
622
+ {
623
+ CHECK;
624
+ return value(THIS->friction());
625
+ }
626
+
627
+ static
628
+ VALUE set_restitution(VALUE self, VALUE restitution)
629
+ {
630
+ CHECK;
631
+ THIS->set_restitution(to<float>(restitution));
632
+ return restitution;
633
+ }
634
+
635
+ static
636
+ VALUE get_restitution(VALUE self)
637
+ {
638
+ CHECK;
639
+ return value(THIS->restitution());
640
+ }
641
+
642
+ static
643
+ VALUE set_sensor(VALUE self, VALUE state)
644
+ {
645
+ CHECK;
646
+ THIS->set_sensor(state);
647
+ return state;
648
+ }
649
+
650
+ static
651
+ VALUE is_sensor(VALUE self)
652
+ {
653
+ CHECK;
654
+ return value(THIS->is_sensor());
655
+ }
656
+
657
+ static
658
+ VALUE set_category_bits(VALUE self, VALUE bits)
659
+ {
660
+ CHECK;
661
+ THIS->set_category_bits(to<uint>(bits));
662
+ return bits;
663
+ }
664
+
665
+ static
666
+ VALUE get_category_bits(VALUE self)
667
+ {
668
+ CHECK;
669
+ return value(THIS->category_bits());
670
+ }
671
+
672
+ static
673
+ VALUE set_collision_mask(VALUE self, VALUE mask)
674
+ {
675
+ CHECK;
676
+ THIS->set_collision_mask(to<uint>(mask));
677
+ return mask;
678
+ }
679
+
680
+ static
681
+ VALUE get_collision_mask(VALUE self)
682
+ {
683
+ CHECK;
684
+ return value(THIS->collision_mask());
685
+ }
686
+
687
+ static
688
+ VALUE set_linear_velocity(VALUE self)
689
+ {
690
+ CHECK;
691
+ THIS->set_linear_velocity(to<Rays::Point>(argc, argv));
692
+ return value(THIS->linear_velocity());
693
+ }
694
+
695
+ static
696
+ VALUE get_linear_velocity(VALUE self)
697
+ {
698
+ CHECK;
699
+ return value(THIS->linear_velocity());
700
+ }
701
+
702
+ static
703
+ VALUE set_angular_velocity(VALUE self, VALUE velocity)
704
+ {
705
+ CHECK;
706
+ THIS->set_angular_velocity(to<float>(velocity));
707
+ return velocity;
708
+ }
709
+
710
+ static
711
+ VALUE get_angular_velocity(VALUE self)
712
+ {
713
+ CHECK;
714
+ return value(THIS->angular_velocity());
715
+ }
716
+
717
+ static
718
+ VALUE set_gravity_scale(VALUE self, VALUE scale)
719
+ {
720
+ CHECK;
721
+ THIS->set_gravity_scale(to<float>(scale));
722
+ return scale;
723
+ }
724
+
725
+ static
726
+ VALUE get_gravity_scale(VALUE self)
727
+ {
728
+ CHECK;
729
+ return value(THIS->gravity_scale());
730
+ }
731
+
732
+ static
733
+ VALUE update_physics(VALUE self)
392
734
  {
393
735
  CHECK;
394
- return value(THIS->body());
736
+ check_arg_count(__FILE__, __LINE__, "View#update_physics", argc, 0, 1);
737
+
738
+ float duration = argc >= 1 ? to<float>(argv[0]) : 0;
739
+ THIS->update_physics(duration);
740
+ return self;
395
741
  }
396
742
 
397
743
  static
@@ -400,17 +746,17 @@ VALUE meter2pixel(VALUE self)
400
746
  CHECK;
401
747
  check_arg_count(__FILE__, __LINE__, "View#meter2pixel", argc, 0, 1, 2);
402
748
 
403
- float meter = argc >= 1 ? argv[0].as_f(true) : 1;
404
- bool create_world = argc >= 2 ? (bool) argv[1] : true;
749
+ float meter = argc >= 1 ? to<float>(argv[0]) : 1;
750
+ bool create_world = argc >= 2 ? to<bool> (argv[1]) : true;
405
751
  return value(THIS->meter2pixel(meter, create_world));
406
752
  }
407
753
 
408
754
  static
409
- VALUE set_gravity(VALUE self, VALUE x, VALUE y)
755
+ VALUE set_gravity(VALUE self)
410
756
  {
411
757
  CHECK;
412
- THIS->set_gravity(x.as_f(true), y.as_f(true));
413
- return self;
758
+ THIS->set_gravity(to<Rays::Point>(argc, argv));
759
+ return value(THIS->gravity());
414
760
  }
415
761
 
416
762
  static
@@ -420,6 +766,21 @@ VALUE get_gravity(VALUE self)
420
766
  return value(THIS->gravity());
421
767
  }
422
768
 
769
+ static
770
+ VALUE set_time_scale(VALUE self, VALUE scale)
771
+ {
772
+ CHECK;
773
+ THIS->set_time_scale(to<float>(scale));
774
+ return scale;
775
+ }
776
+
777
+ static
778
+ VALUE get_time_scale(VALUE self)
779
+ {
780
+ CHECK;
781
+ return value(THIS->time_scale());
782
+ }
783
+
423
784
  static
424
785
  VALUE wall(VALUE self)
425
786
  {
@@ -436,20 +797,16 @@ VALUE set_debug(VALUE self, VALUE state)
436
797
  }
437
798
 
438
799
  static
439
- VALUE debugging(VALUE self)
800
+ VALUE get_debug(VALUE self)
440
801
  {
441
802
  CHECK;
442
- return value(THIS->debugging());
803
+ return value(THIS->debug());
443
804
  }
444
805
 
445
806
  static
446
807
  VALUE on_attach(VALUE self, VALUE event)
447
808
  {
448
809
  CHECK;
449
-
450
- RUCY_SYM(call_attach_block);
451
- self.call(call_attach_block);
452
-
453
810
  CALL(on_attach(to<Reflex::Event*>(event)));
454
811
  }
455
812
 
@@ -523,13 +880,6 @@ VALUE on_focus(VALUE self, VALUE event)
523
880
  CALL(on_focus(to<Reflex::FocusEvent*>(event)));
524
881
  }
525
882
 
526
- static
527
- VALUE on_blur(VALUE self, VALUE event)
528
- {
529
- CHECK;
530
- CALL(on_blur(to<Reflex::FocusEvent*>(event)));
531
- }
532
-
533
883
  static
534
884
  VALUE on_key(VALUE self, VALUE event)
535
885
  {
@@ -593,6 +943,13 @@ VALUE on_capture(VALUE self, VALUE event)
593
943
  CALL(on_capture(to<Reflex::CaptureEvent*>(event)));
594
944
  }
595
945
 
946
+ static
947
+ VALUE on_timer(VALUE self, VALUE event)
948
+ {
949
+ CHECK;
950
+ CALL(on_timer(to<Reflex::TimerEvent*>(event)));
951
+ }
952
+
596
953
  static
597
954
  VALUE on_contact(VALUE self, VALUE event)
598
955
  {
@@ -614,9 +971,6 @@ VALUE on_contact_end(VALUE self, VALUE event)
614
971
  CALL(on_contact_end(to<Reflex::ContactEvent*>(event)));
615
972
  }
616
973
 
617
- static
618
- RUCY_DEF_clear_override_flags(cof, Reflex::View);
619
-
620
974
 
621
975
  static Class cView;
622
976
 
@@ -631,48 +985,96 @@ Init_view ()
631
985
  rb_define_method(cView, "hide", RUBY_METHOD_FUNC(hide), 0);
632
986
  cView.define_method("hidden?", hidden);
633
987
  rb_define_method(cView, "redraw", RUBY_METHOD_FUNC(redraw), 0);
988
+ rb_define_method(cView, "focus", RUBY_METHOD_FUNC(focus), -1);
989
+ rb_define_method(cView, "blur", RUBY_METHOD_FUNC(blur), 0);
990
+ cView.define_method("focus?", has_focus);
991
+ rb_define_private_method(cView, "start_timer", RUBY_METHOD_FUNC(start_timer), -1);
992
+ rb_define_method(cView, "update_layout", RUBY_METHOD_FUNC(update_layout), 0);
993
+
634
994
  rb_define_method(cView, "add_child", RUBY_METHOD_FUNC(add_child), 1);
635
995
  rb_define_method(cView, "remove_child", RUBY_METHOD_FUNC(remove_child), 1);
996
+ rb_define_method(cView, "clear_children", RUBY_METHOD_FUNC(clear_children), 0);
636
997
  rb_define_method(cView, "find_children", RUBY_METHOD_FUNC(find_children), -1);
637
998
  rb_define_method(cView, "each_child", RUBY_METHOD_FUNC(each_child), 0);
999
+
638
1000
  rb_define_method(cView, "add_style", RUBY_METHOD_FUNC(add_style), 1);
639
1001
  rb_define_method(cView, "remove_style", RUBY_METHOD_FUNC(remove_style), 1);
640
1002
  rb_define_method(cView, "get_style", RUBY_METHOD_FUNC(get_style), 1);
641
1003
  rb_define_method(cView, "find_styles", RUBY_METHOD_FUNC(find_styles), -1);
642
1004
  rb_define_method(cView, "each_style", RUBY_METHOD_FUNC(each_style), 0);
643
- rb_define_method(cView, "focus", RUBY_METHOD_FUNC(focus), -1);
644
- rb_define_method(cView, "blur", RUBY_METHOD_FUNC(blur), 0);
645
- cView.define_method("focus?", has_focus);
646
- rb_define_method(cView, "resize_to_fit", RUBY_METHOD_FUNC(resize_to_fit), 0);
647
- rb_define_method(cView, "content_size", RUBY_METHOD_FUNC(content_size), 0);
648
- rb_define_method(cView, "make_body", RUBY_METHOD_FUNC(make_body), 0);
649
- rb_define_method(cView, "clear_body", RUBY_METHOD_FUNC(clear_body), 0);
650
- rb_define_method(cView, "name=", RUBY_METHOD_FUNC(set_name), 1);
651
- rb_define_method(cView, "name", RUBY_METHOD_FUNC(get_name), 0);
652
- rb_define_method(cView, "add_tag", RUBY_METHOD_FUNC(add_tag), 1);
653
- rb_define_method(cView, "remove_tag", RUBY_METHOD_FUNC(remove_tag), 1);
654
- rb_define_method(cView, "each_tag", RUBY_METHOD_FUNC(each_tag), 0);
655
- rb_define_method(cView, "selector=", RUBY_METHOD_FUNC(set_selector), 1);
656
- rb_define_method(cView, "selector", RUBY_METHOD_FUNC(get_selector), 0);
657
- rb_define_private_method(cView, "set_frame", RUBY_METHOD_FUNC(set_frame), 1);
658
- rb_define_private_method(cView, "get_frame", RUBY_METHOD_FUNC(get_frame), 0);
659
- rb_define_method(cView, "zoom=", RUBY_METHOD_FUNC(set_zoom), 1);
660
- rb_define_method(cView, "zoom", RUBY_METHOD_FUNC(get_zoom), 0);
1005
+
1006
+ rb_define_method(cView, "shape=", RUBY_METHOD_FUNC(set_shape), 1);
1007
+ rb_define_method(cView, "shape", RUBY_METHOD_FUNC(get_shape), 0);
1008
+ rb_define_method(cView, "add_shape", RUBY_METHOD_FUNC(add_shape), 1);
1009
+ rb_define_method(cView, "remove_shape", RUBY_METHOD_FUNC(remove_shape), 1);
1010
+ rb_define_method(cView, "clear_shapes", RUBY_METHOD_FUNC(clear_shapes), 0);
1011
+ rb_define_method(cView, "find_shapes", RUBY_METHOD_FUNC(find_shapes), -1);
1012
+ rb_define_method(cView, "each_shape", RUBY_METHOD_FUNC(each_shape), 0);
1013
+
1014
+ rb_define_method(cView, "filter=", RUBY_METHOD_FUNC(set_filter), 1);
1015
+ rb_define_method(cView, "filter", RUBY_METHOD_FUNC(get_filter), 0);
1016
+
1017
+ rb_define_method(cView, "frame=", RUBY_METHOD_FUNC(set_frame), -1);
1018
+ rb_define_method(cView, "frame", RUBY_METHOD_FUNC(get_frame), 0);
1019
+ rb_define_method(cView, "content_bounds", RUBY_METHOD_FUNC(content_bounds), 0);
1020
+ rb_define_method(cView, "fit_to_content", RUBY_METHOD_FUNC(fit_to_content), 0);
1021
+ rb_define_method(cView, "angle=", RUBY_METHOD_FUNC(set_angle), 1);
661
1022
  rb_define_method(cView, "angle", RUBY_METHOD_FUNC(get_angle), 0);
662
1023
  rb_define_method(cView, "scroll_to", RUBY_METHOD_FUNC(scroll_to), -1);
663
1024
  rb_define_method(cView, "scroll_by", RUBY_METHOD_FUNC(scroll_by), -1);
664
1025
  rb_define_method(cView, "scroll", RUBY_METHOD_FUNC(get_scroll), 0);
665
- rb_define_method(cView, "set_capture", RUBY_METHOD_FUNC(set_capture), 1);
666
- rb_define_method(cView, "get_capture", RUBY_METHOD_FUNC(get_capture), 0);
1026
+ rb_define_method(cView, "zoom=", RUBY_METHOD_FUNC(set_zoom), 1);
1027
+ rb_define_method(cView, "zoom", RUBY_METHOD_FUNC(get_zoom), 0);
1028
+ rb_define_method(cView, "capture=", RUBY_METHOD_FUNC(set_capture), 1);
1029
+ rb_define_method(cView, "capture", RUBY_METHOD_FUNC(get_capture), 0);
1030
+ rb_define_method(cView, "clip=", RUBY_METHOD_FUNC(set_clip), 1);
1031
+ cView.define_method("clip?", get_clip);
1032
+ rb_define_method(cView, "cache=", RUBY_METHOD_FUNC(set_cache), 1);
1033
+ cView.define_method("cache?", get_cache);
1034
+ rb_define_method(cView, "resize_to_fit=", RUBY_METHOD_FUNC(set_resize_to_fit), 1);
1035
+ cView.define_method("resize_to_fit?", get_resize_to_fit);
1036
+ rb_define_method(cView, "scroll_to_fit=", RUBY_METHOD_FUNC(set_scroll_to_fit), 1);
1037
+ cView.define_method("scroll_to_fit?", get_scroll_to_fit);
667
1038
  rb_define_method(cView, "parent", RUBY_METHOD_FUNC(parent), 0);
668
1039
  rb_define_method(cView, "window", RUBY_METHOD_FUNC(window), 0);
669
- rb_define_method(cView, "body", RUBY_METHOD_FUNC(body), 0);
1040
+
1041
+ rb_define_method(cView, "apply_force", RUBY_METHOD_FUNC(apply_force), -1);
1042
+ rb_define_method(cView, "apply_torque", RUBY_METHOD_FUNC(apply_torque), 1);
1043
+ rb_define_method(cView, "apply_linear_impulse", RUBY_METHOD_FUNC(apply_linear_impulse), -1);
1044
+ rb_define_method(cView, "apply_angular_impulse", RUBY_METHOD_FUNC(apply_angular_impulse), 1);
1045
+ rb_define_method(cView, "static=", RUBY_METHOD_FUNC(set_static), 1);
1046
+ cView.define_method("static?", is_static);
1047
+ rb_define_method(cView, "dynamic=", RUBY_METHOD_FUNC(set_dynamic), 1);
1048
+ cView.define_method("dynamic?", is_dynamic);
1049
+ rb_define_method(cView, "density=", RUBY_METHOD_FUNC(set_density), 1);
1050
+ rb_define_method(cView, "density", RUBY_METHOD_FUNC(get_density), 0);
1051
+ rb_define_method(cView, "friction=", RUBY_METHOD_FUNC(set_friction), 1);
1052
+ rb_define_method(cView, "friction", RUBY_METHOD_FUNC(get_friction), 0);
1053
+ rb_define_method(cView, "restitution=", RUBY_METHOD_FUNC(set_restitution), 1);
1054
+ rb_define_method(cView, "restitution", RUBY_METHOD_FUNC(get_restitution), 0);
1055
+ rb_define_method(cView, "sensor=", RUBY_METHOD_FUNC(set_sensor), 1);
1056
+ cView.define_method("sensor?", is_sensor);
1057
+ rb_define_private_method(cView, "set_category_bits", RUBY_METHOD_FUNC(set_category_bits), 1);
1058
+ rb_define_private_method(cView, "get_category_bits", RUBY_METHOD_FUNC(get_category_bits), 0);
1059
+ rb_define_private_method(cView, "set_collision_mask", RUBY_METHOD_FUNC(set_collision_mask), 1);
1060
+ rb_define_private_method(cView, "get_collision_mask", RUBY_METHOD_FUNC(get_collision_mask), 0);
1061
+ rb_define_method(cView, "linear_velocity=", RUBY_METHOD_FUNC(set_linear_velocity), -1);
1062
+ rb_define_method(cView, "linear_velocity", RUBY_METHOD_FUNC(get_linear_velocity), 0);
1063
+ rb_define_method(cView, "angular_velocity=", RUBY_METHOD_FUNC(set_angular_velocity), 1);
1064
+ rb_define_method(cView, "angular_velocity", RUBY_METHOD_FUNC(get_angular_velocity), 0);
1065
+ rb_define_method(cView, "gravity_scale=", RUBY_METHOD_FUNC(set_gravity_scale), 1);
1066
+ rb_define_method(cView, "gravity_scale", RUBY_METHOD_FUNC(get_gravity_scale), 0);
1067
+
1068
+ rb_define_method(cView, "update_physics", RUBY_METHOD_FUNC(update_physics), -1);
670
1069
  rb_define_method(cView, "meter2pixel", RUBY_METHOD_FUNC(meter2pixel), -1);
671
- rb_define_method(cView, "set_gravity", RUBY_METHOD_FUNC(set_gravity), 2);
1070
+ rb_define_method(cView, "gravity=", RUBY_METHOD_FUNC(set_gravity), -1);
672
1071
  rb_define_method(cView, "gravity", RUBY_METHOD_FUNC(get_gravity), 0);
1072
+ rb_define_method(cView, "time_scale=", RUBY_METHOD_FUNC(set_time_scale), 1);
1073
+ rb_define_method(cView, "time_scale", RUBY_METHOD_FUNC(get_time_scale), 0);
673
1074
  rb_define_method(cView, "wall", RUBY_METHOD_FUNC(wall), 0);
674
1075
  rb_define_method(cView, "debug=", RUBY_METHOD_FUNC(set_debug), 1);
675
- cView.define_method("debug?", debugging);
1076
+ cView.define_method("debug?", get_debug);
1077
+
676
1078
  rb_define_method(cView, "on_attach", RUBY_METHOD_FUNC(on_attach), 1);
677
1079
  rb_define_method(cView, "on_detach", RUBY_METHOD_FUNC(on_detach), 1);
678
1080
  rb_define_method(cView, "on_show", RUBY_METHOD_FUNC(on_show), 1);
@@ -684,7 +1086,6 @@ Init_view ()
684
1086
  rb_define_method(cView, "on_rotate", RUBY_METHOD_FUNC(on_rotate), 1);
685
1087
  rb_define_method(cView, "on_scroll", RUBY_METHOD_FUNC(on_scroll), 1);
686
1088
  rb_define_method(cView, "on_focus", RUBY_METHOD_FUNC(on_focus), 1);
687
- rb_define_method(cView, "on_blur", RUBY_METHOD_FUNC(on_blur), 1);
688
1089
  rb_define_method(cView, "on_key", RUBY_METHOD_FUNC(on_key), 1);
689
1090
  rb_define_method(cView, "on_key_down", RUBY_METHOD_FUNC(on_key_down), 1);
690
1091
  rb_define_method(cView, "on_key_up", RUBY_METHOD_FUNC(on_key_up), 1);
@@ -694,14 +1095,17 @@ Init_view ()
694
1095
  rb_define_method(cView, "on_pointer_move", RUBY_METHOD_FUNC(on_pointer_move), 1);
695
1096
  rb_define_method(cView, "on_wheel", RUBY_METHOD_FUNC(on_wheel), 1);
696
1097
  rb_define_method(cView, "on_capture", RUBY_METHOD_FUNC(on_capture), 1);
697
- rb_define_method(cView, "on_contact", RUBY_METHOD_FUNC(on_contact), 1);
698
- rb_define_method(cView, "on_contact_begin", RUBY_METHOD_FUNC(on_contact_begin), 1);
699
- rb_define_method(cView, "on_contact_end", RUBY_METHOD_FUNC(on_contact_end), 1);
700
- cView.define_const("CAPTURE_NONE", Reflex::View::CAPTURE_NONE);
701
- cView.define_const("CAPTURE_KEY", Reflex::View::CAPTURE_KEY);
702
- cView.define_const("CAPTURE_POINTER", Reflex::View::CAPTURE_POINTER);
703
- cView.define_const("CAPTURE_ALL", Reflex::View::CAPTURE_ALL);
704
-
1098
+ rb_define_method(cView, "on_timer", RUBY_METHOD_FUNC(on_timer), 1);
1099
+ cView.define_private_method("call_contact!", on_contact);
1100
+ cView.define_private_method("call_contact_begin!", on_contact_begin);
1101
+ cView.define_private_method("call_contact_end!", on_contact_end);
1102
+
1103
+ cView.define_const("CAPTURE_NONE", Reflex::View::CAPTURE_NONE);
1104
+ cView.define_const("CAPTURE_KEY", Reflex::View::CAPTURE_KEY);
1105
+ cView.define_const("CAPTURE_POINTER", Reflex::View::CAPTURE_POINTER);
1106
+ cView.define_const("CAPTURE_ALL", Reflex::View::CAPTURE_ALL);
1107
+
1108
+ define_selector_methods<Reflex::View>(cView);
705
1109
  }
706
1110
 
707
1111