reflexion 0.1.33 → 0.1.35
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.doc/ext/reflex/frame_event.cpp +27 -2
- data/.doc/ext/reflex/view.cpp +8 -0
- data/.github/workflows/utils.rb +2 -1
- data/ChangeLog.md +10 -0
- data/VERSION +1 -1
- data/ext/reflex/frame_event.cpp +33 -5
- data/ext/reflex/view.cpp +9 -0
- data/include/reflex/event.h +9 -1
- data/include/reflex/ruby/view.h +9 -0
- data/include/reflex/view.h +6 -4
- data/lib/reflex/frame_event.rb +2 -1
- data/reflex.gemspec +4 -4
- data/src/event.cpp +27 -4
- data/src/osx/native_window.mm +1 -1
- data/src/view.cpp +50 -50
- data/test/test_frame_event.rb +22 -4
- metadata +10 -11
- data/task/box2d.rake +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88e172697e7085255c08f0220a6592200fcbc4d5012229206366df618371de1a
|
4
|
+
data.tar.gz: 0317cc066436f70cc785dc90606d6a4afa4b87a96828eb14ad33376af793a72b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38882598ccd05a6706d786cde3f0cb9ebba761acc43d617750ee2ea7cfc934c9a8dab263484f376e5ff80d11c50d945712030b81755f8073478282cfbb72726e
|
7
|
+
data.tar.gz: 116b7bb65329e97e56b85c36793d082d5cab42534a0eb3577c48af84db49f562c0a2b707b46c9a1223a20adea256a986e530f60d15062328ec17eef0fcaca437
|
@@ -20,7 +20,7 @@ VALUE alloc(VALUE klass)
|
|
20
20
|
}
|
21
21
|
|
22
22
|
static
|
23
|
-
VALUE initialize(VALUE self, VALUE frame, VALUE dx, VALUE dy, VALUE dwidth, VALUE dheight, VALUE angle, VALUE dangle)
|
23
|
+
VALUE initialize(VALUE self, VALUE frame, VALUE dx, VALUE dy, VALUE dwidth, VALUE dheight, VALUE zoom, VALUE dzoom, VALUE angle, VALUE dangle)
|
24
24
|
{
|
25
25
|
CHECK;
|
26
26
|
|
@@ -28,6 +28,7 @@ VALUE initialize(VALUE self, VALUE frame, VALUE dx, VALUE dy, VALUE dwidth, VALU
|
|
28
28
|
to<Rays::Bounds>(frame),
|
29
29
|
to<coord>(dx), to<coord>(dy),
|
30
30
|
to<coord>(dwidth), to<coord>(dheight),
|
31
|
+
to<float>(zoom), to<float>(dzoom),
|
31
32
|
to<float>(angle), to<float>(dangle));
|
32
33
|
|
33
34
|
return rb_call_super(0, NULL);
|
@@ -90,6 +91,20 @@ VALUE dsize(VALUE self)
|
|
90
91
|
return value(Rays::Point(THIS->dwidth(), THIS->dheight()));
|
91
92
|
}
|
92
93
|
|
94
|
+
static
|
95
|
+
VALUE zoom(VALUE self)
|
96
|
+
{
|
97
|
+
CHECK;
|
98
|
+
return value(THIS->zoom());
|
99
|
+
}
|
100
|
+
|
101
|
+
static
|
102
|
+
VALUE dzoom(VALUE self)
|
103
|
+
{
|
104
|
+
CHECK;
|
105
|
+
return value(THIS->dzoom());
|
106
|
+
}
|
107
|
+
|
93
108
|
static
|
94
109
|
VALUE angle(VALUE self)
|
95
110
|
{
|
@@ -118,6 +133,13 @@ VALUE is_resize(VALUE self)
|
|
118
133
|
return value(THIS->is_resize());
|
119
134
|
}
|
120
135
|
|
136
|
+
static
|
137
|
+
VALUE is_zoom(VALUE self)
|
138
|
+
{
|
139
|
+
CHECK;
|
140
|
+
return value(THIS->is_zoom());
|
141
|
+
}
|
142
|
+
|
121
143
|
static
|
122
144
|
VALUE is_rotate(VALUE self)
|
123
145
|
{
|
@@ -135,7 +157,7 @@ Init_reflex_frame_event ()
|
|
135
157
|
|
136
158
|
cFrameEvent = mReflex.define_class("FrameEvent", Reflex::event_class());
|
137
159
|
rb_define_alloc_func(cFrameEvent, alloc);
|
138
|
-
rb_define_private_method(cFrameEvent, "initialize", RUBY_METHOD_FUNC(initialize),
|
160
|
+
rb_define_private_method(cFrameEvent, "initialize", RUBY_METHOD_FUNC(initialize), 9);
|
139
161
|
rb_define_private_method(cFrameEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
|
140
162
|
rb_define_method(cFrameEvent, "frame", RUBY_METHOD_FUNC(frame), 0);
|
141
163
|
rb_define_method(cFrameEvent, "dx", RUBY_METHOD_FUNC(dx), 0);
|
@@ -144,10 +166,13 @@ Init_reflex_frame_event ()
|
|
144
166
|
rb_define_method(cFrameEvent, "dheight", RUBY_METHOD_FUNC(dheight), 0);
|
145
167
|
rb_define_method(cFrameEvent, "dposition", RUBY_METHOD_FUNC(dposition), 0);
|
146
168
|
rb_define_method(cFrameEvent, "dsize", RUBY_METHOD_FUNC(dsize), 0);
|
169
|
+
rb_define_method(cFrameEvent, "zoom", RUBY_METHOD_FUNC(zoom), 0);
|
170
|
+
rb_define_method(cFrameEvent, "dzoom", RUBY_METHOD_FUNC(dzoom), 0);
|
147
171
|
rb_define_method(cFrameEvent, "angle", RUBY_METHOD_FUNC(angle), 0);
|
148
172
|
rb_define_method(cFrameEvent, "dangle", RUBY_METHOD_FUNC(dangle), 0);
|
149
173
|
cFrameEvent.define_method("move?", is_move);
|
150
174
|
cFrameEvent.define_method("resize?", is_resize);
|
175
|
+
cFrameEvent.define_method("zoom?", is_zoom);
|
151
176
|
cFrameEvent.define_method("rotate?", is_rotate);
|
152
177
|
}
|
153
178
|
|
data/.doc/ext/reflex/view.cpp
CHANGED
@@ -871,6 +871,13 @@ VALUE on_resize(VALUE self, VALUE event)
|
|
871
871
|
CALL(on_resize(to<Reflex::FrameEvent*>(event)));
|
872
872
|
}
|
873
873
|
|
874
|
+
static
|
875
|
+
VALUE on_zoom(VALUE self, VALUE event)
|
876
|
+
{
|
877
|
+
CHECK;
|
878
|
+
CALL(on_zoom(to<Reflex::FrameEvent*>(event)));
|
879
|
+
}
|
880
|
+
|
874
881
|
static
|
875
882
|
VALUE on_rotate(VALUE self, VALUE event)
|
876
883
|
{
|
@@ -1112,6 +1119,7 @@ Init_reflex_view ()
|
|
1112
1119
|
rb_define_method(cView, "on_draw", RUBY_METHOD_FUNC(on_draw), 1);
|
1113
1120
|
rb_define_method(cView, "on_move", RUBY_METHOD_FUNC(on_move), 1);
|
1114
1121
|
rb_define_method(cView, "on_resize", RUBY_METHOD_FUNC(on_resize), 1);
|
1122
|
+
rb_define_method(cView, "on_zoom", RUBY_METHOD_FUNC(on_zoom), 1);
|
1115
1123
|
rb_define_method(cView, "on_rotate", RUBY_METHOD_FUNC(on_rotate), 1);
|
1116
1124
|
rb_define_method(cView, "on_scroll", RUBY_METHOD_FUNC(on_scroll), 1);
|
1117
1125
|
rb_define_method(cView, "on_focus", RUBY_METHOD_FUNC(on_focus), 1);
|
data/.github/workflows/utils.rb
CHANGED
@@ -20,8 +20,9 @@ def setup_dependencies(build: true, only: nil)
|
|
20
20
|
|
21
21
|
exts.each do |ext|
|
22
22
|
gem = RENAMES[ext.to_sym].then {|s| s || ext}
|
23
|
-
clone = "git clone --depth 1 https://github.com/xord/#{ext}.git ../#{ext}"
|
24
23
|
ver = gemspec[/add_runtime_dependency.*['"]#{gem}['"].*['"]\s*~>\s*([\d\.]+)\s*['"]/, 1]
|
24
|
+
opts = '-c advice.detachedHead=false --depth 1'
|
25
|
+
clone = "git clone #{opts} https://github.com/xord/#{ext}.git ../#{ext}"
|
25
26
|
|
26
27
|
# 'rake subtree:push' pushes all subrepos, so cloning by new tag
|
27
28
|
# often fails before tagging each new tag
|
data/ChangeLog.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.35
|
data/ext/reflex/frame_event.cpp
CHANGED
@@ -21,7 +21,7 @@ RUCY_DEF_ALLOC(alloc, klass)
|
|
21
21
|
RUCY_END
|
22
22
|
|
23
23
|
static
|
24
|
-
|
24
|
+
RUCY_DEF9(initialize, frame, dx, dy, dwidth, dheight, zoom, dzoom, angle, dangle)
|
25
25
|
{
|
26
26
|
CHECK;
|
27
27
|
|
@@ -29,6 +29,7 @@ RUCY_DEF7(initialize, frame, dx, dy, dwidth, dheight, angle, dangle)
|
|
29
29
|
to<Rays::Bounds>(frame),
|
30
30
|
to<coord>(dx), to<coord>(dy),
|
31
31
|
to<coord>(dwidth), to<coord>(dheight),
|
32
|
+
to<float>(zoom), to<float>(dzoom),
|
32
33
|
to<float>(angle), to<float>(dangle));
|
33
34
|
|
34
35
|
return rb_call_super(0, NULL);
|
@@ -100,6 +101,22 @@ RUCY_DEF0(dsize)
|
|
100
101
|
}
|
101
102
|
RUCY_END
|
102
103
|
|
104
|
+
static
|
105
|
+
RUCY_DEF0(zoom)
|
106
|
+
{
|
107
|
+
CHECK;
|
108
|
+
return value(THIS->zoom());
|
109
|
+
}
|
110
|
+
RUCY_END
|
111
|
+
|
112
|
+
static
|
113
|
+
RUCY_DEF0(dzoom)
|
114
|
+
{
|
115
|
+
CHECK;
|
116
|
+
return value(THIS->dzoom());
|
117
|
+
}
|
118
|
+
RUCY_END
|
119
|
+
|
103
120
|
static
|
104
121
|
RUCY_DEF0(angle)
|
105
122
|
{
|
@@ -132,6 +149,14 @@ RUCY_DEF0(is_resize)
|
|
132
149
|
}
|
133
150
|
RUCY_END
|
134
151
|
|
152
|
+
static
|
153
|
+
RUCY_DEF0(is_zoom)
|
154
|
+
{
|
155
|
+
CHECK;
|
156
|
+
return value(THIS->is_zoom());
|
157
|
+
}
|
158
|
+
RUCY_END
|
159
|
+
|
135
160
|
static
|
136
161
|
RUCY_DEF0(is_rotate)
|
137
162
|
{
|
@@ -153,16 +178,19 @@ Init_reflex_frame_event ()
|
|
153
178
|
cFrameEvent.define_private_method("initialize", initialize);
|
154
179
|
cFrameEvent.define_private_method("initialize_copy", initialize_copy);
|
155
180
|
cFrameEvent.define_method("frame", frame);
|
156
|
-
cFrameEvent.define_method("dx",
|
157
|
-
cFrameEvent.define_method("dy",
|
158
|
-
cFrameEvent.define_method("dwidth",
|
159
|
-
cFrameEvent.define_method("dheight",
|
181
|
+
cFrameEvent.define_method("dx", dx);
|
182
|
+
cFrameEvent.define_method("dy", dy);
|
183
|
+
cFrameEvent.define_method("dwidth", dwidth);
|
184
|
+
cFrameEvent.define_method("dheight", dheight);
|
160
185
|
cFrameEvent.define_method("dposition", dposition);
|
161
186
|
cFrameEvent.define_method("dsize", dsize);
|
187
|
+
cFrameEvent.define_method( "zoom", zoom);
|
188
|
+
cFrameEvent.define_method("dzoom", dzoom);
|
162
189
|
cFrameEvent.define_method( "angle", angle);
|
163
190
|
cFrameEvent.define_method("dangle", dangle);
|
164
191
|
cFrameEvent.define_method("move?", is_move);
|
165
192
|
cFrameEvent.define_method("resize?", is_resize);
|
193
|
+
cFrameEvent.define_method("zoom?", is_zoom);
|
166
194
|
cFrameEvent.define_method("rotate?", is_rotate);
|
167
195
|
}
|
168
196
|
|
data/ext/reflex/view.cpp
CHANGED
@@ -968,6 +968,14 @@ RUCY_DEF1(on_resize, event)
|
|
968
968
|
}
|
969
969
|
RUCY_END
|
970
970
|
|
971
|
+
static
|
972
|
+
RUCY_DEF1(on_zoom, event)
|
973
|
+
{
|
974
|
+
CHECK;
|
975
|
+
CALL(on_zoom(to<Reflex::FrameEvent*>(event)));
|
976
|
+
}
|
977
|
+
RUCY_END
|
978
|
+
|
971
979
|
static
|
972
980
|
RUCY_DEF1(on_rotate, event)
|
973
981
|
{
|
@@ -1227,6 +1235,7 @@ Init_reflex_view ()
|
|
1227
1235
|
cView.define_method("on_draw", on_draw);
|
1228
1236
|
cView.define_method("on_move", on_move);
|
1229
1237
|
cView.define_method("on_resize", on_resize);
|
1238
|
+
cView.define_method("on_zoom", on_zoom);
|
1230
1239
|
cView.define_method("on_rotate", on_rotate);
|
1231
1240
|
cView.define_method("on_scroll", on_scroll);
|
1232
1241
|
cView.define_method("on_focus", on_focus);
|
data/include/reflex/event.h
CHANGED
@@ -116,10 +116,12 @@ namespace Reflex
|
|
116
116
|
const Bounds& frame,
|
117
117
|
coord dx, coord dy,
|
118
118
|
coord dwidth, coord dheight,
|
119
|
-
float
|
119
|
+
float zoom = 1, float dzoom = 0,
|
120
|
+
float angle = 0, float dangle = 0);
|
120
121
|
|
121
122
|
FrameEvent (
|
122
123
|
const Bounds& frame, const Bounds& prev_frame,
|
124
|
+
float zoom, float prev_zoom,
|
123
125
|
float angle, float prev_angle);
|
124
126
|
|
125
127
|
FrameEvent dup () const;
|
@@ -134,6 +136,10 @@ namespace Reflex
|
|
134
136
|
|
135
137
|
coord dheight () const;
|
136
138
|
|
139
|
+
float zoom () const;
|
140
|
+
|
141
|
+
float dzoom () const;
|
142
|
+
|
137
143
|
float angle () const;
|
138
144
|
|
139
145
|
float dangle () const;
|
@@ -142,6 +148,8 @@ namespace Reflex
|
|
142
148
|
|
143
149
|
bool is_resize () const;
|
144
150
|
|
151
|
+
bool is_zoom () const;
|
152
|
+
|
145
153
|
bool is_rotate () const;
|
146
154
|
|
147
155
|
struct Data;
|
data/include/reflex/ruby/view.h
CHANGED
@@ -113,6 +113,15 @@ namespace Reflex
|
|
113
113
|
Super::on_resize(e);
|
114
114
|
}
|
115
115
|
|
116
|
+
virtual void on_zoom (FrameEvent* e)
|
117
|
+
{
|
118
|
+
RUCY_SYM(on_zoom);
|
119
|
+
if (this->is_overridable())
|
120
|
+
this->value.call(on_zoom, Rucy::value(e));
|
121
|
+
else
|
122
|
+
Super::on_zoom(e);
|
123
|
+
}
|
124
|
+
|
116
125
|
virtual void on_rotate (FrameEvent* e)
|
117
126
|
{
|
118
127
|
RUCY_SYM(on_rotate);
|
data/include/reflex/view.h
CHANGED
@@ -209,6 +209,10 @@ namespace Reflex
|
|
209
209
|
|
210
210
|
virtual void fit_to_content ();
|
211
211
|
|
212
|
+
virtual void set_zoom (float zoom);
|
213
|
+
|
214
|
+
virtual float zoom () const;
|
215
|
+
|
212
216
|
virtual void set_angle (float degree);
|
213
217
|
|
214
218
|
virtual float angle () const;
|
@@ -223,10 +227,6 @@ namespace Reflex
|
|
223
227
|
|
224
228
|
virtual const Point& scroll () const;
|
225
229
|
|
226
|
-
virtual void set_zoom (float zoom);
|
227
|
-
|
228
|
-
virtual float zoom () const;
|
229
|
-
|
230
230
|
virtual void set_capture (uint types);
|
231
231
|
|
232
232
|
virtual uint capture () const;
|
@@ -344,6 +344,8 @@ namespace Reflex
|
|
344
344
|
|
345
345
|
virtual void on_resize (FrameEvent* e);
|
346
346
|
|
347
|
+
virtual void on_zoom (FrameEvent* e);
|
348
|
+
|
347
349
|
virtual void on_rotate (FrameEvent* e);
|
348
350
|
|
349
351
|
virtual void on_scroll (ScrollEvent* e);
|
data/lib/reflex/frame_event.rb
CHANGED
@@ -33,7 +33,8 @@ module Reflex
|
|
33
33
|
alias h height
|
34
34
|
|
35
35
|
def inspect()
|
36
|
-
"#<Reflex::FrameEvent x
|
36
|
+
"#<Reflex::FrameEvent x:%g(%g) y:%g(%g) w:%g(%g) h:%g(%g) zoom:%g(%g) angle:%g(%g)>" %
|
37
|
+
[x, dx, y, dy, w, dw, h, dh, zoom, dzoom, angle, dangle]
|
37
38
|
end
|
38
39
|
|
39
40
|
end# FrameEvent
|
data/reflex.gemspec
CHANGED
@@ -28,10 +28,10 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.platform = Gem::Platform::RUBY
|
29
29
|
s.required_ruby_version = '>= 2.7.0'
|
30
30
|
|
31
|
-
s.add_runtime_dependency 'xot', '~> 0.1.
|
32
|
-
s.add_runtime_dependency 'rucy', '~> 0.1.
|
33
|
-
s.add_runtime_dependency 'beeps', '~> 0.1.
|
34
|
-
s.add_runtime_dependency 'rays', '~> 0.1.
|
31
|
+
s.add_runtime_dependency 'xot', '~> 0.1.34'
|
32
|
+
s.add_runtime_dependency 'rucy', '~> 0.1.34'
|
33
|
+
s.add_runtime_dependency 'beeps', '~> 0.1.35'
|
34
|
+
s.add_runtime_dependency 'rays', '~> 0.1.34'
|
35
35
|
|
36
36
|
s.add_development_dependency 'rake'
|
37
37
|
s.add_development_dependency 'test-unit'
|
data/src/event.cpp
CHANGED
@@ -221,13 +221,17 @@ namespace Reflex
|
|
221
221
|
|
222
222
|
coord dx, dy, dw, dh;
|
223
223
|
|
224
|
+
float zoom, dzoom;
|
225
|
+
|
224
226
|
float angle, dangle;
|
225
227
|
|
226
228
|
Data (
|
227
229
|
const Bounds& frame = 0,
|
228
230
|
coord dx = 0, coord dy = 0, coord dw = 0, coord dh = 0,
|
231
|
+
float zoom = 0, float dzoom = 0,
|
229
232
|
float angle = 0, float dangle = 0)
|
230
|
-
: frame(frame), dx(dx), dy(dy), dw(dw), dh(dh),
|
233
|
+
: frame(frame), dx(dx), dy(dy), dw(dw), dh(dh),
|
234
|
+
zoom(zoom), dzoom(dzoom), angle(angle), dangle(dangle)
|
231
235
|
{
|
232
236
|
}
|
233
237
|
|
@@ -240,18 +244,19 @@ namespace Reflex
|
|
240
244
|
|
241
245
|
FrameEvent::FrameEvent (
|
242
246
|
const Bounds& frame, coord dx, coord dy, coord dwidth, coord dheight,
|
243
|
-
float angle, float dangle)
|
244
|
-
: self(new Data(frame, dx, dy, dwidth, dheight, angle, dangle))
|
247
|
+
float zoom, float dzoom, float angle, float dangle)
|
248
|
+
: self(new Data(frame, dx, dy, dwidth, dheight, zoom, dzoom, angle, dangle))
|
245
249
|
{
|
246
250
|
}
|
247
251
|
|
248
252
|
FrameEvent::FrameEvent (
|
249
253
|
const Bounds& frame, const Bounds& prev_frame,
|
250
|
-
float angle, float prev_angle)
|
254
|
+
float zoom, float prev_zoom, float angle, float prev_angle)
|
251
255
|
: self(new Data(
|
252
256
|
frame,
|
253
257
|
frame.x - prev_frame.x, frame.y - prev_frame.y,
|
254
258
|
frame.w - prev_frame.w, frame.h - prev_frame.h,
|
259
|
+
zoom, zoom - prev_zoom,
|
255
260
|
angle, angle - prev_angle))
|
256
261
|
{
|
257
262
|
}
|
@@ -297,6 +302,18 @@ namespace Reflex
|
|
297
302
|
return self->dh;
|
298
303
|
}
|
299
304
|
|
305
|
+
float
|
306
|
+
FrameEvent::zoom () const
|
307
|
+
{
|
308
|
+
return self->zoom;
|
309
|
+
}
|
310
|
+
|
311
|
+
float
|
312
|
+
FrameEvent::dzoom () const
|
313
|
+
{
|
314
|
+
return self->dzoom;
|
315
|
+
}
|
316
|
+
|
300
317
|
float
|
301
318
|
FrameEvent::angle () const
|
302
319
|
{
|
@@ -321,6 +338,12 @@ namespace Reflex
|
|
321
338
|
return self->dw != 0 || self->dh != 0;
|
322
339
|
}
|
323
340
|
|
341
|
+
bool
|
342
|
+
FrameEvent::is_zoom () const
|
343
|
+
{
|
344
|
+
return self->dzoom != 0;
|
345
|
+
}
|
346
|
+
|
324
347
|
bool
|
325
348
|
FrameEvent::is_rotate () const
|
326
349
|
{
|
data/src/osx/native_window.mm
CHANGED
@@ -288,7 +288,7 @@ update_pixel_density (Reflex::Window* window)
|
|
288
288
|
|
289
289
|
if (dpos != 0 || dsize != 0)
|
290
290
|
{
|
291
|
-
Reflex::FrameEvent e(b, dpos.x, dpos.y, dsize.x, dsize.y
|
291
|
+
Reflex::FrameEvent e(b, dpos.x, dpos.y, dsize.x, dsize.y);
|
292
292
|
if (dpos != 0) win->on_move(&e);
|
293
293
|
if (dsize != 0)
|
294
294
|
{
|
data/src/view.cpp
CHANGED
@@ -52,19 +52,21 @@ namespace Reflex
|
|
52
52
|
|
53
53
|
};// Flag
|
54
54
|
|
55
|
-
Window* window;
|
55
|
+
Window* window = NULL;
|
56
56
|
|
57
|
-
View* parent;
|
57
|
+
View* parent = NULL;
|
58
58
|
|
59
59
|
Bounds frame;
|
60
60
|
|
61
|
-
float zoom
|
61
|
+
float zoom = 1;
|
62
62
|
|
63
|
-
|
63
|
+
float angle = 0;
|
64
64
|
|
65
|
-
|
65
|
+
ushort capture = CAPTURE_NONE;
|
66
66
|
|
67
|
-
|
67
|
+
short hide_count = 0;
|
68
|
+
|
69
|
+
uint flags = FLAG_CLIP | FLAG_RESIZE_TO_FIT | REDRAW | UPDATE_LAYOUT | UPDATE_STYLE;
|
68
70
|
|
69
71
|
std::unique_ptr<Point> pscroll;
|
70
72
|
|
@@ -92,17 +94,6 @@ namespace Reflex
|
|
92
94
|
|
93
95
|
std::unique_ptr<ChildList> pchildren;
|
94
96
|
|
95
|
-
Data ()
|
96
|
-
: window(NULL), parent(NULL),
|
97
|
-
zoom(1), angle(0), capture(CAPTURE_NONE), hide_count(0),
|
98
|
-
flags(FLAG_CLIP | FLAG_RESIZE_TO_FIT | REDRAW | UPDATE_LAYOUT | UPDATE_STYLE)
|
99
|
-
{
|
100
|
-
}
|
101
|
-
|
102
|
-
~Data ()
|
103
|
-
{
|
104
|
-
}
|
105
|
-
|
106
97
|
Point& scroll ()
|
107
98
|
{
|
108
99
|
if (!pscroll) pscroll.reset(new Point);
|
@@ -654,37 +645,41 @@ namespace Reflex
|
|
654
645
|
|
655
646
|
static void
|
656
647
|
update_view_frame (
|
657
|
-
View* view, const Bounds& frame, float
|
648
|
+
View* view, const Bounds& frame, float zoom, float angle,
|
649
|
+
bool update_body = true)
|
658
650
|
{
|
659
651
|
assert(view);
|
660
652
|
View::Data* self = view->self.get();
|
661
653
|
|
662
|
-
if (frame == self->frame && angle == self->angle)
|
654
|
+
if (frame == self->frame && zoom == self->zoom && angle == self->angle)
|
663
655
|
return;
|
664
656
|
|
665
|
-
FrameEvent event(frame, self->frame, angle, self->angle);
|
657
|
+
FrameEvent event(frame, self->frame, zoom, self->zoom, angle, self->angle);
|
666
658
|
self->frame = frame;
|
659
|
+
self->zoom = zoom;
|
667
660
|
self->angle = angle;
|
668
661
|
|
669
|
-
bool
|
670
|
-
bool
|
671
|
-
bool
|
662
|
+
bool moved = event.is_move();
|
663
|
+
bool resized = event.is_resize();
|
664
|
+
bool zoomed = event.is_zoom();
|
665
|
+
bool rotated = event.is_rotate();
|
672
666
|
|
673
|
-
if (
|
674
|
-
if (
|
675
|
-
if (
|
667
|
+
if (moved) view->on_move(&event);
|
668
|
+
if (resized) view->on_resize(&event);
|
669
|
+
if (zoomed) view->on_zoom(&event);
|
670
|
+
if (rotated) view->on_rotate(&event);
|
676
671
|
|
677
|
-
if (
|
672
|
+
if (resized)
|
678
673
|
{
|
679
674
|
view->self->resize_shapes(&event);
|
680
675
|
apply_style_to_children_have_variable_lengths(view);
|
681
676
|
update_view_layout(view, true);
|
682
677
|
}
|
683
678
|
|
684
|
-
if (update_body && (
|
679
|
+
if (update_body && (moved || rotated) && self->pbody)
|
685
680
|
self->update_body_frame();
|
686
681
|
|
687
|
-
if ((
|
682
|
+
if ((moved || resized) && self->parent)
|
688
683
|
self->parent->self->add_flag(View::Data::FIT_TO_CONTENT);
|
689
684
|
|
690
685
|
view->redraw();
|
@@ -696,7 +691,7 @@ namespace Reflex
|
|
696
691
|
if (!view)
|
697
692
|
argument_error(__FILE__, __LINE__);
|
698
693
|
|
699
|
-
update_view_frame(view, frame, view->
|
694
|
+
update_view_frame(view, frame, view->zoom(), view->angle());
|
700
695
|
}
|
701
696
|
|
702
697
|
const Style&
|
@@ -808,7 +803,7 @@ namespace Reflex
|
|
808
803
|
|
809
804
|
Bounds frame = view->frame();
|
810
805
|
frame.move_to(body->position());
|
811
|
-
update_view_frame(view, frame, body->angle(), false);
|
806
|
+
update_view_frame(view, frame, view->zoom(), body->angle(), false);
|
812
807
|
}
|
813
808
|
|
814
809
|
static void
|
@@ -2045,10 +2040,28 @@ namespace Reflex
|
|
2045
2040
|
self->add_flag(View::Data::FIT_TO_CONTENT);
|
2046
2041
|
}
|
2047
2042
|
|
2043
|
+
void
|
2044
|
+
View::set_zoom (float zoom)
|
2045
|
+
{
|
2046
|
+
if (zoom == self->zoom) return;
|
2047
|
+
|
2048
|
+
if (zoom == 0)
|
2049
|
+
argument_error(__FILE__, __LINE__);
|
2050
|
+
|
2051
|
+
update_view_frame(this, self->frame, zoom, self->angle);
|
2052
|
+
redraw();
|
2053
|
+
}
|
2054
|
+
|
2055
|
+
float
|
2056
|
+
View::zoom () const
|
2057
|
+
{
|
2058
|
+
return self->zoom;
|
2059
|
+
}
|
2060
|
+
|
2048
2061
|
void
|
2049
2062
|
View::set_angle (float degree)
|
2050
2063
|
{
|
2051
|
-
update_view_frame(this, self->frame,
|
2064
|
+
update_view_frame(this, self->frame, self->zoom, degree);
|
2052
2065
|
}
|
2053
2066
|
|
2054
2067
|
float
|
@@ -2103,24 +2116,6 @@ namespace Reflex
|
|
2103
2116
|
return ZERO_SCROLL;
|
2104
2117
|
}
|
2105
2118
|
|
2106
|
-
void
|
2107
|
-
View::set_zoom (float zoom)
|
2108
|
-
{
|
2109
|
-
if (zoom == self->zoom) return;
|
2110
|
-
|
2111
|
-
if (zoom == 0)
|
2112
|
-
argument_error(__FILE__, __LINE__);
|
2113
|
-
|
2114
|
-
self->zoom = zoom;
|
2115
|
-
redraw();
|
2116
|
-
}
|
2117
|
-
|
2118
|
-
float
|
2119
|
-
View::zoom () const
|
2120
|
-
{
|
2121
|
-
return self->zoom;
|
2122
|
-
}
|
2123
|
-
|
2124
2119
|
void
|
2125
2120
|
View::set_capture (uint types)
|
2126
2121
|
{
|
@@ -2508,6 +2503,11 @@ namespace Reflex
|
|
2508
2503
|
{
|
2509
2504
|
}
|
2510
2505
|
|
2506
|
+
void
|
2507
|
+
View::on_zoom (FrameEvent* e)
|
2508
|
+
{
|
2509
|
+
}
|
2510
|
+
|
2511
2511
|
void
|
2512
2512
|
View::on_rotate (FrameEvent* e)
|
2513
2513
|
{
|
data/test/test_frame_event.rb
CHANGED
@@ -15,19 +15,31 @@ class TestFrameEvent < Test::Unit::TestCase
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_initialize()
|
18
|
-
e = event bounds(1, 2, 3, 4, 5, 6), 7, 8, 9, 10, 11, 12
|
18
|
+
e = event bounds(1, 2, 3, 4, 5, 6), 7, 8, 9, 10, 11, 12, 13, 14
|
19
19
|
assert_equal bounds(1, 2, 3, 4, 5, 6), e.frame
|
20
20
|
assert_equal 7, e.dx
|
21
21
|
assert_equal 8, e.dy
|
22
22
|
assert_equal 9, e.dw
|
23
23
|
assert_equal 10, e.dh
|
24
|
-
assert_equal 11, e.
|
25
|
-
assert_equal 12, e.
|
24
|
+
assert_equal 11, e.zoom
|
25
|
+
assert_equal 12, e.dzoom
|
26
|
+
assert_equal 13, e.angle
|
27
|
+
assert_equal 14, e.dangle
|
26
28
|
end
|
27
29
|
|
28
30
|
def test_dup()
|
29
|
-
e1 = event bounds(1, 2, 3, 4, 5, 6), 7, 8, 9, 10, 11, 12
|
31
|
+
e1 = event bounds(1, 2, 3, 4, 5, 6), 7, 8, 9, 10, 11, 12, 13, 14
|
30
32
|
e2 = e1.dup
|
33
|
+
assert_equal bounds(1, 2, 3, 4, 5, 6), e2.frame
|
34
|
+
assert_equal 7, e2.dx
|
35
|
+
assert_equal 8, e2.dy
|
36
|
+
assert_equal 9, e2.dw
|
37
|
+
assert_equal 10, e2.dh
|
38
|
+
assert_equal 11, e2.zoom
|
39
|
+
assert_equal 12, e2.dzoom
|
40
|
+
assert_equal 13, e2.angle
|
41
|
+
assert_equal 14, e2.dangle
|
42
|
+
|
31
43
|
e1.block
|
32
44
|
e3 = e1.dup
|
33
45
|
assert_true e1.blocked?
|
@@ -35,4 +47,10 @@ class TestFrameEvent < Test::Unit::TestCase
|
|
35
47
|
assert_true e3.blocked?
|
36
48
|
end
|
37
49
|
|
50
|
+
def test_inspect()
|
51
|
+
assert_equal(
|
52
|
+
"#<Reflex::FrameEvent x:1(7) y:2(8) w:4(9) h:5(10) zoom:11(12) angle:13(14)>",
|
53
|
+
event(bounds(1, 2, 3, 4, 5, 6), 7, 8, 9, 10, 11, 12, 13, 14).inspect)
|
54
|
+
end
|
55
|
+
|
38
56
|
end# TestFrameEvent
|
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.
|
4
|
+
version: 0.1.35
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-30 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.34
|
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.34
|
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.34
|
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.34
|
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.35
|
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.35
|
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.34
|
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.34
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -389,7 +389,6 @@ files:
|
|
389
389
|
- src/window.h
|
390
390
|
- src/world.cpp
|
391
391
|
- src/world.h
|
392
|
-
- task/box2d.rake
|
393
392
|
- test/helper.rb
|
394
393
|
- test/test_application.rb
|
395
394
|
- test/test_capture_event.rb
|
data/task/box2d.rake
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# -*- mode: ruby; coding: utf-8 -*-
|
2
|
-
|
3
|
-
|
4
|
-
task :box2d => 'box2d:update'
|
5
|
-
|
6
|
-
|
7
|
-
namespace :box2d do
|
8
|
-
|
9
|
-
|
10
|
-
mod = MODULE
|
11
|
-
tmp_dir = mod.root_dir 'tmp'
|
12
|
-
|
13
|
-
lib_git = 'https://github.com/erincatto/Box2D'
|
14
|
-
lib_name = File.basename lib_git
|
15
|
-
lib_root = "#{tmp_dir}/#{lib_name}"
|
16
|
-
lib_path = "Box2D/Box2D"
|
17
|
-
|
18
|
-
copy_from = "#{lib_root}/#{lib_path}"
|
19
|
-
copy_to_base = mod.root_dir 'src/physics'
|
20
|
-
copy_to = "#{copy_to_base}/#{File.basename lib_path}"
|
21
|
-
copy_exts = %w[h cpp]
|
22
|
-
|
23
|
-
|
24
|
-
task :update => [:clone, copy_to_base] do
|
25
|
-
sh %( rm -rf #{copy_to} )
|
26
|
-
sh %( cp -r #{copy_from} #{copy_to_base} )
|
27
|
-
|
28
|
-
Dir.glob "#{copy_to}/**/*" do |path|
|
29
|
-
ext = path[/\.[^.]+$/]
|
30
|
-
sh %( rm -f #{path} ) if ext && ext !~ /\.(#{copy_exts.join '|'})/i
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
task :clone => tmp_dir do
|
35
|
-
Dir.chdir tmp_dir do
|
36
|
-
sh %( git clone #{lib_git} ) unless File.exist? lib_root
|
37
|
-
Dir.chdir lib_root do
|
38
|
-
sh %( git pull --rebase )
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
directory tmp_dir, copy_to_base
|
44
|
-
|
45
|
-
|
46
|
-
end# :box2d
|