reflexion 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. checksums.yaml +5 -5
  2. data/.doc/ext/reflex/application.cpp +9 -5
  3. data/.doc/ext/reflex/capture_event.cpp +0 -4
  4. data/.doc/ext/reflex/contact_event.cpp +17 -10
  5. data/.doc/ext/reflex/draw_event.cpp +1 -5
  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 +40 -6
  11. data/.doc/ext/reflex/image_view.cpp +1 -10
  12. data/.doc/ext/reflex/key_event.cpp +2 -6
  13. data/.doc/ext/reflex/line_shape.cpp +99 -0
  14. data/.doc/ext/reflex/motion_event.cpp +75 -0
  15. data/.doc/ext/reflex/native.cpp +18 -18
  16. data/.doc/ext/reflex/pointer_event.cpp +5 -11
  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 +21 -2
  20. data/.doc/ext/reflex/scroll_event.cpp +0 -6
  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 +11 -6
  28. data/.doc/ext/reflex/view.cpp +548 -144
  29. data/.doc/ext/reflex/wheel_event.cpp +0 -22
  30. data/.doc/ext/reflex/window.cpp +7 -15
  31. data/README.md +1 -1
  32. data/Rakefile +14 -12
  33. data/VERSION +1 -1
  34. data/ext/reflex/application.cpp +10 -5
  35. data/ext/reflex/capture_event.cpp +1 -5
  36. data/ext/reflex/contact_event.cpp +19 -11
  37. data/ext/reflex/defs.h +5 -2
  38. data/ext/reflex/draw_event.cpp +2 -6
  39. data/ext/reflex/ellipse_shape.cpp +56 -25
  40. data/ext/reflex/event.cpp +0 -4
  41. data/ext/reflex/extconf.rb +1 -2
  42. data/ext/reflex/filter.cpp +86 -0
  43. data/ext/reflex/focus_event.cpp +11 -15
  44. data/ext/reflex/frame_event.cpp +46 -7
  45. data/ext/reflex/image_view.cpp +1 -10
  46. data/ext/reflex/key_event.cpp +3 -7
  47. data/ext/reflex/line_shape.cpp +104 -0
  48. data/ext/reflex/motion_event.cpp +79 -0
  49. data/ext/reflex/native.cpp +18 -18
  50. data/ext/reflex/pointer_event.cpp +6 -12
  51. data/ext/reflex/polygon_shape.cpp +68 -0
  52. data/ext/reflex/rect_shape.cpp +113 -24
  53. data/ext/reflex/reflex.cpp +21 -2
  54. data/ext/reflex/scroll_event.cpp +1 -7
  55. data/ext/reflex/selector.cpp +46 -16
  56. data/ext/reflex/selector.h +130 -0
  57. data/ext/reflex/shape.cpp +231 -0
  58. data/ext/reflex/style.cpp +363 -192
  59. data/ext/reflex/style_length.cpp +164 -37
  60. data/ext/reflex/timer.cpp +108 -0
  61. data/ext/reflex/timer_event.cpp +133 -0
  62. data/ext/reflex/update_event.cpp +13 -7
  63. data/ext/reflex/view.cpp +594 -150
  64. data/ext/reflex/wheel_event.cpp +1 -25
  65. data/ext/reflex/window.cpp +7 -15
  66. data/include/reflex/application.h +2 -0
  67. data/include/reflex/debug.h +22 -0
  68. data/include/reflex/defs.h +45 -0
  69. data/include/reflex/event.h +60 -16
  70. data/include/reflex/exception.h +9 -0
  71. data/include/reflex/filter.h +56 -0
  72. data/include/reflex/image_view.h +1 -1
  73. data/include/reflex/ruby/application.h +17 -9
  74. data/include/reflex/ruby/event.h +22 -0
  75. data/include/reflex/ruby/filter.h +69 -0
  76. data/include/reflex/ruby/selector.h +1 -1
  77. data/include/reflex/ruby/shape.h +140 -0
  78. data/include/reflex/ruby/style.h +1 -1
  79. data/include/reflex/ruby/timer.h +69 -0
  80. data/include/reflex/ruby/view.h +43 -76
  81. data/include/reflex/ruby/window.h +17 -32
  82. data/include/reflex/ruby.h +6 -4
  83. data/include/reflex/selector.h +54 -2
  84. data/include/reflex/shape.h +211 -0
  85. data/include/reflex/style.h +111 -77
  86. data/include/reflex/timer.h +73 -0
  87. data/include/reflex/view.h +181 -59
  88. data/include/reflex/window.h +4 -3
  89. data/include/reflex.h +5 -4
  90. data/lib/reflex/application.rb +6 -3
  91. data/lib/reflex/button.rb +2 -2
  92. data/lib/reflex/capture_event.rb +7 -6
  93. data/lib/reflex/contact_event.rb +10 -12
  94. data/lib/reflex/draw_event.rb +6 -1
  95. data/lib/reflex/ellipse_shape.rb +27 -0
  96. data/lib/reflex/filter.rb +18 -0
  97. data/lib/reflex/fixture.rb +4 -0
  98. data/lib/reflex/focus_event.rb +10 -12
  99. data/lib/reflex/frame_event.rb +1 -1
  100. data/lib/reflex/helper.rb +17 -29
  101. data/lib/reflex/key_event.rb +13 -11
  102. data/lib/reflex/line_shape.rb +18 -0
  103. data/lib/reflex/{texture.rb → matrix.rb} +2 -2
  104. data/lib/reflex/module.rb +4 -19
  105. data/lib/reflex/pointer_event.rb +26 -37
  106. data/lib/reflex/polygon.rb +14 -0
  107. data/lib/reflex/polygon_shape.rb +23 -0
  108. data/lib/reflex/polyline.rb +13 -0
  109. data/lib/reflex/rect_shape.rb +20 -0
  110. data/lib/reflex/reflex.rb +1 -3
  111. data/lib/reflex/scroll_event.rb +1 -1
  112. data/lib/reflex/selector.rb +2 -2
  113. data/lib/reflex/shape.rb +62 -0
  114. data/lib/reflex/style.rb +78 -11
  115. data/lib/reflex/style_length.rb +0 -11
  116. data/lib/reflex/text_view.rb +7 -24
  117. data/lib/reflex/timer.rb +30 -0
  118. data/lib/reflex/timer_event.rb +29 -0
  119. data/lib/reflex/update_event.rb +1 -1
  120. data/lib/reflex/view.rb +127 -32
  121. data/lib/reflex/wheel_event.rb +9 -1
  122. data/lib/reflex/window.rb +29 -9
  123. data/lib/reflex.rb +11 -5
  124. data/lib/reflexion.rb +23 -7
  125. data/reflex.gemspec +8 -10
  126. data/samples/bats.rb +4 -4
  127. data/samples/fans.rb +1 -1
  128. data/samples/fps.rb +5 -3
  129. data/samples/hello.rb +4 -6
  130. data/samples/image.rb +5 -4
  131. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +0 -2
  132. data/samples/layout.rb +16 -7
  133. data/samples/model.rb +10 -7
  134. data/samples/physics.rb +22 -20
  135. data/samples/reflexion/breakout.rb +4 -5
  136. data/samples/reflexion/hello.rb +2 -2
  137. data/samples/reflexion/jump_action.rb +191 -0
  138. data/samples/reflexion/noise.rb +23 -0
  139. data/samples/reflexion/paint.rb +7 -6
  140. data/samples/reflexion/physics.rb +15 -8
  141. data/samples/reflexion/pulse.rb +24 -10
  142. data/samples/shader.rb +8 -6
  143. data/samples/shapes.rb +63 -14
  144. data/samples/tree.rb +9 -10
  145. data/samples/views.rb +3 -3
  146. data/samples/visuals.rb +2 -5
  147. data/src/body.cpp +146 -345
  148. data/src/body.h +91 -0
  149. data/src/event.cpp +66 -16
  150. data/src/exception.cpp +13 -3
  151. data/src/filter.cpp +76 -0
  152. data/src/fixture.cpp +164 -39
  153. data/src/fixture.h +85 -0
  154. data/src/image_view.cpp +4 -4
  155. data/src/ios/app_delegate.h +5 -10
  156. data/src/ios/app_delegate.mm +79 -41
  157. data/src/ios/application.h +32 -0
  158. data/src/ios/application.mm +35 -25
  159. data/src/ios/event.mm +8 -4
  160. data/src/ios/reflex.mm +0 -7
  161. data/src/ios/view_controller.h +33 -0
  162. data/src/ios/view_controller.mm +436 -0
  163. data/src/ios/window.h +40 -0
  164. data/src/ios/window.mm +59 -250
  165. data/src/osx/app_delegate.h +5 -10
  166. data/src/osx/app_delegate.mm +52 -55
  167. data/src/osx/application.h +32 -0
  168. data/src/osx/application.mm +44 -39
  169. data/src/osx/native_window.h +0 -15
  170. data/src/osx/native_window.mm +131 -115
  171. data/src/osx/opengl_view.h +0 -2
  172. data/src/osx/opengl_view.mm +12 -3
  173. data/src/osx/reflex.mm +0 -9
  174. data/src/osx/window.h +42 -0
  175. data/src/osx/window.mm +45 -252
  176. data/src/selector.cpp +232 -7
  177. data/src/selector.h +52 -0
  178. data/src/shape.cpp +1191 -0
  179. data/src/shape.h +61 -0
  180. data/src/style.cpp +571 -374
  181. data/src/style.h +39 -0
  182. data/src/timer.cpp +291 -0
  183. data/src/timer.h +55 -0
  184. data/src/view.cpp +1624 -984
  185. data/src/view.h +56 -0
  186. data/src/win32/window.cpp +3 -4
  187. data/src/window.cpp +275 -20
  188. data/src/window.h +92 -0
  189. data/src/world.cpp +112 -111
  190. data/src/world.h +34 -53
  191. data/task/box2d.rake +31 -10
  192. data/test/test_capture_event.rb +8 -6
  193. data/test/test_pointer_event.rb +85 -0
  194. data/test/test_selector.rb +1 -1
  195. data/test/test_shape.rb +71 -0
  196. data/test/test_style.rb +77 -11
  197. data/test/test_style_length.rb +42 -13
  198. data/test/test_view.rb +138 -14
  199. metadata +109 -210
  200. data/.doc/ext/reflex/arc_shape.cpp +0 -89
  201. data/.doc/ext/reflex/body.cpp +0 -299
  202. data/.doc/ext/reflex/fixture.cpp +0 -101
  203. data/.doc/ext/reflex/shape_view.cpp +0 -153
  204. data/ext/reflex/arc_shape.cpp +0 -94
  205. data/ext/reflex/body.cpp +0 -328
  206. data/ext/reflex/fixture.cpp +0 -108
  207. data/ext/reflex/shape_view.cpp +0 -161
  208. data/include/reflex/bitmap.h +0 -20
  209. data/include/reflex/body.h +0 -128
  210. data/include/reflex/bounds.h +0 -20
  211. data/include/reflex/color.h +0 -20
  212. data/include/reflex/color_space.h +0 -20
  213. data/include/reflex/fixture.h +0 -117
  214. data/include/reflex/font.h +0 -20
  215. data/include/reflex/image.h +0 -20
  216. data/include/reflex/matrix.h +0 -20
  217. data/include/reflex/painter.h +0 -20
  218. data/include/reflex/point.h +0 -24
  219. data/include/reflex/ruby/body.h +0 -41
  220. data/include/reflex/ruby/fixture.h +0 -41
  221. data/include/reflex/ruby/shape_view.h +0 -96
  222. data/include/reflex/shader.h +0 -20
  223. data/include/reflex/shape_view.h +0 -146
  224. data/include/reflex/texture.h +0 -20
  225. data/lib/reflex/body.rb +0 -22
  226. data/lib/reflex/flags.rb +0 -18
  227. data/lib/reflex/shape_view.rb +0 -25
  228. data/src/ios/application_data.h +0 -45
  229. data/src/ios/native_window.h +0 -39
  230. data/src/ios/native_window.mm +0 -224
  231. data/src/ios/opengl_view.h +0 -13
  232. data/src/ios/opengl_view.mm +0 -139
  233. data/src/ios/window_data.h +0 -75
  234. data/src/osx/application_data.h +0 -45
  235. data/src/osx/window_data.h +0 -75
  236. data/src/physics/Box2D/Box2D.h +0 -68
  237. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.cpp +0 -193
  238. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.h +0 -105
  239. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.cpp +0 -99
  240. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.h +0 -91
  241. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.cpp +0 -138
  242. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.h +0 -74
  243. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.cpp +0 -467
  244. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.h +0 -101
  245. data/src/physics/Box2D/Collision/Shapes/b2Shape.h +0 -101
  246. data/src/physics/Box2D/Collision/b2BroadPhase.cpp +0 -119
  247. data/src/physics/Box2D/Collision/b2BroadPhase.h +0 -257
  248. data/src/physics/Box2D/Collision/b2CollideCircle.cpp +0 -154
  249. data/src/physics/Box2D/Collision/b2CollideEdge.cpp +0 -698
  250. data/src/physics/Box2D/Collision/b2CollidePolygon.cpp +0 -239
  251. data/src/physics/Box2D/Collision/b2Collision.cpp +0 -252
  252. data/src/physics/Box2D/Collision/b2Collision.h +0 -277
  253. data/src/physics/Box2D/Collision/b2Distance.cpp +0 -603
  254. data/src/physics/Box2D/Collision/b2Distance.h +0 -141
  255. data/src/physics/Box2D/Collision/b2DynamicTree.cpp +0 -778
  256. data/src/physics/Box2D/Collision/b2DynamicTree.h +0 -289
  257. data/src/physics/Box2D/Collision/b2TimeOfImpact.cpp +0 -486
  258. data/src/physics/Box2D/Collision/b2TimeOfImpact.h +0 -58
  259. data/src/physics/Box2D/Common/b2BlockAllocator.cpp +0 -215
  260. data/src/physics/Box2D/Common/b2BlockAllocator.h +0 -62
  261. data/src/physics/Box2D/Common/b2Draw.cpp +0 -44
  262. data/src/physics/Box2D/Common/b2Draw.h +0 -86
  263. data/src/physics/Box2D/Common/b2GrowableStack.h +0 -85
  264. data/src/physics/Box2D/Common/b2Math.cpp +0 -94
  265. data/src/physics/Box2D/Common/b2Math.h +0 -720
  266. data/src/physics/Box2D/Common/b2Settings.cpp +0 -44
  267. data/src/physics/Box2D/Common/b2Settings.h +0 -151
  268. data/src/physics/Box2D/Common/b2StackAllocator.cpp +0 -83
  269. data/src/physics/Box2D/Common/b2StackAllocator.h +0 -60
  270. data/src/physics/Box2D/Common/b2Timer.cpp +0 -101
  271. data/src/physics/Box2D/Common/b2Timer.h +0 -50
  272. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp +0 -53
  273. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h +0 -39
  274. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp +0 -53
  275. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h +0 -39
  276. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.cpp +0 -52
  277. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.h +0 -39
  278. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.cpp +0 -247
  279. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.h +0 -349
  280. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.cpp +0 -838
  281. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.h +0 -95
  282. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp +0 -49
  283. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h +0 -39
  284. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp +0 -49
  285. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h +0 -39
  286. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp +0 -49
  287. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h +0 -38
  288. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.cpp +0 -52
  289. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.h +0 -39
  290. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.cpp +0 -260
  291. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.h +0 -169
  292. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.cpp +0 -251
  293. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.h +0 -119
  294. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.cpp +0 -419
  295. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.h +0 -125
  296. data/src/physics/Box2D/Dynamics/Joints/b2Joint.cpp +0 -211
  297. data/src/physics/Box2D/Dynamics/Joints/b2Joint.h +0 -226
  298. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.cpp +0 -304
  299. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.h +0 -133
  300. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.cpp +0 -222
  301. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.h +0 -129
  302. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp +0 -629
  303. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.h +0 -196
  304. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.cpp +0 -348
  305. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.h +0 -152
  306. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp +0 -502
  307. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.h +0 -204
  308. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.cpp +0 -241
  309. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.h +0 -114
  310. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.cpp +0 -344
  311. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.h +0 -126
  312. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.cpp +0 -419
  313. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.h +0 -210
  314. data/src/physics/Box2D/Dynamics/b2Body.cpp +0 -549
  315. data/src/physics/Box2D/Dynamics/b2Body.h +0 -860
  316. data/src/physics/Box2D/Dynamics/b2ContactManager.cpp +0 -296
  317. data/src/physics/Box2D/Dynamics/b2ContactManager.h +0 -52
  318. data/src/physics/Box2D/Dynamics/b2Fixture.cpp +0 -303
  319. data/src/physics/Box2D/Dynamics/b2Fixture.h +0 -345
  320. data/src/physics/Box2D/Dynamics/b2Island.cpp +0 -539
  321. data/src/physics/Box2D/Dynamics/b2Island.h +0 -93
  322. data/src/physics/Box2D/Dynamics/b2TimeStep.h +0 -70
  323. data/src/physics/Box2D/Dynamics/b2World.cpp +0 -1339
  324. data/src/physics/Box2D/Dynamics/b2World.h +0 -354
  325. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.cpp +0 -36
  326. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.h +0 -155
  327. data/src/physics/Box2D/Rope/b2Rope.cpp +0 -259
  328. data/src/physics/Box2D/Rope/b2Rope.h +0 -115
  329. data/src/shape_view.cpp +0 -306
@@ -1,14 +1,10 @@
1
1
  #include "reflex/ruby/style.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
- RUCY_DEFINE_VALUE_FROM_TO(Reflex::StyleLength)
7
+ RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(Reflex::StyleLength)
12
8
 
13
9
  #define THIS to<Reflex::StyleLength*>(self)
14
10
 
@@ -21,61 +17,172 @@ VALUE alloc(VALUE klass)
21
17
  return new_type<Reflex::StyleLength>(klass);
22
18
  }
23
19
 
24
- static
25
- VALUE setup_num(VALUE self, VALUE value, VALUE unit)
20
+ static Reflex::StyleLength::Type
21
+ str2type (const char* s)
26
22
  {
27
- CHECK;
23
+ if (strcasecmp(s, "px") == 0) return Reflex::StyleLength::PIXEL;
24
+ else if (strcasecmp(s, "%") == 0) return Reflex::StyleLength::PERCENT;
25
+ else if (strcasecmp(s, "fill") == 0) return Reflex::StyleLength::FILL;
26
+ else if (strcasecmp(s, "fit") == 0) return Reflex::StyleLength::FIT;
27
+ else return Reflex::StyleLength::NONE;
28
+ }
28
29
 
29
- const char* str = unit.as_s(true);
30
- Reflex::StyleLength::Unit u = Reflex::StyleLength::NONE;
31
- if (strcasecmp(str, "px") == 0) u = Reflex::StyleLength::PIXEL;
32
- else if (strcasecmp(str, "%") == 0) u = Reflex::StyleLength::PERCENT;
33
- else argument_error(__FILE__, __LINE__);
34
- THIS->reset(value.as_f(true), u);
30
+ static const char*
31
+ type2str (Reflex::StyleLength::Type type)
32
+ {
33
+ switch (type)
34
+ {
35
+ case Reflex::StyleLength::PIXEL: return "px";
36
+ case Reflex::StyleLength::PERCENT: return "%";
37
+ case Reflex::StyleLength::FILL: return "fill";
38
+ case Reflex::StyleLength::FIT: return "fit";
39
+ default: return NULL;
40
+ }
35
41
  }
36
42
 
37
- static
38
- VALUE setup_str(VALUE self, VALUE str)
43
+ static bool
44
+ get_default_value (
45
+ Reflex::StyleLength::Value* value, Reflex::StyleLength::Type type)
39
46
  {
40
- CHECK;
41
- THIS->reset(str.c_str());
47
+ assert(value);
48
+
49
+ switch (type)
50
+ {
51
+ case Reflex::StyleLength::FILL:
52
+ *value = 1;
53
+ break;
54
+
55
+ case Reflex::StyleLength::FIT:
56
+ *value = 1;
57
+ break;
58
+
59
+ default:
60
+ return false;
61
+ }
62
+
63
+ return true;
64
+ }
65
+
66
+ static bool
67
+ scan_type_and_value (
68
+ Reflex::StyleLength::Type* type, Reflex::StyleLength::Value* value,
69
+ const char* str)
70
+ {
71
+ assert(type && value);
72
+
73
+ if (!str || *str == '\0')
74
+ argument_error(__FILE__, __LINE__);
75
+
76
+ char buf[101];
77
+
78
+ if (sscanf(str, "%100s%f", buf, value) == 2)
79
+ argument_error(__FILE__, __LINE__);
80
+
81
+ int count = sscanf(str, "%f%100s", value, buf);
82
+ if (count == 2)
83
+ {
84
+ *type = str2type(buf);
85
+ return true;
86
+ }
87
+
88
+ count = sscanf(str, "%100s", buf);
89
+ if (count == 1)
90
+ {
91
+ *type = str2type(buf);
92
+ return get_default_value(value, *type);
93
+ }
94
+
95
+ return false;
42
96
  }
43
97
 
44
98
  static
45
- VALUE initialize_copy(VALUE self, VALUE obj)
99
+ VALUE initialize(VALUE self)
46
100
  {
47
101
  CHECK;
48
- *THIS = to<Reflex::StyleLength&>(obj).copy();
49
- return self;
102
+ check_arg_count(__FILE__, __LINE__, "StyleLength#initialize", argc, 0, 1);
103
+
104
+ if (argc == 0 || argv[0].is_nil())
105
+ THIS->reset();
106
+ else if (argv[0].is_i())
107
+ THIS->reset(Reflex::StyleLength::PIXEL, argv[0].as_i());
108
+ else if (argv[0].is_f())
109
+ THIS->reset(Reflex::StyleLength::PIXEL, argv[0].as_f());
110
+ else if (argv[0].is_s() || argv[0].is_sym())
111
+ {
112
+ Reflex::StyleLength::Type type = Reflex::StyleLength::NONE;
113
+ Reflex::StyleLength::Value value = 0;
114
+ if (!scan_type_and_value(&type, &value, argv[0].c_str()))
115
+ argument_error(__FILE__, __LINE__);
116
+
117
+ THIS->reset(type, value);
118
+ }
50
119
  }
51
120
 
52
121
  static
53
- VALUE get_value(VALUE self)
122
+ VALUE initialize_copy(VALUE self, VALUE obj)
54
123
  {
55
124
  CHECK;
56
- return value(THIS->value());
125
+ *THIS = to<Reflex::StyleLength&>(obj).copy();
126
+ return self;
57
127
  }
58
128
 
59
129
  static
60
- VALUE get_unit(VALUE self)
130
+ VALUE get_type(VALUE self)
61
131
  {
62
132
  CHECK;
63
133
 
64
134
  RUCY_SYMBOL(pixel, "px");
65
135
  RUCY_SYMBOL(percent, "%");
66
- switch (THIS->unit())
136
+ RUCY_SYMBOL(fill, "fill");
137
+ RUCY_SYMBOL(fit, "fit");
138
+ switch (THIS->type())
67
139
  {
68
140
  case Reflex::StyleLength::PIXEL: return pixel.value();
69
141
  case Reflex::StyleLength::PERCENT: return percent.value();
142
+ case Reflex::StyleLength::FILL: return fill.value();
143
+ case Reflex::StyleLength::FIT: return fit.value();
70
144
  default: return nil();
71
145
  }
72
146
  }
73
147
 
148
+ static
149
+ VALUE get_value(VALUE self)
150
+ {
151
+ CHECK;
152
+ return value(THIS->value());
153
+ }
154
+
155
+ static bool
156
+ has_default_value (const Reflex::StyleLength& length)
157
+ {
158
+ Reflex::StyleLength::Value defval;
159
+ if (!get_default_value(&defval, length.type()))
160
+ return false;
161
+
162
+ return length.value() == defval;
163
+ }
164
+
74
165
  static
75
166
  VALUE to_s(VALUE self)
76
167
  {
77
168
  CHECK;
78
- return value(THIS->to_s());
169
+
170
+ if (!*THIS)
171
+ return value("");
172
+
173
+ Reflex::String val;
174
+ if (has_default_value(*THIS))
175
+ val = "";
176
+ else if (fmod(THIS->value(), 1) == 0)
177
+ val = Xot::stringf("%d", (long) THIS->value());
178
+ else
179
+ val = Xot::stringf("%g", THIS->value());
180
+
181
+ const char* type = type2str(THIS->type());
182
+ if (!type)
183
+ invalid_state_error(__FILE__, __LINE__);
184
+
185
+ return value(val + type);
79
186
  }
80
187
 
81
188
 
@@ -88,11 +195,10 @@ Init_style_length ()
88
195
 
89
196
  cStyleLength = rb_define_class_under(mReflex, "StyleLength", rb_cObject);
90
197
  rb_define_alloc_func(cStyleLength, alloc);
91
- rb_define_private_method(cStyleLength, "setup_num", RUBY_METHOD_FUNC(setup_num), 2);
92
- rb_define_private_method(cStyleLength, "setup_str", RUBY_METHOD_FUNC(setup_str), 1);
198
+ rb_define_private_method(cStyleLength, "initialize", RUBY_METHOD_FUNC(initialize), -1);
93
199
  rb_define_private_method(cStyleLength, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
200
+ rb_define_method(cStyleLength, "type", RUBY_METHOD_FUNC(get_type), 0);
94
201
  rb_define_method(cStyleLength, "value", RUBY_METHOD_FUNC(get_value), 0);
95
- rb_define_method(cStyleLength, "unit", RUBY_METHOD_FUNC(get_unit), 0);
96
202
  rb_define_method(cStyleLength, "to_s", RUBY_METHOD_FUNC(to_s), 0);
97
203
  }
98
204
 
@@ -102,17 +208,39 @@ namespace Rucy
102
208
 
103
209
 
104
210
  template <> Reflex::StyleLength
105
- value_to<Reflex::StyleLength> (Value value, bool convert)
211
+ value_to<Reflex::StyleLength> (int argc, const Value* argv, bool convert)
106
212
  {
213
+ if (argc == 1 && argv->is_array())
214
+ {
215
+ argc = argv->size();
216
+ argv = argv->as_array();
217
+ }
218
+
219
+ assert(argc > 0 && argv);
220
+
107
221
  if (convert)
108
222
  {
109
- if (value.is_nil()) return Reflex::StyleLength();
110
- else if (value.is_i()) return Reflex::StyleLength(value.as_i());
111
- else if (value.is_f()) return Reflex::StyleLength(value.as_f());
112
- else if (value.is_s()) return Reflex::StyleLength(value.c_str());
223
+ if (argv->is_nil())
224
+ return Reflex::StyleLength();
225
+ else if (argv->is_i())
226
+ return Reflex::StyleLength(Reflex::StyleLength::PIXEL, argv[0].as_i());
227
+ else if (argv->is_f())
228
+ return Reflex::StyleLength(Reflex::StyleLength::PIXEL, argv[0].as_f());
229
+ else if (argv->is_s() || argv->is_sym())
230
+ {
231
+ Reflex::StyleLength::Type type = Reflex::StyleLength::NONE;
232
+ Reflex::StyleLength::Value value = 0;
233
+ if (!scan_type_and_value(&type, &value, argv[0].c_str()))
234
+ argument_error(__FILE__, __LINE__);
235
+
236
+ return Reflex::StyleLength(type, value);
237
+ }
113
238
  }
114
239
 
115
- return value_to<Reflex::StyleLength&>(value, convert);
240
+ if (argc != 1)
241
+ argument_error(__FILE__, __LINE__);
242
+
243
+ return value_to<Reflex::StyleLength&>(*argv, convert);
116
244
  }
117
245
 
118
246
 
@@ -0,0 +1,101 @@
1
+ #include "reflex/ruby/timer.h"
2
+
3
+
4
+ #include "reflex/ruby/view.h"
5
+ #include "reflex/ruby/selector.h"
6
+ #include "defs.h"
7
+ #include "selector.h"
8
+
9
+
10
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(Reflex::Timer)
11
+
12
+ #define THIS to<Reflex::Timer*>(self)
13
+
14
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Timer, self)
15
+
16
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
17
+
18
+
19
+ static
20
+ VALUE stop(VALUE self)
21
+ {
22
+ CHECK;
23
+ THIS->stop();
24
+ }
25
+
26
+ static
27
+ VALUE get_owner(VALUE self)
28
+ {
29
+ CHECK;
30
+ return value(THIS->owner());
31
+ }
32
+
33
+ static
34
+ VALUE get_id(VALUE self)
35
+ {
36
+ CHECK;
37
+ return value(THIS->id());
38
+ }
39
+
40
+ static
41
+ VALUE get_interval(VALUE self)
42
+ {
43
+ CHECK;
44
+ return value(THIS->interval());
45
+ }
46
+
47
+ static
48
+ VALUE set_count(VALUE self, VALUE count)
49
+ {
50
+ CHECK;
51
+ THIS->set_count(to<int>(count));
52
+ return count;
53
+ }
54
+
55
+ static
56
+ VALUE get_count(VALUE self)
57
+ {
58
+ CHECK;
59
+ return value(THIS->count());
60
+ }
61
+
62
+ static
63
+ VALUE is_finished(VALUE self)
64
+ {
65
+ CHECK;
66
+ return value(THIS->is_finished());
67
+ }
68
+
69
+
70
+ static Class cTimer;
71
+
72
+ void
73
+ Init_timer ()
74
+ {
75
+ Module mReflex = rb_define_module("Reflex");
76
+
77
+ cTimer = rb_define_class_under(mReflex, "Timer", rb_cObject);
78
+ rb_define_method(cTimer, "stop", RUBY_METHOD_FUNC(stop), 0);
79
+ rb_define_method(cTimer, "owner", RUBY_METHOD_FUNC(get_owner), 0);
80
+ rb_define_method(cTimer, "id", RUBY_METHOD_FUNC(get_id), 0);
81
+ rb_define_method(cTimer, "interval", RUBY_METHOD_FUNC(get_interval), 0);
82
+ rb_define_method(cTimer, "count=", RUBY_METHOD_FUNC(set_count), 1);
83
+ rb_define_method(cTimer, "count", RUBY_METHOD_FUNC(get_count), 0);
84
+ cTimer.define_method("finish?", is_finished);
85
+
86
+ define_selector_methods<Reflex::Timer>(cTimer);
87
+ }
88
+
89
+
90
+ namespace Reflex
91
+ {
92
+
93
+
94
+ Class
95
+ timer_class ()
96
+ {
97
+ return cTimer;
98
+ }
99
+
100
+
101
+ }// Reflex
@@ -0,0 +1,123 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include "reflex/ruby/timer.h"
5
+ #include "reflex/ruby/view.h"
6
+ #include "defs.h"
7
+
8
+
9
+ RUCY_DEFINE_VALUE_FROM_TO(Reflex::TimerEvent)
10
+
11
+ #define THIS to<Reflex::TimerEvent*>(self)
12
+
13
+ #define CHECK RUCY_CHECK_OBJ(Reflex::TimerEvent, self)
14
+
15
+
16
+ static
17
+ VALUE alloc(VALUE klass)
18
+ {
19
+ return new_type<Reflex::TimerEvent>(klass);
20
+ }
21
+
22
+ static
23
+ VALUE initialize(VALUE self, VALUE timer)
24
+ {
25
+ CHECK;
26
+
27
+ THIS->timer = to<Reflex::Timer*>(timer);
28
+
29
+ return rb_call_super(0, NULL);
30
+ }
31
+
32
+ static
33
+ VALUE initialize_copy(VALUE self, VALUE obj)
34
+ {
35
+ CHECK;
36
+ *THIS = to<Reflex::TimerEvent&>(obj);
37
+ return self;
38
+ }
39
+
40
+ static
41
+ VALUE timer(VALUE self)
42
+ {
43
+ CHECK;
44
+ return value(THIS->timer);
45
+ }
46
+
47
+ static
48
+ VALUE owner(VALUE self)
49
+ {
50
+ CHECK;
51
+ return value(THIS->owner());
52
+ }
53
+
54
+ static
55
+ VALUE id(VALUE self)
56
+ {
57
+ CHECK;
58
+ return value(THIS->id());
59
+ }
60
+
61
+ static
62
+ VALUE interval(VALUE self)
63
+ {
64
+ CHECK;
65
+ return value(THIS->interval());
66
+ }
67
+
68
+ static
69
+ VALUE set_count(VALUE self, VALUE count)
70
+ {
71
+ CHECK;
72
+ THIS->set_count(to<int>(count));
73
+ return count;
74
+ }
75
+
76
+ static
77
+ VALUE count(VALUE self)
78
+ {
79
+ CHECK;
80
+ return value(THIS->count());
81
+ }
82
+
83
+ static
84
+ VALUE is_finished(VALUE self)
85
+ {
86
+ CHECK;
87
+ return value(THIS->is_finished());
88
+ }
89
+
90
+
91
+ static Class cTimerEvent;
92
+
93
+ void
94
+ Init_timer_event ()
95
+ {
96
+ Module mReflex = rb_define_module("Reflex");
97
+
98
+ cTimerEvent = mReflex.define_class("TimerEvent", Reflex::event_class());
99
+ rb_define_alloc_func(cTimerEvent, alloc);
100
+ rb_define_private_method(cTimerEvent, "initialize", RUBY_METHOD_FUNC(initialize), 1);
101
+ rb_define_private_method(cTimerEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
102
+ rb_define_method(cTimerEvent, "timer", RUBY_METHOD_FUNC(timer), 0);
103
+ rb_define_method(cTimerEvent, "owner", RUBY_METHOD_FUNC(owner), 0);
104
+ rb_define_method(cTimerEvent, "id", RUBY_METHOD_FUNC(id), 0);
105
+ rb_define_method(cTimerEvent, "interval", RUBY_METHOD_FUNC(interval), 0);
106
+ rb_define_method(cTimerEvent, "count=", RUBY_METHOD_FUNC(set_count), 1);
107
+ rb_define_method(cTimerEvent, "count", RUBY_METHOD_FUNC(count), 0);
108
+ cTimerEvent.define_method("finish?", is_finished);
109
+ }
110
+
111
+
112
+ namespace Reflex
113
+ {
114
+
115
+
116
+ Class
117
+ timer_event_class ()
118
+ {
119
+ return cTimerEvent;
120
+ }
121
+
122
+
123
+ }// Reflex
@@ -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)
@@ -25,9 +21,10 @@ static
25
21
  VALUE initialize(VALUE self)
26
22
  {
27
23
  CHECK;
28
- check_arg_count(__FILE__, __LINE__, "UpdateEvent#initialize", argc, 0, 1);
24
+ check_arg_count(__FILE__, __LINE__, "UpdateEvent#initialize", argc, 0, 1, 2);
29
25
 
30
- THIS->dt = (argc >= 1) ? argv[0].as_f() : 0;
26
+ THIS->now = (argc >= 1) ? to<double>(argv[0]) : 0;
27
+ THIS->dt = (argc >= 2) ? to<float>(argv[1]) : 0;
31
28
 
32
29
  return rb_call_super(0, NULL);
33
30
  }
@@ -40,6 +37,13 @@ VALUE initialize_copy(VALUE self, VALUE obj)
40
37
  return self;
41
38
  }
42
39
 
40
+ static
41
+ VALUE now(VALUE self)
42
+ {
43
+ CHECK;
44
+ return value(THIS->now);
45
+ }
46
+
43
47
  static
44
48
  VALUE dt(VALUE self)
45
49
  {
@@ -59,6 +63,7 @@ Init_update_event ()
59
63
  rb_define_alloc_func(cUpdateEvent, alloc);
60
64
  rb_define_private_method(cUpdateEvent, "initialize", RUBY_METHOD_FUNC(initialize), -1);
61
65
  rb_define_private_method(cUpdateEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
66
+ rb_define_method(cUpdateEvent, "now", RUBY_METHOD_FUNC(now), 0);
62
67
  rb_define_method(cUpdateEvent, "dt", RUBY_METHOD_FUNC(dt), 0);
63
68
  }
64
69