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
data/src/body.h ADDED
@@ -0,0 +1,91 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_SRC_BODY_H__
4
+ #define __REFLEX_SRC_BODY_H__
5
+
6
+
7
+ #include <xot/noncopyable.h>
8
+ #include <xot/pimpl.h>
9
+ #include <rays/point.h>
10
+ #include <reflex/defs.h>
11
+
12
+
13
+ class b2Body;
14
+
15
+
16
+ namespace Reflex
17
+ {
18
+
19
+
20
+ class World;
21
+
22
+
23
+ class Body : public Xot::NonCopyable
24
+ {
25
+
26
+ public:
27
+
28
+ Body (World* world, const Point& position = 0, float angle = 0);
29
+
30
+ ~Body ();
31
+
32
+ void apply_force (coord x, coord y);
33
+
34
+ void apply_force (const Point& force);
35
+
36
+ void apply_torque (float torque);
37
+
38
+ void apply_linear_impulse (coord x, coord y);
39
+
40
+ void apply_linear_impulse (const Point& impulse);
41
+
42
+ void apply_angular_impulse (float impulse);
43
+
44
+ float meter2pixel (float meter = 1) const;
45
+
46
+ void set_transform (coord x, coord y, float degree);
47
+
48
+ Point position () const;
49
+
50
+ float angle () const;
51
+
52
+ void set_dynamic (bool dynamic = true);
53
+
54
+ bool is_dynamic () const;
55
+
56
+ void set_linear_velocity (coord x, coord y);
57
+
58
+ void set_linear_velocity (const Point& velocity);
59
+
60
+ Point linear_velocity () const;
61
+
62
+ void set_angular_velocity (float velocity);
63
+
64
+ float angular_velocity () const;
65
+
66
+ void set_gravity_scale (float scale);
67
+
68
+ float gravity_scale () const;
69
+
70
+ struct Data;
71
+
72
+ Xot::PImpl<Data> self;
73
+
74
+ };// Body
75
+
76
+
77
+ void Body_copy_attributes (Body* to, const Body& from);
78
+
79
+ Body* Body_create_temporary ();
80
+
81
+ bool Body_is_temporary (const Body& body);
82
+
83
+ b2Body* Body_get_b2ptr ( Body* body);
84
+
85
+ const b2Body* Body_get_b2ptr (const Body* body);
86
+
87
+
88
+ }// Reflex
89
+
90
+
91
+ #endif//EOH
data/src/event.cpp CHANGED
@@ -1,6 +1,8 @@
1
1
  #include "reflex/event.h"
2
2
 
3
3
 
4
+ #include "reflex/timer.h"
5
+ #include "reflex/shape.h"
4
6
  #include "reflex/exception.h"
5
7
 
6
8
 
@@ -26,8 +28,14 @@ namespace Reflex
26
28
  }
27
29
 
28
30
 
29
- UpdateEvent::UpdateEvent (float dt)
30
- : dt(dt)
31
+ MotionEvent::MotionEvent (const Point& gravity)
32
+ : gravity(gravity)
33
+ {
34
+ }
35
+
36
+
37
+ UpdateEvent::UpdateEvent (double now, float dt)
38
+ : now(now), dt(dt)
31
39
  {
32
40
  }
33
41
 
@@ -114,8 +122,8 @@ namespace Reflex
114
122
  {
115
123
  }
116
124
 
117
- FocusEvent::FocusEvent (Type type, View* focus, View* last)
118
- : type(type), focus(focus), last(last)
125
+ FocusEvent::FocusEvent (Type type, View* current, View* last)
126
+ : type(type), current(current), last(last)
119
127
  {
120
128
  }
121
129
 
@@ -162,7 +170,7 @@ namespace Reflex
162
170
  if (positions_)
163
171
  {
164
172
  for (size_t i = 0; i < size; ++i)
165
- positions[i] = *(Coord3*) &positions_[i];
173
+ positions[i] = *(Rays::Coord3*) &positions_[i];
166
174
  }
167
175
  }
168
176
 
@@ -206,27 +214,27 @@ namespace Reflex
206
214
  }
207
215
 
208
216
  Point&
209
- WheelEvent::delta ()
217
+ WheelEvent::position ()
210
218
  {
211
- return *(Point*) &delta_;
219
+ return *(Point*) &position_;
212
220
  }
213
221
 
214
222
  const Point&
215
- WheelEvent::delta () const
223
+ WheelEvent::position () const
216
224
  {
217
- return const_cast<WheelEvent*>(this)->delta();
225
+ return const_cast<WheelEvent*>(this)->position();
218
226
  }
219
227
 
220
228
  Point&
221
- WheelEvent::position ()
229
+ WheelEvent::delta ()
222
230
  {
223
- return *(Point*) &position_;
231
+ return *(Point*) &delta_;
224
232
  }
225
233
 
226
234
  const Point&
227
- WheelEvent::position () const
235
+ WheelEvent::delta () const
228
236
  {
229
- return const_cast<WheelEvent*>(this)->position();
237
+ return const_cast<WheelEvent*>(this)->delta();
230
238
  }
231
239
 
232
240
 
@@ -241,13 +249,55 @@ namespace Reflex
241
249
  }
242
250
 
243
251
 
252
+ TimerEvent::TimerEvent (Timer* timer)
253
+ : timer(timer)
254
+ {
255
+ }
256
+
257
+ View*
258
+ TimerEvent::owner () const
259
+ {
260
+ return timer ? timer->owner() : NULL;
261
+ }
262
+
263
+ int
264
+ TimerEvent::id () const
265
+ {
266
+ return timer ? timer->id() : Timer::ID_INVALID;
267
+ }
268
+
269
+ float
270
+ TimerEvent::interval () const
271
+ {
272
+ return timer ? timer->interval() : -1;
273
+ }
274
+
275
+ void
276
+ TimerEvent::set_count (int count)
277
+ {
278
+ if (timer) timer->set_count(count);
279
+ }
280
+
281
+ int
282
+ TimerEvent::count () const
283
+ {
284
+ return timer ? timer->count() : 0;
285
+ }
286
+
287
+ bool
288
+ TimerEvent::is_finished () const
289
+ {
290
+ return timer ? timer->is_finished() : true;
291
+ }
292
+
293
+
244
294
  ContactEvent::ContactEvent ()
245
- : type(NONE), view(NULL)
295
+ : type(NONE), shape(NULL), view(NULL)
246
296
  {
247
297
  }
248
298
 
249
- ContactEvent::ContactEvent (Type type, View* view)
250
- : type(type), view(view)
299
+ ContactEvent::ContactEvent (Type type, Shape* shape)
300
+ : type(type), shape(shape), view(shape ? shape->owner() : NULL)
251
301
  {
252
302
  }
253
303
 
data/src/exception.cpp CHANGED
@@ -1,9 +1,6 @@
1
1
  #include "reflex/exception.h"
2
2
 
3
3
 
4
- #include <xot/string.h>
5
-
6
-
7
4
  namespace Reflex
8
5
  {
9
6
 
@@ -20,6 +17,12 @@ namespace Reflex
20
17
  }
21
18
 
22
19
 
20
+ PhysicsError::PhysicsError (const char* str)
21
+ : Super(str)
22
+ {
23
+ }
24
+
25
+
23
26
  namespace ErrorFunctions
24
27
  {
25
28
 
@@ -37,6 +40,13 @@ namespace Reflex
37
40
  throw LayoutError(Xot::error_text(file, line, s));
38
41
  }
39
42
 
43
+ void
44
+ physics_error (const char* file, int line, const char* format, ...)
45
+ {
46
+ XOT_STRINGF(format, s);
47
+ throw PhysicsError(Xot::error_text(file, line, s));
48
+ }
49
+
40
50
  }// ErrorFunctions
41
51
 
42
52
 
data/src/filter.cpp ADDED
@@ -0,0 +1,76 @@
1
+ #include "reflex/filter.h"
2
+
3
+
4
+ #include "reflex/exception.h"
5
+ #include "reflex/debug.h"
6
+
7
+
8
+ namespace Reflex
9
+ {
10
+
11
+
12
+ struct Filter::Data
13
+ {
14
+
15
+ Shader shader;
16
+
17
+ };// Filter::Data
18
+
19
+
20
+ Filter::Filter ()
21
+ {
22
+ }
23
+
24
+ Filter::Filter (const Shader& shader)
25
+ {
26
+ self->shader = shader;
27
+ }
28
+
29
+ Filter::~Filter ()
30
+ {
31
+ }
32
+
33
+ void
34
+ Filter::apply (Painter* painter, const Image& image) const
35
+ {
36
+ if (!self->shader)
37
+ return;
38
+
39
+ if (!painter || !image)
40
+ argument_error(__FILE__, __LINE__);
41
+
42
+ painter->set_shader(self->shader);
43
+ painter->image(image);
44
+ }
45
+
46
+ void
47
+ Filter::set_shader (const Shader& shader)
48
+ {
49
+ self->shader = shader;
50
+ }
51
+
52
+ Shader&
53
+ Filter::shader ()
54
+ {
55
+ return self->shader;
56
+ }
57
+
58
+ const Shader&
59
+ Filter::shader () const
60
+ {
61
+ return const_cast<Filter*>(this)->shader();
62
+ }
63
+
64
+ Filter::operator bool () const
65
+ {
66
+ return self->shader;
67
+ }
68
+
69
+ bool
70
+ Filter::operator ! () const
71
+ {
72
+ return !operator bool();
73
+ }
74
+
75
+
76
+ }// Reflex
data/src/fixture.cpp CHANGED
@@ -1,107 +1,232 @@
1
- #include "reflex/fixture.h"
1
+ #include "fixture.h"
2
2
 
3
3
 
4
4
  #include <assert.h>
5
5
  #include <Box2D/Dynamics/b2Fixture.h>
6
-
7
-
8
- #define PTR ((b2Fixture*) handle)
6
+ #include <Box2D/Collision/Shapes/b2CircleShape.h>
7
+ #include "reflex/exception.h"
8
+ #include "reflex/debug.h"
9
+ #include "view.h"
10
+ #include "world.h"
11
+ #include "body.h"
9
12
 
10
13
 
11
14
  namespace Reflex
12
15
  {
13
16
 
14
17
 
15
- Fixture::Fixture (Handle h)
16
- : handle(h)
18
+ Fixture::Fixture (Body* body, const b2Shape* b2shape, void* userdata)
19
+ : b2fixture(NULL)
17
20
  {
21
+ assert(body);
22
+
23
+ b2Body* b2body = Body_get_b2ptr(body);
24
+ assert(b2body);
25
+
26
+ b2fixture = b2body->CreateFixture(b2shape, 0);
27
+ if (!b2fixture)
28
+ system_error(__FILE__, __LINE__);
29
+
30
+ b2fixture->SetUserData(userdata);
18
31
  }
19
32
 
20
- Fixture&
21
- Fixture::operator = (Handle h)
33
+ Fixture::~Fixture ()
22
34
  {
23
- handle = h;
24
- return *this;
35
+ b2fixture->SetUserData(NULL);
36
+ b2fixture->GetBody()->DestroyFixture(b2fixture);
25
37
  }
26
38
 
27
39
  void
28
40
  Fixture::set_density (float density)
29
41
  {
30
- assert(PTR && PTR->GetBody());
42
+ if (density == this->density())
43
+ return;
44
+
45
+ for (Fixture* p = this; p; p = p->pnext.get())
46
+ p->b2fixture->SetDensity(density);
31
47
 
32
- PTR->SetDensity(density);
33
- PTR->GetBody()->ResetMassData();
48
+ b2fixture->GetBody()->ResetMassData();
34
49
  }
35
50
 
36
51
  float
37
52
  Fixture::density () const
38
53
  {
39
- assert(PTR);
40
-
41
- return PTR->GetDensity();
54
+ return b2fixture->GetDensity();
42
55
  }
43
56
 
44
57
  void
45
58
  Fixture::set_friction (float friction)
46
59
  {
47
- assert(PTR);
60
+ if (friction == this->friction())
61
+ return;
48
62
 
49
- PTR->SetFriction(friction);
63
+ for (Fixture* p = this; p; p = p->pnext.get())
64
+ p->b2fixture->SetFriction(friction);
50
65
  }
51
66
 
52
67
  float
53
68
  Fixture::friction () const
54
69
  {
55
- assert(PTR);
56
-
57
- return PTR->GetFriction();
70
+ return b2fixture->GetFriction();
58
71
  }
59
72
 
60
73
  void
61
74
  Fixture::set_restitution (float restitution)
62
75
  {
63
- assert(PTR);
76
+ if (restitution == this->restitution())
77
+ return;
64
78
 
65
- PTR->SetRestitution(restitution);
79
+ for (Fixture* p = this; p; p = p->pnext.get())
80
+ p->b2fixture->SetRestitution(restitution);
66
81
  }
67
82
 
68
83
  float
69
84
  Fixture::restitution () const
70
85
  {
71
- assert(PTR);
86
+ return b2fixture->GetRestitution();
87
+ }
88
+
89
+ void
90
+ Fixture::set_sensor (bool state)
91
+ {
92
+ if (state == is_sensor())
93
+ return;
72
94
 
73
- return PTR->GetRestitution();
95
+ for (Fixture* p = this; p; p = p->pnext.get())
96
+ p->b2fixture->SetSensor(state);
74
97
  }
75
98
 
76
- Fixture::Handle
77
- Fixture::next () const
99
+ bool
100
+ Fixture::is_sensor () const
78
101
  {
79
- assert(PTR);
102
+ return b2fixture->IsSensor();
103
+ }
80
104
 
81
- return PTR->GetNext();
105
+ void
106
+ Fixture::set_category_bits (uint bits)
107
+ {
108
+ if (bits > USHRT_MAX)
109
+ {
110
+ argument_error(
111
+ __FILE__, __LINE__, "category_bits must be less then USHRT_MAX.");
112
+ }
113
+
114
+ if (bits == category_bits())
115
+ return;
116
+
117
+ for (Fixture* p = this; p; p = p->pnext.get())
118
+ {
119
+ b2Filter f = p->b2fixture->GetFilterData();
120
+ f.categoryBits = bits;
121
+ p->b2fixture->SetFilterData(f);
122
+ }
82
123
  }
83
124
 
84
- Fixture::operator bool () const
125
+ uint
126
+ Fixture::category_bits () const
85
127
  {
86
- return PTR;
128
+ return b2fixture->GetFilterData().categoryBits;
87
129
  }
88
130
 
89
- bool
90
- Fixture::operator ! () const
131
+ void
132
+ Fixture::set_collision_mask (uint mask)
91
133
  {
92
- return !operator bool();
134
+ if (mask > USHRT_MAX)
135
+ {
136
+ argument_error(
137
+ __FILE__, __LINE__, "collision_mask must be less then USHRT_MAX.");
138
+ }
139
+
140
+ if (mask == collision_mask())
141
+ return;
142
+
143
+ for (Fixture* p = this; p; p = p->pnext.get())
144
+ {
145
+ b2Filter f = b2fixture->GetFilterData();
146
+ f.maskBits = mask;
147
+ b2fixture->SetFilterData(f);
148
+ }
93
149
  }
94
150
 
95
- bool
96
- operator == (const Fixture& lhs, const Fixture& rhs)
151
+ uint
152
+ Fixture::collision_mask () const
153
+ {
154
+ return b2fixture->GetFilterData().maskBits;
155
+ }
156
+
157
+ b2Fixture*
158
+ Fixture::b2ptr ()
159
+ {
160
+ return b2fixture;
161
+ }
162
+
163
+ const b2Fixture*
164
+ Fixture::b2ptr () const
97
165
  {
98
- return lhs.handle == rhs.handle;
166
+ return const_cast<Fixture*>(this)->b2ptr();
167
+ }
168
+
169
+ void
170
+ Fixture::set_next (Fixture* fixture)
171
+ {
172
+ if (fixture)
173
+ Fixture_copy_attributes(fixture, *this);
174
+
175
+ pnext.reset(fixture);
176
+ }
177
+
178
+ Fixture*
179
+ Fixture::next ()
180
+ {
181
+ return pnext.get();
182
+ }
183
+
184
+ const Fixture*
185
+ Fixture::next () const
186
+ {
187
+ return const_cast<Fixture*>(this)->next();
188
+ }
189
+
190
+
191
+ void
192
+ Fixture_copy_attributes (Fixture* to, const Fixture& from)
193
+ {
194
+ if (!to)
195
+ return;
196
+
197
+ to->set_density( from.density());
198
+ to->set_friction( from.friction());
199
+ to->set_restitution( from.restitution());
200
+ to->set_sensor( from.is_sensor());
201
+ to->set_category_bits( from.category_bits());
202
+ to->set_collision_mask(from.collision_mask());
203
+ }
204
+
205
+ static Body*
206
+ get_temporary_body ()
207
+ {
208
+ static Body* body = NULL;
209
+ if (!body) body = Body_create_temporary();
210
+ return body;
211
+ }
212
+
213
+ Fixture*
214
+ Fixture_create_temporary ()
215
+ {
216
+ Body* body = get_temporary_body();
217
+ if (!body)
218
+ invalid_state_error(__FILE__, __LINE__);
219
+
220
+ b2CircleShape b2shape;
221
+ b2shape.m_radius = 1;
222
+
223
+ return new Fixture(body, &b2shape);
99
224
  }
100
225
 
101
226
  bool
102
- operator != (const Fixture& lhs, const Fixture& rhs)
227
+ Fixture_is_temporary (const Fixture& fixture)
103
228
  {
104
- return !(lhs == rhs);
229
+ return fixture.b2ptr()->GetBody() == Body_get_b2ptr(get_temporary_body());
105
230
  }
106
231
 
107
232
 
data/src/fixture.h ADDED
@@ -0,0 +1,85 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_SRC_FIXTURE_H__
4
+ #define __REFLEX_SRC_FIXTURE_H__
5
+
6
+
7
+ #include <memory>
8
+ #include <xot/noncopyable.h>
9
+ #include <reflex/defs.h>
10
+
11
+
12
+ class b2Fixture;
13
+ class b2Shape;
14
+
15
+
16
+ namespace Reflex
17
+ {
18
+
19
+
20
+ class Body;
21
+
22
+
23
+ class Fixture : public Xot::NonCopyable
24
+ {
25
+
26
+ public:
27
+
28
+ Fixture (Body* body, const b2Shape* b2shape, void* userdata = NULL);
29
+
30
+ ~Fixture ();
31
+
32
+ void set_density (float density);
33
+
34
+ float density () const;
35
+
36
+ void set_friction (float friction);
37
+
38
+ float friction () const;
39
+
40
+ void set_restitution (float restitution);
41
+
42
+ float restitution () const;
43
+
44
+ void set_sensor (bool state);
45
+
46
+ bool is_sensor () const;
47
+
48
+ void set_category_bits (uint bits);
49
+
50
+ uint category_bits () const;
51
+
52
+ void set_collision_mask (uint mask);
53
+
54
+ uint collision_mask () const;
55
+
56
+ b2Fixture* b2ptr ();
57
+
58
+ const b2Fixture* b2ptr () const;
59
+
60
+ void set_next (Fixture* fixture);
61
+
62
+ Fixture* next ();
63
+
64
+ const Fixture* next () const;
65
+
66
+ private:
67
+
68
+ b2Fixture* b2fixture;
69
+
70
+ std::unique_ptr<Fixture> pnext;
71
+
72
+ };// Fixture
73
+
74
+
75
+ void Fixture_copy_attributes (Fixture* to, const Fixture& from);
76
+
77
+ Fixture* Fixture_create_temporary ();
78
+
79
+ bool Fixture_is_temporary (const Fixture& fixture);
80
+
81
+
82
+ }// Reflex
83
+
84
+
85
+ #endif//EOH
data/src/image_view.cpp CHANGED
@@ -39,13 +39,13 @@ namespace Reflex
39
39
  return self->image;
40
40
  }
41
41
 
42
- Point
43
- ImageView::content_size () const
42
+ Bounds
43
+ ImageView::content_bounds () const
44
44
  {
45
45
  if (self->image)
46
- return Point(self->image.width(), self->image.height());
46
+ return Bounds(self->image.width(), self->image.height());
47
47
  else
48
- return Super::content_size();
48
+ return Super::content_bounds();
49
49
  }
50
50
 
51
51
  void