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
 
@@ -22,66 +18,176 @@ RUCY_DEF_ALLOC(alloc, klass)
22
18
  }
23
19
  RUCY_END
24
20
 
25
- static
26
- RUCY_DEF2(setup_num, value, unit)
21
+ static Reflex::StyleLength::Type
22
+ str2type (const char* s)
27
23
  {
28
- CHECK;
24
+ if (strcasecmp(s, "px") == 0) return Reflex::StyleLength::PIXEL;
25
+ else if (strcasecmp(s, "%") == 0) return Reflex::StyleLength::PERCENT;
26
+ else if (strcasecmp(s, "fill") == 0) return Reflex::StyleLength::FILL;
27
+ else if (strcasecmp(s, "fit") == 0) return Reflex::StyleLength::FIT;
28
+ else return Reflex::StyleLength::NONE;
29
+ }
29
30
 
30
- const char* str = unit.as_s(true);
31
- Reflex::StyleLength::Unit u = Reflex::StyleLength::NONE;
32
- if (strcasecmp(str, "px") == 0) u = Reflex::StyleLength::PIXEL;
33
- else if (strcasecmp(str, "%") == 0) u = Reflex::StyleLength::PERCENT;
34
- else argument_error(__FILE__, __LINE__);
35
- THIS->reset(value.as_f(true), u);
31
+ static const char*
32
+ type2str (Reflex::StyleLength::Type type)
33
+ {
34
+ switch (type)
35
+ {
36
+ case Reflex::StyleLength::PIXEL: return "px";
37
+ case Reflex::StyleLength::PERCENT: return "%";
38
+ case Reflex::StyleLength::FILL: return "fill";
39
+ case Reflex::StyleLength::FIT: return "fit";
40
+ default: return NULL;
41
+ }
36
42
  }
37
- RUCY_END
38
43
 
39
- static
40
- RUCY_DEF1(setup_str, str)
44
+ static bool
45
+ get_default_value (
46
+ Reflex::StyleLength::Value* value, Reflex::StyleLength::Type type)
41
47
  {
42
- CHECK;
43
- THIS->reset(str.c_str());
48
+ assert(value);
49
+
50
+ switch (type)
51
+ {
52
+ case Reflex::StyleLength::FILL:
53
+ *value = 1;
54
+ break;
55
+
56
+ case Reflex::StyleLength::FIT:
57
+ *value = 1;
58
+ break;
59
+
60
+ default:
61
+ return false;
62
+ }
63
+
64
+ return true;
65
+ }
66
+
67
+ static bool
68
+ scan_type_and_value (
69
+ Reflex::StyleLength::Type* type, Reflex::StyleLength::Value* value,
70
+ const char* str)
71
+ {
72
+ assert(type && value);
73
+
74
+ if (!str || *str == '\0')
75
+ argument_error(__FILE__, __LINE__);
76
+
77
+ char buf[101];
78
+
79
+ if (sscanf(str, "%100s%f", buf, value) == 2)
80
+ argument_error(__FILE__, __LINE__);
81
+
82
+ int count = sscanf(str, "%f%100s", value, buf);
83
+ if (count == 2)
84
+ {
85
+ *type = str2type(buf);
86
+ return true;
87
+ }
88
+
89
+ count = sscanf(str, "%100s", buf);
90
+ if (count == 1)
91
+ {
92
+ *type = str2type(buf);
93
+ return get_default_value(value, *type);
94
+ }
95
+
96
+ return false;
44
97
  }
45
- RUCY_END
46
98
 
47
99
  static
48
- RUCY_DEF1(initialize_copy, obj)
100
+ RUCY_DEFN(initialize)
49
101
  {
50
102
  CHECK;
51
- *THIS = to<Reflex::StyleLength&>(obj).copy();
52
- return self;
103
+ check_arg_count(__FILE__, __LINE__, "StyleLength#initialize", argc, 0, 1);
104
+
105
+ if (argc == 0 || argv[0].is_nil())
106
+ THIS->reset();
107
+ else if (argv[0].is_i())
108
+ THIS->reset(Reflex::StyleLength::PIXEL, argv[0].as_i());
109
+ else if (argv[0].is_f())
110
+ THIS->reset(Reflex::StyleLength::PIXEL, argv[0].as_f());
111
+ else if (argv[0].is_s() || argv[0].is_sym())
112
+ {
113
+ Reflex::StyleLength::Type type = Reflex::StyleLength::NONE;
114
+ Reflex::StyleLength::Value value = 0;
115
+ if (!scan_type_and_value(&type, &value, argv[0].c_str()))
116
+ argument_error(__FILE__, __LINE__);
117
+
118
+ THIS->reset(type, value);
119
+ }
53
120
  }
54
121
  RUCY_END
55
122
 
56
123
  static
57
- RUCY_DEF0(get_value)
124
+ RUCY_DEF1(initialize_copy, obj)
58
125
  {
59
126
  CHECK;
60
- return value(THIS->value());
127
+ *THIS = to<Reflex::StyleLength&>(obj).copy();
128
+ return self;
61
129
  }
62
130
  RUCY_END
63
131
 
64
132
  static
65
- RUCY_DEF0(get_unit)
133
+ RUCY_DEF0(get_type)
66
134
  {
67
135
  CHECK;
68
136
 
69
137
  RUCY_SYMBOL(pixel, "px");
70
138
  RUCY_SYMBOL(percent, "%");
71
- switch (THIS->unit())
139
+ RUCY_SYMBOL(fill, "fill");
140
+ RUCY_SYMBOL(fit, "fit");
141
+ switch (THIS->type())
72
142
  {
73
143
  case Reflex::StyleLength::PIXEL: return pixel.value();
74
144
  case Reflex::StyleLength::PERCENT: return percent.value();
145
+ case Reflex::StyleLength::FILL: return fill.value();
146
+ case Reflex::StyleLength::FIT: return fit.value();
75
147
  default: return nil();
76
148
  }
77
149
  }
78
150
  RUCY_END
79
151
 
152
+ static
153
+ RUCY_DEF0(get_value)
154
+ {
155
+ CHECK;
156
+ return value(THIS->value());
157
+ }
158
+ RUCY_END
159
+
160
+ static bool
161
+ has_default_value (const Reflex::StyleLength& length)
162
+ {
163
+ Reflex::StyleLength::Value defval;
164
+ if (!get_default_value(&defval, length.type()))
165
+ return false;
166
+
167
+ return length.value() == defval;
168
+ }
169
+
80
170
  static
81
171
  RUCY_DEF0(to_s)
82
172
  {
83
173
  CHECK;
84
- return value(THIS->to_s());
174
+
175
+ if (!*THIS)
176
+ return value("");
177
+
178
+ Reflex::String val;
179
+ if (has_default_value(*THIS))
180
+ val = "";
181
+ else if (fmod(THIS->value(), 1) == 0)
182
+ val = Xot::stringf("%d", (long) THIS->value());
183
+ else
184
+ val = Xot::stringf("%g", THIS->value());
185
+
186
+ const char* type = type2str(THIS->type());
187
+ if (!type)
188
+ invalid_state_error(__FILE__, __LINE__);
189
+
190
+ return value(val + type);
85
191
  }
86
192
  RUCY_END
87
193
 
@@ -95,11 +201,10 @@ Init_style_length ()
95
201
 
96
202
  cStyleLength = mReflex.define_class("StyleLength");
97
203
  cStyleLength.define_alloc_func(alloc);
98
- cStyleLength.define_private_method("setup_num", setup_num);
99
- cStyleLength.define_private_method("setup_str", setup_str);
204
+ cStyleLength.define_private_method("initialize", initialize);
100
205
  cStyleLength.define_private_method("initialize_copy", initialize_copy);
206
+ cStyleLength.define_method("type", get_type);
101
207
  cStyleLength.define_method("value", get_value);
102
- cStyleLength.define_method("unit", get_unit);
103
208
  cStyleLength.define_method("to_s", to_s);
104
209
  }
105
210
 
@@ -109,17 +214,39 @@ namespace Rucy
109
214
 
110
215
 
111
216
  template <> Reflex::StyleLength
112
- value_to<Reflex::StyleLength> (Value value, bool convert)
217
+ value_to<Reflex::StyleLength> (int argc, const Value* argv, bool convert)
113
218
  {
219
+ if (argc == 1 && argv->is_array())
220
+ {
221
+ argc = argv->size();
222
+ argv = argv->as_array();
223
+ }
224
+
225
+ assert(argc > 0 && argv);
226
+
114
227
  if (convert)
115
228
  {
116
- if (value.is_nil()) return Reflex::StyleLength();
117
- else if (value.is_i()) return Reflex::StyleLength(value.as_i());
118
- else if (value.is_f()) return Reflex::StyleLength(value.as_f());
119
- else if (value.is_s()) return Reflex::StyleLength(value.c_str());
229
+ if (argv->is_nil())
230
+ return Reflex::StyleLength();
231
+ else if (argv->is_i())
232
+ return Reflex::StyleLength(Reflex::StyleLength::PIXEL, argv[0].as_i());
233
+ else if (argv->is_f())
234
+ return Reflex::StyleLength(Reflex::StyleLength::PIXEL, argv[0].as_f());
235
+ else if (argv->is_s() || argv->is_sym())
236
+ {
237
+ Reflex::StyleLength::Type type = Reflex::StyleLength::NONE;
238
+ Reflex::StyleLength::Value value = 0;
239
+ if (!scan_type_and_value(&type, &value, argv[0].c_str()))
240
+ argument_error(__FILE__, __LINE__);
241
+
242
+ return Reflex::StyleLength(type, value);
243
+ }
120
244
  }
121
245
 
122
- return value_to<Reflex::StyleLength&>(value, convert);
246
+ if (argc != 1)
247
+ argument_error(__FILE__, __LINE__);
248
+
249
+ return value_to<Reflex::StyleLength&>(*argv, convert);
123
250
  }
124
251
 
125
252
 
@@ -0,0 +1,108 @@
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
+ RUCY_DEF0(stop)
21
+ {
22
+ CHECK;
23
+ THIS->stop();
24
+ }
25
+ RUCY_END
26
+
27
+ static
28
+ RUCY_DEF0(get_owner)
29
+ {
30
+ CHECK;
31
+ return value(THIS->owner());
32
+ }
33
+ RUCY_END
34
+
35
+ static
36
+ RUCY_DEF0(get_id)
37
+ {
38
+ CHECK;
39
+ return value(THIS->id());
40
+ }
41
+ RUCY_END
42
+
43
+ static
44
+ RUCY_DEF0(get_interval)
45
+ {
46
+ CHECK;
47
+ return value(THIS->interval());
48
+ }
49
+ RUCY_END
50
+
51
+ static
52
+ RUCY_DEF1(set_count, count)
53
+ {
54
+ CHECK;
55
+ THIS->set_count(to<int>(count));
56
+ return count;
57
+ }
58
+ RUCY_END
59
+
60
+ static
61
+ RUCY_DEF0(get_count)
62
+ {
63
+ CHECK;
64
+ return value(THIS->count());
65
+ }
66
+ RUCY_END
67
+
68
+ static
69
+ RUCY_DEF0(is_finished)
70
+ {
71
+ CHECK;
72
+ return value(THIS->is_finished());
73
+ }
74
+ RUCY_END
75
+
76
+
77
+ static Class cTimer;
78
+
79
+ void
80
+ Init_timer ()
81
+ {
82
+ Module mReflex = define_module("Reflex");
83
+
84
+ cTimer = mReflex.define_class("Timer");
85
+ cTimer.define_method("stop", stop);
86
+ cTimer.define_method("owner", get_owner);
87
+ cTimer.define_method("id", get_id);
88
+ cTimer.define_method("interval", get_interval);
89
+ cTimer.define_method("count=", set_count);
90
+ cTimer.define_method("count", get_count);
91
+ cTimer.define_method("finish?", is_finished);
92
+
93
+ define_selector_methods<Reflex::Timer>(cTimer);
94
+ }
95
+
96
+
97
+ namespace Reflex
98
+ {
99
+
100
+
101
+ Class
102
+ timer_class ()
103
+ {
104
+ return cTimer;
105
+ }
106
+
107
+
108
+ }// Reflex
@@ -0,0 +1,133 @@
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
+ RUCY_DEF_ALLOC(alloc, klass)
18
+ {
19
+ return new_type<Reflex::TimerEvent>(klass);
20
+ }
21
+ RUCY_END
22
+
23
+ static
24
+ RUCY_DEF1(initialize, timer)
25
+ {
26
+ CHECK;
27
+
28
+ THIS->timer = to<Reflex::Timer*>(timer);
29
+
30
+ return rb_call_super(0, NULL);
31
+ }
32
+ RUCY_END
33
+
34
+ static
35
+ RUCY_DEF1(initialize_copy, obj)
36
+ {
37
+ CHECK;
38
+ *THIS = to<Reflex::TimerEvent&>(obj);
39
+ return self;
40
+ }
41
+ RUCY_END
42
+
43
+ static
44
+ RUCY_DEF0(timer)
45
+ {
46
+ CHECK;
47
+ return value(THIS->timer);
48
+ }
49
+ RUCY_END
50
+
51
+ static
52
+ RUCY_DEF0(owner)
53
+ {
54
+ CHECK;
55
+ return value(THIS->owner());
56
+ }
57
+ RUCY_END
58
+
59
+ static
60
+ RUCY_DEF0(id)
61
+ {
62
+ CHECK;
63
+ return value(THIS->id());
64
+ }
65
+ RUCY_END
66
+
67
+ static
68
+ RUCY_DEF0(interval)
69
+ {
70
+ CHECK;
71
+ return value(THIS->interval());
72
+ }
73
+ RUCY_END
74
+
75
+ static
76
+ RUCY_DEF1(set_count, count)
77
+ {
78
+ CHECK;
79
+ THIS->set_count(to<int>(count));
80
+ return count;
81
+ }
82
+ RUCY_END
83
+
84
+ static
85
+ RUCY_DEF0(count)
86
+ {
87
+ CHECK;
88
+ return value(THIS->count());
89
+ }
90
+ RUCY_END
91
+
92
+ static
93
+ RUCY_DEF0(is_finished)
94
+ {
95
+ CHECK;
96
+ return value(THIS->is_finished());
97
+ }
98
+ RUCY_END
99
+
100
+
101
+ static Class cTimerEvent;
102
+
103
+ void
104
+ Init_timer_event ()
105
+ {
106
+ Module mReflex = define_module("Reflex");
107
+
108
+ cTimerEvent = mReflex.define_class("TimerEvent", Reflex::event_class());
109
+ cTimerEvent.define_alloc_func(alloc);
110
+ cTimerEvent.define_private_method("initialize", initialize);
111
+ cTimerEvent.define_private_method("initialize_copy", initialize_copy);
112
+ cTimerEvent.define_method("timer", timer);
113
+ cTimerEvent.define_method("owner", owner);
114
+ cTimerEvent.define_method("id", id);
115
+ cTimerEvent.define_method("interval", interval);
116
+ cTimerEvent.define_method("count=", set_count);
117
+ cTimerEvent.define_method("count", count);
118
+ cTimerEvent.define_method("finish?", is_finished);
119
+ }
120
+
121
+
122
+ namespace Reflex
123
+ {
124
+
125
+
126
+ Class
127
+ timer_event_class ()
128
+ {
129
+ return cTimerEvent;
130
+ }
131
+
132
+
133
+ }// 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)
@@ -26,9 +22,10 @@ static
26
22
  RUCY_DEFN(initialize)
27
23
  {
28
24
  CHECK;
29
- check_arg_count(__FILE__, __LINE__, "UpdateEvent#initialize", argc, 0, 1);
25
+ check_arg_count(__FILE__, __LINE__, "UpdateEvent#initialize", argc, 0, 1, 2);
30
26
 
31
- THIS->dt = (argc >= 1) ? argv[0].as_f() : 0;
27
+ THIS->now = (argc >= 1) ? to<double>(argv[0]) : 0;
28
+ THIS->dt = (argc >= 2) ? to<float>(argv[1]) : 0;
32
29
 
33
30
  return rb_call_super(0, NULL);
34
31
  }
@@ -43,6 +40,14 @@ RUCY_DEF1(initialize_copy, obj)
43
40
  }
44
41
  RUCY_END
45
42
 
43
+ static
44
+ RUCY_DEF0(now)
45
+ {
46
+ CHECK;
47
+ return value(THIS->now);
48
+ }
49
+ RUCY_END
50
+
46
51
  static
47
52
  RUCY_DEF0(dt)
48
53
  {
@@ -61,8 +66,9 @@ Init_update_event ()
61
66
 
62
67
  cUpdateEvent = mReflex.define_class("UpdateEvent", Reflex::event_class());
63
68
  cUpdateEvent.define_alloc_func(alloc);
64
- cUpdateEvent.define_private_method("initialize", initialize);
69
+ cUpdateEvent.define_private_method("initialize", initialize);
65
70
  cUpdateEvent.define_private_method("initialize_copy", initialize_copy);
71
+ cUpdateEvent.define_method("now", now);
66
72
  cUpdateEvent.define_method("dt", dt);
67
73
  }
68
74