reflexion 0.1.6 → 0.1.7

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 (225) hide show
  1. checksums.yaml +7 -0
  2. data/.doc/ext/reflex/application.cpp +54 -39
  3. data/.doc/ext/reflex/capture_event.cpp +87 -0
  4. data/.doc/ext/reflex/draw_event.cpp +103 -0
  5. data/.doc/ext/reflex/event.cpp +73 -0
  6. data/.doc/ext/reflex/focus_event.cpp +98 -0
  7. data/.doc/ext/reflex/frame_event.cpp +133 -0
  8. data/.doc/ext/reflex/image_view.cpp +74 -0
  9. data/.doc/ext/reflex/key_event.cpp +124 -0
  10. data/.doc/ext/reflex/native.cpp +45 -6
  11. data/.doc/ext/reflex/pointer_event.cpp +181 -0
  12. data/.doc/ext/reflex/reflex.cpp +17 -41
  13. data/.doc/ext/reflex/scroll_event.cpp +141 -0
  14. data/.doc/ext/reflex/selector.cpp +135 -0
  15. data/.doc/ext/reflex/style.cpp +253 -0
  16. data/.doc/ext/reflex/style_length.cpp +133 -0
  17. data/.doc/ext/reflex/style_length2.cpp +149 -0
  18. data/.doc/ext/reflex/style_length4.cpp +192 -0
  19. data/.doc/ext/reflex/update_event.cpp +77 -0
  20. data/.doc/ext/reflex/view.cpp +408 -88
  21. data/.doc/ext/reflex/wheel_event.cpp +146 -0
  22. data/.doc/ext/reflex/window.cpp +95 -92
  23. data/Rakefile +6 -5
  24. data/VERSION +1 -1
  25. data/ext/reflex/application.cpp +67 -49
  26. data/ext/reflex/capture_event.cpp +92 -0
  27. data/ext/reflex/draw_event.cpp +110 -0
  28. data/ext/reflex/event.cpp +77 -0
  29. data/ext/reflex/extconf.rb +18 -68
  30. data/ext/reflex/focus_event.cpp +104 -0
  31. data/ext/reflex/frame_event.cpp +143 -0
  32. data/ext/reflex/image_view.cpp +77 -0
  33. data/ext/reflex/key_event.cpp +133 -0
  34. data/ext/reflex/native.cpp +45 -6
  35. data/ext/reflex/pointer_event.cpp +195 -0
  36. data/ext/reflex/reflex.cpp +21 -47
  37. data/ext/reflex/scroll_event.cpp +152 -0
  38. data/ext/reflex/selector.cpp +144 -0
  39. data/ext/reflex/style.cpp +277 -0
  40. data/ext/reflex/style_length.cpp +140 -0
  41. data/ext/reflex/style_length2.cpp +157 -0
  42. data/ext/reflex/style_length4.cpp +204 -0
  43. data/ext/reflex/update_event.cpp +81 -0
  44. data/ext/reflex/view.cpp +469 -114
  45. data/ext/reflex/wheel_event.cpp +158 -0
  46. data/ext/reflex/window.cpp +130 -123
  47. data/include/reflex/application.h +12 -7
  48. data/include/reflex/defs.h +13 -89
  49. data/include/reflex/event.h +260 -0
  50. data/include/reflex/exception.h +17 -11
  51. data/include/reflex/image_view.h +45 -0
  52. data/include/reflex/reflex.h +2 -6
  53. data/include/reflex/ruby/application.h +40 -13
  54. data/include/reflex/ruby/event.h +72 -0
  55. data/include/reflex/ruby/image_view.h +25 -0
  56. data/include/reflex/ruby/selector.h +27 -0
  57. data/include/reflex/ruby/style.h +27 -0
  58. data/include/reflex/ruby/style_length.h +37 -0
  59. data/include/reflex/ruby/view.h +193 -38
  60. data/include/reflex/ruby/window.h +123 -39
  61. data/include/reflex/ruby.h +3 -2
  62. data/include/reflex/selector.h +64 -0
  63. data/include/reflex/style.h +144 -0
  64. data/include/reflex/style_length.h +147 -0
  65. data/include/reflex/view.h +182 -19
  66. data/include/reflex/window.h +35 -19
  67. data/include/reflex.h +7 -0
  68. data/lib/reflex/application.rb +14 -5
  69. data/lib/reflex/arc_shape.rb +20 -0
  70. data/lib/reflex/button.rb +75 -0
  71. data/lib/reflex/capture_event.rb +37 -0
  72. data/lib/reflex/color.rb +13 -0
  73. data/lib/reflex/color_space.rb +13 -0
  74. data/lib/reflex/draw_event.rb +19 -0
  75. data/lib/reflex/ellipse_shape.rb +20 -0
  76. data/lib/reflex/ext.rb +1 -1
  77. data/lib/reflex/flags.rb +18 -0
  78. data/lib/reflex/focus_event.rb +38 -0
  79. data/lib/reflex/font.rb +13 -0
  80. data/lib/reflex/frame_event.rb +42 -0
  81. data/lib/reflex/helper.rb +87 -30
  82. data/lib/reflex/image_view.rb +25 -0
  83. data/lib/reflex/key_event.rb +38 -0
  84. data/lib/reflex/line_shape.rb +20 -0
  85. data/lib/reflex/list_view.rb +15 -0
  86. data/lib/reflex/model.rb +149 -0
  87. data/lib/reflex/model_owner.rb +57 -0
  88. data/lib/reflex/model_view.rb +22 -0
  89. data/lib/reflex/module.rb +11 -7
  90. data/lib/reflex/pointer_event.rb +85 -0
  91. data/lib/reflex/rect_shape.rb +20 -0
  92. data/lib/reflex/reflex.rb +13 -2
  93. data/lib/reflex/scroll_event.rb +19 -0
  94. data/lib/reflex/selector.rb +31 -0
  95. data/lib/reflex/shader.rb +13 -0
  96. data/lib/reflex/shape.rb +34 -0
  97. data/lib/reflex/style.rb +55 -0
  98. data/lib/reflex/style_length.rb +30 -0
  99. data/lib/reflex/style_length2.rb +34 -0
  100. data/lib/reflex/style_length4.rb +38 -0
  101. data/lib/reflex/text_view.rb +55 -0
  102. data/lib/reflex/update_event.rb +19 -0
  103. data/lib/reflex/view.rb +38 -4
  104. data/lib/reflex/wheel_event.rb +19 -0
  105. data/lib/reflex/window.rb +7 -5
  106. data/lib/reflex.rb +38 -1
  107. data/lib/reflexion/include.rb +5 -0
  108. data/lib/reflexion.rb +100 -0
  109. data/reflex.gemspec +3 -4
  110. data/samples/app.rb +13 -0
  111. data/samples/bats.rb +91 -0
  112. data/samples/checker.rb +36 -0
  113. data/{examples/ruby/shapes.rb → samples/fans.rb} +12 -16
  114. data/samples/fps.rb +46 -0
  115. data/samples/grid.rb +60 -0
  116. data/{examples/ruby → samples}/hello.rb +14 -16
  117. data/samples/image.rb +44 -0
  118. data/samples/ios/hello/hello/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  119. data/samples/ios/hello/hello/Images.xcassets/LaunchImage.launchimage/Contents.json +51 -0
  120. data/samples/ios/hello/hello/en.lproj/InfoPlist.strings +2 -0
  121. data/samples/ios/hello/hello/hello-Info.plist +47 -0
  122. data/samples/ios/hello/hello/hello-Prefix.pch +10 -0
  123. data/samples/ios/hello/hello/main.cpp +79 -0
  124. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +725 -0
  125. data/{examples/ruby → samples}/key.rb +11 -14
  126. data/samples/layout.rb +89 -0
  127. data/samples/model.rb +86 -0
  128. data/samples/osx/hello/hello/Images.xcassets/AppIcon.appiconset/Contents.json +58 -0
  129. data/samples/osx/hello/hello/en.lproj/Credits.rtf +29 -0
  130. data/samples/osx/hello/hello/en.lproj/InfoPlist.strings +2 -0
  131. data/samples/osx/hello/hello/hello-Info.plist +32 -0
  132. data/samples/osx/hello/hello/hello-Prefix.pch +3 -0
  133. data/samples/osx/hello/hello/main.cpp +79 -0
  134. data/samples/osx/hello/hello.xcodeproj/project.pbxproj +725 -0
  135. data/samples/reflexion/hello.rb +24 -0
  136. data/samples/reflexion/paint.rb +40 -0
  137. data/samples/reflexion/pulse.rb +34 -0
  138. data/samples/repl.rb +69 -0
  139. data/samples/shader.rb +41 -0
  140. data/samples/shapes.rb +30 -0
  141. data/{examples/ruby → samples}/text.rb +7 -8
  142. data/samples/tree.rb +71 -0
  143. data/samples/views.rb +41 -0
  144. data/samples/visuals.rb +22 -0
  145. data/src/event.cpp +225 -0
  146. data/src/exception.cpp +24 -15
  147. data/src/image_view.cpp +70 -0
  148. data/src/ios/app_delegate.h +17 -0
  149. data/src/ios/app_delegate.mm +120 -0
  150. data/src/ios/application.mm +116 -0
  151. data/src/{cocoa/applicationdata.h → ios/application_data.h} +6 -6
  152. data/src/ios/event.h +26 -0
  153. data/src/ios/event.mm +31 -0
  154. data/src/ios/native_window.h +37 -0
  155. data/src/ios/native_window.mm +220 -0
  156. data/src/ios/opengl_view.h +13 -0
  157. data/src/ios/opengl_view.mm +131 -0
  158. data/src/{cocoa → ios}/reflex.mm +8 -12
  159. data/src/ios/window.mm +303 -0
  160. data/src/ios/window_data.h +75 -0
  161. data/src/osx/app_delegate.h +17 -0
  162. data/src/{cocoa/cocoaapplication.mm → osx/app_delegate.mm} +90 -48
  163. data/src/osx/application.mm +132 -0
  164. data/src/osx/application_data.h +45 -0
  165. data/src/osx/event.h +42 -0
  166. data/src/osx/event.mm +112 -0
  167. data/src/osx/native_window.h +26 -0
  168. data/src/osx/native_window.mm +322 -0
  169. data/src/{cocoa/openglview.h → osx/opengl_view.h} +0 -4
  170. data/src/{cocoa/openglview.mm → osx/opengl_view.mm} +66 -23
  171. data/src/osx/reflex.mm +50 -0
  172. data/src/osx/window.mm +308 -0
  173. data/src/osx/window_data.h +75 -0
  174. data/src/selector.cpp +121 -0
  175. data/src/style.cpp +576 -0
  176. data/src/style_length.cpp +341 -0
  177. data/src/view.cpp +1228 -129
  178. data/src/win32/application.cpp +1 -1
  179. data/src/window.cpp +54 -26
  180. data/test/helper.rb +8 -4
  181. data/test/test_capture_event.rb +41 -0
  182. data/test/test_event.rb +20 -0
  183. data/test/test_has_frame.rb +45 -0
  184. data/test/test_model.rb +9 -0
  185. data/test/test_model_owner.rb +9 -0
  186. data/test/test_selector.rb +75 -0
  187. data/test/test_style.rb +70 -0
  188. data/test/test_style_length.rb +38 -0
  189. data/test/test_style_length2.rb +50 -0
  190. data/test/test_style_length4.rb +56 -0
  191. data/test/test_view.rb +97 -23
  192. data/test/test_window.rb +54 -46
  193. metadata +205 -84
  194. data/.doc/ext/reflex/defs.cpp +0 -8
  195. data/.doc/ext/reflex/key.cpp +0 -122
  196. data/.doc/ext/reflex/points.cpp +0 -151
  197. data/.gitignore +0 -14
  198. data/ChangeLog +0 -8
  199. data/examples/hello/.gitignore +0 -2
  200. data/examples/hello/Rakefile +0 -41
  201. data/examples/hello/main.cpp +0 -18
  202. data/examples/ruby/app.rb +0 -13
  203. data/examples/ruby/checker.rb +0 -41
  204. data/examples/ruby/fps.rb +0 -49
  205. data/examples/ruby/grid.rb +0 -65
  206. data/examples/ruby/views.rb +0 -88
  207. data/examples/ruby/visuals.rb +0 -27
  208. data/ext/reflex/defs.cpp +0 -8
  209. data/ext/reflex/key.cpp +0 -129
  210. data/ext/reflex/points.cpp +0 -161
  211. data/include/reflex/ruby/key.h +0 -39
  212. data/include/reflex/ruby/points.h +0 -39
  213. data/lib/reflex/visuals/string.rb +0 -53
  214. data/src/cocoa/application.mm +0 -101
  215. data/src/cocoa/cocoaapplication.h +0 -21
  216. data/src/cocoa/cocoawindow.h +0 -46
  217. data/src/cocoa/cocoawindow.mm +0 -230
  218. data/src/cocoa/defs.h +0 -34
  219. data/src/cocoa/defs.mm +0 -87
  220. data/src/cocoa/window.mm +0 -148
  221. data/src/cocoa/windowdata.h +0 -56
  222. data/src/defs.cpp +0 -47
  223. data/src/helper.h +0 -12
  224. data/src/reflex.cpp +0 -43
  225. /data/{README → README.md} +0 -0
@@ -1,161 +0,0 @@
1
- #include "reflex/ruby/points.h"
2
-
3
-
4
- #include <rucy.h>
5
- #include "defs.h"
6
-
7
-
8
- using namespace Rucy;
9
-
10
- using Reflex::coord;
11
-
12
-
13
- static Class cPoints;
14
-
15
-
16
- namespace Reflex
17
- {
18
-
19
-
20
- Class
21
- points_class ()
22
- {
23
- return cPoints;
24
- }
25
-
26
-
27
- }// Reflex
28
-
29
-
30
- namespace Rucy
31
- {
32
-
33
-
34
- Value
35
- value (const Reflex::Points& points)
36
- {
37
- return new_type(cPoints, new Reflex::Points(points));
38
- }
39
-
40
-
41
- }// Rucy
42
-
43
-
44
- #define THIS to<Reflex::Points*>(self)
45
-
46
- #define CHECK RUCY_CHECK_OBJ(self, Reflex::Points, cPoints)
47
-
48
-
49
- static
50
- RUBY_DEF_ALLOC(alloc, klass)
51
- {
52
- return new_type<Reflex::Points>(klass);
53
- }
54
- RUBY_END
55
-
56
- static
57
- RUBY_DEFN(initialize)
58
- {
59
- RUCY_CHECK_OBJ(self, Reflex::Points, cPoints);
60
- if (argc < 0 || 6 < argc)
61
- arg_count_error("Points#initialize", argc, 0, 1, 2, 3, 4, 5, 6);
62
-
63
- THIS->type = (argc >= 1) ? to<int>(argv[0]) : Reflex::POINT_NONE;
64
- THIS->x = (argc >= 2) ? to<coord>(argv[1]) : 0;
65
- THIS->y = (argc >= 3) ? to<coord>(argv[2]) : 0;
66
- THIS->size = 1;
67
- THIS->modifiers = (argc >= 4) ? to<uint>(argv[3]) : (uint) Reflex::MOD_NONE;
68
- THIS->count = (argc >= 5) ? to<uint>(argv[4]) : 0;
69
- THIS->drag = (argc >= 6) ? to<bool>(argv[5]) : false;
70
-
71
- return self;
72
- }
73
- RUBY_END
74
-
75
- static
76
- RUBY_DEF1(initialize_copy, obj)
77
- {
78
- RUCY_CHECK_OBJ(self, Reflex::Points, cPoints);
79
-
80
- Reflex::Points* points = to<Reflex::Points*>(obj);
81
- if (!points) argument_error();
82
-
83
- *THIS = *points;
84
- return self;
85
- }
86
- RUBY_END
87
-
88
- static
89
- RUBY_DEF0(type)
90
- {
91
- CHECK;
92
- return value(THIS->type);
93
- }
94
- RUBY_END
95
-
96
- static
97
- RUBY_DEF0(x)
98
- {
99
- CHECK;
100
- return value(THIS->x);
101
- }
102
- RUBY_END
103
-
104
- static
105
- RUBY_DEF0(y)
106
- {
107
- CHECK;
108
- return value(THIS->y);
109
- }
110
- RUBY_END
111
-
112
- static
113
- RUBY_DEF0(size)
114
- {
115
- CHECK;
116
- return value(THIS->size);
117
- }
118
- RUBY_END
119
-
120
- static
121
- RUBY_DEF0(modifiers)
122
- {
123
- CHECK;
124
- return value(THIS->modifiers);
125
- }
126
- RUBY_END
127
-
128
- static
129
- RUBY_DEF0(count)
130
- {
131
- CHECK;
132
- return value(THIS->count);
133
- }
134
- RUBY_END
135
-
136
- static
137
- RUBY_DEF0(drag)
138
- {
139
- CHECK;
140
- return value(THIS->drag);
141
- }
142
- RUBY_END
143
-
144
-
145
- void
146
- Init_points ()
147
- {
148
- Module mReflex = define_module("Reflex");
149
-
150
- cPoints = mReflex.define_class("Points");
151
- cPoints.define_alloc_func(alloc);
152
- cPoints.define_private_method("initialize", initialize);
153
- cPoints.define_private_method("initialize_copy", initialize_copy);
154
- cPoints.define_method("type", type);
155
- cPoints.define_method("x", x);
156
- cPoints.define_method("y", y);
157
- cPoints.define_method("size", size);
158
- cPoints.define_method("modifiers", modifiers);
159
- cPoints.define_method("count", count);
160
- cPoints.define_method("drag", drag);
161
- }
@@ -1,39 +0,0 @@
1
- // -*- c++ -*-
2
- #pragma once
3
- #ifndef __REFLEX_RUBY_KEY_H__
4
- #define __REFLEX_RUBY_KEY_H__
5
-
6
-
7
- #include <rucy/rucy.h>
8
- #include <rucy/class.h>
9
- #include <reflex/defs.h>
10
-
11
-
12
- namespace Reflex
13
- {
14
-
15
-
16
- Rucy::Class key_class ();
17
- // class Reflex::Key
18
-
19
-
20
- }// Reflex
21
-
22
-
23
- namespace Rucy
24
- {
25
-
26
-
27
- Value value (const Reflex::Key& obj);
28
-
29
- template <> inline Reflex::Key*
30
- value_to<Reflex::Key*> (Value val, bool)
31
- {
32
- return get_type_ptr<Reflex::Key>(val, Reflex::key_class());
33
- }
34
-
35
-
36
- }// Rucy
37
-
38
-
39
- #endif//EOH
@@ -1,39 +0,0 @@
1
- // -*- c++ -*-
2
- #pragma once
3
- #ifndef __REFLEX_RUBY_POINTS_H__
4
- #define __REFLEX_RUBY_POINTS_H__
5
-
6
-
7
- #include <rucy/rucy.h>
8
- #include <rucy/class.h>
9
- #include <reflex/defs.h>
10
-
11
-
12
- namespace Reflex
13
- {
14
-
15
-
16
- Rucy::Class points_class ();
17
- // class Reflex::Points
18
-
19
-
20
- }// Reflex
21
-
22
-
23
- namespace Rucy
24
- {
25
-
26
-
27
- Value value (const Reflex::Points& obj);
28
-
29
- template <> inline Reflex::Points*
30
- value_to<Reflex::Points*> (Value val, bool)
31
- {
32
- return get_type_ptr<Reflex::Points>(val, Reflex::points_class());
33
- }
34
-
35
-
36
- }// Rucy
37
-
38
-
39
- #endif//EOH
@@ -1,53 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
-
4
- require 'reflex/image'
5
- require 'reflex/bitmap'
6
- require 'reflex/view'
7
-
8
-
9
- module Reflex
10
-
11
-
12
- module Visuals
13
-
14
-
15
- class String < View
16
-
17
- attr_reader :data
18
-
19
- def data= (data)
20
- if data != @data
21
- @data = data
22
- @image = nil
23
- end
24
- @data
25
- end
26
-
27
- def draw (painter, bounds)
28
- return unless @image ||= create_image(painter)
29
- painter.fill = 0
30
- painter.image @image
31
- end
32
-
33
- private
34
-
35
- def create_image (painter)
36
- dat = self.data
37
- return nil unless dat
38
- str = dat.to_s
39
- font = painter.font
40
- size = font.width(str), font.height * 10
41
- resize_to *size
42
- bmp = Bitmap.new *size, :GRAY
43
- bmp.draw_string str
44
- Image.new bmp, true
45
- end
46
-
47
- end# String
48
-
49
-
50
- end# Visuals
51
-
52
-
53
- end# Reflex
@@ -1,101 +0,0 @@
1
- // -*- objc -*-
2
- #include "reflex/application.h"
3
-
4
-
5
- #include <assert.h>
6
- #import <Cocoa/Cocoa.h>
7
- #include <reflex/exception.h>
8
- #include "applicationdata.h"
9
- #import "cocoaapplication.h"
10
-
11
-
12
- namespace Reflex
13
- {
14
-
15
-
16
- static Application* instance = NULL;
17
-
18
-
19
- Application*
20
- app ()
21
- {
22
- return instance;
23
- }
24
-
25
-
26
- Application::Application ()
27
- {
28
- if (instance) reflex_error("multiple application instance.");
29
- instance = this;
30
-
31
- if (NSApp) [NSApp bind: this];
32
- }
33
-
34
- Application::~Application ()
35
- {
36
- instance = NULL;
37
- }
38
-
39
- bool
40
- Application::run ()
41
- {
42
- if (!*this) return false;
43
-
44
- [self->cocoa run];
45
- return true;
46
- }
47
-
48
- bool
49
- Application::quit ()
50
- {
51
- if (!*this) return false;
52
-
53
- [self->cocoa terminate: nil];
54
- return true;
55
- }
56
-
57
- bool
58
- Application::preference ()
59
- {
60
- return *this;
61
- }
62
-
63
- bool
64
- Application::about ()
65
- {
66
- if (!*this) return false;
67
-
68
- [self->cocoa orderFrontStandardAboutPanel: nil];
69
- return true;
70
- }
71
-
72
- bool
73
- Application::set_name (const char* name)
74
- {
75
- if (!*this || !name) return false;
76
-
77
- self->name = name;
78
- return true;
79
- }
80
-
81
- const char*
82
- Application::name () const
83
- {
84
- if (!*this) return NULL;
85
-
86
- return self->name.c_str();
87
- }
88
-
89
- Application::operator bool () const
90
- {
91
- return self && *self;
92
- }
93
-
94
- bool
95
- Application::operator ! () const
96
- {
97
- return !operator bool();
98
- }
99
-
100
-
101
- }// Reflex
@@ -1,21 +0,0 @@
1
- // -*- objc -*-
2
- #import <AppKit/NSApplication.h>
3
- #include "reflex/application.h"
4
-
5
-
6
- @interface CocoaApplication : NSApplication <NSApplicationDelegate>
7
-
8
- {
9
- @private
10
- Reflex::Application::Ref* pref;
11
- }
12
-
13
- - (BOOL) bind: (Reflex::Application*) instance;
14
-
15
- - (void) unbind;
16
-
17
- - (void) about;
18
-
19
- - (void) quit;
20
-
21
- @end// CocoaApplication
@@ -1,46 +0,0 @@
1
- // -*- objc -*-
2
- #import <AppKit/NSWindow.h>
3
- #include "reflex/window.h"
4
-
5
-
6
- @class OpenGLView;
7
-
8
-
9
- @interface CocoaWindow : NSWindow <NSWindowDelegate>
10
-
11
- {
12
- @private
13
- Reflex::Window::Ref* pref;
14
- OpenGLView* view;
15
- NSTimer* timer;
16
- }
17
-
18
- - (BOOL) bind: (Reflex::Window*) instance;
19
-
20
- - (void) unbind;
21
-
22
- - (void) setupContentView;
23
-
24
- - (void) startTimer: (int) fps;
25
-
26
- - (void) stopTimer;
27
-
28
- - (void) update: (NSTimer*) t;
29
-
30
- - (void) draw;
31
-
32
- - (void) keyDown: (NSEvent*) event;
33
-
34
- - (void) keyUp: (NSEvent*) event;
35
-
36
- - (void) mouseDown: (NSEvent*) event;
37
-
38
- - (void) mouseUp: (NSEvent*) event;
39
-
40
- - (void) mouseMoved: (NSEvent*) event;
41
-
42
- - (void) mouseDragged: (NSEvent*) event;
43
-
44
- + (NSRect) frameRectForContentRect: (NSRect) contentRect;
45
-
46
- @end// CocoaWindow
@@ -1,230 +0,0 @@
1
- // -*- objc -*-
2
- #import "cocoawindow.h"
3
-
4
-
5
- #include <assert.h>
6
- #import <Cocoa/Cocoa.h>
7
- #include <rays/bounds.h>
8
- #include <reflex/window.h>
9
- #include "defs.h"
10
- #include "windowdata.h"
11
- #import "openglview.h"
12
-
13
-
14
- static const NSUInteger WINDOW_STYLE_MASK =
15
- NSTitledWindowMask |
16
- NSClosableWindowMask |
17
- NSMiniaturizableWindowMask |
18
- NSResizableWindowMask |
19
- 0;//NSTexturedBackgroundWindowMask
20
-
21
-
22
- @implementation CocoaWindow
23
-
24
- - (id) init
25
- {
26
- self = [super
27
- initWithContentRect: NSMakeRect(0, 0, 0, 0)
28
- styleMask: WINDOW_STYLE_MASK
29
- backing: NSBackingStoreBuffered
30
- defer: NO];
31
- if (!self) return nil;
32
-
33
- pref = new Reflex::Window::Ref;
34
- view = nil;
35
- timer = nil;
36
-
37
- [self setDelegate: self];
38
- //[self setReleasedWhenClosed: NO];
39
-
40
- [self setupContentView];
41
- [self startTimer: 60];
42
-
43
- return self;
44
- }
45
-
46
- - (void) dealloc
47
- {
48
- [self stopTimer];
49
-
50
- if (view) [view release];
51
-
52
- [self unbind];
53
- delete pref;
54
-
55
- [super dealloc];
56
- }
57
-
58
- - (BOOL) bind: (Reflex::Window*) instance
59
- {
60
- if (instance && instance->self->cocoa)
61
- return NO;
62
-
63
- [self unbind];
64
-
65
- assert(pref);
66
- Reflex::Window::Ref& ref = *pref;
67
-
68
- ref = instance;
69
- if (ref) ref->self->cocoa = [self retain];
70
- return YES;
71
- }
72
-
73
- - (void) unbind
74
- {
75
- assert(pref);
76
- Reflex::Window::Ref& ref = *pref;
77
- if (!ref) return;
78
-
79
- if (ref->self->cocoa) [ref->self->cocoa release];
80
- ref->self->cocoa = nil;
81
- ref.reset();
82
- }
83
-
84
- - (void) setupContentView
85
- {
86
- NSRect rect = [self contentRectForFrameRect: [self frame]];
87
- rect.origin.x = rect.origin.y = 0;
88
- view = [[OpenGLView alloc] initWithFrame: rect];
89
- [self setContentView: view];
90
- }
91
-
92
- - (void) startTimer: (int) fps
93
- {
94
- [self stopTimer];
95
-
96
- if (fps <= 0) return;
97
-
98
- timer = [[NSTimer
99
- timerWithTimeInterval: 1.f / (float) fps
100
- target: self
101
- selector: @selector(update:)
102
- userInfo: nil
103
- repeats: YES] retain];
104
- if (!timer) return;
105
-
106
- [[NSRunLoop currentRunLoop]
107
- addTimer: timer forMode: NSDefaultRunLoopMode];
108
- [[NSRunLoop currentRunLoop]
109
- addTimer: timer forMode: NSEventTrackingRunLoopMode];
110
- }
111
-
112
- - (void) stopTimer
113
- {
114
- if (!timer) return;
115
-
116
- [timer invalidate];
117
- timer = nil;
118
- }
119
-
120
- - (void) update: (NSTimer*) t
121
- {
122
- assert(pref);
123
- if (!*pref) return;
124
-
125
- (*pref)->update(1);
126
-
127
- if ((*pref)->self->redraw)
128
- {
129
- [self display];
130
- (*pref)->self->redraw = false;
131
- }
132
- }
133
-
134
- - (void) draw
135
- {
136
- assert(pref);
137
- if (!*pref) return;
138
-
139
- (*pref)->draw();
140
- }
141
-
142
- - (BOOL) windowShouldClose: (id) sender
143
- {
144
- assert(pref);
145
- if (!*pref) return YES;
146
-
147
- (*pref)->close();
148
- return NO;
149
- }
150
-
151
- - (void) windowWillClose: (NSNotification*) notification
152
- {
153
- [self stopTimer];
154
- [self unbind];
155
- }
156
-
157
- - (void) windowDidMove: (NSNotification*) notification
158
- {
159
- assert(pref);
160
- if (!*pref) return;
161
-
162
- const Reflex::Bounds& b = (*pref)->bounds();
163
- (*pref)->moved(b.x, b.y);
164
- }
165
-
166
- - (void) windowDidResize: (NSNotification*) notification
167
- {
168
- assert(pref);
169
- if (!*pref) return;
170
-
171
- const Reflex::Bounds& b = (*pref)->bounds();
172
- (*pref)->resized(b.width, b.height);
173
- }
174
-
175
- - (void) keyDown: (NSEvent*) event
176
- {
177
- assert(pref);
178
- if (!*pref) return;
179
-
180
- (*pref)->key_down(Reflex::CocoaKey(event));
181
- }
182
-
183
- - (void) keyUp: (NSEvent*) event
184
- {
185
- assert(pref);
186
- if (!*pref) return;
187
-
188
- (*pref)->key_up(Reflex::CocoaKey(event));
189
- }
190
-
191
- - (void) mouseDown: (NSEvent*) event
192
- {
193
- assert(pref);
194
- if (!*pref) return;
195
-
196
- (*pref)->points_down(Reflex::CocoaPoints(event, view));
197
- }
198
-
199
- - (void) mouseUp: (NSEvent*) event
200
- {
201
- assert(pref);
202
- if (!*pref) return;
203
-
204
- (*pref)->points_up(Reflex::CocoaPoints(event, view));
205
- }
206
-
207
- - (void) mouseMoved: (NSEvent*) event
208
- {
209
- assert(pref);
210
- if (!*pref) return;
211
-
212
- (*pref)->points_moved(Reflex::CocoaPoints(event, view));
213
- }
214
-
215
- - (void) mouseDragged: (NSEvent*) event
216
- {
217
- assert(pref);
218
- if (!*pref) return;
219
-
220
- (*pref)->points_moved(Reflex::CocoaPoints(event, view));
221
- }
222
-
223
- + (NSRect) frameRectForContentRect: (NSRect) contentRect
224
- {
225
- return [NSWindow
226
- frameRectForContentRect: contentRect
227
- styleMask: WINDOW_STYLE_MASK];
228
- }
229
-
230
- @end// CocoaWindow
data/src/cocoa/defs.h DELETED
@@ -1,34 +0,0 @@
1
- // -*- c++ -*-
2
- #pragma once
3
- #ifndef __REFLEX_COCOA_DEFS_H__
4
- #define __REFLEX_COCOA_DEFS_H__
5
-
6
-
7
- #import <AppKit/NSEvent.h>
8
- #include <reflex/defs.h>
9
-
10
-
11
- namespace Reflex
12
- {
13
-
14
-
15
- struct CocoaKey : public Key
16
- {
17
-
18
- CocoaKey (NSEvent* event);
19
-
20
- };// CocoaKey
21
-
22
-
23
- struct CocoaPoints : public Points
24
- {
25
-
26
- CocoaPoints (NSEvent* event, NSView* view);
27
-
28
- };// CocoaPoints
29
-
30
-
31
- }// Reflex
32
-
33
-
34
- #endif//EOH