reflexion 0.1.15 → 0.1.21

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/capture_event.cpp +4 -5
  3. data/.doc/ext/reflex/contact_event.cpp +4 -7
  4. data/.doc/ext/reflex/draw_event.cpp +3 -4
  5. data/.doc/ext/reflex/frame_event.cpp +7 -8
  6. data/.doc/ext/reflex/key_event.cpp +7 -8
  7. data/.doc/ext/reflex/motion_event.cpp +3 -5
  8. data/.doc/ext/reflex/pointer_event.cpp +23 -14
  9. data/.doc/ext/reflex/scroll_event.cpp +8 -9
  10. data/.doc/ext/reflex/update_event.cpp +4 -5
  11. data/.doc/ext/reflex/wheel_event.cpp +5 -6
  12. data/.doc/ext/reflex/window.cpp +17 -0
  13. data/VERSION +1 -1
  14. data/ext/reflex/capture_event.cpp +3 -4
  15. data/ext/reflex/contact_event.cpp +3 -6
  16. data/ext/reflex/draw_event.cpp +2 -3
  17. data/ext/reflex/frame_event.cpp +6 -7
  18. data/ext/reflex/key_event.cpp +6 -7
  19. data/ext/reflex/motion_event.cpp +2 -4
  20. data/ext/reflex/pointer_event.cpp +22 -13
  21. data/ext/reflex/scroll_event.cpp +8 -9
  22. data/ext/reflex/update_event.cpp +3 -4
  23. data/ext/reflex/wheel_event.cpp +4 -5
  24. data/ext/reflex/window.cpp +19 -0
  25. data/include/reflex/event.h +15 -15
  26. data/include/reflex/exception.h +9 -3
  27. data/include/reflex/ruby/event.h +11 -11
  28. data/include/reflex/window.h +4 -0
  29. data/lib/reflex.rb +2 -1
  30. data/lib/reflex/camera.rb +13 -0
  31. data/lib/reflex/pointer_event.rb +4 -0
  32. data/lib/reflex/window.rb +2 -1
  33. data/reflex.gemspec +4 -4
  34. data/samples/camera.rb +45 -0
  35. data/src/event.cpp +7 -7
  36. data/src/ios/view_controller.mm +1 -1
  37. data/src/ios/window.mm +18 -0
  38. data/src/osx/native_window.mm +1 -1
  39. data/src/osx/window.mm +22 -0
  40. data/src/timer.cpp +3 -6
  41. data/src/window.cpp +13 -1
  42. data/src/window.h +6 -0
  43. data/test/test_pointer_event.rb +79 -34
  44. data/test/test_window.rb +17 -0
  45. metadata +15 -13
@@ -28,12 +28,6 @@ namespace Reflex
28
28
  }
29
29
 
30
30
 
31
- MotionEvent::MotionEvent (const Point& gravity)
32
- : gravity(gravity)
33
- {
34
- }
35
-
36
-
37
31
  UpdateEvent::UpdateEvent (double now, float dt)
38
32
  : now(now), dt(dt)
39
33
  {
@@ -170,7 +164,7 @@ namespace Reflex
170
164
  if (positions_)
171
165
  {
172
166
  for (size_t i = 0; i < size; ++i)
173
- positions[i] = *(Rays::Coord3*) &positions_[i];
167
+ positions[i] = *(Coord3*) &positions_[i];
174
168
  }
175
169
  }
176
170
 
@@ -302,4 +296,10 @@ namespace Reflex
302
296
  }
303
297
 
304
298
 
299
+ MotionEvent::MotionEvent (const Point& gravity)
300
+ : gravity(gravity)
301
+ {
302
+ }
303
+
304
+
305
305
  }// Reflex
@@ -371,7 +371,7 @@ ReflexViewController_get_show_fun ()
371
371
  b.move_to(0, 0);
372
372
 
373
373
  if (win->painter())
374
- win->painter()->canvas(b, UIScreen.mainScreen.scale);
374
+ win->painter()->canvas(b, win->painter()->pixel_density());
375
375
 
376
376
  if (win->root())
377
377
  View_set_frame(win->root(), b);
@@ -130,6 +130,24 @@ namespace Reflex
130
130
  rect.size.height);
131
131
  }
132
132
 
133
+ void
134
+ Window_set_resizable (Window* window, bool state)
135
+ {
136
+ not_implemented_error(__FILE__, __LINE__);
137
+ }
138
+
139
+ bool
140
+ Window_is_resizable (const Window& window)
141
+ {
142
+ return false;
143
+ }
144
+
145
+ float
146
+ Window_get_pixel_density (const Window& window)
147
+ {
148
+ return UIScreen.mainScreen.scale;
149
+ }
150
+
133
151
 
134
152
  WindowData::WindowData ()
135
153
  {
@@ -250,7 +250,7 @@ static const NSUInteger WINDOW_STYLE_MASK =
250
250
  b.move_to(0, 0);
251
251
 
252
252
  if (win->painter())
253
- win->painter()->canvas(b, self.backingScaleFactor);
253
+ win->painter()->canvas(b, win->painter()->pixel_density());
254
254
 
255
255
  if (win->root())
256
256
  View_set_frame(win->root(), b);
@@ -112,6 +112,28 @@ namespace Reflex
112
112
  rect.size.height);
113
113
  }
114
114
 
115
+ void
116
+ Window_set_resizable (Window* window, bool state)
117
+ {
118
+ NativeWindow* native = get_native(window);
119
+ if (state)
120
+ native.styleMask |= NSResizableWindowMask;
121
+ else
122
+ native.styleMask &= ~NSResizableWindowMask;
123
+ }
124
+
125
+ bool
126
+ Window_is_resizable (const Window& window)
127
+ {
128
+ return get_native(&window).styleMask & NSResizableWindowMask;
129
+ }
130
+
131
+ float
132
+ Window_get_pixel_density (const Window& window)
133
+ {
134
+ return get_native(&window).backingScaleFactor;
135
+ }
136
+
115
137
 
116
138
  WindowData::WindowData ()
117
139
  {
@@ -162,8 +162,7 @@ namespace Reflex
162
162
  {
163
163
  assert(timer && *timer);
164
164
 
165
- List::iterator end = timers.end();
166
- for (List::iterator it = timers.begin(); it != end; ++it)
165
+ for (auto it = timers.begin(), end = timers.end(); it != end; ++it)
167
166
  {
168
167
  if (timer->self->next_time < (*it)->self->next_time)
169
168
  {
@@ -219,8 +218,7 @@ namespace Reflex
219
218
  if (!timer)
220
219
  argument_error(__FILE__, __LINE__);
221
220
 
222
- List::iterator end = timers.end();
223
- for (List::iterator it = timers.begin(); it != end; ++it)
221
+ for (auto it = timers.begin(), end = timers.end(); it != end; ++it)
224
222
  {
225
223
  if (timer->id() == (*it)->id())
226
224
  timers.erase(it);
@@ -261,8 +259,7 @@ namespace Reflex
261
259
  void
262
260
  Timers::fire (double now)
263
261
  {
264
- List::iterator end = timers.end();
265
- for (List::iterator it = timers.begin(); it != end; ++it)
262
+ for (auto it = timers.begin(), end = timers.end(); it != end; ++it)
266
263
  {
267
264
  Timer* timer = it->get();
268
265
  if (!is_time_to_fire(timer, now))
@@ -133,7 +133,7 @@ namespace Reflex
133
133
  self->root->set_name(VIEW_TAG_ROOT);
134
134
  View_set_window(self->root.get(), this);
135
135
 
136
- self->painter.canvas(0, 0, 1, 1);
136
+ self->painter.canvas(0, 0, 1, 1, Window_get_pixel_density(*this));
137
137
  }
138
138
 
139
139
  Window::~Window ()
@@ -221,6 +221,18 @@ namespace Reflex
221
221
  return Window_get_frame(*this);
222
222
  }
223
223
 
224
+ void
225
+ Window::set_resizable (bool state)
226
+ {
227
+ Window_set_resizable(this, state);
228
+ }
229
+
230
+ bool
231
+ Window::is_resizable () const
232
+ {
233
+ Window_is_resizable(*this);
234
+ }
235
+
224
236
  bool
225
237
  Window::hidden () const
226
238
  {
@@ -78,10 +78,16 @@ namespace Reflex
78
78
 
79
79
  Bounds Window_get_frame (const Window& window);
80
80
 
81
+ void Window_set_resizable (Window* window, bool state);
82
+
83
+ bool Window_is_resizable (const Window& window);
84
+
81
85
  void Window_set_focus (Window* window, View* view);
82
86
 
83
87
  void Window_call_draw_event (Window* window, DrawEvent* event);
84
88
 
89
+ float Window_get_pixel_density (const Window& window);
90
+
85
91
 
86
92
  typedef View* (*Window_CreateRootViewFun) ();
87
93
 
@@ -6,80 +6,125 @@ require_relative 'helper'
6
6
 
7
7
  class TestPointerEvent < Test::Unit::TestCase
8
8
 
9
+ E = Reflex::PointerEvent
9
10
  T = true
10
11
  F = false
11
12
 
12
- def event (*args)
13
- Reflex::PointerEvent.new *args
13
+ TYPE_NONE = E::TYPE_NONE
14
+ DOWN = E::TYPE_DOWN
15
+ UP = E::TYPE_UP
16
+ MOVE = E::TYPE_MOVE
17
+
18
+ POINTER_NONE = E::POINTER_NONE
19
+ LEFT = E::POINTER_MOUSE_LEFT
20
+ RIGHT = E::POINTER_MOUSE_RIGHT
21
+ MIDDLE = E::POINTER_MOUSE_MIDDLE
22
+ TOUCH = E::POINTER_TOUCH
23
+ PEN = E::POINTER_PEN
24
+
25
+ def event (
26
+ type = TYPE_NONE, pointer_type = POINTER_NONE,
27
+ modifiers = 0, count = 0, drag = false,
28
+ positions: [0])
29
+
30
+ Reflex::PointerEvent.new type, pointer_type, modifiers, count, drag, positions
14
31
  end
15
32
 
16
- def type (arg)
17
- event(arg).tap do |o|
18
- def o.test ()
19
- [type, down?, up?, move?]
20
- end
21
- end
33
+ def test_initialize ()
34
+ assert_nothing_raised {event positions: 10.times.to_a}
35
+ assert_raise(ArgumentError) {event positions: 11.times.to_a}
36
+ assert_raise(ArgumentError) {event positions: []}
22
37
  end
23
38
 
24
39
  def test_type ()
25
- o = type Reflex::PointerEvent::TYPE_NONE
40
+ def type (arg)
41
+ event(arg).tap do |o|
42
+ def o.test ()
43
+ [type, down?, up?, move?]
44
+ end
45
+ end
46
+ end
47
+
48
+ o = type TYPE_NONE
26
49
  assert_equal [:none, F, F, F], o.test
27
50
 
28
- o = type Reflex::PointerEvent::TYPE_DOWN
51
+ o = type DOWN
29
52
  assert_equal [:down, T, F, F], o.test
30
53
 
31
- o = type Reflex::PointerEvent::TYPE_UP
54
+ o = type UP
32
55
  assert_equal [:up, F, T, F], o.test
33
56
 
34
- o = type Reflex::PointerEvent::TYPE_MOVE
57
+ o = type MOVE
35
58
  assert_equal [:move, F, F, T], o.test
36
59
  end
37
60
 
38
- def pointer_type (arg)
39
- event(Reflex::PointerEvent::TYPE_NONE, arg).tap do |o|
40
- def o.test ()
41
- [pointer_type, left?, right?, middle?, touch?, pen?]
61
+ def test_pointer_type ()
62
+ def pointer_type (arg)
63
+ event(TYPE_NONE, arg).tap do |o|
64
+ def o.test ()
65
+ [pointer_type, left?, right?, middle?, touch?, pen?]
66
+ end
42
67
  end
43
68
  end
44
- end
45
69
 
46
- def test_pointer_type ()
47
- o = pointer_type Reflex::PointerEvent::POINTER_NONE
70
+ o = pointer_type POINTER_NONE
48
71
  assert_equal [[], F, F, F, F, F], o.test
49
72
 
50
- o = pointer_type Reflex::PointerEvent::POINTER_MOUSE_LEFT
73
+ o = pointer_type LEFT
51
74
  assert_equal [[:mouse_left], T, F, F, F, F], o.test
52
75
 
53
- o = pointer_type Reflex::PointerEvent::POINTER_MOUSE_RIGHT
76
+ o = pointer_type RIGHT
54
77
  assert_equal [[:mouse_right], F, T, F, F, F], o.test
55
78
 
56
- o = pointer_type Reflex::PointerEvent::POINTER_MOUSE_MIDDLE
79
+ o = pointer_type MIDDLE
57
80
  assert_equal [[:mouse_middle], F, F, T, F, F], o.test
58
81
 
59
- o = pointer_type Reflex::PointerEvent::POINTER_TOUCH
82
+ o = pointer_type TOUCH
60
83
  assert_equal [[:touch], F, F, F, T, F], o.test
61
84
 
62
- o = pointer_type Reflex::PointerEvent::POINTER_PEN
85
+ o = pointer_type PEN
63
86
  assert_equal [[:pen], F, F, F, F, T], o.test
64
87
 
65
- o = pointer_type Reflex::PointerEvent::POINTER_MOUSE_LEFT |
66
- Reflex::PointerEvent::POINTER_MOUSE_RIGHT
88
+ o = pointer_type LEFT | RIGHT
67
89
  types = [:mouse_left, :mouse_right]
68
90
  assert_equal [types, T, T, F, F, F], o.test
69
91
 
70
- o = pointer_type Reflex::PointerEvent::POINTER_MOUSE_LEFT |
71
- Reflex::PointerEvent::POINTER_MOUSE_RIGHT |
72
- Reflex::PointerEvent::POINTER_MOUSE_MIDDLE
92
+ o = pointer_type LEFT | RIGHT | MIDDLE
73
93
  types = [:mouse_left, :mouse_right, :mouse_middle]
74
94
  assert_equal [types, T, T, T, F, F], o.test
75
95
 
76
- o = pointer_type Reflex::PointerEvent::POINTER_MOUSE_LEFT |
77
- Reflex::PointerEvent::POINTER_MOUSE_RIGHT |
78
- Reflex::PointerEvent::POINTER_MOUSE_MIDDLE |
79
- Reflex::PointerEvent::POINTER_TOUCH |
80
- Reflex::PointerEvent::POINTER_PEN
96
+ o = pointer_type LEFT | RIGHT | MIDDLE | TOUCH | PEN
81
97
  types = [:mouse_left, :mouse_right, :mouse_middle, :touch, :pen]
82
98
  assert_equal [types, T, T, T, T, T], o.test
83
99
  end
84
100
 
101
+ def test_size ()
102
+ assert_equal 1, event(positions: [0] ).size
103
+ assert_equal 2, event(positions: [0, 1]).size
104
+ end
105
+
106
+ def test_xy ()
107
+ assert_equal 0, event(positions: [[0, 1], [2, 3]]).x
108
+ assert_equal 1, event(positions: [[0, 1], [2, 3]]).y
109
+ end
110
+
111
+ def test_position ()
112
+ assert_equal [0, 1], event(positions: [[0, 1], [2, 3]]).position.to_a
113
+ end
114
+
115
+ def test_positions ()
116
+ assert_equal [[0, 0]], event(positions: [0] ).positions.map(&:to_a)
117
+ assert_equal [[0, 0], [1, 1]], event(positions: [0, 1]).positions.map(&:to_a)
118
+
119
+ assert_equal [[0, 1]], event(positions: [[0, 1]] ).positions.map(&:to_a)
120
+ assert_equal [[0, 1], [2, 3]], event(positions: [[0, 1], [2, 3]]).positions.map(&:to_a)
121
+ end
122
+
123
+ def test_at ()
124
+ assert_equal [0, 1], event(positions: [[0, 1], [2, 3]])[0].to_a
125
+ assert_equal [2, 3], event(positions: [[0, 1], [2, 3]])[1].to_a
126
+ assert_raise(IndexError) {event(positions: [[0, 1], [2, 3]])[-1]}
127
+ assert_raise(IndexError) {event(positions: [[0, 1], [2, 3]])[2]}
128
+ end
129
+
85
130
  end# TestPointerEvent
@@ -68,6 +68,23 @@ class TestWindow < Test::Unit::TestCase
68
68
  w.frame = [bounds(1, 2, 3, 4, 5, 6)]; assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
69
69
  end
70
70
 
71
+ def test_resizable? ()
72
+ w = win
73
+ assert_true w.resizable?
74
+
75
+ w.resizable = false
76
+ assert_false w.resizable?
77
+
78
+ w.resizable = true
79
+ assert_true w.resizable?
80
+
81
+ w.resizable false
82
+ assert_false w.resizable?
83
+
84
+ w.resizable true
85
+ assert_true w.resizable?
86
+ end
87
+
71
88
  def test_title ()
72
89
  w = win
73
90
  assert_equal '', w.title
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reflexion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-16 00:00:00.000000000 Z
11
+ date: 2020-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.1'
19
+ version: 0.1.21
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.1'
26
+ version: 0.1.21
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rucy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.1'
33
+ version: 0.1.21
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.1'
40
+ version: 0.1.21
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: beeps
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.1'
47
+ version: 0.1.21
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.1'
54
+ version: 0.1.21
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rays
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.1'
61
+ version: 0.1.21
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.1'
68
+ version: 0.1.21
69
69
  description: This library helps you to develop interactive graphical user interface.
70
70
  email: xordog@gmail.com
71
71
  executables: []
@@ -200,6 +200,7 @@ files:
200
200
  - lib/reflex/bitmap.rb
201
201
  - lib/reflex/bounds.rb
202
202
  - lib/reflex/button.rb
203
+ - lib/reflex/camera.rb
203
204
  - lib/reflex/capture_event.rb
204
205
  - lib/reflex/color.rb
205
206
  - lib/reflex/color_space.rb
@@ -249,6 +250,7 @@ files:
249
250
  - reflex.gemspec
250
251
  - samples/app.rb
251
252
  - samples/bats.rb
253
+ - samples/camera.rb
252
254
  - samples/checker.rb
253
255
  - samples/fans.rb
254
256
  - samples/fps.rb
@@ -359,7 +361,7 @@ files:
359
361
  homepage: https://github.com/xord/reflex
360
362
  licenses: []
361
363
  metadata: {}
362
- post_install_message:
364
+ post_install_message:
363
365
  rdoc_options: []
364
366
  require_paths:
365
367
  - lib
@@ -375,7 +377,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
375
377
  version: '0'
376
378
  requirements: []
377
379
  rubygems_version: 3.0.3
378
- signing_key:
380
+ signing_key:
379
381
  specification_version: 4
380
382
  summary: A Graphical User Interface Tool Kit.
381
383
  test_files: