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/view.h ADDED
@@ -0,0 +1,56 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_SRC_VIEW_H__
4
+ #define __REFLEX_SRC_VIEW_H__
5
+
6
+
7
+ #include <reflex/view.h>
8
+
9
+
10
+ namespace Reflex
11
+ {
12
+
13
+
14
+ constexpr const char* VIEW_TAG_ROOT = "ROOT";
15
+
16
+
17
+ class Body;
18
+
19
+
20
+ void View_set_window (View* view, Window* window);
21
+
22
+ void View_set_frame (View* view, const Bounds& frame);
23
+
24
+ const Style& View_get_style (const View* view);
25
+
26
+ Body* View_get_body (View* view, bool create = true);
27
+
28
+ bool View_is_active (const View& view);
29
+
30
+ void View_update_tree (View* view, const UpdateEvent& event);
31
+
32
+ void View_draw_tree (
33
+ View* view, const DrawEvent& event,
34
+ const Point& offset, const Bounds& clip);
35
+
36
+ void View_update_styles (View* view, const Selector& selector);
37
+
38
+ void View_update_shapes (View* view);
39
+
40
+ void View_register_capture (View* view);
41
+
42
+ void View_unregister_capture (View* view);
43
+
44
+ void View_call_key_event (View* view, const KeyEvent& event);
45
+
46
+ void View_call_pointer_event (View* view, const PointerEvent& event);
47
+
48
+ void View_call_wheel_event (View* view, const WheelEvent& event);
49
+
50
+ void View_call_contact_event (View* view, const ContactEvent& event);
51
+
52
+
53
+ }// Reflex
54
+
55
+
56
+ #endif//EOH
data/src/win32/window.cpp CHANGED
@@ -1,10 +1,9 @@
1
1
  #include "reflex/window.h"
2
2
 
3
3
 
4
+ #include <memory>
4
5
  #define NOMINMAX
5
6
  #include <windows.h>
6
- #include <boost/shared_ptr.hpp>
7
- #include <boost/scoped_array.hpp>
8
7
  #include <rays/painter.h>
9
8
  #include "reflex/reflex.h"
10
9
  #include "reflex/view.h"
@@ -74,7 +73,7 @@ namespace Reflex
74
73
 
75
74
  };// Window::Data
76
75
 
77
- typedef boost::shared_ptr<Window::Data> WindowData;
76
+ typedef std::shared_ptr<Window::Data> WindowData;
78
77
 
79
78
 
80
79
  static const char* WINDOWCLASS = "Reflex:WindowClass";
@@ -440,7 +439,7 @@ namespace Reflex
440
439
  int size = GetWindowTextLength(self->hwnd);
441
440
  if (size <= 0) return "";
442
441
 
443
- boost::scoped_array<char> buf(new char[size + 1]);
442
+ std::unique_ptr<char[]> buf(new char[size + 1]);
444
443
  if (GetWindowText(self->hwnd, &buf[0], size + 1) != size)
445
444
  return "";
446
445
 
data/src/window.cpp CHANGED
@@ -1,26 +1,235 @@
1
- #include "reflex/window.h"
1
+ #include "window.h"
2
2
 
3
3
 
4
- #include "reflex/view.h"
5
4
  #include "reflex/exception.h"
5
+ #include "view.h"
6
6
 
7
7
 
8
8
  namespace Reflex
9
9
  {
10
10
 
11
11
 
12
+ void
13
+ Window_set_focus (Window* window, View* view)
14
+ {
15
+ if (!window || !view)
16
+ argument_error(__FILE__, __LINE__);
17
+
18
+ View* current = window->self->focus.get();
19
+ if (current == view) return;
20
+
21
+ window->self->focus.reset(view);
22
+
23
+ FocusEvent e(FocusEvent::BLUR, view, current);
24
+
25
+ if (current)
26
+ {
27
+ current->on_focus(&e);
28
+ current->redraw();
29
+ }
30
+
31
+ if (view)
32
+ {
33
+ e.type = FocusEvent::FOCUS;
34
+ view->on_focus(&e);
35
+ view->redraw();
36
+ }
37
+ }
38
+
39
+ namespace global
40
+ {
41
+
42
+ static Window_CreateRootViewFun create_root_view_fun = NULL;
43
+
44
+ }// global
45
+
46
+ void
47
+ Window_set_create_root_view_fun (Window_CreateRootViewFun fun)
48
+ {
49
+ global::create_root_view_fun = fun;
50
+ }
51
+
52
+ static View*
53
+ create_root_view ()
54
+ {
55
+ return global::create_root_view_fun
56
+ ? global::create_root_view_fun()
57
+ : new View();
58
+ }
59
+
60
+ void
61
+ View_register_capture (View* view)
62
+ {
63
+ if (!view)
64
+ argument_error(__FILE__, __LINE__);
65
+
66
+ const Window* window = view->window();
67
+ if (!window)
68
+ invalid_state_error(__FILE__, __LINE__, "this view does not belong to any Window.");
69
+
70
+ window->self->capturing_views[view] = true;
71
+ }
72
+
73
+ void
74
+ View_unregister_capture (View* view)
75
+ {
76
+ if (!view)
77
+ argument_error(__FILE__, __LINE__);
78
+
79
+ const Window* window = view->window();
80
+ if (!window) return;
81
+
82
+ auto it = window->self->capturing_views.find(view);
83
+ if (it == window->self->capturing_views.end()) return;
84
+
85
+ it->second = false;
86
+ }
87
+
88
+ static void
89
+ cleanup_capturing_views (Window* window)
90
+ {
91
+ auto end = window->self->capturing_views.end();
92
+ for (auto it = window->self->capturing_views.begin(); it != end;)
93
+ {
94
+ auto t = it++;
95
+ if (!t->second) window->self->capturing_views.erase(t);
96
+ }
97
+ }
98
+
99
+
100
+ Window::Window ()
101
+ : self(Window_create_data())
102
+ {
103
+ Window_initialize(this);
104
+
105
+ self->root.reset(create_root_view());
106
+ self->root->set_name(VIEW_TAG_ROOT);
107
+ View_set_window(self->root.get(), this);
108
+
109
+ self->painter.canvas(0, 0, 1, 1);
110
+ }
111
+
112
+ Window::~Window ()
113
+ {
114
+ //close();
115
+
116
+ View_set_window(self->root.get(), NULL);
117
+ }
118
+
119
+ void
120
+ Window::show ()
121
+ {
122
+ int new_count = self->hide_count - 1;
123
+ if (new_count == 0)
124
+ {
125
+ Event e;
126
+ on_show(&e);
127
+ if (e.is_blocked()) return;
128
+
129
+ Window_show(this);
130
+ }
131
+
132
+ self->hide_count = new_count;
133
+ }
134
+
135
+ void
136
+ Window::hide ()
137
+ {
138
+ int new_count = self->hide_count + 1;
139
+ if (new_count == 1)
140
+ {
141
+ Event e;
142
+ on_hide(&e);
143
+ if (e.is_blocked()) return;
144
+
145
+ Window_hide(this);
146
+ }
147
+
148
+ self->hide_count = new_count;
149
+ }
150
+
151
+ void
152
+ Window::close ()
153
+ {
154
+ Event e;
155
+ on_close(&e);
156
+ if (e.is_blocked()) return;
157
+
158
+ Window_close(this);
159
+ }
160
+
161
+ void
162
+ Window::redraw ()
163
+ {
164
+ self->redraw = true;
165
+ }
166
+
167
+ void
168
+ Window::set_title (const char* title)
169
+ {
170
+ Window_set_title(this, title);
171
+ }
172
+
173
+ const char*
174
+ Window::title () const
175
+ {
176
+ return Window_get_title(*this);
177
+ }
178
+
179
+ void
180
+ Window::set_frame (coord x, coord y, coord width, coord height)
181
+ {
182
+ Window_set_frame(this, x, y, width, height);
183
+ }
184
+
185
+ void
186
+ Window::set_frame (const Bounds& bounds)
187
+ {
188
+ set_frame(bounds.x, bounds.y, bounds.width, bounds.height);
189
+ }
190
+
191
+ Bounds
192
+ Window::frame () const
193
+ {
194
+ return Window_get_frame(*this);
195
+ }
196
+
197
+ bool
198
+ Window::hidden () const
199
+ {
200
+ return self->hide_count > 0;
201
+ }
202
+
203
+ View*
204
+ Window::root ()
205
+ {
206
+ return self->root.get();
207
+ }
208
+
12
209
  const View*
13
210
  Window::root () const
14
211
  {
15
212
  return const_cast<Window*>(this)->root();
16
213
  }
17
214
 
215
+ View*
216
+ Window::focus ()
217
+ {
218
+ return self->focus.get();
219
+ }
220
+
18
221
  const View*
19
222
  Window::focus () const
20
223
  {
21
224
  return const_cast<Window*>(this)->focus();
22
225
  }
23
226
 
227
+ Painter*
228
+ Window::painter ()
229
+ {
230
+ return &self->painter;
231
+ }
232
+
24
233
  const Painter*
25
234
  Window::painter () const
26
235
  {
@@ -44,85 +253,131 @@ namespace Reflex
44
253
  void
45
254
  Window::on_show (Event* e)
46
255
  {
47
- if (!e)
48
- argument_error(__FILE__, __LINE__);
49
256
  }
50
257
 
51
258
  void
52
259
  Window::on_hide (Event* e)
53
260
  {
54
- if (!e)
55
- argument_error(__FILE__, __LINE__);
56
261
  }
57
262
 
58
263
  void
59
264
  Window::on_close (Event* e)
60
265
  {
61
- if (!e)
62
- argument_error(__FILE__, __LINE__);
63
266
  }
64
267
 
65
268
  void
66
269
  Window::on_update (UpdateEvent* e)
67
270
  {
68
- if (!e)
69
- argument_error(__FILE__, __LINE__);
70
271
  }
71
272
 
72
273
  void
73
274
  Window::on_draw (DrawEvent* e)
74
275
  {
75
- if (!e)
76
- argument_error(__FILE__, __LINE__);
77
276
  }
78
277
 
79
278
  void
80
279
  Window::on_move (FrameEvent* e)
81
280
  {
82
- if (!e)
83
- argument_error(__FILE__, __LINE__);
84
281
  }
85
282
 
86
283
  void
87
284
  Window::on_resize (FrameEvent* e)
285
+ {
286
+ }
287
+
288
+ void
289
+ Window::on_key (KeyEvent* e)
88
290
  {
89
291
  if (!e)
90
292
  argument_error(__FILE__, __LINE__);
293
+
294
+ switch (e->type)
295
+ {
296
+ case KeyEvent::DOWN: on_key_down(e); break;
297
+ case KeyEvent::UP: on_key_up(e); break;
298
+ case KeyEvent::NONE: break;
299
+ }
300
+
301
+ auto end = self->capturing_views.end();
302
+ for (auto it = self->capturing_views.begin(); it != end; ++it)
303
+ {
304
+ KeyEvent event = *e;
305
+ event.capture = true;
306
+ View_call_key_event(const_cast<View*>(it->first.get()), event);
307
+ }
308
+
309
+ if (self->focus)
310
+ View_call_key_event(self->focus.get(), *e);
311
+
312
+ cleanup_capturing_views(this);
91
313
  }
92
314
 
93
315
  void
94
316
  Window::on_key_down (KeyEvent* e)
95
317
  {
96
- if (!e)
97
- argument_error(__FILE__, __LINE__);
98
318
  }
99
319
 
100
320
  void
101
321
  Window::on_key_up (KeyEvent* e)
322
+ {
323
+ }
324
+
325
+ void
326
+ Window::on_pointer (PointerEvent* e)
102
327
  {
103
328
  if (!e)
104
329
  argument_error(__FILE__, __LINE__);
330
+
331
+ switch (e->type)
332
+ {
333
+ case PointerEvent::DOWN: on_pointer_down(e); break;
334
+ case PointerEvent::UP: on_pointer_up(e); break;
335
+ case PointerEvent::MOVE: on_pointer_move(e); break;
336
+ case PointerEvent::NONE: break;
337
+ }
338
+
339
+ auto end = self->capturing_views.end();
340
+ for (auto it = self->capturing_views.begin(); it != end; ++it)
341
+ {
342
+ PointerEvent event = *e;
343
+ event.capture = true;
344
+ for (size_t i = 0; i < event.size; ++i)
345
+ event[i] = it->first.get()->from_window(event[i]);
346
+ View_call_pointer_event(const_cast<View*>(it->first.get()), event);
347
+ }
348
+
349
+ View_call_pointer_event(root(), *e);
350
+
351
+ cleanup_capturing_views(this);
105
352
  }
106
353
 
107
354
  void
108
355
  Window::on_pointer_down (PointerEvent* e)
109
356
  {
110
- if (!e)
111
- argument_error(__FILE__, __LINE__);
112
357
  }
113
358
 
114
359
  void
115
360
  Window::on_pointer_up (PointerEvent* e)
116
361
  {
117
- if (!e)
118
- argument_error(__FILE__, __LINE__);
119
362
  }
120
363
 
121
364
  void
122
365
  Window::on_pointer_move (PointerEvent* e)
366
+ {
367
+ }
368
+
369
+ void
370
+ Window::on_wheel (WheelEvent* e)
123
371
  {
124
372
  if (!e)
125
373
  argument_error(__FILE__, __LINE__);
374
+
375
+ View_call_wheel_event(root(), *e);
376
+ }
377
+
378
+ Window::operator bool () const
379
+ {
380
+ return self && *self;
126
381
  }
127
382
 
128
383
  bool
data/src/window.h ADDED
@@ -0,0 +1,92 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_SRC_WINDOW_H__
4
+ #define __REFLEX_SRC_WINDOW_H__
5
+
6
+
7
+ #include <map>
8
+ #include <xot/time.h>
9
+ #include <rays/point.h>
10
+ #include <rays/painter.h>
11
+ #include <reflex/window.h>
12
+ #include <reflex/view.h>
13
+
14
+
15
+ namespace Reflex
16
+ {
17
+
18
+
19
+ struct Window::Data
20
+ {
21
+
22
+ typedef std::map<View::Ref, bool> CapturingViews;
23
+
24
+ int hide_count = 1;
25
+
26
+ bool redraw = true;
27
+
28
+ Painter painter;
29
+
30
+ View::Ref root, focus;
31
+
32
+ Point prev_position, prev_size;
33
+
34
+ double prev_time_update, prev_time_draw, prev_fps = 0;
35
+
36
+ CapturingViews capturing_views;
37
+
38
+ Data ()
39
+ {
40
+ prev_time_update = prev_time_draw = Xot::time();
41
+ }
42
+
43
+ virtual ~Data ()
44
+ {
45
+ }
46
+
47
+ virtual bool is_valid () const = 0;
48
+
49
+ operator bool () const
50
+ {
51
+ return is_valid();
52
+ }
53
+
54
+ bool operator ! () const
55
+ {
56
+ return !operator bool();
57
+ }
58
+
59
+ };// Window::Data
60
+
61
+
62
+ Window::Data* Window_create_data ();
63
+
64
+ void Window_initialize (Window* window);
65
+
66
+ void Window_show (Window* window);
67
+
68
+ void Window_hide (Window* window);
69
+
70
+ void Window_close (Window* window);
71
+
72
+ void Window_set_title ( Window* window, const char* title);
73
+
74
+ const char* Window_get_title (const Window& window);
75
+
76
+ void Window_set_frame (
77
+ Window* window, coord x, coord y, coord width, coord height);
78
+
79
+ Bounds Window_get_frame (const Window& window);
80
+
81
+ void Window_set_focus (Window* window, View* view);
82
+
83
+
84
+ typedef View* (*Window_CreateRootViewFun) ();
85
+
86
+ void Window_set_create_root_view_fun (Window_CreateRootViewFun fun);
87
+
88
+
89
+ }// Reflex
90
+
91
+
92
+ #endif//EOH