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/ios/window.mm CHANGED
@@ -1,219 +1,128 @@
1
1
  // -*- objc -*-
2
- #include "reflex/window.h"
2
+ #include "window.h"
3
3
 
4
4
 
5
- #include "reflex/event.h"
6
5
  #include "reflex/exception.h"
7
- #include "window_data.h"
8
- #import "native_window.h"
6
+ #import "view_controller.h"
9
7
 
10
8
 
11
- namespace Rays
12
- {
13
- void set_painter_scale_factor(Painter*, float);
14
- };
9
+ @interface ReflexViewController (Bind)
10
+ - (void) bind: (Reflex::Window*) window;
11
+ @end
15
12
 
16
13
 
17
14
  namespace Reflex
18
15
  {
19
16
 
20
17
 
21
- void set_window (View* view, Window* window);
22
-
23
- void call_key_event (View* v, const KeyEvent& e);
24
-
25
- void call_pointer_event (View* v, const PointerEvent& e);
26
-
27
- void call_wheel_event (View* v, const WheelEvent& e);
28
-
29
-
30
- void
31
- set_focus (Window* window, View* view)
18
+ WindowData&
19
+ Window_get_data (Window* window)
32
20
  {
33
- if (!window || !view)
21
+ if (!window)
34
22
  argument_error(__FILE__, __LINE__);
35
23
 
36
- View* current = window->self->focus.get();
37
- if (current == view) return;
38
-
39
- window->self->focus.reset(view);
40
-
41
- FocusEvent e(FocusEvent::BLUR, view, current);
42
-
43
- if (current)
44
- {
45
- current->on_blur(&e);
46
- current->redraw();
47
- }
48
-
49
- if (view)
50
- {
51
- e.type = FocusEvent::FOCUS;
52
- view->on_focus(&e);
53
- view->redraw();
54
- }
24
+ return (WindowData&) *window->self;
55
25
  }
56
26
 
57
- void
58
- register_capture (View* view)
27
+ const WindowData&
28
+ Window_get_data (const Window* window)
59
29
  {
60
- if (!view)
61
- argument_error(__FILE__, __LINE__);
62
-
63
- const Window* window = view->window();
64
- if (!window)
65
- invalid_state_error(__FILE__, __LINE__, "this view does not belong to any Window.");
66
-
67
- window->self->capturing_views[view] = true;
30
+ return Window_get_data(const_cast<Window*>(window));
68
31
  }
69
32
 
70
- void
71
- unregister_capture (View* view)
33
+ static ReflexViewController*
34
+ get_vc (const Window* window)
72
35
  {
73
- if (!view)
74
- argument_error(__FILE__, __LINE__);
75
-
76
- const Window* window = view->window();
77
- if (!window) return;
78
-
79
- CapturingViews::iterator it = window->self->capturing_views.find(view);
80
- if (it == window->self->capturing_views.end()) return;
36
+ ReflexViewController* p =
37
+ Window_get_data(const_cast<Window*>(window)).view_controller;
38
+ if (!p)
39
+ invalid_state_error(__FILE__, __LINE__);
81
40
 
82
- it->second = false;
41
+ return p;
83
42
  }
84
43
 
85
- void
86
- cleanup_capturing_views (Window* window)
87
- {
88
- CapturingViews::iterator end = window->self->capturing_views.end();
89
- for (CapturingViews::iterator it = window->self->capturing_views.begin(); it != end;)
90
- {
91
- CapturingViews::iterator t = it++;
92
- if (!t->second) window->self->capturing_views.erase(t);
93
- }
94
- }
95
44
 
96
-
97
- Window::Window ()
45
+ Window::Data*
46
+ Window_create_data ()
98
47
  {
99
- [[[NativeWindow alloc] init] bind: this];
100
-
101
- set_window(self->root.get(), this);
102
-
103
- Rays::set_painter_scale_factor(&self->painter, UIScreen.mainScreen.scale);
104
- self->painter.canvas(0, 0, 1, 1);
48
+ return new WindowData();
105
49
  }
106
50
 
107
- Window::~Window ()
51
+ void
52
+ Window_initialize (Window* window)
108
53
  {
109
- //close();
54
+ ReflexViewController* vc =
55
+ [ReflexViewController_get_create_fun()() autorelease];
56
+ if (!vc)
57
+ reflex_error(__FILE__, __LINE__);
110
58
 
111
- set_window(self->root.get(), NULL);
59
+ [vc bind: window];
112
60
  }
113
61
 
114
- void
115
- Window::show ()
62
+ static UIWindow*
63
+ get_window ()
116
64
  {
117
- if (!*this)
118
- invalid_state_error(__FILE__, __LINE__);
119
-
120
- int new_count = self->hide_count - 1;
121
- if (new_count == 0)
65
+ UIApplication* app = UIApplication.sharedApplication;
66
+ if (app.keyWindow)
67
+ return app.keyWindow;
68
+ else
122
69
  {
123
- Event e;
124
- on_show(&e);
125
- if (e.is_blocked()) return;
126
-
127
- [self->native makeKeyAndVisible];
70
+ UIWindow* win =
71
+ [[UIWindow alloc] initWithFrame: UIScreen.mainScreen.bounds];
72
+ [win makeKeyAndVisible];
73
+ return win;
128
74
  }
129
-
130
- self->hide_count = new_count;
131
75
  }
132
76
 
133
77
  void
134
- Window::hide ()
78
+ Window_show (Window* window)
135
79
  {
136
- if (!*this)
137
- invalid_state_error(__FILE__, __LINE__);
138
-
139
- int new_count = self->hide_count + 1;
140
- if (new_count == 1)
141
- {
142
- Event e;
143
- on_hide(&e);
144
- if (e.is_blocked()) return;
80
+ UIWindow* win = get_window();
81
+ ReflexViewController* vc = get_vc(window);
145
82
 
146
- not_implemented_error(__FILE__, __LINE__);
147
- }
148
-
149
- self->hide_count = new_count;
83
+ if (!win.rootViewController)
84
+ win.rootViewController = vc;
85
+ else
86
+ ReflexViewController_get_show_fun()(win.rootViewController, vc);
150
87
  }
151
88
 
152
89
  void
153
- Window::close ()
90
+ Window_hide (Window* window)
154
91
  {
155
- if (!*this)
156
- invalid_state_error(__FILE__, __LINE__);
157
-
158
- Event e;
159
- on_close(&e);
160
- if (e.is_blocked()) return;
161
-
162
92
  not_implemented_error(__FILE__, __LINE__);
163
93
  }
164
94
 
165
95
  void
166
- Window::redraw ()
96
+ Window_close (Window* window)
167
97
  {
168
- if (!*this)
169
- invalid_state_error(__FILE__, __LINE__);
170
-
171
- self->redraw = true;
98
+ not_implemented_error(__FILE__, __LINE__);
172
99
  }
173
100
 
174
101
  void
175
- Window::set_title (const char* title)
102
+ Window_set_title (Window* window, const char* title)
176
103
  {
177
104
  if (!title)
178
105
  argument_error(__FILE__, __LINE__);
179
106
 
180
- if (!*this)
181
- invalid_state_error(__FILE__, __LINE__);
182
-
183
- self->title = title;
107
+ get_vc(window).title = [[NSString alloc] initWithUTF8String: title];
184
108
  }
185
109
 
186
110
  const char*
187
- Window::title () const
188
- {
189
- if (!*this)
190
- invalid_state_error(__FILE__, __LINE__);
191
-
192
- return self->title.c_str();
193
- }
194
-
195
- void
196
- Window::set_frame (coord x, coord y, coord width, coord height)
111
+ Window_get_title (const Window& window)
197
112
  {
198
- if (!*this)
199
- invalid_state_error(__FILE__, __LINE__);
200
-
201
- [self->native frameChanged];
113
+ return [get_vc(&window).title UTF8String];
202
114
  }
203
115
 
204
116
  void
205
- Window::set_frame (const Bounds& bounds)
117
+ Window_set_frame (Window* window, coord x, coord y, coord width, coord height)
206
118
  {
207
- set_frame(bounds.x, bounds.y, bounds.width, bounds.height);
119
+ //not_implemented_error(__FILE__, __LINE__);
208
120
  }
209
121
 
210
122
  Bounds
211
- Window::frame () const
123
+ Window_get_frame (const Window& window)
212
124
  {
213
- if (!*this)
214
- invalid_state_error(__FILE__, __LINE__);
215
-
216
- CGRect rect = self->native.frame;
125
+ CGRect rect = get_vc(&window).reflexView.bounds;
217
126
  return Bounds(
218
127
  rect.origin.x,
219
128
  rect.origin.y,
@@ -221,110 +130,10 @@ namespace Reflex
221
130
  rect.size.height);
222
131
  }
223
132
 
224
- bool
225
- Window::hidden () const
226
- {
227
- if (!*this)
228
- invalid_state_error(__FILE__, __LINE__);
229
-
230
- return self->hide_count > 0;
231
- }
232
-
233
- View*
234
- Window::root ()
235
- {
236
- if (!*this)
237
- invalid_state_error(__FILE__, __LINE__);
238
-
239
- return self->root.get();
240
- }
241
-
242
- View*
243
- Window::focus ()
244
- {
245
- if (!*this)
246
- invalid_state_error(__FILE__, __LINE__);
247
-
248
- return self->focus.get();
249
- }
250
-
251
- Painter*
252
- Window::painter ()
253
- {
254
- if (!*this)
255
- invalid_state_error(__FILE__, __LINE__);
256
-
257
- return &self->painter;
258
- }
259
-
260
- void
261
- Window::on_key (KeyEvent* e)
262
- {
263
- if (!e)
264
- argument_error(__FILE__, __LINE__);
265
-
266
- switch (e->type)
267
- {
268
- case KeyEvent::DOWN: on_key_down(e); break;
269
- case KeyEvent::UP: on_key_up(e); break;
270
- case KeyEvent::NONE: break;
271
- }
272
-
273
- CapturingViews::iterator end = self->capturing_views.end();
274
- for (CapturingViews::iterator it = self->capturing_views.begin(); it != end; ++it)
275
- {
276
- KeyEvent event = *e;
277
- event.capture = true;
278
- call_key_event(const_cast<View*>(it->first.get()), event);
279
- }
280
-
281
- if (self->focus)
282
- call_key_event(self->focus.get(), *e);
283
-
284
- cleanup_capturing_views(this);
285
- }
286
-
287
- void
288
- Window::on_pointer (PointerEvent* e)
289
- {
290
- if (!e)
291
- argument_error(__FILE__, __LINE__);
292
-
293
- switch (e->type)
294
- {
295
- case PointerEvent::DOWN: on_pointer_down(e); break;
296
- case PointerEvent::UP: on_pointer_up(e); break;
297
- case PointerEvent::MOVE: on_pointer_move(e); break;
298
- case PointerEvent::NONE: break;
299
- }
300
-
301
- CapturingViews::iterator end = self->capturing_views.end();
302
- for (CapturingViews::iterator it = self->capturing_views.begin(); it != end; ++it)
303
- {
304
- PointerEvent event = *e;
305
- event.capture = true;
306
- for (size_t i = 0; i < event.size; ++i)
307
- event[i] = it->first.get()->from_window(event[i]);
308
- call_pointer_event(const_cast<View*>(it->first.get()), event);
309
- }
310
-
311
- call_pointer_event(root(), *e);
312
-
313
- cleanup_capturing_views(this);
314
- }
315
-
316
- void
317
- Window::on_wheel (WheelEvent* e)
318
- {
319
- if (!e)
320
- argument_error(__FILE__, __LINE__);
321
-
322
- call_wheel_event(root(), *e);
323
- }
324
133
 
325
- Window::operator bool () const
134
+ WindowData::WindowData ()
326
135
  {
327
- return self && *self;
136
+ view_controller = nil;
328
137
  }
329
138
 
330
139
 
@@ -1,17 +1,12 @@
1
1
  // -*- objc -*-
2
2
  #import <AppKit/NSApplication.h>
3
- #include <reflex/application.h>
3
+ #include "application.h"
4
4
 
5
5
 
6
- @interface AppDelegate : NSObject <NSApplicationDelegate>
6
+ @interface ReflexAppDelegate : NSObject <NSApplicationDelegate>
7
7
 
8
- {
9
- @private
10
- Reflex::Application::Ref* pref;
11
- }
8
+ - (void) bind: (Reflex::Application*) application;
12
9
 
13
- - (void) bind: (Reflex::Application*) instance;
10
+ - (BOOL) callOnStart;
14
11
 
15
- - (void) unbind: (Reflex::Application*) instance;
16
-
17
- @end// AppDelegate
12
+ @end// ReflexAppDelegate
@@ -6,90 +6,96 @@
6
6
  #import <Cocoa/Cocoa.h>
7
7
  #include "reflex/event.h"
8
8
  #include "reflex/exception.h"
9
- #include "application_data.h"
10
9
 
11
10
 
12
- #define REF (*pref)
11
+ @implementation ReflexAppDelegate
13
12
 
14
-
15
- @implementation AppDelegate
13
+ {
14
+ Reflex::Application* application;
15
+ bool started;
16
+ }
16
17
 
17
18
  - (id) init
18
19
  {
19
20
  self = [super init];
20
21
  if (!self) return nil;
21
22
 
22
- pref = new Reflex::Application::Ref;
23
+ application = NULL;
24
+ started = false;
23
25
 
24
26
  return self;
25
27
  }
26
28
 
27
29
  - (void) dealloc
28
30
  {
29
- assert(pref && !REF);
30
-
31
- delete pref;
31
+ assert(!application);
32
32
 
33
33
  [super dealloc];
34
34
  }
35
35
 
36
- - (void) bind: (Reflex::Application*) instance
36
+ - (void) bind: (Reflex::Application*) app
37
37
  {
38
- assert(pref);
39
-
40
- if (instance && instance->self->delegate)
38
+ if (!app)
41
39
  Reflex::argument_error(__FILE__, __LINE__);
42
40
 
43
- if (REF)
41
+ if (app->self->delegate)
44
42
  Reflex::invalid_state_error(__FILE__, __LINE__);
45
43
 
46
- REF = instance;
47
- if (REF) REF->self->delegate = [self retain];
44
+ app->self->delegate = [self retain];
45
+ app->retain();
46
+
47
+ application = app;
48
48
  }
49
49
 
50
- - (void) unbind: (Reflex::Application*) instance
50
+ - (void) unbind
51
51
  {
52
- assert(pref);
52
+ if (!application) return;
53
53
 
54
- if (!REF) return;
54
+ if (application->self->delegate)
55
+ {
56
+ [application->self->delegate release];
57
+ application->self->delegate = nil;
58
+ }
55
59
 
56
- if (instance && instance != REF.get())
57
- Reflex::invalid_state_error(__FILE__, __LINE__);
60
+ application->release();
61
+ application = NULL;
62
+ }
58
63
 
59
- if (REF->self->delegate) [REF->self->delegate release];
60
- REF->self->delegate = nil;
61
- REF.reset();
64
+ - (BOOL) callOnStart
65
+ {
66
+ if (!application || started)
67
+ return YES;
68
+
69
+ Reflex::Event e;
70
+ application->on_start(&e);
71
+ started = true;
72
+
73
+ if (e.is_blocked()) [self quit];
74
+ return !e.is_blocked();
62
75
  }
63
76
 
64
77
  - (void) quit
65
78
  {
66
- assert(pref);
67
-
68
- if (REF)
69
- REF->quit();
79
+ if (application)
80
+ application->quit();
70
81
  else
71
82
  [NSApp terminate: nil];
72
83
  }
73
84
 
74
85
  - (void) showPreference
75
86
  {
76
- assert(pref);
87
+ if (!application) return;
77
88
 
78
- if (REF)
79
- {
80
- Reflex::Event e;
81
- REF->on_preference(&e);
82
- }
89
+ Reflex::Event e;
90
+ application->on_preference(&e);
83
91
  }
84
92
 
85
93
  - (void) showAbout
86
94
  {
87
- assert(pref);
88
-
89
- if (REF)
95
+ if (application)
90
96
  {
91
97
  Reflex::Event e;
92
- REF->on_about(&e);
98
+ application->on_about(&e);
93
99
  }
94
100
  else
95
101
  [NSApp orderFrontStandardAboutPanel: nil];
@@ -100,26 +106,18 @@
100
106
  [NSApp setActivationPolicy: NSApplicationActivationPolicyRegular];
101
107
  [NSApp activateIgnoringOtherApps: YES];
102
108
 
103
- if (REF)
104
- {
105
- Reflex::Event e;
106
- REF->on_start(&e);
107
- if (e.is_blocked())
108
- {
109
- [self quit];
110
- return;
111
- }
112
- }
109
+ if (![self callOnStart])
110
+ return;
113
111
 
114
112
  [self setupMenu];
115
113
  }
116
114
 
117
115
  - (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication*) application
118
116
  {
119
- if (REF)
117
+ if (self->application)
120
118
  {
121
119
  Reflex::Event e;
122
- REF->on_quit(&e);
120
+ self->application->on_quit(&e);
123
121
  if (e.is_blocked()) return NSTerminateCancel;
124
122
  }
125
123
 
@@ -133,13 +131,12 @@
133
131
 
134
132
  - (void) applicationWillTerminate: (NSNotification*) notification
135
133
  {
136
- [self unbind: NULL];
134
+ [self unbind];
137
135
  }
138
136
 
139
137
  - (BOOL) setupApplicationMenu: (NSMenu*) parent
140
138
  {
141
- assert(pref);
142
- if (!REF || !parent) return NO;
139
+ if (!application || !parent) return NO;
143
140
 
144
141
  NSMenu* menu = [[[NSMenu alloc]
145
142
  initWithTitle: @"Application"]
@@ -147,8 +144,8 @@
147
144
  if ([NSApp respondsToSelector: @selector(setAppleMenu:)])
148
145
  [NSApp performSelector: @selector(setAppleMenu:) withObject: menu];
149
146
 
150
- NSString* name = !REF->self->name.empty() ?
151
- [NSString stringWithUTF8String: REF->self->name.c_str()] : @"";
147
+ NSString* name = !application->self->name.empty() ?
148
+ [NSString stringWithUTF8String: application->self->name.c_str()] : @"";
152
149
  if ([name length] > 0)
153
150
  name = [@" " stringByAppendingString: name];
154
151
 
@@ -261,4 +258,4 @@
261
258
  return YES;
262
259
  }
263
260
 
264
- @end// AppDelegate
261
+ @end// ReflexAppDelegate
@@ -0,0 +1,32 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_SRC_OSX_APPLICATION_H__
4
+ #define __REFLEX_SRC_OSX_APPLICATION_H__
5
+
6
+
7
+ #include <reflex/application.h>
8
+
9
+
10
+ @class ReflexAppDelegate;
11
+
12
+
13
+ namespace Reflex
14
+ {
15
+
16
+
17
+ struct Application::Data
18
+ {
19
+
20
+ ReflexAppDelegate* delegate;
21
+
22
+ String name;
23
+
24
+ Data ();
25
+
26
+ };// Application::Data
27
+
28
+
29
+ }// Reflex
30
+
31
+
32
+ #endif//EOH