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
@@ -0,0 +1,211 @@
1
+ #include "reflex/ruby/shape.h"
2
+
3
+
4
+ #include <rays/ruby/bounds.h>
5
+ #include "reflex/exception.h"
6
+ #include "reflex/ruby/view.h"
7
+ #include "defs.h"
8
+ #include "selector.h"
9
+
10
+
11
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::Shape)
12
+
13
+ #define THIS to<Reflex::Shape*>(self)
14
+
15
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Shape, self)
16
+
17
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
18
+
19
+
20
+ static
21
+ VALUE alloc(VALUE klass)
22
+ {
23
+ Reflex::reflex_error(__FILE__, __LINE__, "can not instantiate Shape class.");
24
+ }
25
+
26
+ static
27
+ VALUE owner(VALUE self)
28
+ {
29
+ CHECK;
30
+ return value(THIS->owner());
31
+ }
32
+
33
+ static
34
+ VALUE set_frame(VALUE self)
35
+ {
36
+ CHECK;
37
+ THIS->set_frame(to<Rays::Bounds>(argc, argv));
38
+ return value(THIS->frame());
39
+ }
40
+
41
+ static
42
+ VALUE get_frame(VALUE self)
43
+ {
44
+ CHECK;
45
+ return value(THIS->frame());
46
+ }
47
+
48
+ static
49
+ VALUE set_density(VALUE self, VALUE density)
50
+ {
51
+ CHECK;
52
+ THIS->set_density(to<float>(density));
53
+ return density;
54
+ }
55
+
56
+ static
57
+ VALUE get_density(VALUE self)
58
+ {
59
+ CHECK;
60
+ return value(THIS->density());
61
+ }
62
+
63
+ static
64
+ VALUE set_friction(VALUE self, VALUE friction)
65
+ {
66
+ CHECK;
67
+ THIS->set_friction(to<float>(friction));
68
+ return friction;
69
+ }
70
+
71
+ static
72
+ VALUE get_friction(VALUE self)
73
+ {
74
+ CHECK;
75
+ return value(THIS->friction());
76
+ }
77
+
78
+ static
79
+ VALUE set_restitution(VALUE self, VALUE restitution)
80
+ {
81
+ CHECK;
82
+ THIS->set_restitution(to<float>(restitution));
83
+ return restitution;
84
+ }
85
+
86
+ static
87
+ VALUE get_restitution(VALUE self)
88
+ {
89
+ CHECK;
90
+ return value(THIS->restitution());
91
+ }
92
+
93
+ static
94
+ VALUE set_sensor(VALUE self, VALUE state)
95
+ {
96
+ CHECK;
97
+ THIS->set_sensor(state);
98
+ return state;
99
+ }
100
+
101
+ static
102
+ VALUE is_sensor(VALUE self)
103
+ {
104
+ CHECK;
105
+ return value(THIS->is_sensor());
106
+ }
107
+
108
+ static
109
+ VALUE set_category_bits(VALUE self, VALUE bits)
110
+ {
111
+ CHECK;
112
+ THIS->set_category_bits(to<uint>(bits));
113
+ return bits;
114
+ }
115
+
116
+ static
117
+ VALUE get_category_bits(VALUE self)
118
+ {
119
+ CHECK;
120
+ return value(THIS->category_bits());
121
+ }
122
+
123
+ static
124
+ VALUE set_collision_mask(VALUE self, VALUE mask)
125
+ {
126
+ CHECK;
127
+ THIS->set_collision_mask(to<uint>(mask));
128
+ return mask;
129
+ }
130
+
131
+ static
132
+ VALUE get_collision_mask(VALUE self)
133
+ {
134
+ CHECK;
135
+ return value(THIS->collision_mask());
136
+ }
137
+
138
+ static
139
+ VALUE on_draw(VALUE self, VALUE event)
140
+ {
141
+ CHECK;
142
+ CALL(on_draw(to<Reflex::DrawEvent*>(event)));
143
+ }
144
+
145
+ static
146
+ VALUE on_contact(VALUE self, VALUE event)
147
+ {
148
+ CHECK;
149
+ CALL(on_contact(to<Reflex::ContactEvent*>(event)));
150
+ }
151
+
152
+ static
153
+ VALUE on_contact_begin(VALUE self, VALUE event)
154
+ {
155
+ CHECK;
156
+ CALL(on_contact_begin(to<Reflex::ContactEvent*>(event)));
157
+ }
158
+
159
+ static
160
+ VALUE on_contact_end(VALUE self, VALUE event)
161
+ {
162
+ CHECK;
163
+ CALL(on_contact_end(to<Reflex::ContactEvent*>(event)));
164
+ }
165
+
166
+
167
+ static Class cShape;
168
+
169
+ void
170
+ Init_shape ()
171
+ {
172
+ Module mReflex = rb_define_module("Reflex");
173
+
174
+ cShape = rb_define_class_under(mReflex, "Shape", rb_cObject);
175
+ rb_define_alloc_func(cShape, alloc);
176
+ rb_define_method(cShape, "owner", RUBY_METHOD_FUNC(owner), 0);
177
+ rb_define_method(cShape, "frame=", RUBY_METHOD_FUNC(set_frame), -1);
178
+ rb_define_method(cShape, "frame", RUBY_METHOD_FUNC(get_frame), 0);
179
+ rb_define_method(cShape, "density=", RUBY_METHOD_FUNC(set_density), 1);
180
+ rb_define_method(cShape, "density", RUBY_METHOD_FUNC(get_density), 0);
181
+ rb_define_method(cShape, "friction=", RUBY_METHOD_FUNC(set_friction), 1);
182
+ rb_define_method(cShape, "friction", RUBY_METHOD_FUNC(get_friction), 0);
183
+ rb_define_method(cShape, "restitution=", RUBY_METHOD_FUNC(set_restitution), 1);
184
+ rb_define_method(cShape, "restitution", RUBY_METHOD_FUNC(get_restitution), 0);
185
+ rb_define_method(cShape, "sensor=", RUBY_METHOD_FUNC(set_sensor), 1);
186
+ rb_define_method(cShape, "sensor", RUBY_METHOD_FUNC(is_sensor), 0);
187
+ rb_define_method(cShape, "category_bits=", RUBY_METHOD_FUNC(set_category_bits), 1);
188
+ rb_define_method(cShape, "category_bits", RUBY_METHOD_FUNC(get_category_bits), 0);
189
+ rb_define_method(cShape, "collision_mask=", RUBY_METHOD_FUNC(set_collision_mask), 1);
190
+ rb_define_method(cShape, "collision_mask", RUBY_METHOD_FUNC(get_collision_mask), 0);
191
+ rb_define_method(cShape, "on_draw", RUBY_METHOD_FUNC(on_draw), 1);
192
+ cShape.define_private_method("call_contact!", on_contact);
193
+ cShape.define_private_method("call_contact_begin!", on_contact_begin);
194
+ cShape.define_private_method("call_contact_end!", on_contact_end);
195
+
196
+ define_selector_methods<Reflex::Shape>(cShape);
197
+ }
198
+
199
+
200
+ namespace Reflex
201
+ {
202
+
203
+
204
+ Class
205
+ shape_class ()
206
+ {
207
+ return cShape;
208
+ }
209
+
210
+
211
+ }// Reflex
@@ -1,21 +1,19 @@
1
1
  #include "reflex/ruby/style.h"
2
2
 
3
3
 
4
- #include <rucy.h>
5
4
  #include "rays/ruby/color.h"
6
5
  #include "rays/ruby/image.h"
7
6
  #include "reflex/ruby/selector.h"
8
7
  #include "defs.h"
9
-
10
-
11
- using namespace Rucy;
8
+ #include "selector.h"
12
9
 
13
10
 
14
11
  RUCY_DEFINE_VALUE_FROM_TO(Reflex::Style)
15
12
 
16
- #define THIS to<Reflex::Style*>(self)
13
+ #define THIS to< Reflex::Style*>(self)
14
+ #define C_THIS to<const Reflex::Style*>(self)
17
15
 
18
- #define CHECK RUCY_CHECK_OBJ(Reflex::Style, self)
16
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Style, self)
19
17
 
20
18
 
21
19
  static
@@ -32,75 +30,34 @@ VALUE initialize_copy(VALUE self, VALUE obj)
32
30
  return self;
33
31
  }
34
32
 
35
- static
36
- VALUE set_name(VALUE self, VALUE name)
37
- {
38
- CHECK;
39
- THIS->set_name(name.is_nil() ? NULL : name.c_str());
40
- }
41
-
42
- static
43
- VALUE get_name(VALUE self)
44
- {
45
- CHECK;
46
- return THIS->name() ? value(THIS->name()) : nil();
47
- }
48
-
49
- static
50
- VALUE add_tag(VALUE self, VALUE tag)
51
- {
52
- CHECK;
53
- THIS->add_tag(tag.c_str());
54
- }
55
-
56
- static
57
- VALUE remove_tag(VALUE self, VALUE tag)
58
- {
59
- CHECK;
60
- THIS->remove_tag(tag.c_str());
61
- }
62
-
63
- static
64
- VALUE each_tag(VALUE self)
65
- {
66
- CHECK;
67
-
68
- Value ret;
69
- Reflex::Style::tag_iterator end = THIS->tag_end();
70
- for (Reflex::Style::tag_iterator it = THIS->tag_begin(); it != end; ++it)
71
- ret = rb_yield(value(*it));
72
- return ret;
73
- }
74
-
75
- static
76
- VALUE set_selector(VALUE self, VALUE selector)
77
- {
78
- CHECK;
79
- THIS->set_selector(to<Reflex::Selector>(selector));
80
- }
81
-
82
- static
83
- VALUE get_selector(VALUE self)
84
- {
85
- CHECK;
86
- return value(THIS->selector());
87
- }
88
-
89
33
  static
90
34
  VALUE set_flow(VALUE self)
91
35
  {
92
36
  CHECK;
93
37
  check_arg_count(__FILE__, __LINE__, "Style#set_flow", argc, 1, 2);
94
38
 
95
- THIS->set_flow(
96
- (Reflex::Style::Flow) argv[0].as_i(),
97
- argc >= 2 ? (Reflex::Style::Flow) argv[1].as_i() : Reflex::Style::FLOW_NONE);
39
+ if (argv[0].is_nil())
40
+ {
41
+ if (argc >= 2 && !argv[1].is_nil())
42
+ argument_error(__FILE__, __LINE__);
43
+
44
+ THIS->clear_flow();
45
+ }
46
+ else
47
+ {
48
+ THIS->set_flow(
49
+ (Reflex::Style::Flow) to<int>(argv[0]),
50
+ argc >= 2 ? (Reflex::Style::Flow) to<int>(argv[1]) : Reflex::Style::FLOW_NONE);
51
+ }
52
+
53
+ return value(argc, argv);
98
54
  }
99
55
 
100
56
  static
101
57
  VALUE get_flow(VALUE self)
102
58
  {
103
59
  CHECK;
60
+
104
61
  Reflex::Style::Flow main, sub;
105
62
  THIS->get_flow(&main, &sub);
106
63
  return array(main, sub);
@@ -110,7 +67,13 @@ static
110
67
  VALUE set_width(VALUE self, VALUE width)
111
68
  {
112
69
  CHECK;
113
- THIS->set_width(to<Reflex::StyleLength>(width));
70
+
71
+ if (width.is_nil())
72
+ THIS->clear_width();
73
+ else
74
+ THIS->set_width(to<Reflex::StyleLength>(width));
75
+
76
+ return width;
114
77
  }
115
78
 
116
79
  static
@@ -124,7 +87,13 @@ static
124
87
  VALUE set_height(VALUE self, VALUE height)
125
88
  {
126
89
  CHECK;
127
- THIS->set_height(to<Reflex::StyleLength>(height));
90
+
91
+ if (height.is_nil())
92
+ THIS->clear_height();
93
+ else
94
+ THIS->set_height(to<Reflex::StyleLength>(height));
95
+
96
+ return height;
128
97
  }
129
98
 
130
99
  static
@@ -140,22 +109,32 @@ VALUE set_size(VALUE self)
140
109
  CHECK;
141
110
  check_arg_count(__FILE__, __LINE__, "Style#set_size", argc, 1, 2);
142
111
 
143
- set_width (self, argv[0]);
112
+ set_width( self, argv[0]);
144
113
  set_height(self, argc >= 2 ? argv[1] : argv[0]);
114
+
115
+ return value(argc, argv);
145
116
  }
146
117
 
147
118
  static
148
119
  VALUE get_size(VALUE self)
149
120
  {
150
121
  CHECK;
151
- return array(get_width(self), get_height(self));
122
+ return array(
123
+ get_width(self),
124
+ get_height(self));
152
125
  }
153
126
 
154
127
  static
155
128
  VALUE set_left(VALUE self, VALUE left)
156
129
  {
157
130
  CHECK;
158
- THIS->set_left(to<Reflex::StyleLength>(left));
131
+
132
+ if (left.is_nil())
133
+ THIS->clear_left();
134
+ else
135
+ THIS->set_left(to<Reflex::StyleLength>(left));
136
+
137
+ return left;
159
138
  }
160
139
 
161
140
  static
@@ -169,7 +148,13 @@ static
169
148
  VALUE set_top(VALUE self, VALUE top)
170
149
  {
171
150
  CHECK;
172
- THIS->set_top(to<Reflex::StyleLength>(top));
151
+
152
+ if (top.is_nil())
153
+ THIS->clear_top();
154
+ else
155
+ THIS->set_top(to<Reflex::StyleLength>(top));
156
+
157
+ return top;
173
158
  }
174
159
 
175
160
  static
@@ -183,7 +168,13 @@ static
183
168
  VALUE set_right(VALUE self, VALUE right)
184
169
  {
185
170
  CHECK;
186
- THIS->set_right(to<Reflex::StyleLength>(right));
171
+
172
+ if (right.is_nil())
173
+ THIS->clear_right();
174
+ else
175
+ THIS->set_right(to<Reflex::StyleLength>(right));
176
+
177
+ return right;
187
178
  }
188
179
 
189
180
  static
@@ -197,7 +188,13 @@ static
197
188
  VALUE set_bottom(VALUE self, VALUE bottom)
198
189
  {
199
190
  CHECK;
200
- THIS->set_bottom(to<Reflex::StyleLength>(bottom));
191
+
192
+ if (bottom.is_nil())
193
+ THIS->clear_bottom();
194
+ else
195
+ THIS->set_bottom(to<Reflex::StyleLength>(bottom));
196
+
197
+ return bottom;
201
198
  }
202
199
 
203
200
  static
@@ -211,10 +208,13 @@ static
211
208
  VALUE set_position(VALUE self, VALUE left, VALUE top, VALUE right, VALUE bottom)
212
209
  {
213
210
  CHECK;
214
- set_left (self, left);
215
- set_top (self, top);
216
- set_right (self, right);
211
+
212
+ set_left( self, left);
213
+ set_top( self, top);
214
+ set_right( self, right);
217
215
  set_bottom(self, bottom);
216
+
217
+ return array(left, top, right, bottom);
218
218
  }
219
219
 
220
220
  static
@@ -229,269 +229,444 @@ VALUE get_position(VALUE self)
229
229
  }
230
230
 
231
231
  static
232
- VALUE set_offset_left(VALUE self, VALUE left)
232
+ VALUE set_margin_left(VALUE self, VALUE left)
233
233
  {
234
234
  CHECK;
235
- THIS->set_offset_left(to<Reflex::StyleLength>(left));
235
+
236
+ if (left.is_nil())
237
+ THIS->clear_margin_left();
238
+ else
239
+ THIS->set_margin_left(to<Reflex::StyleLength>(left));
240
+
241
+ return left;
236
242
  }
237
243
 
238
244
  static
239
- VALUE get_offset_left(VALUE self)
245
+ VALUE get_margin_left(VALUE self)
240
246
  {
241
247
  CHECK;
242
- return value(THIS->offset_left());
248
+ return value(THIS->margin_left());
243
249
  }
244
250
 
245
251
  static
246
- VALUE set_offset_top(VALUE self, VALUE top)
252
+ VALUE set_margin_top(VALUE self, VALUE top)
247
253
  {
248
254
  CHECK;
249
- THIS->set_offset_top(to<Reflex::StyleLength>(top));
255
+
256
+ if (top.is_nil())
257
+ THIS->clear_margin_top();
258
+ else
259
+ THIS->set_margin_top(to<Reflex::StyleLength>(top));
260
+
261
+ return top;
250
262
  }
251
263
 
252
264
  static
253
- VALUE get_offset_top(VALUE self)
265
+ VALUE get_margin_top(VALUE self)
254
266
  {
255
267
  CHECK;
256
- return value(THIS->offset_top());
268
+ return value(THIS->margin_top());
257
269
  }
258
270
 
259
271
  static
260
- VALUE set_offset_right(VALUE self, VALUE right)
272
+ VALUE set_margin_right(VALUE self, VALUE right)
261
273
  {
262
274
  CHECK;
263
- THIS->set_offset_right(to<Reflex::StyleLength>(right));
275
+
276
+ if (right.is_nil())
277
+ THIS->clear_margin_right();
278
+ else
279
+ THIS->set_margin_right(to<Reflex::StyleLength>(right));
280
+
281
+ return right;
264
282
  }
265
283
 
266
284
  static
267
- VALUE get_offset_right(VALUE self)
285
+ VALUE get_margin_right(VALUE self)
268
286
  {
269
287
  CHECK;
270
- return value(THIS->offset_right());
288
+ return value(THIS->margin_right());
271
289
  }
272
290
 
273
291
  static
274
- VALUE set_offset_bottom(VALUE self, VALUE bottom)
292
+ VALUE set_margin_bottom(VALUE self, VALUE bottom)
275
293
  {
276
294
  CHECK;
277
- THIS->set_offset_bottom(to<Reflex::StyleLength>(bottom));
295
+
296
+ if (bottom.is_nil())
297
+ THIS->clear_margin_bottom();
298
+ else
299
+ THIS->set_margin_bottom(to<Reflex::StyleLength>(bottom));
300
+
301
+ return bottom;
278
302
  }
279
303
 
280
304
  static
281
- VALUE get_offset_bottom(VALUE self)
305
+ VALUE get_margin_bottom(VALUE self)
282
306
  {
283
307
  CHECK;
284
- return value(THIS->offset_bottom());
308
+ return value(THIS->margin_bottom());
285
309
  }
286
310
 
287
311
  static
288
- VALUE set_offset(VALUE self, VALUE left, VALUE top, VALUE right, VALUE bottom)
312
+ VALUE set_margin(VALUE self, VALUE left, VALUE top, VALUE right, VALUE bottom)
289
313
  {
290
314
  CHECK;
291
- set_offset_left (self, left);
292
- set_offset_top (self, top);
293
- set_offset_right (self, right);
294
- set_offset_bottom(self, bottom);
315
+
316
+ set_margin_left( self, left);
317
+ set_margin_top( self, top);
318
+ set_margin_right( self, right);
319
+ set_margin_bottom(self, bottom);
320
+
321
+ return array(left, top, right, bottom);
295
322
  }
296
323
 
297
324
  static
298
- VALUE get_offset(VALUE self)
325
+ VALUE get_margin(VALUE self)
299
326
  {
300
327
  CHECK;
301
328
  return array(
302
- get_offset_left(self),
303
- get_offset_top(self),
304
- get_offset_right(self),
305
- get_offset_bottom(self));
329
+ get_margin_left(self),
330
+ get_margin_top(self),
331
+ get_margin_right(self),
332
+ get_margin_bottom(self));
306
333
  }
307
334
 
308
335
  static
309
- VALUE set_margin_left(VALUE self, VALUE left)
336
+ VALUE set_padding_left(VALUE self, VALUE left)
310
337
  {
311
338
  CHECK;
312
- THIS->set_margin_left(to<Reflex::StyleLength>(left));
339
+
340
+ if (left.is_nil())
341
+ THIS->clear_padding_left();
342
+ else
343
+ THIS->set_padding_left(to<Reflex::StyleLength>(left));
344
+
345
+ return left;
313
346
  }
314
347
 
315
348
  static
316
- VALUE get_margin_left(VALUE self)
349
+ VALUE get_padding_left(VALUE self)
317
350
  {
318
351
  CHECK;
319
- return value(THIS->margin_left());
352
+ return value(THIS->padding_left());
320
353
  }
321
354
 
322
355
  static
323
- VALUE set_margin_top(VALUE self, VALUE top)
356
+ VALUE set_padding_top(VALUE self, VALUE top)
324
357
  {
325
358
  CHECK;
326
- THIS->set_margin_top(to<Reflex::StyleLength>(top));
359
+
360
+ if (top.is_nil())
361
+ THIS->clear_padding_top();
362
+ else
363
+ THIS->set_padding_top(to<Reflex::StyleLength>(top));
364
+
365
+ return top;
327
366
  }
328
367
 
329
368
  static
330
- VALUE get_margin_top(VALUE self)
369
+ VALUE get_padding_top(VALUE self)
331
370
  {
332
371
  CHECK;
333
- return value(THIS->margin_top());
372
+ return value(THIS->padding_top());
334
373
  }
335
374
 
336
375
  static
337
- VALUE set_margin_right(VALUE self, VALUE right)
376
+ VALUE set_padding_right(VALUE self, VALUE right)
338
377
  {
339
378
  CHECK;
340
- THIS->set_margin_right(to<Reflex::StyleLength>(right));
379
+
380
+ if (right.is_nil())
381
+ THIS->clear_padding_right();
382
+ else
383
+ THIS->set_padding_right(to<Reflex::StyleLength>(right));
384
+
385
+ return right;
341
386
  }
342
387
 
343
388
  static
344
- VALUE get_margin_right(VALUE self)
389
+ VALUE get_padding_right(VALUE self)
345
390
  {
346
391
  CHECK;
347
- return value(THIS->margin_right());
392
+ return value(THIS->padding_right());
348
393
  }
349
394
 
350
395
  static
351
- VALUE set_margin_bottom(VALUE self, VALUE bottom)
396
+ VALUE set_padding_bottom(VALUE self, VALUE bottom)
352
397
  {
353
398
  CHECK;
354
- THIS->set_margin_bottom(to<Reflex::StyleLength>(bottom));
399
+
400
+ if (bottom.is_nil())
401
+ THIS->clear_padding_bottom();
402
+ else
403
+ THIS->set_padding_bottom(to<Reflex::StyleLength>(bottom));
404
+
405
+ return bottom;
355
406
  }
356
407
 
357
408
  static
358
- VALUE get_margin_bottom(VALUE self)
409
+ VALUE get_padding_bottom(VALUE self)
359
410
  {
360
411
  CHECK;
361
- return value(THIS->margin_bottom());
412
+ return value(THIS->padding_bottom());
362
413
  }
363
414
 
364
415
  static
365
- VALUE set_margin(VALUE self, VALUE left, VALUE top, VALUE right, VALUE bottom)
416
+ VALUE set_padding(VALUE self, VALUE left, VALUE top, VALUE right, VALUE bottom)
366
417
  {
367
418
  CHECK;
368
- set_margin_left (self, left);
369
- set_margin_top (self, top);
370
- set_margin_right (self, right);
371
- set_margin_bottom(self, bottom);
419
+
420
+ set_padding_left( self, left);
421
+ set_padding_top( self, top);
422
+ set_padding_right( self, right);
423
+ set_padding_bottom(self, bottom);
424
+
425
+ return array(left, top, right, bottom);
372
426
  }
373
427
 
374
428
  static
375
- VALUE get_margin(VALUE self)
429
+ VALUE get_padding(VALUE self)
376
430
  {
377
431
  CHECK;
378
432
  return array(
379
- get_margin_left(self),
380
- get_margin_top(self),
381
- get_margin_right(self),
382
- get_margin_bottom(self));
433
+ get_padding_left(self),
434
+ get_padding_top(self),
435
+ get_padding_right(self),
436
+ get_padding_bottom(self));
383
437
  }
384
438
 
385
439
  static
386
- VALUE set_padding_left(VALUE self, VALUE left)
440
+ VALUE set_center_x(VALUE self, VALUE x)
387
441
  {
388
442
  CHECK;
389
- THIS->set_padding_left(to<Reflex::StyleLength>(left));
443
+
444
+ if (x.is_nil())
445
+ THIS->clear_center_x();
446
+ else
447
+ THIS->set_center_x(to<Reflex::StyleLength>(x));
448
+
449
+ return x;
390
450
  }
391
451
 
392
452
  static
393
- VALUE get_padding_left(VALUE self)
453
+ VALUE get_center_x(VALUE self)
394
454
  {
395
455
  CHECK;
396
- return value(THIS->padding_left());
456
+ return value(THIS->center_x());
397
457
  }
398
458
 
399
459
  static
400
- VALUE set_padding_top(VALUE self, VALUE top)
460
+ VALUE set_center_y(VALUE self, VALUE y)
401
461
  {
402
462
  CHECK;
403
- THIS->set_padding_top(to<Reflex::StyleLength>(top));
463
+
464
+ if (y.is_nil())
465
+ THIS->clear_center_y();
466
+ else
467
+ THIS->set_center_y(to<Reflex::StyleLength>(y));
468
+
469
+ return y;
404
470
  }
405
471
 
406
472
  static
407
- VALUE get_padding_top(VALUE self)
473
+ VALUE get_center_y(VALUE self)
408
474
  {
409
475
  CHECK;
410
- return value(THIS->padding_top());
476
+ return value(THIS->center_y());
411
477
  }
412
478
 
413
479
  static
414
- VALUE set_padding_right(VALUE self, VALUE right)
480
+ VALUE set_center(VALUE self, VALUE x, VALUE y)
415
481
  {
416
482
  CHECK;
417
- THIS->set_padding_right(to<Reflex::StyleLength>(right));
483
+
484
+ set_center_x(self, x);
485
+ set_center_y(self, y);
486
+
487
+ return array(x, y);
418
488
  }
419
489
 
420
490
  static
421
- VALUE get_padding_right(VALUE self)
491
+ VALUE get_center(VALUE self)
422
492
  {
423
493
  CHECK;
424
- return value(THIS->padding_right());
494
+ return array(
495
+ get_center_x(self),
496
+ get_center_y(self));
425
497
  }
426
498
 
427
499
  static
428
- VALUE set_padding_bottom(VALUE self, VALUE bottom)
500
+ VALUE set_foreground_fill(VALUE self)
429
501
  {
430
502
  CHECK;
431
- THIS->set_padding_bottom(to<Reflex::StyleLength>(bottom));
503
+ check_arg_count(
504
+ __FILE__, __LINE__, "Style#set_foreground_fill", argc, 1, 2, 3, 4);
505
+
506
+ if (argv[0].is_nil())
507
+ {
508
+ if (argc != 1)
509
+ argument_error(__FILE__, __LINE__);
510
+
511
+ THIS->clear_foreground_fill();
512
+ return argv[0];
513
+ }
514
+ else
515
+ {
516
+ Reflex::Color color = to<Reflex::Color>(argc, argv);
517
+ THIS->set_foreground_fill(color);
518
+ return value(color);
519
+ }
432
520
  }
433
521
 
434
522
  static
435
- VALUE get_padding_bottom(VALUE self)
523
+ VALUE set_foreground_stroke(VALUE self)
436
524
  {
437
525
  CHECK;
438
- return value(THIS->padding_bottom());
526
+ check_arg_count(
527
+ __FILE__, __LINE__, "Style#set_foreground_stroke", argc, 1, 2, 3, 4);
528
+
529
+ if (argv[0].is_nil())
530
+ {
531
+ if (argc != 1)
532
+ argument_error(__FILE__, __LINE__);
533
+
534
+ THIS->clear_foreground_stroke();
535
+ return argv[0];
536
+ }
537
+ else
538
+ {
539
+ Reflex::Color color = to<Reflex::Color>(argc, argv);
540
+ THIS->set_foreground_stroke(color);
541
+ return value(color);
542
+ }
439
543
  }
440
544
 
441
545
  static
442
- VALUE set_padding(VALUE self, VALUE left, VALUE top, VALUE right, VALUE bottom)
546
+ VALUE set_foreground_stroke_width(VALUE self, VALUE width)
443
547
  {
444
548
  CHECK;
445
- set_padding_left (self, left);
446
- set_padding_top (self, top);
447
- set_padding_right (self, right);
448
- set_padding_bottom(self, bottom);
549
+
550
+ if (width.is_nil())
551
+ THIS->clear_foreground_stroke_width();
552
+ else
553
+ THIS->set_foreground_stroke_width(to<coord>(width));
554
+
555
+ return width;
449
556
  }
450
557
 
451
558
  static
452
- VALUE get_padding(VALUE self)
559
+ VALUE set_background_fill(VALUE self)
453
560
  {
454
561
  CHECK;
455
- return array(
456
- get_padding_left(self),
457
- get_padding_top(self),
458
- get_padding_right(self),
459
- get_padding_bottom(self));
562
+ check_arg_count(
563
+ __FILE__, __LINE__, "Style#set_background_fill", argc, 1, 2, 3, 4);
564
+
565
+ if (argv[0].is_nil())
566
+ {
567
+ if (argc != 1)
568
+ argument_error(__FILE__, __LINE__);
569
+
570
+ THIS->clear_background_fill();
571
+ return argv[0];
572
+ }
573
+ else
574
+ {
575
+ Reflex::Color color = to<Reflex::Color>(argc, argv);
576
+ THIS->set_background_fill(color);
577
+ return value(color);
578
+ }
579
+ }
580
+
581
+ static
582
+ VALUE set_background_stroke(VALUE self)
583
+ {
584
+ CHECK;
585
+ check_arg_count(
586
+ __FILE__, __LINE__, "Style#set_background_stroke", argc, 1, 2, 3, 4);
587
+
588
+ if (argv[0].is_nil())
589
+ {
590
+ if (argc != 1)
591
+ argument_error(__FILE__, __LINE__);
592
+
593
+ THIS->clear_background_stroke();
594
+ return argv[0];
595
+ }
596
+ else
597
+ {
598
+ Reflex::Color color = to<Reflex::Color>(argc, argv);
599
+ THIS->set_background_stroke(color);
600
+ return value(color);
601
+ }
602
+ }
603
+
604
+ static
605
+ VALUE set_background_stroke_width(VALUE self, VALUE width)
606
+ {
607
+ CHECK;
608
+
609
+ if (width.is_nil())
610
+ THIS->clear_background_stroke_width();
611
+ else
612
+ THIS->set_background_stroke_width(to<coord>(width));
613
+
614
+ return width;
460
615
  }
461
616
 
462
617
  static
463
- VALUE set_fill(VALUE self, VALUE color)
618
+ VALUE get_foreground_fill(VALUE self)
464
619
  {
465
620
  CHECK;
466
- THIS->set_fill(to<Reflex::Color&>(color));
621
+ return value(THIS->foreground_fill());
467
622
  }
468
623
 
469
624
  static
470
- VALUE get_fill(VALUE self)
625
+ VALUE get_foreground_stroke(VALUE self)
471
626
  {
472
627
  CHECK;
473
- return value(THIS->fill());
628
+ return value(THIS->foreground_stroke());
474
629
  }
475
630
 
476
631
  static
477
- VALUE set_stroke(VALUE self, VALUE color)
632
+ VALUE get_foreground_stroke_width(VALUE self)
478
633
  {
479
634
  CHECK;
480
- THIS->set_stroke(to<Reflex::Color&>(color));
635
+ return value(THIS->foreground_stroke_width());
481
636
  }
482
637
 
483
638
  static
484
- VALUE get_stroke(VALUE self)
639
+ VALUE get_background_fill(VALUE self)
485
640
  {
486
641
  CHECK;
487
- return value(THIS->stroke());
642
+ return value(THIS->background_fill());
643
+ }
644
+
645
+ static
646
+ VALUE get_background_stroke(VALUE self)
647
+ {
648
+ CHECK;
649
+ return value(THIS->background_stroke());
650
+ }
651
+
652
+ static
653
+ VALUE get_background_stroke_width(VALUE self)
654
+ {
655
+ CHECK;
656
+ return value(THIS->background_stroke_width());
488
657
  }
489
658
 
490
659
  static
491
660
  VALUE set_image(VALUE self, VALUE image)
492
661
  {
493
662
  CHECK;
494
- THIS->set_image(to<Reflex::Image&>(image));
663
+
664
+ if (image.is_nil())
665
+ THIS->clear_image();
666
+ else
667
+ THIS->set_image(to<Reflex::Image&>(image));
668
+
669
+ return image;
495
670
  }
496
671
 
497
672
  static
@@ -520,14 +695,6 @@ Init_style ()
520
695
  rb_define_alloc_func(cStyle, alloc);
521
696
  rb_define_private_method(cStyle, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
522
697
 
523
- rb_define_method(cStyle, "name=", RUBY_METHOD_FUNC(set_name), 1);
524
- rb_define_method(cStyle, "name", RUBY_METHOD_FUNC(get_name), 0);
525
- rb_define_method(cStyle, "add_tag", RUBY_METHOD_FUNC(add_tag), 1);
526
- rb_define_method(cStyle, "remove_tag", RUBY_METHOD_FUNC(remove_tag), 1);
527
- rb_define_method(cStyle, "each_tag", RUBY_METHOD_FUNC(each_tag), 0);
528
- rb_define_method(cStyle, "selector=", RUBY_METHOD_FUNC(set_selector), 1);
529
- rb_define_method(cStyle, "selector", RUBY_METHOD_FUNC(get_selector), 0);
530
-
531
698
  rb_define_method(cStyle, "set_flow", RUBY_METHOD_FUNC(set_flow), -1);
532
699
  rb_define_method(cStyle, "get_flow", RUBY_METHOD_FUNC(get_flow), 0);
533
700
 
@@ -549,17 +716,6 @@ Init_style ()
549
716
  rb_define_method(cStyle, "position=", RUBY_METHOD_FUNC(set_position), 4);
550
717
  rb_define_method(cStyle, "position", RUBY_METHOD_FUNC(get_position), 0);
551
718
 
552
- rb_define_method(cStyle, "offset_left=", RUBY_METHOD_FUNC(set_offset_left), 1);
553
- rb_define_method(cStyle, "offset_left", RUBY_METHOD_FUNC(get_offset_left), 0);
554
- rb_define_method(cStyle, "offset_top=", RUBY_METHOD_FUNC(set_offset_top), 1);
555
- rb_define_method(cStyle, "offset_top", RUBY_METHOD_FUNC(get_offset_top), 0);
556
- rb_define_method(cStyle, "offset_right=", RUBY_METHOD_FUNC(set_offset_right), 1);
557
- rb_define_method(cStyle, "offset_right", RUBY_METHOD_FUNC(get_offset_right), 0);
558
- rb_define_method(cStyle, "offset_bottom=", RUBY_METHOD_FUNC(set_offset_bottom), 1);
559
- rb_define_method(cStyle, "offset_bottom", RUBY_METHOD_FUNC(get_offset_bottom), 0);
560
- rb_define_method(cStyle, "offset=", RUBY_METHOD_FUNC(set_offset), 4);
561
- rb_define_method(cStyle, "offset", RUBY_METHOD_FUNC(get_offset), 0);
562
-
563
719
  rb_define_method(cStyle, "margin_left=", RUBY_METHOD_FUNC(set_margin_left), 1);
564
720
  rb_define_method(cStyle, "margin_left", RUBY_METHOD_FUNC(get_margin_left), 0);
565
721
  rb_define_method(cStyle, "margin_top=", RUBY_METHOD_FUNC(set_margin_top), 1);
@@ -582,20 +738,38 @@ Init_style ()
582
738
  rb_define_method(cStyle, "padding=", RUBY_METHOD_FUNC(set_padding), 4);
583
739
  rb_define_method(cStyle, "padding", RUBY_METHOD_FUNC(get_padding), 0);
584
740
 
585
- rb_define_method(cStyle, "fill=", RUBY_METHOD_FUNC(set_fill), 1);
586
- rb_define_method(cStyle, "fill", RUBY_METHOD_FUNC(get_fill), 0);
587
- rb_define_method(cStyle, "stroke=", RUBY_METHOD_FUNC(set_stroke), 1);
588
- rb_define_method(cStyle, "stroke", RUBY_METHOD_FUNC(get_stroke), 0);
741
+ rb_define_method(cStyle, "center_x=", RUBY_METHOD_FUNC(set_center_x), 1);
742
+ rb_define_method(cStyle, "center_x", RUBY_METHOD_FUNC(get_center_x), 0);
743
+ rb_define_method(cStyle, "center_y=", RUBY_METHOD_FUNC(set_center_y), 1);
744
+ rb_define_method(cStyle, "center_y", RUBY_METHOD_FUNC(get_center_y), 0);
745
+ rb_define_method(cStyle, "center=", RUBY_METHOD_FUNC(set_center), 2);
746
+ rb_define_method(cStyle, "center", RUBY_METHOD_FUNC(get_center), 0);
747
+
748
+ rb_define_method(cStyle, "foreground_fill=", RUBY_METHOD_FUNC(set_foreground_fill), -1);
749
+ rb_define_method(cStyle, "foreground_fill", RUBY_METHOD_FUNC(get_foreground_fill), 0);
750
+ rb_define_method(cStyle, "foreground_stroke=", RUBY_METHOD_FUNC(set_foreground_stroke), -1);
751
+ rb_define_method(cStyle, "foreground_stroke", RUBY_METHOD_FUNC(get_foreground_stroke), 0);
752
+ rb_define_method(cStyle, "foreground_stroke_width=", RUBY_METHOD_FUNC(set_foreground_stroke_width), 1);
753
+ rb_define_method(cStyle, "foreground_stroke_width", RUBY_METHOD_FUNC(get_foreground_stroke_width), 0);
754
+ rb_define_method(cStyle, "background_fill=", RUBY_METHOD_FUNC(set_background_fill), -1);
755
+ rb_define_method(cStyle, "background_fill", RUBY_METHOD_FUNC(get_background_fill), 0);
756
+ rb_define_method(cStyle, "background_stroke=", RUBY_METHOD_FUNC(set_background_stroke), -1);
757
+ rb_define_method(cStyle, "background_stroke", RUBY_METHOD_FUNC(get_background_stroke), 0);
758
+ rb_define_method(cStyle, "background_stroke_width=", RUBY_METHOD_FUNC(set_background_stroke_width), 1);
759
+ rb_define_method(cStyle, "background_stroke_width", RUBY_METHOD_FUNC(get_background_stroke_width), 0);
589
760
 
590
761
  rb_define_method(cStyle, "image=", RUBY_METHOD_FUNC(set_image), 1);
591
762
  rb_define_method(cStyle, "image", RUBY_METHOD_FUNC(get_image), 0);
592
763
 
593
764
  cStyle.define_method("==", equal);
765
+
594
766
  cStyle.define_const("FLOW_NONE", Reflex::Style::FLOW_NONE);
595
767
  cStyle.define_const("FLOW_DOWN", Reflex::Style::FLOW_DOWN);
596
768
  cStyle.define_const("FLOW_RIGHT", Reflex::Style::FLOW_RIGHT);
597
769
  cStyle.define_const("FLOW_UP", Reflex::Style::FLOW_UP);
598
770
  cStyle.define_const("FLOW_LEFT", Reflex::Style::FLOW_LEFT);
771
+
772
+ define_selector_methods<Reflex::Style>(cStyle);
599
773
  }
600
774
 
601
775