reflexion 0.1.39 → 0.1.40

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a2bf359950c676836ffec40bf02fda296c2111f09cf585ad546b0ecc8edc296
4
- data.tar.gz: 2366d63f0d4512bf3f71cf1a16e355f4b98123f7473bdfa5f8d95bdbf87536aa
3
+ metadata.gz: 1ea18222490d3f1689a552d31ee11f0e0c2386998c88420a117aca12175436ce
4
+ data.tar.gz: 5105528ff4c1f233d25d79a9aa8aef72239cf4256db5c1cb5c126a7359e7c31a
5
5
  SHA512:
6
- metadata.gz: 33e83a7603fa2749030b58d321d5ee9a808283095d43dc7c5772a6890d1758abe2993d7392f7f820c83eeb9b2fecea690ded0e4dc8689c8815b4397870429229
7
- data.tar.gz: 7d604628381cf76bed34cae3126739d5658d007c6924ef3d6ce0e7459476a4513099b7f61932f6aa82110a1458ee73c508b59719d6049f37e97dcffb710caf9f
6
+ metadata.gz: 2be5d8353933e987684d2f5f81cb4cf7a52cc1db615c31c4ec6ed70998d783c4d5d631c25c4ab9b02258b8c5d70c4988abe47ec8fa7e6b807dfd12acba66e5de
7
+ data.tar.gz: 91263b61d34e37ea8900ff626edc2a6fb0c302a49e2cfe531ec1c502a47c3409e8f7d7caf049e67fb9bc56efc3132e5d8d1f2290746498eba5d301305bfa6298
@@ -617,6 +617,26 @@ VALUE get_scroll_to_fit(VALUE self)
617
617
  return value(THIS->has_flag(Reflex::View::FLAG_SCROLL_TO_FIT));
618
618
  }
619
619
 
620
+ static
621
+ VALUE set_fix_angle(VALUE self, VALUE fix)
622
+ {
623
+ CHECK;
624
+
625
+ if (fix)
626
+ THIS-> add_flag(Reflex::View::FLAG_FIX_ANGLE);
627
+ else
628
+ THIS->remove_flag(Reflex::View::FLAG_FIX_ANGLE);
629
+
630
+ return fix;
631
+ }
632
+
633
+ static
634
+ VALUE get_fix_angle(VALUE self)
635
+ {
636
+ CHECK;
637
+ return value(THIS->has_flag(Reflex::View::FLAG_FIX_ANGLE));
638
+ }
639
+
620
640
  static
621
641
  VALUE parent(VALUE self)
622
642
  {
@@ -1134,6 +1154,8 @@ Init_reflex_view ()
1134
1154
  cView.define_method("resize_to_fit?", get_resize_to_fit);
1135
1155
  rb_define_method(cView, "scroll_to_fit=", RUBY_METHOD_FUNC(set_scroll_to_fit), 1);
1136
1156
  cView.define_method("scroll_to_fit?", get_scroll_to_fit);
1157
+ rb_define_method(cView, "fix_angle=", RUBY_METHOD_FUNC(set_fix_angle), 1);
1158
+ cView.define_method("fix_angle?", get_fix_angle);
1137
1159
  rb_define_method(cView, "parent", RUBY_METHOD_FUNC(parent), 0);
1138
1160
  rb_define_method(cView, "window", RUBY_METHOD_FUNC(window), 0);
1139
1161
 
data/ChangeLog.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # reflex ChangeLog
2
2
 
3
3
 
4
+ ## [v0.1.40] - 2023-05-27
5
+
6
+ - required_ruby_version >= 3.0.0
7
+ - Add FLAG_FIX_ANGLE
8
+ - Add spec.license
9
+ - Fix crash on calling ContactEvent#inspect
10
+
11
+
4
12
  ## [v0.1.39] - 2023-05-18
5
13
 
6
14
  - Event#block has a bool parameter, which defaults to true
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.39
1
+ 0.1.40
data/ext/reflex/view.cpp CHANGED
@@ -675,6 +675,28 @@ RUCY_DEF0(get_scroll_to_fit)
675
675
  }
676
676
  RUCY_END
677
677
 
678
+ static
679
+ RUCY_DEF1(set_fix_angle, fix)
680
+ {
681
+ CHECK;
682
+
683
+ if (fix)
684
+ THIS-> add_flag(Reflex::View::FLAG_FIX_ANGLE);
685
+ else
686
+ THIS->remove_flag(Reflex::View::FLAG_FIX_ANGLE);
687
+
688
+ return fix;
689
+ }
690
+ RUCY_END
691
+
692
+ static
693
+ RUCY_DEF0(get_fix_angle)
694
+ {
695
+ CHECK;
696
+ return value(THIS->has_flag(Reflex::View::FLAG_FIX_ANGLE));
697
+ }
698
+ RUCY_END
699
+
678
700
  static
679
701
  RUCY_DEF0(parent)
680
702
  {
@@ -1206,25 +1228,25 @@ Init_reflex_view ()
1206
1228
  cView.define_method("from_screen", from_screen);
1207
1229
  cView.define_method( "to_screen", to_screen);
1208
1230
 
1209
- cView.define_method("add_child", add_child);
1231
+ cView.define_method( "add_child", add_child);
1210
1232
  cView.define_method("remove_child", remove_child);
1211
- cView.define_method("clear_children", clear_children);
1212
- cView.define_method("find_children", find_children);
1213
- cView.define_method("each_child", each_child);
1233
+ cView.define_method( "clear_children", clear_children);
1234
+ cView.define_method( "find_children", find_children);
1235
+ cView.define_method( "each_child", each_child);
1214
1236
 
1215
- cView.define_method("add_style", add_style);
1237
+ cView.define_method( "add_style", add_style);
1216
1238
  cView.define_method("remove_style", remove_style);
1217
- cView.define_method("get_style", get_style);
1218
- cView.define_method("find_styles", find_styles);
1219
- cView.define_method("each_style", each_style);
1239
+ cView.define_method( "get_style", get_style);
1240
+ cView.define_method( "find_styles", find_styles);
1241
+ cView.define_method( "each_style", each_style);
1220
1242
 
1221
- cView.define_method("shape=", set_shape);
1222
- cView.define_method("shape", get_shape);
1223
- cView.define_method("add_shape", add_shape);
1243
+ cView.define_method( "shape=", set_shape);
1244
+ cView.define_method( "shape", get_shape);
1245
+ cView.define_method( "add_shape", add_shape);
1224
1246
  cView.define_method("remove_shape", remove_shape);
1225
- cView.define_method("clear_shapes", clear_shapes);
1226
- cView.define_method("find_shapes", find_shapes);
1227
- cView.define_method("each_shape", each_shape);
1247
+ cView.define_method( "clear_shapes", clear_shapes);
1248
+ cView.define_method( "find_shapes", find_shapes);
1249
+ cView.define_method( "each_shape", each_shape);
1228
1250
 
1229
1251
  cView.define_method("filter=", set_filter);
1230
1252
  cView.define_method("filter", get_filter);
@@ -1252,6 +1274,8 @@ Init_reflex_view ()
1252
1274
  cView.define_method("resize_to_fit?", get_resize_to_fit);
1253
1275
  cView.define_method("scroll_to_fit=", set_scroll_to_fit);
1254
1276
  cView.define_method("scroll_to_fit?", get_scroll_to_fit);
1277
+ cView.define_method("fix_angle=", set_fix_angle);
1278
+ cView.define_method("fix_angle?", get_fix_angle);
1255
1279
  cView.define_method("parent", parent);
1256
1280
  cView.define_method("window", window);
1257
1281
 
@@ -67,7 +67,9 @@ namespace Reflex
67
67
 
68
68
  FLAG_SCROLL_TO_FIT = Xot::bit(3),
69
69
 
70
- FLAG_LAST = FLAG_SCROLL_TO_FIT
70
+ FLAG_FIX_ANGLE = Xot::bit(4),
71
+
72
+ FLAG_LAST = FLAG_FIX_ANGLE
71
73
 
72
74
  };// Flag
73
75
 
@@ -24,7 +24,7 @@ module Reflex
24
24
  end
25
25
 
26
26
  def inspect()
27
- "#<Reflex::ContactEvent type:#{type} shape:#{shape} view:#{view}>"
27
+ "#<Reflex::ContactEvent #{action} shape:#{shape} view:#{view}>"
28
28
  end
29
29
 
30
30
  end# ContactEvent
data/lib/reflex/view.rb CHANGED
@@ -120,14 +120,15 @@ module Reflex
120
120
  cache: {reader: :cache?},
121
121
  resize_to_fit: {reader: :resize_to_fit?},
122
122
  scroll_to_fit: {reader: :scroll_to_fit?},
123
+ fix_angle: {reader: :fix_angle?},
123
124
  static: {reader: :static?},
124
125
  dynamic: {reader: :dynamic?},
125
126
  sensor: {reader: :sensor?},
126
127
  debug: {reader: :debug?}
127
128
 
128
- alias add add_child
129
+ alias add add_child
129
130
  alias remove remove_child
130
- alias find find_child
131
+ alias find find_child
131
132
 
132
133
  alias apply_impulse apply_linear_impulse
133
134
  alias velocity= linear_velocity=
data/reflex.gemspec CHANGED
@@ -17,21 +17,21 @@ Gem::Specification.new do |s|
17
17
  rdocs = glob.call *%w[README .doc/ext/**/*.cpp]
18
18
 
19
19
  s.name = "#{name}ion"
20
+ s.version = ext.version
21
+ s.license = 'MIT'
20
22
  s.summary = 'A Graphical User Interface Tool Kit.'
21
23
  s.description = 'This library helps you to develop interactive graphical user interface.'
22
- s.version = ext.version
23
-
24
- s.authors = %w[xordog]
25
- s.email = 'xordog@gmail.com'
26
- s.homepage = "https://github.com/xord/reflex"
24
+ s.authors = %w[xordog]
25
+ s.email = 'xordog@gmail.com'
26
+ s.homepage = "https://github.com/xord/reflex"
27
27
 
28
28
  s.platform = Gem::Platform::RUBY
29
- s.required_ruby_version = '>= 2.7.0'
29
+ s.required_ruby_version = '>= 3.0.0'
30
30
 
31
- s.add_runtime_dependency 'xot', '~> 0.1.36'
32
- s.add_runtime_dependency 'rucy', '~> 0.1.36'
33
- s.add_runtime_dependency 'beeps', '~> 0.1.37'
34
- s.add_runtime_dependency 'rays', '~> 0.1.37'
31
+ s.add_runtime_dependency 'xot', '~> 0.1.37'
32
+ s.add_runtime_dependency 'rucy', '~> 0.1.37'
33
+ s.add_runtime_dependency 'beeps', '~> 0.1.38'
34
+ s.add_runtime_dependency 'rays', '~> 0.1.38'
35
35
 
36
36
  s.add_development_dependency 'rake'
37
37
  s.add_development_dependency 'test-unit'
data/src/body.cpp CHANGED
@@ -247,6 +247,20 @@ namespace Reflex
247
247
  return Xot::rad2deg(self->b2body->GetAngularVelocity());
248
248
  }
249
249
 
250
+ void
251
+ Body::fix_rotation (bool state)
252
+ {
253
+ validate(this);
254
+
255
+ self->b2body->SetFixedRotation(state);
256
+ }
257
+
258
+ bool
259
+ Body::is_rotation_fixed () const
260
+ {
261
+ return self->b2body->IsFixedRotation();
262
+ }
263
+
250
264
  void
251
265
  Body::set_gravity_scale (float scale)
252
266
  {
data/src/body.h CHANGED
@@ -67,6 +67,10 @@ namespace Reflex
67
67
 
68
68
  float angular_velocity () const;
69
69
 
70
+ void fix_rotation (bool state = true);
71
+
72
+ bool is_rotation_fixed () const;
73
+
70
74
  void set_gravity_scale (float scale);
71
75
 
72
76
  float gravity_scale () const;
data/src/view.cpp CHANGED
@@ -216,6 +216,7 @@ namespace Reflex
216
216
 
217
217
  pbody.reset(b);
218
218
  update_body_frame();
219
+ update_body_states();
219
220
  }
220
221
  return *pbody;
221
222
  }
@@ -235,6 +236,12 @@ namespace Reflex
235
236
  pbody->set_transform(frame.x, frame.y, angle);
236
237
  }
237
238
 
239
+ void update_body_states ()
240
+ {
241
+ if (pbody && pbody->is_rotation_fixed() != has_flag(View::FLAG_FIX_ANGLE))
242
+ pbody->fix_rotation(has_flag(View::FLAG_FIX_ANGLE));
243
+ }
244
+
238
245
  void
239
246
  get_view2body_matrix (Matrix* m)
240
247
  {
@@ -261,7 +268,7 @@ namespace Reflex
261
268
  .translate(-pivot);
262
269
  }
263
270
 
264
- void update_body_and_shapes ()
271
+ void setup_body_and_shapes ()
265
272
  {
266
273
  std::unique_ptr<Body> old_body;
267
274
  if (pbody)
@@ -718,7 +725,7 @@ namespace Reflex
718
725
  }
719
726
 
720
727
  view->self->window = window;
721
- view->self->update_body_and_shapes();
728
+ view->self->setup_body_and_shapes();
722
729
 
723
730
  View::ChildList* children = view->self->children();
724
731
  if (children)
@@ -2364,12 +2371,16 @@ namespace Reflex
2364
2371
  View::add_flag (uint flags)
2365
2372
  {
2366
2373
  self->add_flag(flags);
2374
+
2375
+ self->update_body_states();
2367
2376
  }
2368
2377
 
2369
2378
  void
2370
2379
  View::remove_flag (uint flags)
2371
2380
  {
2372
2381
  self->remove_flag(flags);
2382
+
2383
+ self->update_body_states();
2373
2384
  }
2374
2385
 
2375
2386
  bool
data/test/test_view.rb CHANGED
@@ -275,6 +275,20 @@ class TestView < Test::Unit::TestCase
275
275
  assert_equal 361, v.angle
276
276
  end
277
277
 
278
+ def test_fix_angle()
279
+ v = view
280
+ assert_false v.fix_angle?
281
+ assert_false v.fix_angle
282
+
283
+ v.fix_angle = true
284
+ assert_true v.fix_angle?
285
+ assert_true v.fix_angle
286
+
287
+ v.fix_angle false
288
+ assert_false v.fix_angle?
289
+ assert_false v.fix_angle
290
+ end
291
+
278
292
  def test_pivot()
279
293
  v = view
280
294
  assert_each_in_epsilon [0, 0, 0], v.pivot.to_a(3)
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.39
4
+ version: 0.1.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-17 00:00:00.000000000 Z
11
+ date: 2023-05-27 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.36
19
+ version: 0.1.37
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.36
26
+ version: 0.1.37
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.36
33
+ version: 0.1.37
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.36
40
+ version: 0.1.37
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.37
47
+ version: 0.1.38
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.37
54
+ version: 0.1.38
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.37
61
+ version: 0.1.38
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.37
68
+ version: 0.1.38
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -415,7 +415,8 @@ files:
415
415
  - test/test_wheel_event.rb
416
416
  - test/test_window.rb
417
417
  homepage: https://github.com/xord/reflex
418
- licenses: []
418
+ licenses:
419
+ - MIT
419
420
  metadata: {}
420
421
  post_install_message:
421
422
  rdoc_options: []
@@ -425,7 +426,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
425
426
  requirements:
426
427
  - - ">="
427
428
  - !ruby/object:Gem::Version
428
- version: 2.7.0
429
+ version: 3.0.0
429
430
  required_rubygems_version: !ruby/object:Gem::Requirement
430
431
  requirements:
431
432
  - - ">="