reflexion 0.1.34 → 0.1.35
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 +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 +5 -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
|