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
@@ -6,7 +6,6 @@
6
6
 
7
7
  #include <set>
8
8
  #include <xot/pimpl.h>
9
- #include <xot/string.h>
10
9
  #include <reflex/defs.h>
11
10
 
12
11
 
@@ -14,6 +13,9 @@ namespace Reflex
14
13
  {
15
14
 
16
15
 
16
+ class SelectorPtr;
17
+
18
+
17
19
  class Selector
18
20
  {
19
21
 
@@ -41,6 +43,10 @@ namespace Reflex
41
43
 
42
44
  void remove_tag (const char* tag);
43
45
 
46
+ void clear_tags ();
47
+
48
+ bool has_tag (const char* tag) const;
49
+
44
50
  iterator begin ();
45
51
 
46
52
  const_iterator begin () const;
@@ -59,11 +65,57 @@ namespace Reflex
59
65
 
60
66
  struct Data;
61
67
 
62
- Xot::PImpl<Data, true> self;
68
+ Xot::PSharedImpl<Data> self;
63
69
 
64
70
  };// Selector
65
71
 
66
72
 
73
+ class HasSelector
74
+ {
75
+
76
+ public:
77
+
78
+ typedef Selector:: iterator tag_iterator;
79
+
80
+ typedef Selector::const_iterator const_tag_iterator;
81
+
82
+ virtual ~HasSelector ();
83
+
84
+ virtual void set_name (const char* name);
85
+
86
+ virtual const char* name () const;
87
+
88
+ virtual void add_tag (const char* tag);
89
+
90
+ virtual void remove_tag (const char* tag);
91
+
92
+ virtual void clear_tags ();
93
+
94
+ virtual bool has_tag (const char* tag) const;
95
+
96
+ virtual tag_iterator tag_begin ();
97
+
98
+ virtual const_tag_iterator tag_begin () const;
99
+
100
+ virtual tag_iterator tag_end ();
101
+
102
+ virtual const_tag_iterator tag_end () const;
103
+
104
+ virtual void set_selector (const Selector& selector);
105
+
106
+ virtual Selector& selector ();
107
+
108
+ virtual const Selector& selector () const;
109
+
110
+ protected:
111
+
112
+ virtual SelectorPtr* get_selector_ptr () = 0;
113
+
114
+ virtual const SelectorPtr* get_selector_ptr () const;
115
+
116
+ };// HasSelector
117
+
118
+
67
119
  }// Reflex
68
120
 
69
121
 
@@ -0,0 +1,211 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_SHAPE_H__
4
+ #define __REFLEX_SHAPE_H__
5
+
6
+
7
+ #include <xot/ref.h>
8
+ #include <xot/pimpl.h>
9
+ #include <rays/bounds.h>
10
+ #include <reflex/defs.h>
11
+ #include <reflex/selector.h>
12
+
13
+
14
+ namespace Reflex
15
+ {
16
+
17
+
18
+ class Event;
19
+ struct DrawEvent;
20
+ struct FrameEvent;
21
+ struct ContactEvent;
22
+
23
+ class View;
24
+ class Fixture;
25
+
26
+
27
+ class Shape : public Xot::RefCountable<>, public HasSelector
28
+ {
29
+
30
+ typedef Shape This;
31
+
32
+ public:
33
+
34
+ typedef Xot::Ref<This> Ref;
35
+
36
+ virtual ~Shape ();
37
+
38
+ virtual View* owner ();
39
+
40
+ virtual const View* owner () const;
41
+
42
+ void set_frame (coord x, coord y, coord width, coord height);
43
+
44
+ virtual void set_frame (const Bounds& frame);
45
+
46
+ virtual Bounds frame () const;
47
+
48
+ virtual void set_density (float density);
49
+
50
+ virtual float density () const;
51
+
52
+ virtual void set_friction (float friction);
53
+
54
+ virtual float friction () const;
55
+
56
+ virtual void set_restitution (float restitution);
57
+
58
+ virtual float restitution () const;
59
+
60
+ virtual void set_sensor (bool state);
61
+
62
+ virtual bool is_sensor () const;
63
+
64
+ virtual void set_category_bits (uint bits);
65
+
66
+ virtual uint category_bits () const;
67
+
68
+ virtual void set_collision_mask (uint mask);
69
+
70
+ virtual uint collision_mask () const;
71
+
72
+ virtual void on_draw (DrawEvent* e);
73
+
74
+ virtual void on_resize (FrameEvent* e);
75
+
76
+ virtual void on_contact (ContactEvent* e);
77
+
78
+ virtual void on_contact_begin (ContactEvent* e);
79
+
80
+ virtual void on_contact_end (ContactEvent* e);
81
+
82
+ struct Data;
83
+
84
+ Xot::PImpl<Data> self;
85
+
86
+ protected:
87
+
88
+ Shape (Data* data, const char* name = NULL);
89
+
90
+ virtual SelectorPtr* get_selector_ptr ();
91
+
92
+ };// Shape
93
+
94
+
95
+ class PolygonShape : public Shape
96
+ {
97
+
98
+ typedef Shape Super;
99
+
100
+ public:
101
+
102
+ PolygonShape (const char* name = NULL);
103
+
104
+ virtual ~PolygonShape ();
105
+
106
+ virtual void set_polygon (const Polygon& polygon);
107
+
108
+ virtual const Polygon& polygon () const;
109
+
110
+ };// PolygonShape
111
+
112
+
113
+ class LineShape : public Shape
114
+ {
115
+
116
+ typedef Shape Super;
117
+
118
+ public:
119
+
120
+ LineShape (const char* name = NULL);
121
+
122
+ virtual ~LineShape ();
123
+
124
+ virtual void add_point (coord x, coord y, coord z = 0);
125
+
126
+ virtual void add_point (const Point& point);
127
+
128
+ virtual void add_points (const Point* points, size_t size);
129
+
130
+ virtual void set_loop (bool loop = true);
131
+
132
+ virtual bool loop () const;
133
+
134
+ };// LineShape
135
+
136
+
137
+ class RectShape : public Shape
138
+ {
139
+
140
+ typedef Shape Super;
141
+
142
+ public:
143
+
144
+ RectShape (const char* name = NULL);
145
+
146
+ virtual ~RectShape ();
147
+
148
+ virtual void set_round (coord round);
149
+
150
+ virtual void set_round (
151
+ coord left_top, coord right_top, coord left_bottom, coord right_bottom);
152
+
153
+ virtual void set_round_left_top (coord round);
154
+
155
+ virtual coord round_left_top () const;
156
+
157
+ virtual void set_round_right_top (coord round);
158
+
159
+ virtual coord round_right_top () const;
160
+
161
+ virtual void set_round_left_bottom (coord round);
162
+
163
+ virtual coord round_left_bottom () const;
164
+
165
+ virtual void set_round_right_bottom (coord round);
166
+
167
+ virtual coord round_right_bottom () const;
168
+
169
+ virtual void set_nsegment (uint num_of_segments);
170
+
171
+ virtual uint nsegment () const;
172
+
173
+ };// RectShape
174
+
175
+
176
+ class EllipseShape : public Shape
177
+ {
178
+
179
+ typedef Shape Super;
180
+
181
+ public:
182
+
183
+ EllipseShape (const char* name = NULL);
184
+
185
+ virtual ~EllipseShape ();
186
+
187
+ virtual void set_hole_size (coord width, coord height);
188
+
189
+ virtual void set_hole_size (const Point& size);
190
+
191
+ virtual const Point& hole_size () const;
192
+
193
+ virtual void set_angle_from (float degree);
194
+
195
+ virtual float angle_from () const;
196
+
197
+ virtual void set_angle_to (float degree);
198
+
199
+ virtual float angle_to () const;
200
+
201
+ virtual void set_nsegment (uint num_of_segments);
202
+
203
+ virtual uint nsegment() const;
204
+
205
+ };// EllipseShape
206
+
207
+
208
+ }// Reflex
209
+
210
+
211
+ #endif//EOH
@@ -5,8 +5,9 @@
5
5
 
6
6
 
7
7
  #include <xot/pimpl.h>
8
- #include <reflex/color.h>
9
- #include <reflex/image.h>
8
+ #include <rays/color.h>
9
+ #include <rays/image.h>
10
+ #include <reflex/defs.h>
10
11
  #include <reflex/selector.h>
11
12
 
12
13
 
@@ -14,9 +15,6 @@ namespace Reflex
14
15
  {
15
16
 
16
17
 
17
- class View;
18
-
19
-
20
18
  class StyleLength
21
19
  {
22
20
 
@@ -26,25 +24,17 @@ namespace Reflex
26
24
 
27
25
  typedef coord Value;
28
26
 
29
- enum Unit {NONE = 0, PIXEL, PERCENT, UNIT_LAST};
30
-
31
- StyleLength ();
32
-
33
- StyleLength (Value value, Unit unit = PIXEL);
27
+ enum Type {NONE = 0, PIXEL, PERCENT, FILL, FIT, TYPE_LAST};
34
28
 
35
- explicit StyleLength (const char* str);
29
+ StyleLength (Type type = NONE, Value value = 0);
36
30
 
37
31
  This copy () const;
38
32
 
39
- void reset (Value value = 0, Unit unit = NONE);
40
-
41
- void reset (const char* str);
33
+ void reset (Type type = NONE, Value value = 0);
42
34
 
43
35
  Value value () const;
44
36
 
45
- Unit unit () const;
46
-
47
- String to_s () const;
37
+ Type type () const;
48
38
 
49
39
  operator bool () const;
50
40
 
@@ -56,12 +46,12 @@ namespace Reflex
56
46
 
57
47
  struct Data;
58
48
 
59
- Xot::PImpl<Data, true> self;
49
+ Xot::PSharedImpl<Data> self;
60
50
 
61
51
  };// StyleLength
62
52
 
63
53
 
64
- class Style
54
+ class Style : public HasSelector
65
55
  {
66
56
 
67
57
  typedef Style This;
@@ -74,122 +64,162 @@ namespace Reflex
74
64
  FLOW_LAST
75
65
  };
76
66
 
77
- typedef Selector:: iterator tag_iterator;
78
-
79
- typedef Selector::const_iterator const_tag_iterator;
80
-
81
67
  Style (const char* name = NULL);
82
68
 
83
69
  ~Style ();
84
70
 
85
- void set_name (const char* name);
71
+ void set_name (const char* name);
72
+
73
+ void add_tag (const char* tag);
74
+
75
+ void remove_tag (const char* tag);
76
+
77
+ void clear_tags ();
78
+
79
+ void set_selector (const Selector& selector);
80
+
81
+ void set_flow (Flow main, Flow sub = FLOW_NONE);
82
+
83
+ void clear_flow ();
84
+
85
+ void get_flow (Flow* main, Flow* sub) const;
86
+
87
+ void set_width (const StyleLength& width);
86
88
 
87
- const char* name () const;
89
+ void clear_width ();
88
90
 
89
- void add_tag (const char* tag);
91
+ const StyleLength& width () const;
90
92
 
91
- void remove_tag (const char* tag);
93
+ void set_height (const StyleLength& height);
92
94
 
93
- tag_iterator tag_begin ();
95
+ void clear_height ();
94
96
 
95
- const_tag_iterator tag_begin () const;
97
+ const StyleLength& height () const;
96
98
 
97
- tag_iterator tag_end ();
99
+ void set_left (const StyleLength& left);
98
100
 
99
- const_tag_iterator tag_end () const;
101
+ void clear_left ();
100
102
 
101
- void set_selector (const Selector& selector);
103
+ const StyleLength& left () const;
102
104
 
103
- Selector& selector ();
105
+ void set_top (const StyleLength& top);
104
106
 
105
- const Selector& selector () const;
107
+ void clear_top ();
106
108
 
107
- void set_flow (Flow main, Flow sub = FLOW_NONE);
109
+ const StyleLength& top () const;
108
110
 
109
- void get_flow (Flow* main, Flow* sub) const;
111
+ void set_right (const StyleLength& right);
110
112
 
111
- void set_width (const StyleLength& width);
113
+ void clear_right ();
112
114
 
113
- void set_height (const StyleLength& height);
115
+ const StyleLength& right () const;
114
116
 
115
- const StyleLength& width () const;
117
+ void set_bottom (const StyleLength& bottom);
116
118
 
117
- const StyleLength& height () const;
119
+ void clear_bottom ();
118
120
 
119
- void set_left (const StyleLength& left);
121
+ const StyleLength& bottom () const;
120
122
 
121
- void set_top (const StyleLength& top);
123
+ void set_margin_left (const StyleLength& left);
122
124
 
123
- void set_right (const StyleLength& right);
125
+ void clear_margin_left ();
124
126
 
125
- void set_bottom (const StyleLength& bottom);
127
+ const StyleLength& margin_left () const;
126
128
 
127
- const StyleLength& left () const;
129
+ void set_margin_top (const StyleLength& top);
128
130
 
129
- const StyleLength& top () const;
131
+ void clear_margin_top ();
130
132
 
131
- const StyleLength& right () const;
133
+ const StyleLength& margin_top () const;
132
134
 
133
- const StyleLength& bottom () const;
135
+ void set_margin_right (const StyleLength& right);
134
136
 
135
- void set_offset_left (const StyleLength& left);
137
+ void clear_margin_right ();
136
138
 
137
- void set_offset_top (const StyleLength& top);
139
+ const StyleLength& margin_right () const;
138
140
 
139
- void set_offset_right (const StyleLength& right);
141
+ void set_margin_bottom (const StyleLength& bottom);
140
142
 
141
- void set_offset_bottom (const StyleLength& bottom);
143
+ void clear_margin_bottom ();
142
144
 
143
- const StyleLength& offset_left () const;
145
+ const StyleLength& margin_bottom () const;
144
146
 
145
- const StyleLength& offset_top () const;
147
+ void set_padding_left (const StyleLength& left);
146
148
 
147
- const StyleLength& offset_right () const;
149
+ void clear_padding_left ();
148
150
 
149
- const StyleLength& offset_bottom () const;
151
+ const StyleLength& padding_left () const;
150
152
 
151
- void set_margin_left (const StyleLength& left);
153
+ void set_padding_top (const StyleLength& top);
152
154
 
153
- void set_margin_top (const StyleLength& top);
155
+ void clear_padding_top ();
154
156
 
155
- void set_margin_right (const StyleLength& right);
157
+ const StyleLength& padding_top () const;
156
158
 
157
- void set_margin_bottom (const StyleLength& bottom);
159
+ void set_padding_right (const StyleLength& right);
158
160
 
159
- const StyleLength& margin_left () const;
161
+ void clear_padding_right ();
160
162
 
161
- const StyleLength& margin_top () const;
163
+ const StyleLength& padding_right () const;
162
164
 
163
- const StyleLength& margin_right () const;
165
+ void set_padding_bottom (const StyleLength& bottom);
164
166
 
165
- const StyleLength& margin_bottom () const;
167
+ void clear_padding_bottom ();
166
168
 
167
- void set_padding_left (const StyleLength& left);
169
+ const StyleLength& padding_bottom () const;
168
170
 
169
- void set_padding_top (const StyleLength& top);
171
+ void set_center_x (const StyleLength& x);
170
172
 
171
- void set_padding_right (const StyleLength& right);
173
+ void clear_center_x ();
172
174
 
173
- void set_padding_bottom (const StyleLength& bottom);
175
+ const StyleLength& center_x () const;
174
176
 
175
- const StyleLength& padding_left () const;
177
+ void set_center_y (const StyleLength& y);
176
178
 
177
- const StyleLength& padding_top () const;
179
+ void clear_center_y ();
178
180
 
179
- const StyleLength& padding_right () const;
181
+ const StyleLength& center_y () const;
180
182
 
181
- const StyleLength& padding_bottom () const;
183
+ void set_foreground_fill (const Color& fill);
182
184
 
183
- void set_fill (const Color& fill);
185
+ void clear_foreground_fill ();
184
186
 
185
- const Color& fill () const;
187
+ const Color& foreground_fill () const;
186
188
 
187
- void set_stroke (const Color& stroke);
189
+ void set_foreground_stroke (const Color& stroke);
188
190
 
189
- const Color& stroke () const;
191
+ void clear_foreground_stroke ();
192
+
193
+ const Color& foreground_stroke () const;
194
+
195
+ void set_foreground_stroke_width (coord width);
196
+
197
+ void clear_foreground_stroke_width ();
198
+
199
+ coord foreground_stroke_width () const;
200
+
201
+ void set_background_fill (const Color& fill);
202
+
203
+ void clear_background_fill ();
204
+
205
+ const Color& background_fill () const;
206
+
207
+ void set_background_stroke (const Color& stroke);
208
+
209
+ void clear_background_stroke ();
210
+
211
+ const Color& background_stroke () const;
212
+
213
+ void set_background_stroke_width (coord width);
214
+
215
+ void clear_background_stroke_width ();
216
+
217
+ coord background_stroke_width () const;
190
218
 
191
219
  void set_image (const Image& image);
192
220
 
221
+ void clear_image ();
222
+
193
223
  const Image& image () const;
194
224
 
195
225
  friend bool operator == (const This& lhs, const This& rhs);
@@ -198,7 +228,11 @@ namespace Reflex
198
228
 
199
229
  struct Data;
200
230
 
201
- Xot::PImpl<Data, true> self;
231
+ Xot::PSharedImpl<Data> self;
232
+
233
+ protected:
234
+
235
+ virtual SelectorPtr* get_selector_ptr ();
202
236
 
203
237
  };// Style
204
238
 
@@ -0,0 +1,73 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_TIMER_H__
4
+ #define __REFLEX_TIMER_H__
5
+
6
+
7
+ #include <xot/ref.h>
8
+ #include <xot/pimpl.h>
9
+ #include <reflex/defs.h>
10
+ #include <reflex/selector.h>
11
+
12
+
13
+ namespace Reflex
14
+ {
15
+
16
+
17
+ class View;
18
+
19
+
20
+ class Timer : public Xot::RefCountable<>, public HasSelector
21
+ {
22
+
23
+ typedef Timer This;
24
+
25
+ public:
26
+
27
+ typedef Xot::Ref<This> Ref;
28
+
29
+ enum {ID_INVALID = 0, ID_FIRST};
30
+
31
+ Timer ();
32
+
33
+ virtual ~Timer ();
34
+
35
+ virtual void fire ();
36
+
37
+ virtual void stop ();
38
+
39
+ virtual View* owner () const;
40
+
41
+ virtual int id () const;
42
+
43
+ virtual float interval () const;
44
+
45
+ virtual void set_count (int count);
46
+
47
+ virtual int count () const;
48
+
49
+ virtual bool is_finished () const;
50
+
51
+ virtual operator bool () const;
52
+
53
+ virtual bool operator ! () const;
54
+
55
+ friend bool operator == (const This& lhs, const This& rhs);
56
+
57
+ friend bool operator != (const This& lhs, const This& rhs);
58
+
59
+ struct Data;
60
+
61
+ Xot::PImpl<Data> self;
62
+
63
+ protected:
64
+
65
+ virtual SelectorPtr* get_selector_ptr ();
66
+
67
+ };// Timer
68
+
69
+
70
+ }// Reflex
71
+
72
+
73
+ #endif//EOH