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.
- checksums.yaml +5 -5
- data/.doc/ext/reflex/application.cpp +9 -5
- data/.doc/ext/reflex/capture_event.cpp +0 -4
- data/.doc/ext/reflex/contact_event.cpp +17 -10
- data/.doc/ext/reflex/draw_event.cpp +1 -5
- data/.doc/ext/reflex/ellipse_shape.cpp +51 -24
- data/.doc/ext/reflex/event.cpp +0 -4
- data/.doc/ext/reflex/filter.cpp +81 -0
- data/.doc/ext/reflex/focus_event.cpp +9 -13
- data/.doc/ext/reflex/frame_event.cpp +40 -6
- data/.doc/ext/reflex/image_view.cpp +1 -10
- data/.doc/ext/reflex/key_event.cpp +2 -6
- data/.doc/ext/reflex/line_shape.cpp +99 -0
- data/.doc/ext/reflex/motion_event.cpp +75 -0
- data/.doc/ext/reflex/native.cpp +18 -18
- data/.doc/ext/reflex/pointer_event.cpp +5 -11
- data/.doc/ext/reflex/polygon_shape.cpp +65 -0
- data/.doc/ext/reflex/rect_shape.cpp +102 -23
- data/.doc/ext/reflex/reflex.cpp +21 -2
- data/.doc/ext/reflex/scroll_event.cpp +0 -6
- data/.doc/ext/reflex/selector.cpp +43 -15
- data/.doc/ext/reflex/shape.cpp +211 -0
- data/.doc/ext/reflex/style.cpp +359 -185
- data/.doc/ext/reflex/style_length.cpp +163 -35
- data/.doc/ext/reflex/timer.cpp +101 -0
- data/.doc/ext/reflex/timer_event.cpp +123 -0
- data/.doc/ext/reflex/update_event.cpp +11 -6
- data/.doc/ext/reflex/view.cpp +548 -144
- data/.doc/ext/reflex/wheel_event.cpp +0 -22
- data/.doc/ext/reflex/window.cpp +7 -15
- data/README.md +1 -1
- data/Rakefile +14 -12
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +10 -5
- data/ext/reflex/capture_event.cpp +1 -5
- data/ext/reflex/contact_event.cpp +19 -11
- data/ext/reflex/defs.h +5 -2
- data/ext/reflex/draw_event.cpp +2 -6
- data/ext/reflex/ellipse_shape.cpp +56 -25
- data/ext/reflex/event.cpp +0 -4
- data/ext/reflex/extconf.rb +1 -2
- data/ext/reflex/filter.cpp +86 -0
- data/ext/reflex/focus_event.cpp +11 -15
- data/ext/reflex/frame_event.cpp +46 -7
- data/ext/reflex/image_view.cpp +1 -10
- data/ext/reflex/key_event.cpp +3 -7
- data/ext/reflex/line_shape.cpp +104 -0
- data/ext/reflex/motion_event.cpp +79 -0
- data/ext/reflex/native.cpp +18 -18
- data/ext/reflex/pointer_event.cpp +6 -12
- data/ext/reflex/polygon_shape.cpp +68 -0
- data/ext/reflex/rect_shape.cpp +113 -24
- data/ext/reflex/reflex.cpp +21 -2
- data/ext/reflex/scroll_event.cpp +1 -7
- data/ext/reflex/selector.cpp +46 -16
- data/ext/reflex/selector.h +130 -0
- data/ext/reflex/shape.cpp +231 -0
- data/ext/reflex/style.cpp +363 -192
- data/ext/reflex/style_length.cpp +164 -37
- data/ext/reflex/timer.cpp +108 -0
- data/ext/reflex/timer_event.cpp +133 -0
- data/ext/reflex/update_event.cpp +13 -7
- data/ext/reflex/view.cpp +594 -150
- data/ext/reflex/wheel_event.cpp +1 -25
- data/ext/reflex/window.cpp +7 -15
- data/include/reflex/application.h +2 -0
- data/include/reflex/debug.h +22 -0
- data/include/reflex/defs.h +45 -0
- data/include/reflex/event.h +60 -16
- data/include/reflex/exception.h +9 -0
- data/include/reflex/filter.h +56 -0
- data/include/reflex/image_view.h +1 -1
- data/include/reflex/ruby/application.h +17 -9
- data/include/reflex/ruby/event.h +22 -0
- data/include/reflex/ruby/filter.h +69 -0
- data/include/reflex/ruby/selector.h +1 -1
- data/include/reflex/ruby/shape.h +140 -0
- data/include/reflex/ruby/style.h +1 -1
- data/include/reflex/ruby/timer.h +69 -0
- data/include/reflex/ruby/view.h +43 -76
- data/include/reflex/ruby/window.h +17 -32
- data/include/reflex/ruby.h +6 -4
- data/include/reflex/selector.h +54 -2
- data/include/reflex/shape.h +211 -0
- data/include/reflex/style.h +111 -77
- data/include/reflex/timer.h +73 -0
- data/include/reflex/view.h +181 -59
- data/include/reflex/window.h +4 -3
- data/include/reflex.h +5 -4
- data/lib/reflex/application.rb +6 -3
- data/lib/reflex/button.rb +2 -2
- data/lib/reflex/capture_event.rb +7 -6
- data/lib/reflex/contact_event.rb +10 -12
- data/lib/reflex/draw_event.rb +6 -1
- data/lib/reflex/ellipse_shape.rb +27 -0
- data/lib/reflex/filter.rb +18 -0
- data/lib/reflex/fixture.rb +4 -0
- data/lib/reflex/focus_event.rb +10 -12
- data/lib/reflex/frame_event.rb +1 -1
- data/lib/reflex/helper.rb +17 -29
- data/lib/reflex/key_event.rb +13 -11
- data/lib/reflex/line_shape.rb +18 -0
- data/lib/reflex/{texture.rb → matrix.rb} +2 -2
- data/lib/reflex/module.rb +4 -19
- data/lib/reflex/pointer_event.rb +26 -37
- data/lib/reflex/polygon.rb +14 -0
- data/lib/reflex/polygon_shape.rb +23 -0
- data/lib/reflex/polyline.rb +13 -0
- data/lib/reflex/rect_shape.rb +20 -0
- data/lib/reflex/reflex.rb +1 -3
- data/lib/reflex/scroll_event.rb +1 -1
- data/lib/reflex/selector.rb +2 -2
- data/lib/reflex/shape.rb +62 -0
- data/lib/reflex/style.rb +78 -11
- data/lib/reflex/style_length.rb +0 -11
- data/lib/reflex/text_view.rb +7 -24
- data/lib/reflex/timer.rb +30 -0
- data/lib/reflex/timer_event.rb +29 -0
- data/lib/reflex/update_event.rb +1 -1
- data/lib/reflex/view.rb +127 -32
- data/lib/reflex/wheel_event.rb +9 -1
- data/lib/reflex/window.rb +29 -9
- data/lib/reflex.rb +11 -5
- data/lib/reflexion.rb +23 -7
- data/reflex.gemspec +8 -10
- data/samples/bats.rb +4 -4
- data/samples/fans.rb +1 -1
- data/samples/fps.rb +5 -3
- data/samples/hello.rb +4 -6
- data/samples/image.rb +5 -4
- data/samples/ios/hello/hello.xcodeproj/project.pbxproj +0 -2
- data/samples/layout.rb +16 -7
- data/samples/model.rb +10 -7
- data/samples/physics.rb +22 -20
- data/samples/reflexion/breakout.rb +4 -5
- data/samples/reflexion/hello.rb +2 -2
- data/samples/reflexion/jump_action.rb +191 -0
- data/samples/reflexion/noise.rb +23 -0
- data/samples/reflexion/paint.rb +7 -6
- data/samples/reflexion/physics.rb +15 -8
- data/samples/reflexion/pulse.rb +24 -10
- data/samples/shader.rb +8 -6
- data/samples/shapes.rb +63 -14
- data/samples/tree.rb +9 -10
- data/samples/views.rb +3 -3
- data/samples/visuals.rb +2 -5
- data/src/body.cpp +146 -345
- data/src/body.h +91 -0
- data/src/event.cpp +66 -16
- data/src/exception.cpp +13 -3
- data/src/filter.cpp +76 -0
- data/src/fixture.cpp +164 -39
- data/src/fixture.h +85 -0
- data/src/image_view.cpp +4 -4
- data/src/ios/app_delegate.h +5 -10
- data/src/ios/app_delegate.mm +79 -41
- data/src/ios/application.h +32 -0
- data/src/ios/application.mm +35 -25
- data/src/ios/event.mm +8 -4
- data/src/ios/reflex.mm +0 -7
- data/src/ios/view_controller.h +33 -0
- data/src/ios/view_controller.mm +436 -0
- data/src/ios/window.h +40 -0
- data/src/ios/window.mm +59 -250
- data/src/osx/app_delegate.h +5 -10
- data/src/osx/app_delegate.mm +52 -55
- data/src/osx/application.h +32 -0
- data/src/osx/application.mm +44 -39
- data/src/osx/native_window.h +0 -15
- data/src/osx/native_window.mm +131 -115
- data/src/osx/opengl_view.h +0 -2
- data/src/osx/opengl_view.mm +12 -3
- data/src/osx/reflex.mm +0 -9
- data/src/osx/window.h +42 -0
- data/src/osx/window.mm +45 -252
- data/src/selector.cpp +232 -7
- data/src/selector.h +52 -0
- data/src/shape.cpp +1191 -0
- data/src/shape.h +61 -0
- data/src/style.cpp +571 -374
- data/src/style.h +39 -0
- data/src/timer.cpp +291 -0
- data/src/timer.h +55 -0
- data/src/view.cpp +1624 -984
- data/src/view.h +56 -0
- data/src/win32/window.cpp +3 -4
- data/src/window.cpp +275 -20
- data/src/window.h +92 -0
- data/src/world.cpp +112 -111
- data/src/world.h +34 -53
- data/task/box2d.rake +31 -10
- data/test/test_capture_event.rb +8 -6
- data/test/test_pointer_event.rb +85 -0
- data/test/test_selector.rb +1 -1
- data/test/test_shape.rb +71 -0
- data/test/test_style.rb +77 -11
- data/test/test_style_length.rb +42 -13
- data/test/test_view.rb +138 -14
- metadata +109 -210
- data/.doc/ext/reflex/arc_shape.cpp +0 -89
- data/.doc/ext/reflex/body.cpp +0 -299
- data/.doc/ext/reflex/fixture.cpp +0 -101
- data/.doc/ext/reflex/shape_view.cpp +0 -153
- data/ext/reflex/arc_shape.cpp +0 -94
- data/ext/reflex/body.cpp +0 -328
- data/ext/reflex/fixture.cpp +0 -108
- data/ext/reflex/shape_view.cpp +0 -161
- data/include/reflex/bitmap.h +0 -20
- data/include/reflex/body.h +0 -128
- data/include/reflex/bounds.h +0 -20
- data/include/reflex/color.h +0 -20
- data/include/reflex/color_space.h +0 -20
- data/include/reflex/fixture.h +0 -117
- data/include/reflex/font.h +0 -20
- data/include/reflex/image.h +0 -20
- data/include/reflex/matrix.h +0 -20
- data/include/reflex/painter.h +0 -20
- data/include/reflex/point.h +0 -24
- data/include/reflex/ruby/body.h +0 -41
- data/include/reflex/ruby/fixture.h +0 -41
- data/include/reflex/ruby/shape_view.h +0 -96
- data/include/reflex/shader.h +0 -20
- data/include/reflex/shape_view.h +0 -146
- data/include/reflex/texture.h +0 -20
- data/lib/reflex/body.rb +0 -22
- data/lib/reflex/flags.rb +0 -18
- data/lib/reflex/shape_view.rb +0 -25
- data/src/ios/application_data.h +0 -45
- data/src/ios/native_window.h +0 -39
- data/src/ios/native_window.mm +0 -224
- data/src/ios/opengl_view.h +0 -13
- data/src/ios/opengl_view.mm +0 -139
- data/src/ios/window_data.h +0 -75
- data/src/osx/application_data.h +0 -45
- data/src/osx/window_data.h +0 -75
- data/src/physics/Box2D/Box2D.h +0 -68
- data/src/physics/Box2D/Collision/Shapes/b2ChainShape.cpp +0 -193
- data/src/physics/Box2D/Collision/Shapes/b2ChainShape.h +0 -105
- data/src/physics/Box2D/Collision/Shapes/b2CircleShape.cpp +0 -99
- data/src/physics/Box2D/Collision/Shapes/b2CircleShape.h +0 -91
- data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.cpp +0 -138
- data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.h +0 -74
- data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.cpp +0 -467
- data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.h +0 -101
- data/src/physics/Box2D/Collision/Shapes/b2Shape.h +0 -101
- data/src/physics/Box2D/Collision/b2BroadPhase.cpp +0 -119
- data/src/physics/Box2D/Collision/b2BroadPhase.h +0 -257
- data/src/physics/Box2D/Collision/b2CollideCircle.cpp +0 -154
- data/src/physics/Box2D/Collision/b2CollideEdge.cpp +0 -698
- data/src/physics/Box2D/Collision/b2CollidePolygon.cpp +0 -239
- data/src/physics/Box2D/Collision/b2Collision.cpp +0 -252
- data/src/physics/Box2D/Collision/b2Collision.h +0 -277
- data/src/physics/Box2D/Collision/b2Distance.cpp +0 -603
- data/src/physics/Box2D/Collision/b2Distance.h +0 -141
- data/src/physics/Box2D/Collision/b2DynamicTree.cpp +0 -778
- data/src/physics/Box2D/Collision/b2DynamicTree.h +0 -289
- data/src/physics/Box2D/Collision/b2TimeOfImpact.cpp +0 -486
- data/src/physics/Box2D/Collision/b2TimeOfImpact.h +0 -58
- data/src/physics/Box2D/Common/b2BlockAllocator.cpp +0 -215
- data/src/physics/Box2D/Common/b2BlockAllocator.h +0 -62
- data/src/physics/Box2D/Common/b2Draw.cpp +0 -44
- data/src/physics/Box2D/Common/b2Draw.h +0 -86
- data/src/physics/Box2D/Common/b2GrowableStack.h +0 -85
- data/src/physics/Box2D/Common/b2Math.cpp +0 -94
- data/src/physics/Box2D/Common/b2Math.h +0 -720
- data/src/physics/Box2D/Common/b2Settings.cpp +0 -44
- data/src/physics/Box2D/Common/b2Settings.h +0 -151
- data/src/physics/Box2D/Common/b2StackAllocator.cpp +0 -83
- data/src/physics/Box2D/Common/b2StackAllocator.h +0 -60
- data/src/physics/Box2D/Common/b2Timer.cpp +0 -101
- data/src/physics/Box2D/Common/b2Timer.h +0 -50
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp +0 -53
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp +0 -53
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.cpp +0 -52
- data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2Contact.cpp +0 -247
- data/src/physics/Box2D/Dynamics/Contacts/b2Contact.h +0 -349
- data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.cpp +0 -838
- data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.h +0 -95
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h +0 -38
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.cpp +0 -52
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.cpp +0 -260
- data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.h +0 -169
- data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.cpp +0 -251
- data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.h +0 -119
- data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.cpp +0 -419
- data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.h +0 -125
- data/src/physics/Box2D/Dynamics/Joints/b2Joint.cpp +0 -211
- data/src/physics/Box2D/Dynamics/Joints/b2Joint.h +0 -226
- data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.cpp +0 -304
- data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.h +0 -133
- data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.cpp +0 -222
- data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.h +0 -129
- data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp +0 -629
- data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.h +0 -196
- data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.cpp +0 -348
- data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.h +0 -152
- data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp +0 -502
- data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.h +0 -204
- data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.cpp +0 -241
- data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.h +0 -114
- data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.cpp +0 -344
- data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.h +0 -126
- data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.cpp +0 -419
- data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.h +0 -210
- data/src/physics/Box2D/Dynamics/b2Body.cpp +0 -549
- data/src/physics/Box2D/Dynamics/b2Body.h +0 -860
- data/src/physics/Box2D/Dynamics/b2ContactManager.cpp +0 -296
- data/src/physics/Box2D/Dynamics/b2ContactManager.h +0 -52
- data/src/physics/Box2D/Dynamics/b2Fixture.cpp +0 -303
- data/src/physics/Box2D/Dynamics/b2Fixture.h +0 -345
- data/src/physics/Box2D/Dynamics/b2Island.cpp +0 -539
- data/src/physics/Box2D/Dynamics/b2Island.h +0 -93
- data/src/physics/Box2D/Dynamics/b2TimeStep.h +0 -70
- data/src/physics/Box2D/Dynamics/b2World.cpp +0 -1339
- data/src/physics/Box2D/Dynamics/b2World.h +0 -354
- data/src/physics/Box2D/Dynamics/b2WorldCallbacks.cpp +0 -36
- data/src/physics/Box2D/Dynamics/b2WorldCallbacks.h +0 -155
- data/src/physics/Box2D/Rope/b2Rope.cpp +0 -259
- data/src/physics/Box2D/Rope/b2Rope.h +0 -115
- data/src/shape_view.cpp +0 -306
data/src/osx/application.mm
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
// -*- objc -*-
|
2
|
-
#include "
|
2
|
+
#include "application.h"
|
3
3
|
|
4
4
|
|
5
5
|
#include <assert.h>
|
6
6
|
#import <AppKit/NSApplication.h>
|
7
7
|
#include "reflex/exception.h"
|
8
|
-
#include "application_data.h"
|
9
8
|
#import "app_delegate.h"
|
10
9
|
|
11
10
|
|
@@ -13,56 +12,66 @@ namespace Reflex
|
|
13
12
|
{
|
14
13
|
|
15
14
|
|
16
|
-
|
15
|
+
namespace global
|
16
|
+
{
|
17
17
|
|
18
|
+
static Application* instance = NULL;
|
18
19
|
|
19
|
-
|
20
|
+
}// global
|
20
21
|
|
21
22
|
|
22
23
|
Application*
|
23
24
|
app ()
|
24
25
|
{
|
25
|
-
return instance;
|
26
|
+
return global::instance;
|
26
27
|
}
|
27
28
|
|
28
29
|
|
29
30
|
Application::Application ()
|
30
31
|
{
|
31
|
-
if (
|
32
|
-
reflex_error(__FILE__, __LINE__, "not initialized.");
|
33
|
-
|
34
|
-
if (instance)
|
32
|
+
if (global::instance)
|
35
33
|
reflex_error(__FILE__, __LINE__, "multiple application instances.");
|
36
34
|
|
37
|
-
|
38
|
-
if (!delegate)
|
39
|
-
invalid_state_error(__FILE__, __LINE__);
|
40
|
-
|
41
|
-
[delegate bind: this];
|
42
|
-
|
43
|
-
instance = this;
|
35
|
+
global::instance = this;
|
44
36
|
}
|
45
37
|
|
46
38
|
Application::~Application ()
|
47
39
|
{
|
48
|
-
instance = NULL;
|
40
|
+
global::instance = NULL;
|
41
|
+
}
|
42
|
+
|
43
|
+
static ReflexAppDelegate*
|
44
|
+
setup_app_delegate (NSApplication* app)
|
45
|
+
{
|
46
|
+
id<NSApplicationDelegate> delegate = [app delegate];
|
47
|
+
if (!delegate)
|
48
|
+
{
|
49
|
+
delegate = [[[ReflexAppDelegate alloc] init] autorelease];
|
50
|
+
[app setDelegate: delegate];
|
51
|
+
}
|
52
|
+
|
53
|
+
if (![delegate isKindOfClass: ReflexAppDelegate.class])
|
54
|
+
reflex_error(__FILE__, __LINE__);
|
55
|
+
|
56
|
+
return (ReflexAppDelegate*) delegate;
|
49
57
|
}
|
50
58
|
|
51
59
|
void
|
52
60
|
Application::start ()
|
53
61
|
{
|
54
|
-
|
55
|
-
|
62
|
+
NSApplication* app = [NSApplication sharedApplication];
|
63
|
+
ReflexAppDelegate* delegate = setup_app_delegate(app);
|
64
|
+
[delegate bind: this];
|
56
65
|
|
57
|
-
[
|
66
|
+
if (![app isRunning])
|
67
|
+
[app run];
|
68
|
+
else
|
69
|
+
[delegate callOnStart];
|
58
70
|
}
|
59
71
|
|
60
72
|
void
|
61
73
|
Application::quit ()
|
62
74
|
{
|
63
|
-
if (!*this)
|
64
|
-
invalid_state_error(__FILE__, __LINE__);
|
65
|
-
|
66
75
|
[NSApp terminate: nil];
|
67
76
|
}
|
68
77
|
|
@@ -72,54 +81,44 @@ namespace Reflex
|
|
72
81
|
if (!name)
|
73
82
|
argument_error(__FILE__, __LINE__);
|
74
83
|
|
75
|
-
if (!*this)
|
76
|
-
invalid_state_error(__FILE__, __LINE__);
|
77
|
-
|
78
84
|
self->name = name;
|
79
85
|
}
|
80
86
|
|
81
87
|
const char*
|
82
88
|
Application::name () const
|
83
89
|
{
|
84
|
-
if (!*this)
|
85
|
-
invalid_state_error(__FILE__, __LINE__);
|
86
|
-
|
87
90
|
return self->name.c_str();
|
88
91
|
}
|
89
92
|
|
90
93
|
void
|
91
94
|
Application::on_start (Event* e)
|
92
95
|
{
|
93
|
-
if (!*this)
|
94
|
-
invalid_state_error(__FILE__, __LINE__);
|
95
96
|
}
|
96
97
|
|
97
98
|
void
|
98
99
|
Application::on_quit (Event* e)
|
99
100
|
{
|
100
|
-
|
101
|
-
|
101
|
+
}
|
102
|
+
|
103
|
+
void
|
104
|
+
Application::on_motion (MotionEvent* e)
|
105
|
+
{
|
102
106
|
}
|
103
107
|
|
104
108
|
void
|
105
109
|
Application::on_preference (Event* e)
|
106
110
|
{
|
107
|
-
if (!*this)
|
108
|
-
invalid_state_error(__FILE__, __LINE__);
|
109
111
|
}
|
110
112
|
|
111
113
|
void
|
112
114
|
Application::on_about (Event* e)
|
113
115
|
{
|
114
|
-
if (!*this)
|
115
|
-
invalid_state_error(__FILE__, __LINE__);
|
116
|
-
|
117
116
|
[NSApp orderFrontStandardAboutPanel: nil];
|
118
117
|
}
|
119
118
|
|
120
119
|
Application::operator bool () const
|
121
120
|
{
|
122
|
-
return
|
121
|
+
return true;
|
123
122
|
}
|
124
123
|
|
125
124
|
bool
|
@@ -129,4 +128,10 @@ namespace Reflex
|
|
129
128
|
}
|
130
129
|
|
131
130
|
|
131
|
+
Application::Data::Data ()
|
132
|
+
: delegate(nil)
|
133
|
+
{
|
134
|
+
}
|
135
|
+
|
136
|
+
|
132
137
|
}// Reflex
|
data/src/osx/native_window.h
CHANGED
@@ -1,24 +1,9 @@
|
|
1
1
|
// -*- objc -*-
|
2
2
|
#import <AppKit/NSWindow.h>
|
3
|
-
#include <reflex/window.h>
|
4
|
-
|
5
|
-
|
6
|
-
@class OpenGLView;
|
7
3
|
|
8
4
|
|
9
5
|
@interface NativeWindow : NSWindow <NSWindowDelegate>
|
10
6
|
|
11
|
-
{
|
12
|
-
@private
|
13
|
-
Reflex::Window::Ref* pref;
|
14
|
-
OpenGLView* view;
|
15
|
-
NSTimer* timer;
|
16
|
-
}
|
17
|
-
|
18
|
-
- (void) bind: (Reflex::Window*) instance;
|
19
|
-
|
20
|
-
- (void) unbind: (Reflex::Window*) instance;
|
21
|
-
|
22
7
|
- (void) draw;
|
23
8
|
|
24
9
|
+ (NSRect) frameRectForContentRect: (NSRect) contentRect;
|
data/src/osx/native_window.mm
CHANGED
@@ -4,27 +4,14 @@
|
|
4
4
|
|
5
5
|
#include <assert.h>
|
6
6
|
#import <Cocoa/Cocoa.h>
|
7
|
-
#include "
|
8
|
-
#include "reflex/window.h"
|
7
|
+
#include "rays/bounds.h"
|
9
8
|
#include "reflex/exception.h"
|
9
|
+
#include "../view.h"
|
10
10
|
#include "event.h"
|
11
|
-
#include "
|
11
|
+
#include "window.h"
|
12
12
|
#import "opengl_view.h"
|
13
13
|
|
14
14
|
|
15
|
-
#define REF (*pref)
|
16
|
-
|
17
|
-
|
18
|
-
namespace Reflex
|
19
|
-
{
|
20
|
-
|
21
|
-
void update_view_tree (View* v, const UpdateEvent& e);
|
22
|
-
|
23
|
-
void draw_view_tree (View* v, const DrawEvent& e, const Point& offset, const Bounds& clip);
|
24
|
-
|
25
|
-
}// Reflex
|
26
|
-
|
27
|
-
|
28
15
|
static const NSUInteger WINDOW_STYLE_MASK =
|
29
16
|
NSTitledWindowMask |
|
30
17
|
NSClosableWindowMask |
|
@@ -35,6 +22,12 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
35
22
|
|
36
23
|
@implementation NativeWindow
|
37
24
|
|
25
|
+
{
|
26
|
+
Reflex::Window *pwindow, *ptr_for_rebind;
|
27
|
+
OpenGLView* view;
|
28
|
+
NSTimer* timer;
|
29
|
+
}
|
30
|
+
|
38
31
|
- (id) init
|
39
32
|
{
|
40
33
|
self = [super
|
@@ -44,9 +37,9 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
44
37
|
defer: NO];
|
45
38
|
if (!self) return nil;
|
46
39
|
|
47
|
-
|
48
|
-
view
|
49
|
-
timer
|
40
|
+
pwindow = ptr_for_rebind = NULL;
|
41
|
+
view = nil;
|
42
|
+
timer = nil;
|
50
43
|
|
51
44
|
[self setDelegate: self];
|
52
45
|
[self setupContentView];
|
@@ -57,41 +50,66 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
57
50
|
|
58
51
|
- (void) dealloc
|
59
52
|
{
|
60
|
-
assert(
|
53
|
+
assert(!pwindow);
|
61
54
|
|
62
55
|
if (view) [view release];
|
63
56
|
|
64
|
-
delete pref;
|
65
|
-
|
66
57
|
[super dealloc];
|
67
58
|
}
|
68
59
|
|
69
|
-
- (void) bind: (Reflex::Window*)
|
60
|
+
- (void) bind: (Reflex::Window*) window
|
70
61
|
{
|
71
|
-
|
72
|
-
|
73
|
-
if (instance && instance->self->native)
|
62
|
+
if (!window)
|
74
63
|
Reflex::argument_error(__FILE__, __LINE__);
|
75
64
|
|
76
|
-
|
65
|
+
Reflex::WindowData& data = Window_get_data(window);
|
66
|
+
if (data.native)
|
77
67
|
Reflex::invalid_state_error(__FILE__, __LINE__);
|
78
68
|
|
79
|
-
|
80
|
-
|
69
|
+
data.native = [self retain];
|
70
|
+
|
71
|
+
// Reflex::Window is not constructed completely,
|
72
|
+
// so can not call ClassWrapper::retain().
|
73
|
+
window->Xot::template RefCountable<>::retain();
|
74
|
+
|
75
|
+
// defer calling ClassWrapper::retain() to rebind.
|
76
|
+
ptr_for_rebind = window;
|
81
77
|
}
|
82
78
|
|
83
|
-
- (void)
|
79
|
+
- (void) rebind
|
84
80
|
{
|
85
|
-
|
81
|
+
if (!pwindow && ptr_for_rebind)
|
82
|
+
{
|
83
|
+
pwindow = ptr_for_rebind;
|
84
|
+
pwindow->retain();
|
86
85
|
|
87
|
-
|
86
|
+
ptr_for_rebind->Xot::template RefCountable<>::release();
|
87
|
+
ptr_for_rebind = NULL;
|
88
|
+
}
|
88
89
|
|
89
|
-
|
90
|
-
|
90
|
+
assert(pwindow && !ptr_for_rebind);
|
91
|
+
}
|
92
|
+
|
93
|
+
- (void) unbind
|
94
|
+
{
|
95
|
+
[self rebind];
|
96
|
+
if (!pwindow) return;
|
97
|
+
|
98
|
+
Reflex::WindowData& data = Window_get_data(pwindow);
|
99
|
+
if (data.native)
|
100
|
+
{
|
101
|
+
[data.native release];
|
102
|
+
data.native = nil;
|
103
|
+
}
|
91
104
|
|
92
|
-
|
93
|
-
|
94
|
-
|
105
|
+
pwindow->release();
|
106
|
+
pwindow = NULL;
|
107
|
+
}
|
108
|
+
|
109
|
+
- (Reflex::Window*) window
|
110
|
+
{
|
111
|
+
[self rebind];
|
112
|
+
return pwindow;
|
95
113
|
}
|
96
114
|
|
97
115
|
- (void) setupContentView
|
@@ -116,9 +134,9 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
116
134
|
repeats: YES] retain];
|
117
135
|
if (!timer) return;
|
118
136
|
|
119
|
-
[[NSRunLoop
|
137
|
+
[[NSRunLoop mainRunLoop]
|
120
138
|
addTimer: timer forMode: NSDefaultRunLoopMode];
|
121
|
-
[[NSRunLoop
|
139
|
+
[[NSRunLoop mainRunLoop]
|
122
140
|
addTimer: timer forMode: NSEventTrackingRunLoopMode];
|
123
141
|
}
|
124
142
|
|
@@ -132,82 +150,79 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
132
150
|
|
133
151
|
- (void) update: (NSTimer*) t
|
134
152
|
{
|
135
|
-
|
136
|
-
|
137
|
-
if (!REF) return;
|
153
|
+
Reflex::Window* win = self.window;
|
154
|
+
if (!win) return;
|
138
155
|
|
139
156
|
double now = Xot::time();
|
140
|
-
Reflex::UpdateEvent e(now -
|
141
|
-
|
157
|
+
Reflex::UpdateEvent e(now, now - win->self->prev_time_update);
|
158
|
+
win->self->prev_time_update = now;
|
142
159
|
|
143
|
-
|
160
|
+
win->on_update(&e);
|
144
161
|
if (!e.is_blocked())
|
145
|
-
Reflex::
|
162
|
+
Reflex::View_update_tree(win->root(), e);
|
146
163
|
|
147
|
-
if (
|
164
|
+
if (win->self->redraw)
|
148
165
|
{
|
149
|
-
|
150
|
-
|
166
|
+
view.needsDisplay = YES;
|
167
|
+
win->self->redraw = false;
|
151
168
|
}
|
152
169
|
}
|
153
170
|
|
154
171
|
- (void) draw
|
155
172
|
{
|
156
|
-
|
157
|
-
|
158
|
-
if (!REF) return;
|
173
|
+
Reflex::Window* win = self.window;
|
174
|
+
if (!win) return;
|
159
175
|
|
160
176
|
double now = Xot::time();
|
161
|
-
double dt = now -
|
177
|
+
double dt = now - win->self->prev_time_draw;
|
162
178
|
double fps = 1. / dt;
|
163
179
|
|
164
|
-
fps
|
165
|
-
|
166
|
-
|
180
|
+
fps = win->self->prev_fps * 0.9 + fps * 0.1;// LPF
|
181
|
+
|
182
|
+
win->self->prev_time_draw = now;
|
183
|
+
win->self->prev_fps = fps;
|
167
184
|
|
168
185
|
Reflex::DrawEvent e(dt, fps);
|
169
186
|
|
170
|
-
e.painter =
|
187
|
+
e.painter = win->painter();
|
171
188
|
if (!e.painter)
|
172
189
|
Xot::invalid_state_error(__FILE__, __LINE__);
|
173
190
|
|
174
|
-
Rays::Bounds
|
175
|
-
e.bounds.reset(0, 0,
|
191
|
+
Rays::Bounds frame = win->frame();
|
192
|
+
e.bounds.reset(0, 0, frame.width, frame.height);
|
176
193
|
|
177
194
|
e.painter->begin();
|
178
195
|
e.painter->clear();
|
179
196
|
|
180
|
-
|
197
|
+
win->on_draw(&e);
|
181
198
|
if (!e.is_blocked())
|
182
|
-
|
199
|
+
Reflex::View_draw_tree(win->root(), e, 0, frame.move_to(0));
|
183
200
|
|
184
201
|
e.painter->end();
|
185
202
|
}
|
186
203
|
|
187
204
|
- (BOOL) windowShouldClose: (id) sender
|
188
205
|
{
|
189
|
-
|
206
|
+
Reflex::Window* win = self.window;
|
207
|
+
if (!win) return YES;
|
190
208
|
|
191
|
-
|
192
|
-
|
193
|
-
REF->close();
|
209
|
+
win->close();
|
194
210
|
return NO;
|
195
211
|
}
|
196
212
|
|
197
213
|
- (void) windowWillClose: (NSNotification*) notification
|
198
214
|
{
|
199
215
|
[self stopTimer];
|
200
|
-
[self unbind
|
216
|
+
[self unbind];
|
201
217
|
[self setDelegate: nil];
|
202
218
|
}
|
203
219
|
|
204
220
|
- (void) windowWillMove: (NSNotification*) notification
|
205
221
|
{
|
206
|
-
|
207
|
-
|
208
|
-
if (!REF) return;
|
222
|
+
Reflex::Window* win = self.window;
|
223
|
+
if (!win) return;
|
209
224
|
|
210
|
-
|
225
|
+
win->self->prev_position = win->frame().position();
|
211
226
|
}
|
212
227
|
|
213
228
|
- (void) windowDidMove: (NSNotification*) notification
|
@@ -217,11 +232,10 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
217
232
|
|
218
233
|
- (NSSize) windowWillResize: (NSWindow*) sender toSize: (NSSize) frameSize
|
219
234
|
{
|
220
|
-
|
221
|
-
|
222
|
-
if (!REF) return frameSize;
|
235
|
+
Reflex::Window* win = self.window;
|
236
|
+
if (!win) return frameSize;
|
223
237
|
|
224
|
-
|
238
|
+
win->self->prev_size = win->frame().size();
|
225
239
|
|
226
240
|
return frameSize;
|
227
241
|
}
|
@@ -233,99 +247,101 @@ static const NSUInteger WINDOW_STYLE_MASK =
|
|
233
247
|
|
234
248
|
- (void) frameChanged
|
235
249
|
{
|
236
|
-
|
250
|
+
Reflex::Window* win = self.window;
|
251
|
+
if (!win) return;
|
237
252
|
|
238
|
-
|
239
|
-
|
240
|
-
Rays::
|
241
|
-
|
242
|
-
|
243
|
-
REF->self->prev_position = b.position();
|
244
|
-
REF->self->prev_size = b.size();
|
253
|
+
Rays::Bounds b = win->frame();
|
254
|
+
Rays::Point dpos = b.position() - win->self->prev_position;
|
255
|
+
Rays::Point dsize = b.size() - win->self->prev_size;
|
256
|
+
win->self->prev_position = b.position();
|
257
|
+
win->self->prev_size = b.size();
|
245
258
|
|
246
259
|
if (dpos != 0 || dsize != 0)
|
247
260
|
{
|
248
261
|
Reflex::FrameEvent e(b, dpos.x, dpos.y, dsize.x, dsize.y);
|
249
|
-
if (dpos != 0)
|
262
|
+
if (dpos != 0) win->on_move(&e);
|
250
263
|
if (dsize != 0)
|
251
264
|
{
|
252
|
-
Rays::Bounds b =
|
265
|
+
Rays::Bounds b = win->frame();
|
253
266
|
b.move_to(0, 0);
|
254
|
-
|
255
|
-
if (
|
256
|
-
|
267
|
+
|
268
|
+
if (win->painter())
|
269
|
+
win->painter()->canvas(b, self.backingScaleFactor);
|
270
|
+
|
271
|
+
if (win->root())
|
272
|
+
View_set_frame(win->root(), b);
|
273
|
+
|
274
|
+
win->on_resize(&e);
|
257
275
|
}
|
258
276
|
}
|
259
277
|
}
|
260
278
|
|
261
279
|
- (void) keyDown: (NSEvent*) event
|
262
280
|
{
|
263
|
-
|
264
|
-
|
265
|
-
if (!REF) return;
|
281
|
+
Reflex::Window* win = self.window;
|
282
|
+
if (!win) return;
|
266
283
|
|
267
284
|
Reflex::NativeKeyEvent e(event, Reflex::KeyEvent::DOWN);
|
268
|
-
|
285
|
+
win->on_key(&e);
|
269
286
|
}
|
270
287
|
|
271
288
|
- (void) keyUp: (NSEvent*) event
|
272
289
|
{
|
273
|
-
|
274
|
-
|
275
|
-
if (!REF) return;
|
290
|
+
Reflex::Window* win = self.window;
|
291
|
+
if (!win) return;
|
276
292
|
|
277
293
|
Reflex::NativeKeyEvent e(event, Reflex::KeyEvent::UP);
|
278
|
-
|
294
|
+
win->on_key(&e);
|
279
295
|
}
|
280
296
|
|
281
|
-
- (void)
|
297
|
+
- (void) flagsChanged: (NSEvent*) event
|
282
298
|
{
|
283
|
-
|
299
|
+
// TODO: implement later.
|
300
|
+
}
|
284
301
|
|
285
|
-
|
302
|
+
- (void) mouseDown: (NSEvent*) event
|
303
|
+
{
|
304
|
+
Reflex::Window* win = self.window;
|
305
|
+
if (!win) return;
|
286
306
|
|
287
307
|
Reflex::NativePointerEvent e(event, view, Reflex::PointerEvent::DOWN);
|
288
|
-
|
308
|
+
win->on_pointer(&e);
|
289
309
|
}
|
290
310
|
|
291
311
|
- (void) mouseUp: (NSEvent*) event
|
292
312
|
{
|
293
|
-
|
294
|
-
|
295
|
-
if (!REF) return;
|
313
|
+
Reflex::Window* win = self.window;
|
314
|
+
if (!win) return;
|
296
315
|
|
297
316
|
Reflex::NativePointerEvent e(event, view, Reflex::PointerEvent::UP);
|
298
|
-
|
317
|
+
win->on_pointer(&e);
|
299
318
|
}
|
300
319
|
|
301
320
|
- (void) mouseDragged: (NSEvent*) event
|
302
321
|
{
|
303
|
-
|
304
|
-
|
305
|
-
if (!REF) return;
|
322
|
+
Reflex::Window* win = self.window;
|
323
|
+
if (!win) return;
|
306
324
|
|
307
325
|
Reflex::NativePointerEvent e(event, view, Reflex::PointerEvent::MOVE);
|
308
|
-
|
326
|
+
win->on_pointer(&e);
|
309
327
|
}
|
310
328
|
|
311
329
|
- (void) mouseMoved: (NSEvent*) event
|
312
330
|
{
|
313
|
-
|
314
|
-
|
315
|
-
if (!REF) return;
|
331
|
+
Reflex::Window* win = self.window;
|
332
|
+
if (!win) return;
|
316
333
|
|
317
334
|
Reflex::NativePointerEvent e(event, view, Reflex::PointerEvent::MOVE);
|
318
|
-
|
335
|
+
win->on_pointer(&e);
|
319
336
|
}
|
320
337
|
|
321
338
|
- (void) scrollWheel: (NSEvent*) event
|
322
339
|
{
|
323
|
-
|
324
|
-
|
325
|
-
if (!REF) return;
|
340
|
+
Reflex::Window* win = self.window;
|
341
|
+
if (!win) return;
|
326
342
|
|
327
343
|
Reflex::NativeWheelEvent e(event, view);
|
328
|
-
|
344
|
+
win->on_wheel(&e);
|
329
345
|
}
|
330
346
|
|
331
347
|
+ (NSRect) frameRectForContentRect: (NSRect) contentRect
|
data/src/osx/opengl_view.h
CHANGED
data/src/osx/opengl_view.mm
CHANGED
@@ -63,11 +63,12 @@ make_pixelformat (int antialias_nsample = 0)
|
|
63
63
|
self = [super initWithFrame: frame pixelFormat: make_pixelformat(nsample)];
|
64
64
|
if (!self) return nil;
|
65
65
|
|
66
|
+
[self setWantsBestResolutionOpenGLSurface: YES];
|
66
67
|
[self activateContext];
|
67
68
|
|
68
|
-
GLint
|
69
|
+
GLint swapInterval = 1;
|
69
70
|
[[self openGLContext]
|
70
|
-
setValues: &
|
71
|
+
setValues: &swapInterval
|
71
72
|
forParameter: NSOpenGLCPSwapInterval];
|
72
73
|
|
73
74
|
#ifdef TRANSPARENT_BACKGROUND
|
@@ -130,7 +131,7 @@ make_pixelformat (int antialias_nsample = 0)
|
|
130
131
|
|
131
132
|
- (void) keyDown: (NSEvent*) event
|
132
133
|
{
|
133
|
-
[self interpretKeyEvents: [NSArray arrayWithObject: event]];
|
134
|
+
//[self interpretKeyEvents: [NSArray arrayWithObject: event]];
|
134
135
|
|
135
136
|
NativeWindow* win = (NativeWindow*) [self window];
|
136
137
|
if (!win) return;
|
@@ -146,6 +147,14 @@ make_pixelformat (int antialias_nsample = 0)
|
|
146
147
|
[win keyUp: event];
|
147
148
|
}
|
148
149
|
|
150
|
+
- (void) flagsChanged: (NSEvent*) event
|
151
|
+
{
|
152
|
+
NativeWindow* win = (NativeWindow*) [self window];
|
153
|
+
if (!win) return;
|
154
|
+
|
155
|
+
[win flagsChanged: event];
|
156
|
+
}
|
157
|
+
|
149
158
|
- (void) mouseDown: (NSEvent*) event
|
150
159
|
{
|
151
160
|
NativeWindow* win = (NativeWindow*) [self window];
|
data/src/osx/reflex.mm
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
|
5
5
|
#import <Cocoa/Cocoa.h>
|
6
6
|
#include "reflex/exception.h"
|
7
|
-
#import "app_delegate.h"
|
8
7
|
|
9
8
|
|
10
9
|
namespace Reflex
|
@@ -19,12 +18,6 @@ namespace Reflex
|
|
19
18
|
}// global
|
20
19
|
|
21
20
|
|
22
|
-
bool
|
23
|
-
initialized ()
|
24
|
-
{
|
25
|
-
return global::pool;
|
26
|
-
}
|
27
|
-
|
28
21
|
void
|
29
22
|
init ()
|
30
23
|
{
|
@@ -32,8 +25,6 @@ namespace Reflex
|
|
32
25
|
reflex_error(__FILE__, __LINE__, "already initialized.");
|
33
26
|
|
34
27
|
global::pool = [[NSAutoreleasePool alloc] init];
|
35
|
-
|
36
|
-
[[NSApplication sharedApplication] setDelegate: [[[AppDelegate alloc] init] autorelease]];
|
37
28
|
}
|
38
29
|
|
39
30
|
void
|