reflexion 0.1.11 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (333) hide show
  1. checksums.yaml +5 -5
  2. data/.doc/ext/reflex/application.cpp +9 -5
  3. data/.doc/ext/reflex/capture_event.cpp +4 -9
  4. data/.doc/ext/reflex/contact_event.cpp +17 -13
  5. data/.doc/ext/reflex/draw_event.cpp +3 -8
  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 +47 -14
  11. data/.doc/ext/reflex/image_view.cpp +1 -10
  12. data/.doc/ext/reflex/key_event.cpp +9 -14
  13. data/.doc/ext/reflex/line_shape.cpp +99 -0
  14. data/.doc/ext/reflex/motion_event.cpp +73 -0
  15. data/.doc/ext/reflex/native.cpp +18 -18
  16. data/.doc/ext/reflex/pointer_event.cpp +27 -25
  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 +24 -3
  20. data/.doc/ext/reflex/scroll_event.cpp +8 -15
  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 +12 -8
  28. data/.doc/ext/reflex/view.cpp +548 -144
  29. data/.doc/ext/reflex/wheel_event.cpp +5 -28
  30. data/.doc/ext/reflex/window.cpp +7 -15
  31. data/LICENSE +21 -0
  32. data/README.md +1 -1
  33. data/Rakefile +14 -12
  34. data/VERSION +1 -1
  35. data/ext/reflex/application.cpp +10 -5
  36. data/ext/reflex/capture_event.cpp +4 -9
  37. data/ext/reflex/contact_event.cpp +18 -13
  38. data/ext/reflex/defs.h +5 -2
  39. data/ext/reflex/draw_event.cpp +3 -8
  40. data/ext/reflex/ellipse_shape.cpp +56 -25
  41. data/ext/reflex/event.cpp +0 -4
  42. data/ext/reflex/extconf.rb +1 -2
  43. data/ext/reflex/filter.cpp +86 -0
  44. data/ext/reflex/focus_event.cpp +11 -15
  45. data/ext/reflex/frame_event.cpp +52 -14
  46. data/ext/reflex/image_view.cpp +1 -10
  47. data/ext/reflex/key_event.cpp +9 -14
  48. data/ext/reflex/line_shape.cpp +104 -0
  49. data/ext/reflex/motion_event.cpp +77 -0
  50. data/ext/reflex/native.cpp +18 -18
  51. data/ext/reflex/pointer_event.cpp +27 -25
  52. data/ext/reflex/polygon_shape.cpp +68 -0
  53. data/ext/reflex/rect_shape.cpp +113 -24
  54. data/ext/reflex/reflex.cpp +24 -3
  55. data/ext/reflex/scroll_event.cpp +8 -15
  56. data/ext/reflex/selector.cpp +46 -16
  57. data/ext/reflex/selector.h +130 -0
  58. data/ext/reflex/shape.cpp +231 -0
  59. data/ext/reflex/style.cpp +363 -192
  60. data/ext/reflex/style_length.cpp +164 -37
  61. data/ext/reflex/timer.cpp +108 -0
  62. data/ext/reflex/timer_event.cpp +133 -0
  63. data/ext/reflex/update_event.cpp +13 -8
  64. data/ext/reflex/view.cpp +594 -150
  65. data/ext/reflex/wheel_event.cpp +5 -30
  66. data/ext/reflex/window.cpp +7 -15
  67. data/include/reflex.h +5 -4
  68. data/include/reflex/application.h +2 -0
  69. data/include/reflex/debug.h +22 -0
  70. data/include/reflex/defs.h +45 -2
  71. data/include/reflex/event.h +55 -11
  72. data/include/reflex/exception.h +17 -2
  73. data/include/reflex/filter.h +56 -0
  74. data/include/reflex/image_view.h +1 -1
  75. data/include/reflex/ruby.h +6 -4
  76. data/include/reflex/ruby/application.h +17 -9
  77. data/include/reflex/ruby/event.h +22 -0
  78. data/include/reflex/ruby/filter.h +69 -0
  79. data/include/reflex/ruby/reflex.h +1 -0
  80. data/include/reflex/ruby/selector.h +1 -1
  81. data/include/reflex/ruby/shape.h +140 -0
  82. data/include/reflex/ruby/style.h +1 -1
  83. data/include/reflex/ruby/timer.h +69 -0
  84. data/include/reflex/ruby/view.h +43 -76
  85. data/include/reflex/ruby/window.h +17 -32
  86. data/include/reflex/selector.h +54 -2
  87. data/include/reflex/shape.h +211 -0
  88. data/include/reflex/style.h +136 -76
  89. data/include/reflex/timer.h +73 -0
  90. data/include/reflex/view.h +181 -59
  91. data/include/reflex/window.h +4 -3
  92. data/lib/reflex.rb +13 -6
  93. data/lib/reflex/application.rb +6 -3
  94. data/lib/reflex/button.rb +2 -2
  95. data/lib/reflex/{texture.rb → camera.rb} +2 -2
  96. data/lib/reflex/capture_event.rb +7 -6
  97. data/lib/reflex/contact_event.rb +10 -12
  98. data/lib/reflex/draw_event.rb +6 -1
  99. data/lib/reflex/ellipse_shape.rb +27 -0
  100. data/lib/reflex/filter.rb +18 -0
  101. data/lib/reflex/fixture.rb +4 -0
  102. data/lib/reflex/focus_event.rb +10 -12
  103. data/lib/reflex/frame_event.rb +1 -1
  104. data/lib/reflex/helper.rb +17 -29
  105. data/lib/reflex/key_event.rb +13 -11
  106. data/lib/reflex/line_shape.rb +18 -0
  107. data/lib/reflex/matrix.rb +13 -0
  108. data/lib/reflex/module.rb +4 -19
  109. data/lib/reflex/pointer_event.rb +28 -35
  110. data/lib/reflex/polygon.rb +14 -0
  111. data/lib/reflex/polygon_shape.rb +23 -0
  112. data/lib/reflex/polyline.rb +13 -0
  113. data/lib/reflex/rect_shape.rb +20 -0
  114. data/lib/reflex/reflex.rb +1 -3
  115. data/lib/reflex/scroll_event.rb +1 -1
  116. data/lib/reflex/selector.rb +2 -2
  117. data/lib/reflex/shape.rb +62 -0
  118. data/lib/reflex/style.rb +78 -11
  119. data/lib/reflex/style_length.rb +0 -11
  120. data/lib/reflex/text_view.rb +7 -24
  121. data/lib/reflex/timer.rb +30 -0
  122. data/lib/reflex/timer_event.rb +29 -0
  123. data/lib/reflex/update_event.rb +1 -1
  124. data/lib/reflex/view.rb +127 -32
  125. data/lib/reflex/wheel_event.rb +9 -1
  126. data/lib/reflex/window.rb +29 -9
  127. data/lib/reflexion.rb +23 -7
  128. data/reflex.gemspec +7 -8
  129. data/samples/bats.rb +4 -4
  130. data/samples/camera.rb +32 -0
  131. data/samples/fans.rb +1 -1
  132. data/samples/fps.rb +5 -3
  133. data/samples/hello.rb +4 -6
  134. data/samples/image.rb +5 -4
  135. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +0 -2
  136. data/samples/layout.rb +16 -7
  137. data/samples/model.rb +10 -7
  138. data/samples/physics.rb +22 -20
  139. data/samples/reflexion/breakout.rb +4 -5
  140. data/samples/reflexion/hello.rb +2 -2
  141. data/samples/reflexion/jump_action.rb +191 -0
  142. data/samples/reflexion/noise.rb +23 -0
  143. data/samples/reflexion/paint.rb +7 -6
  144. data/samples/reflexion/physics.rb +15 -8
  145. data/samples/reflexion/pulse.rb +24 -10
  146. data/samples/shader.rb +8 -6
  147. data/samples/shapes.rb +79 -14
  148. data/samples/tree.rb +9 -10
  149. data/samples/views.rb +3 -3
  150. data/samples/visuals.rb +2 -5
  151. data/src/body.cpp +146 -345
  152. data/src/body.h +91 -0
  153. data/src/event.cpp +65 -15
  154. data/src/exception.cpp +13 -3
  155. data/src/filter.cpp +76 -0
  156. data/src/fixture.cpp +164 -39
  157. data/src/fixture.h +85 -0
  158. data/src/image_view.cpp +4 -4
  159. data/src/ios/app_delegate.h +5 -10
  160. data/src/ios/app_delegate.mm +79 -41
  161. data/src/ios/application.h +32 -0
  162. data/src/ios/application.mm +35 -25
  163. data/src/ios/event.mm +8 -4
  164. data/src/ios/reflex.mm +0 -7
  165. data/src/ios/view_controller.h +37 -0
  166. data/src/ios/view_controller.mm +424 -0
  167. data/src/ios/window.h +40 -0
  168. data/src/ios/window.mm +59 -250
  169. data/src/osx/app_delegate.h +5 -10
  170. data/src/osx/app_delegate.mm +52 -55
  171. data/src/osx/application.h +32 -0
  172. data/src/osx/application.mm +44 -39
  173. data/src/osx/native_window.h +0 -15
  174. data/src/osx/native_window.mm +127 -127
  175. data/src/osx/opengl_view.h +0 -2
  176. data/src/osx/opengl_view.mm +12 -3
  177. data/src/osx/reflex.mm +0 -9
  178. data/src/osx/window.h +42 -0
  179. data/src/osx/window.mm +45 -252
  180. data/src/selector.cpp +232 -7
  181. data/src/selector.h +52 -0
  182. data/src/shape.cpp +1191 -0
  183. data/src/shape.h +61 -0
  184. data/src/style.cpp +573 -376
  185. data/src/style.h +39 -0
  186. data/src/timer.cpp +288 -0
  187. data/src/timer.h +55 -0
  188. data/src/view.cpp +1624 -984
  189. data/src/view.h +56 -0
  190. data/src/win32/window.cpp +3 -4
  191. data/src/window.cpp +302 -20
  192. data/src/window.h +94 -0
  193. data/src/world.cpp +112 -111
  194. data/src/world.h +34 -53
  195. data/task/box2d.rake +31 -10
  196. data/test/test_capture_event.rb +8 -6
  197. data/test/test_pointer_event.rb +130 -0
  198. data/test/test_selector.rb +1 -1
  199. data/test/test_shape.rb +71 -0
  200. data/test/test_style.rb +77 -11
  201. data/test/test_style_length.rb +42 -13
  202. data/test/test_view.rb +138 -14
  203. metadata +118 -202
  204. data/.doc/ext/reflex/arc_shape.cpp +0 -89
  205. data/.doc/ext/reflex/body.cpp +0 -299
  206. data/.doc/ext/reflex/fixture.cpp +0 -101
  207. data/.doc/ext/reflex/shape_view.cpp +0 -153
  208. data/ext/reflex/arc_shape.cpp +0 -94
  209. data/ext/reflex/body.cpp +0 -328
  210. data/ext/reflex/fixture.cpp +0 -108
  211. data/ext/reflex/shape_view.cpp +0 -161
  212. data/include/reflex/bitmap.h +0 -20
  213. data/include/reflex/body.h +0 -128
  214. data/include/reflex/bounds.h +0 -20
  215. data/include/reflex/color.h +0 -20
  216. data/include/reflex/color_space.h +0 -20
  217. data/include/reflex/fixture.h +0 -117
  218. data/include/reflex/font.h +0 -20
  219. data/include/reflex/image.h +0 -20
  220. data/include/reflex/matrix.h +0 -20
  221. data/include/reflex/painter.h +0 -20
  222. data/include/reflex/point.h +0 -24
  223. data/include/reflex/ruby/body.h +0 -41
  224. data/include/reflex/ruby/fixture.h +0 -41
  225. data/include/reflex/ruby/shape_view.h +0 -96
  226. data/include/reflex/shader.h +0 -20
  227. data/include/reflex/shape_view.h +0 -146
  228. data/include/reflex/texture.h +0 -20
  229. data/lib/reflex/body.rb +0 -22
  230. data/lib/reflex/flags.rb +0 -18
  231. data/lib/reflex/shape_view.rb +0 -25
  232. data/src/ios/application_data.h +0 -45
  233. data/src/ios/native_window.h +0 -39
  234. data/src/ios/native_window.mm +0 -224
  235. data/src/ios/opengl_view.h +0 -13
  236. data/src/ios/opengl_view.mm +0 -139
  237. data/src/ios/window_data.h +0 -75
  238. data/src/osx/application_data.h +0 -45
  239. data/src/osx/window_data.h +0 -75
  240. data/src/physics/Box2D/Box2D.h +0 -68
  241. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.cpp +0 -193
  242. data/src/physics/Box2D/Collision/Shapes/b2ChainShape.h +0 -105
  243. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.cpp +0 -99
  244. data/src/physics/Box2D/Collision/Shapes/b2CircleShape.h +0 -91
  245. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.cpp +0 -138
  246. data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.h +0 -74
  247. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.cpp +0 -467
  248. data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.h +0 -101
  249. data/src/physics/Box2D/Collision/Shapes/b2Shape.h +0 -101
  250. data/src/physics/Box2D/Collision/b2BroadPhase.cpp +0 -119
  251. data/src/physics/Box2D/Collision/b2BroadPhase.h +0 -257
  252. data/src/physics/Box2D/Collision/b2CollideCircle.cpp +0 -154
  253. data/src/physics/Box2D/Collision/b2CollideEdge.cpp +0 -698
  254. data/src/physics/Box2D/Collision/b2CollidePolygon.cpp +0 -239
  255. data/src/physics/Box2D/Collision/b2Collision.cpp +0 -252
  256. data/src/physics/Box2D/Collision/b2Collision.h +0 -277
  257. data/src/physics/Box2D/Collision/b2Distance.cpp +0 -603
  258. data/src/physics/Box2D/Collision/b2Distance.h +0 -141
  259. data/src/physics/Box2D/Collision/b2DynamicTree.cpp +0 -778
  260. data/src/physics/Box2D/Collision/b2DynamicTree.h +0 -289
  261. data/src/physics/Box2D/Collision/b2TimeOfImpact.cpp +0 -486
  262. data/src/physics/Box2D/Collision/b2TimeOfImpact.h +0 -58
  263. data/src/physics/Box2D/Common/b2BlockAllocator.cpp +0 -215
  264. data/src/physics/Box2D/Common/b2BlockAllocator.h +0 -62
  265. data/src/physics/Box2D/Common/b2Draw.cpp +0 -44
  266. data/src/physics/Box2D/Common/b2Draw.h +0 -86
  267. data/src/physics/Box2D/Common/b2GrowableStack.h +0 -85
  268. data/src/physics/Box2D/Common/b2Math.cpp +0 -94
  269. data/src/physics/Box2D/Common/b2Math.h +0 -720
  270. data/src/physics/Box2D/Common/b2Settings.cpp +0 -44
  271. data/src/physics/Box2D/Common/b2Settings.h +0 -151
  272. data/src/physics/Box2D/Common/b2StackAllocator.cpp +0 -83
  273. data/src/physics/Box2D/Common/b2StackAllocator.h +0 -60
  274. data/src/physics/Box2D/Common/b2Timer.cpp +0 -101
  275. data/src/physics/Box2D/Common/b2Timer.h +0 -50
  276. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp +0 -53
  277. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h +0 -39
  278. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp +0 -53
  279. data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h +0 -39
  280. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.cpp +0 -52
  281. data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.h +0 -39
  282. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.cpp +0 -247
  283. data/src/physics/Box2D/Dynamics/Contacts/b2Contact.h +0 -349
  284. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.cpp +0 -838
  285. data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.h +0 -95
  286. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp +0 -49
  287. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h +0 -39
  288. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp +0 -49
  289. data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h +0 -39
  290. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp +0 -49
  291. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h +0 -38
  292. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.cpp +0 -52
  293. data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.h +0 -39
  294. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.cpp +0 -260
  295. data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.h +0 -169
  296. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.cpp +0 -251
  297. data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.h +0 -119
  298. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.cpp +0 -419
  299. data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.h +0 -125
  300. data/src/physics/Box2D/Dynamics/Joints/b2Joint.cpp +0 -211
  301. data/src/physics/Box2D/Dynamics/Joints/b2Joint.h +0 -226
  302. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.cpp +0 -304
  303. data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.h +0 -133
  304. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.cpp +0 -222
  305. data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.h +0 -129
  306. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp +0 -629
  307. data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.h +0 -196
  308. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.cpp +0 -348
  309. data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.h +0 -152
  310. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp +0 -502
  311. data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.h +0 -204
  312. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.cpp +0 -241
  313. data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.h +0 -114
  314. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.cpp +0 -344
  315. data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.h +0 -126
  316. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.cpp +0 -419
  317. data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.h +0 -210
  318. data/src/physics/Box2D/Dynamics/b2Body.cpp +0 -549
  319. data/src/physics/Box2D/Dynamics/b2Body.h +0 -860
  320. data/src/physics/Box2D/Dynamics/b2ContactManager.cpp +0 -296
  321. data/src/physics/Box2D/Dynamics/b2ContactManager.h +0 -52
  322. data/src/physics/Box2D/Dynamics/b2Fixture.cpp +0 -303
  323. data/src/physics/Box2D/Dynamics/b2Fixture.h +0 -345
  324. data/src/physics/Box2D/Dynamics/b2Island.cpp +0 -539
  325. data/src/physics/Box2D/Dynamics/b2Island.h +0 -93
  326. data/src/physics/Box2D/Dynamics/b2TimeStep.h +0 -70
  327. data/src/physics/Box2D/Dynamics/b2World.cpp +0 -1339
  328. data/src/physics/Box2D/Dynamics/b2World.h +0 -354
  329. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.cpp +0 -36
  330. data/src/physics/Box2D/Dynamics/b2WorldCallbacks.h +0 -155
  331. data/src/physics/Box2D/Rope/b2Rope.cpp +0 -259
  332. data/src/physics/Box2D/Rope/b2Rope.h +0 -115
  333. data/src/shape_view.cpp +0 -306
@@ -9,17 +9,6 @@ module Reflex
9
9
 
10
10
  class StyleLength
11
11
 
12
- def initialize (*args)
13
- return if args.empty?
14
- case args[0]
15
- when Numeric
16
- args << :px if args.size < 2
17
- setup_num *args
18
- when String
19
- setup_str *args
20
- end
21
- end
22
-
23
12
  def inspect ()
24
13
  "#<#{self.class.name} #{to_s}>"
25
14
  end
@@ -15,12 +15,10 @@ module Reflex
15
15
 
16
16
  attr_accessor :font
17
17
 
18
- def initialize (*args, &block)
19
- @outdated = false
20
- super
21
- end
18
+ alias text= data=
19
+ alias text data
22
20
 
23
- def content_size ()
21
+ def content_bounds ()
24
22
  s = string
25
23
  return 0, 0 unless s && window
26
24
  font = @font || window.painter.font
@@ -28,26 +26,11 @@ module Reflex
28
26
  end
29
27
 
30
28
  def on_draw (e)
31
- @image = create_text_image if @outdated
32
- return unless @image
33
-
34
- pa = e.painter
35
- pa.color 1
36
- pa.image @image
37
- end
38
-
39
- def on_data_update (e)
40
- @outdated = true
41
- super
42
- end
43
-
44
- private
45
-
46
- def create_text_image ()
47
- str, size = string, content_size
48
- return nil unless str && size.all? {|n| n > 0}
49
- Image.new Bitmap.new(*size, :GRAY).draw_string(str), true
29
+ s = string
30
+ e.painter.push font: @font do
31
+ text s
50
32
  end
33
+ end
51
34
 
52
35
  end# TextView
53
36
 
@@ -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}>"
@@ -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}>"
@@ -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)
@@ -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 ()