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
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'forwardable'
5
+ require 'reflex/ext'
6
+
7
+
8
+ module Reflex
9
+
10
+
11
+ class Timer
12
+
13
+ attr_accessor :block
14
+
15
+ alias view owner
16
+
17
+ def inspect ()
18
+ "#<Reflex::Timer owner:#{owner} id:#{id} interval:#{interval} count:#{count}>"
19
+ end
20
+
21
+ private
22
+
23
+ def call_timer_block ()
24
+ @block.call self if @block
25
+ end
26
+
27
+ end# Timer
28
+
29
+
30
+ end# Reflex
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require 'forwardable'
5
+ require 'reflex/ext'
6
+
7
+
8
+ module Reflex
9
+
10
+
11
+ class TimerEvent < Event
12
+
13
+ extend Forwardable
14
+
15
+ def_delegators :timer,
16
+ :name=, :name,
17
+ :add_tag, :remove_tag, :each_tag,
18
+ :selector=, :selector
19
+
20
+ alias view owner
21
+
22
+ def inspect ()
23
+ "#<Reflex::TimerEvent owner:#{owner} id:#{id} interval:#{interval} count:#{count}>"
24
+ end
25
+
26
+ end# TimerEvent
27
+
28
+
29
+ end# Reflex
@@ -7,7 +7,7 @@ require 'reflex/ext'
7
7
  module Reflex
8
8
 
9
9
 
10
- class UpdateEvent
10
+ class UpdateEvent < Event
11
11
 
12
12
  def inspect ()
13
13
  "#<Reflex::UpdateEvent dt:#{dt}>"
data/lib/reflex/view.rb CHANGED
@@ -3,10 +3,13 @@
3
3
 
4
4
  require 'forwardable'
5
5
  require 'xot/setter'
6
+ require 'xot/bit_flag_accessor'
7
+ require 'xot/universal_accessor'
6
8
  require 'xot/block_util'
7
9
  require 'reflex/ext'
10
+ require 'reflex/selector'
11
+ require 'reflex/style'
8
12
  require 'reflex/model_view'
9
- require 'reflex/flags'
10
13
  require 'reflex/helper'
11
14
 
12
15
 
@@ -22,24 +25,61 @@ module Reflex
22
25
 
23
26
  extend Forwardable
24
27
 
25
- def_delegators :body,
26
- :static=, :static?, :dynamic=, :dynamic?,
27
- :velocity=, :linear_velocity=, :angular_velocity=,
28
- :velocity, :linear_velocity, :angular_velocity,
29
- :apply_force, :apply_torque, :apply_impulse,
30
- :apply_linear_impulse, :apply_angular_impulse,
31
- :density=, :density, :friction=, :friction, :restitution=, :restitution,
32
- :gravity_scale=, :gravity_scale
33
-
34
- alias add add_child
35
- alias remove remove_child
36
- alias find find_children
37
- alias meter meter2pixel
28
+ def_delegators :style,
29
+ :flow=, :flow,
30
+ :foreground_fill=, :foreground_fill,
31
+ :foreground_stroke=, :foreground_stroke,
32
+ :foreground_stroke_width=, :foreground_stroke_width,
33
+ :background_fill=, :background_fill,
34
+ :background_stroke=, :background_stroke,
35
+ :background_stroke_width=, :background_stroke_width,
36
+ :foreground=, :foreground,
37
+ :background=, :background,
38
+ :fore_fill=, :fore_fill,
39
+ :fore_stroke=, :fore_stroke,
40
+ :fore_stroke_width=, :fore_stroke_width,
41
+ :back_fill=, :back_fill,
42
+ :back_stroke=, :back_stroke,
43
+ :back_stroke_width=, :back_stroke_width,
44
+ :fore=, :fore,
45
+ :back=, :back,
46
+ :fill=, :fill,
47
+ :stroke=, :stroke,
48
+ :stroke_width=, :stroke_width,
49
+ :image=, :image
50
+
51
+ bit_flag_accessor :capture do
52
+ flag :key, CAPTURE_KEY
53
+ flag :pointer, CAPTURE_POINTER
54
+ flag :all, CAPTURE_ALL
55
+ end
38
56
 
39
- def initialize (opts = {}, &block)
57
+ def initialize (options = nil, &block)
40
58
  super()
41
- set opts
42
- @attach_block = block if block
59
+ set options if options
60
+ Xot::BlockUtil.instance_eval_or_block_call self, &block if block
61
+ end
62
+
63
+ def timeout (seconds = 0, count: 1, &block)
64
+ timer = start_timer seconds, count
65
+ timer.block = block if block
66
+ timer
67
+ end
68
+
69
+ def interval (seconds = 0, &block)
70
+ timeout seconds, count: -1, &block
71
+ end
72
+
73
+ def delay (seconds = 0, &block)
74
+ timeout seconds, &block
75
+ end
76
+
77
+ def remove_self ()
78
+ parent.remove self if parent
79
+ end
80
+
81
+ def find_child (*args)
82
+ find_children(*args).first
43
83
  end
44
84
 
45
85
  def children ()
@@ -56,13 +96,28 @@ module Reflex
56
96
  s
57
97
  end
58
98
 
59
- def capture= (*args)
60
- set_capture CAPTURE_FLAG.symbols2bits(*args.flatten)
99
+ def shapes ()
100
+ to_enum :each_shape
101
+ end
102
+
103
+ def categories ()
104
+ @categories ||= Xot::BitFlag.new(auto: true, all: 1)
105
+ end
106
+
107
+ def category= (*symbols)
108
+ set_category_bits parent_categories.symbols2bits *symbols
109
+ end
110
+
111
+ def category ()
112
+ parent_categories.bits2symbols get_category_bits
61
113
  end
62
114
 
63
- def capture (*args)
64
- send :capture=, *args unless args.empty?
65
- CAPTURE_FLAG.bits2symbols get_capture
115
+ def collision= (*categories)
116
+ set_collision_mask parent_categories.symbols2bits *categories
117
+ end
118
+
119
+ def collision ()
120
+ parent_categories.bits2symbols get_collision_mask
66
121
  end
67
122
 
68
123
  def capturing? (*args)
@@ -70,24 +125,64 @@ module Reflex
70
125
  args.all? {|type| cap.include? type}
71
126
  end
72
127
 
73
- def gravity= (*args)
74
- case arg = args[0]
75
- when Point then set_gravity arg.x, arg.y
76
- when Array then set_gravity arg[0], arg[1]
77
- else set_gravity *args
78
- end
128
+ def on_contact (e)
129
+ end
130
+
131
+ def on_contact_begin (e)
79
132
  end
80
133
 
134
+ def on_contact_end (e)
135
+ end
136
+
137
+ universal_accessor :shape, :name, :selector, :frame, :angle, :zoom, :capture,
138
+ :density, :friction, :restitution, :category, :collision,
139
+ :linear_velocity, :angular_velocity, :gravity_scale,
140
+ :gravity, :time_scale,
141
+ clip: {reader: :clip?},
142
+ cache: {reader: :cache?},
143
+ resize_to_fit: {reader: :resize_to_fit?},
144
+ scroll_to_fit: {reader: :scroll_to_fit?},
145
+ static: {reader: :static?},
146
+ dynamic: {reader: :dynamic?},
147
+ sensor: {reader: :sensor?},
148
+ debug: {reader: :debug?}
149
+
150
+ alias add add_child
151
+ alias remove remove_child
152
+ alias find find_child
153
+
154
+ alias apply_impulse apply_linear_impulse
155
+ alias velocity= linear_velocity=
156
+ alias velocity linear_velocity
157
+
158
+ alias meter meter2pixel
159
+
81
160
  def self.has_model ()
82
161
  include ModelView
83
162
  end
84
163
 
164
+ protected
165
+
166
+ def parent_categories ()
167
+ raise InvalidStateError unless parent
168
+ parent.categories
169
+ end
170
+
85
171
  private
86
172
 
87
- def call_attach_block ()
88
- return unless @attach_block
89
- Xot::BlockUtil.instance_eval_or_block_call self, &@attach_block
90
- @attach_block = nil
173
+ def on_contact! (*args)
174
+ call_contact! *args
175
+ delay {on_contact *args}# delay to avoid physics world lock
176
+ end
177
+
178
+ def on_contact_begin! (*args)
179
+ call_contact_begin! *args
180
+ delay {on_contact_begin *args}
181
+ end
182
+
183
+ def on_contact_end! (*args)
184
+ call_contact_end! *args
185
+ delay {on_contact_end *args}
91
186
  end
92
187
 
93
188
  end# View
@@ -7,7 +7,15 @@ require 'reflex/ext'
7
7
  module Reflex
8
8
 
9
9
 
10
- class WheelEvent
10
+ class WheelEvent < Event
11
+
12
+ def position ()
13
+ Point.new x, y, z
14
+ end
15
+
16
+ def delta ()
17
+ Point.new dx, dy, dz
18
+ end
11
19
 
12
20
  def inspect ()
13
21
  "#<Reflex::WheelEvent dx:#{dx} dy:#{dy} dz:#{dz} x:#{x} y:#{y} z:#{z} mod:#{modifiers}>"
data/lib/reflex/window.rb CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  require 'forwardable'
5
5
  require 'xot/setter'
6
+ require 'xot/universal_accessor'
6
7
  require 'xot/block_util'
7
8
  require 'reflex/ext'
8
9
  require 'reflex/helper'
@@ -20,20 +21,39 @@ module Reflex
20
21
  extend Forwardable
21
22
 
22
23
  def_delegators :root,
23
- :add_child, :remove_child, :find_children, :style, :styles,
24
- :meter2pixel, :meter, :gravity=, :gravity, :wall, :debug=, :debug?
24
+ :timeout, :delay, :interval,
25
+ :add_child, :add,
26
+ :remove_child, :remove,
27
+ :find_child, :find, :find_children,
28
+ :style, :styles, :scroll_to, :scroll_by, :scroll,
29
+ :meter2pixel, :meter, :wall,
30
+ :zoom=, :zoom,
31
+ :clip=, :clip, :clip?,
32
+ :cache=, :cache, :cache?,
33
+ :flow=, :flow,
34
+ :fill=, :fill,
35
+ :stroke=, :stroke,
36
+ :foreground=, :foreground,
37
+ :background=, :background,
38
+ :foreground_fill=, :foreground_fill,
39
+ :foreground_stroke=, :foreground_stroke,
40
+ :background_fill=, :background_fill,
41
+ :background_stroke=, :background_stroke,
42
+ :image=, :image,
43
+ :gravity=, :gravity,
44
+ :time_scale=, :time_scale,
45
+ :debug=, :debug, :debug?
25
46
 
26
47
  def_delegators :wall,
27
- :friction=, :friction, :restitution=, :restitution
48
+ :friction=, :friction,
49
+ :restitution=, :restitution
28
50
 
29
- alias add add_child
30
- alias remove remove_child
31
- alias find find_children
51
+ universal_accessor :title, :frame
32
52
 
33
- def initialize (opts = {}, &block)
53
+ def initialize (options = nil, &block)
34
54
  super()
35
- set opts
36
- @show_block = block if block
55
+ set options if options
56
+ @show_block = block
37
57
  end
38
58
 
39
59
  def paint (&block)
data/lib/reflex.rb CHANGED
@@ -8,8 +8,10 @@ require 'reflex/point'
8
8
  require 'reflex/bounds'
9
9
  require 'reflex/color'
10
10
  require 'reflex/color_space'
11
+ require 'reflex/matrix'
12
+ require 'reflex/polyline'
13
+ require 'reflex/polygon'
11
14
  require 'reflex/bitmap'
12
- require 'reflex/texture'
13
15
  require 'reflex/image'
14
16
  require 'reflex/font'
15
17
  require 'reflex/shader'
@@ -21,6 +23,8 @@ require 'reflex/helper'
21
23
  require 'reflex/selector'
22
24
  require 'reflex/style'
23
25
  require 'reflex/style_length'
26
+ require 'reflex/timer'
27
+ require 'reflex/filter'
24
28
 
25
29
  require 'reflex/update_event'
26
30
  require 'reflex/draw_event'
@@ -31,10 +35,14 @@ require 'reflex/key_event'
31
35
  require 'reflex/pointer_event'
32
36
  require 'reflex/wheel_event'
33
37
  require 'reflex/capture_event'
38
+ require 'reflex/timer_event'
34
39
  require 'reflex/contact_event'
35
40
 
36
- require 'reflex/body'
37
- require 'reflex/fixture'
41
+ require 'reflex/shape'
42
+ require 'reflex/polygon_shape'
43
+ require 'reflex/line_shape'
44
+ require 'reflex/rect_shape'
45
+ require 'reflex/ellipse_shape'
38
46
 
39
47
  require 'reflex/model'
40
48
  require 'reflex/model_owner'
@@ -46,5 +54,3 @@ require 'reflex/view'
46
54
  require 'reflex/button'
47
55
  require 'reflex/text_view'
48
56
  require 'reflex/image_view'
49
-
50
- require 'reflex/shape_view'
data/lib/reflexion.rb CHANGED
@@ -18,6 +18,23 @@ module Reflexion
18
18
  }
19
19
 
20
20
 
21
+ def call_event (event, *args, &block)
22
+ $event = event
23
+ Xot::BlockUtil.instance_eval_or_block_call *args, &block if block
24
+ $event = nil
25
+ end
26
+
27
+
28
+ class App < Application
29
+
30
+ def on_motion (e)
31
+ super
32
+ call_event e, e, &$motion
33
+ end
34
+
35
+ end# App
36
+
37
+
21
38
  class MainWindow < Window
22
39
 
23
40
  attr_reader :event
@@ -49,11 +66,6 @@ module Reflexion
49
66
  call_event e, e, &$pointer
50
67
  end
51
68
 
52
- def call_event (event, *args, &block)
53
- @event = event
54
- Xot::BlockUtil.instance_eval_or_block_call *args, &block if block
55
- end
56
-
57
69
  end# MainWindow
58
70
 
59
71
 
@@ -64,7 +76,7 @@ module Reflexion
64
76
  end
65
77
 
66
78
  def event ()
67
- window.event
79
+ $event
68
80
  end
69
81
 
70
82
  def setup (&block)
@@ -87,8 +99,12 @@ module Reflexion
87
99
  $pointer = block
88
100
  end
89
101
 
102
+ def motion (&block)
103
+ $motion = block
104
+ end
105
+
90
106
  def start ()
91
- Reflex.start {window.show}
107
+ App.new {window.show}.start
92
108
  end
93
109
 
94
110
  def quit ()
data/reflex.gemspec CHANGED
@@ -21,19 +21,17 @@ Gem::Specification.new do |s|
21
21
  s.description = 'This library helps you to develop interactive graphical user interface.'
22
22
  s.version = mod.version
23
23
 
24
- s.authors = %w[snori]
25
- s.email = 'snori@xord.org'
24
+ s.authors = %w[xordog]
25
+ s.email = 'xordog@gmail.com'
26
26
  s.homepage = "https://github.com/xord/reflex"
27
27
 
28
28
  s.platform = Gem::Platform::RUBY
29
- s.required_ruby_version = '>=1.9.0'
30
-
31
- s.add_runtime_dependency 'rake'
32
- s.add_runtime_dependency 'xot'
33
- s.add_runtime_dependency 'rucy'
34
- s.add_runtime_dependency 'beeps'
35
- s.add_runtime_dependency 'rays'
36
- s.add_development_dependency 'gemcutter'
29
+ s.required_ruby_version = '~> 2'
30
+
31
+ s.add_runtime_dependency 'xot', '~> 0.1'
32
+ s.add_runtime_dependency 'rucy', '~> 0.1'
33
+ s.add_runtime_dependency 'beeps', '~> 0.1'
34
+ s.add_runtime_dependency 'rays', '~> 0.1'
37
35
 
38
36
  s.files = `git ls-files`.split $/
39
37
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
data/samples/bats.rb CHANGED
@@ -38,9 +38,9 @@ win = Reflex::Window.new do
38
38
  on :draw do |e|
39
39
  p, b = e.painter, e.bounds
40
40
  p.fill *c
41
- #p.rect *b.to_a
42
- p.arc *b.to_a, angle, angle + 90
43
- p.arc *b.to_a, angle + 180, angle + 270
41
+ #p.rect b
42
+ p.ellipse b, from: angle, to: angle + 90
43
+ p.ellipse b, from: angle + 180, to: angle + 270
44
44
  end
45
45
  }
46
46
  update_count
@@ -80,7 +80,7 @@ win = Reflex::Window.new do
80
80
  root.on :draw do |e|
81
81
  p = e.painter
82
82
  p.fill 1
83
- p.text "draw on root view.", 10, 30
83
+ p.text "draw on root view. (#{e.fps.to_i} FPS)", 10, 30
84
84
  end
85
85
 
86
86
  #100.times {spawn *frame.move_to(0).center.to_a}
data/samples/fans.rb CHANGED
@@ -61,7 +61,7 @@ class Ring
61
61
 
62
62
  def fin (p, angle, width)
63
63
  angle += @angle
64
- p.arc @x, @y, @width, @height, angle, angle + width, @min
64
+ p.ellipse @x, @y, @width, @height, from: angle, to: angle + width, hole: @min
65
65
  end
66
66
 
67
67
  end# Ring
data/samples/fps.rb CHANGED
@@ -30,19 +30,21 @@ w = Reflex::Window
30
30
  yy = y + Math.cos(n) * 50
31
31
  p.rect xx, yy, 50, 50
32
32
  end
33
+
34
+ p.font font
35
+
33
36
  p.fill = 1
34
- p.text "hello Rays/Reflex!", x, y + 32, font
37
+ p.text "hello Rays/Reflex!", x, y + 32
35
38
  x = (x + 1) % 100
36
39
  y = (y + 1) % 100
37
40
 
38
41
  now = Time.now
39
42
  fps = 1 / (now - prev) if x % 10 == 0
40
43
  p.fill = 1, 1, 1, 1
41
- p.text "#{fps.to_i} FPS", 0, sz.y - font.height, font
44
+ p.text "#{fps.to_i} FPS", 0, sz.y - font.height
42
45
  prev = now
43
46
  end
44
47
 
45
-
46
48
  Reflex.start do
47
49
  w.show
48
50
  end
data/samples/hello.rb CHANGED
@@ -11,9 +11,7 @@ require 'reflex'
11
11
  class HelloWindow < Reflex::Window
12
12
 
13
13
  def initialize ()
14
- super
15
- set :title, "Hello Reflex!"
16
- set :frame, 100, 100, 320, 240
14
+ super title: "Hello Reflex!", frame: [100, 100, 320, 240]
17
15
  p = painter
18
16
  p.font Reflex::Font.new "Menlo", 32
19
17
  p.background 0
@@ -26,13 +24,13 @@ class HelloWindow < Reflex::Window
26
24
  p.text "hello world!", 5, 5
27
25
  end
28
26
 
29
- def on_update_ (e)
27
+ def on_update (e)
30
28
  painter.background = rand, rand, rand
31
29
  redraw
32
30
  end
33
31
 
34
- def draw_grid (p)
35
- p.push do |_|
32
+ def draw_grid (painter)
33
+ painter.push do |p|
36
34
  w, h = frame.size.to_a
37
35
  p.stroke 0.5, 0.4
38
36
  (0..w).step(5).each {|x| p.line x, 0, x, h}
data/samples/image.rb CHANGED
@@ -13,9 +13,9 @@ include Reflex
13
13
  win = Window.new do
14
14
  image = Image.new(32, 32).tap do |img|
15
15
  img.paint do
16
- color :white
16
+ fill :white
17
17
  rect img.bounds
18
- color :red
18
+ fill :red
19
19
  ellipse img.bounds.inset_by(2, 2)
20
20
  end
21
21
  end
@@ -29,14 +29,15 @@ win = Window.new do
29
29
  end
30
30
 
31
31
  after :draw do |e|
32
- e.painter.color :blank do
32
+ e.painter.push fill: :black do
33
33
  rect 0, 0, 100, 40
34
34
  fill :white
35
35
  text "#{e.fps.to_i} FPS", 10, 10
36
36
  end
37
37
  end
38
38
 
39
- set title: 'Many Image Views', frame: [100, 100, 500, 400]
39
+ title 'Many Image Views'
40
+ frame 100, 100, 500, 400
40
41
  end
41
42
 
42
43
 
@@ -915,7 +915,6 @@
915
915
  ../../../../reflex/include,
916
916
  ../../../../rays/include,
917
917
  ../../../../xot/include,
918
- /usr/local/Cellar/boost/1.53.0/include,
919
918
  "$(inherited)",
920
919
  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
921
920
  );
@@ -940,7 +939,6 @@
940
939
  ../../../../reflex/include,
941
940
  ../../../../rays/include,
942
941
  ../../../../xot/include,
943
- /usr/local/Cellar/boost/1.53.0/include,
944
942
  "$(inherited)",
945
943
  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
946
944
  );
data/samples/layout.rb CHANGED
@@ -11,11 +11,8 @@ include Reflex
11
11
 
12
12
  module Reflex
13
13
  class View
14
- def view (frame = [0, 0, rand(10..200), rand(10..200)], color = [rand, rand, rand], &block)
15
- v = RectShape.new &block
16
- v.set frame: frame, color: color
17
- add v
18
- v
14
+ def view (color: [rand, rand, rand], &block)
15
+ add View.new background: color, &block
19
16
  end
20
17
 
21
18
  alias text view
@@ -25,8 +22,20 @@ module Reflex
25
22
  end
26
23
 
27
24
  win = Window.new title: 'Layout Sample', frame: [100, 100, 500, 400] do
28
- 20.times do
29
- root.view
25
+ flow :right, :down
26
+ 100.times do |i|
27
+ root.view do
28
+ style {
29
+ width 100
30
+ height 200
31
+ left top '50%' if i == 5
32
+ }
33
+ end
34
+ end
35
+ root.view do
36
+ style {
37
+ left top right bottom '45%'
38
+ }
30
39
  end
31
40
  =begin
32
41
  lock_screen = View.new do