rays 0.1.47 → 0.1.49

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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/rays/bitmap.cpp +287 -46
  3. data/.doc/ext/rays/camera.cpp +2 -2
  4. data/.doc/ext/rays/color.cpp +11 -0
  5. data/.doc/ext/rays/defs.cpp +32 -8
  6. data/.doc/ext/rays/font.cpp +50 -2
  7. data/.doc/ext/rays/image.cpp +3 -3
  8. data/.doc/ext/rays/matrix.cpp +65 -7
  9. data/.doc/ext/rays/native.cpp +2 -4
  10. data/.doc/ext/rays/painter.cpp +117 -9
  11. data/.doc/ext/rays/point.cpp +1 -11
  12. data/.doc/ext/rays/polygon.cpp +133 -97
  13. data/.doc/ext/rays/polyline.cpp +89 -10
  14. data/.doc/ext/rays/rays.cpp +80 -0
  15. data/.doc/ext/rays/{noise.cpp → util.cpp} +2 -2
  16. data/ChangeLog.md +46 -0
  17. data/VERSION +1 -1
  18. data/ext/rays/bitmap.cpp +288 -46
  19. data/ext/rays/camera.cpp +2 -2
  20. data/ext/rays/color.cpp +13 -1
  21. data/ext/rays/defs.cpp +32 -8
  22. data/ext/rays/defs.h +56 -3
  23. data/ext/rays/font.cpp +56 -4
  24. data/ext/rays/image.cpp +3 -3
  25. data/ext/rays/matrix.cpp +69 -7
  26. data/ext/rays/native.cpp +2 -4
  27. data/ext/rays/painter.cpp +132 -13
  28. data/ext/rays/point.cpp +1 -12
  29. data/ext/rays/polygon.cpp +136 -99
  30. data/ext/rays/polyline.cpp +95 -9
  31. data/ext/rays/rays.cpp +80 -0
  32. data/ext/rays/{noise.cpp → util.cpp} +2 -2
  33. data/include/rays/color.h +3 -1
  34. data/include/rays/defs.h +24 -26
  35. data/include/rays/font.h +17 -3
  36. data/include/rays/image.h +1 -1
  37. data/include/rays/matrix.h +24 -0
  38. data/include/rays/painter.h +24 -0
  39. data/include/rays/polygon.h +68 -43
  40. data/include/rays/polyline.h +17 -2
  41. data/include/rays/ruby/polygon.h +0 -11
  42. data/include/rays/ruby/rays.h +4 -0
  43. data/include/rays/{noise.h → util.h} +2 -2
  44. data/lib/rays/color.rb +7 -1
  45. data/lib/rays/font.rb +1 -1
  46. data/lib/rays/image.rb +11 -1
  47. data/lib/rays/matrix.rb +16 -0
  48. data/lib/rays/painter.rb +18 -7
  49. data/lib/rays/point.rb +5 -1
  50. data/lib/rays/polygon.rb +44 -35
  51. data/lib/rays/polyline.rb +54 -8
  52. data/lib/rays.rb +0 -1
  53. data/rays.gemspec +2 -2
  54. data/src/color.cpp +11 -2
  55. data/src/font.cpp +37 -18
  56. data/src/font.h +6 -5
  57. data/src/image.cpp +58 -14
  58. data/src/ios/font.mm +89 -32
  59. data/src/ios/helper.h +2 -2
  60. data/src/ios/helper.mm +2 -2
  61. data/src/matrix.cpp +45 -0
  62. data/src/osx/font.mm +93 -33
  63. data/src/osx/helper.h +2 -2
  64. data/src/osx/helper.mm +2 -2
  65. data/src/painter.cpp +246 -114
  66. data/src/painter.h +11 -3
  67. data/src/polygon.cpp +431 -332
  68. data/src/polyline.cpp +138 -27
  69. data/src/polyline.h +3 -5
  70. data/src/shader.cpp +36 -4
  71. data/src/shader.h +1 -1
  72. data/src/texture.cpp +23 -4
  73. data/src/texture.h +2 -0
  74. data/src/{noise.cpp → util.cpp} +1 -1
  75. data/src/win32/font.cpp +1 -1
  76. data/test/test_bitmap.rb +12 -5
  77. data/test/test_color.rb +25 -4
  78. data/test/test_font.rb +23 -2
  79. data/test/test_image.rb +44 -18
  80. data/test/test_matrix.rb +22 -0
  81. data/test/test_painter.rb +27 -0
  82. data/test/test_point.rb +1 -1
  83. data/test/test_polygon.rb +52 -45
  84. data/test/test_polyline.rb +191 -72
  85. metadata +12 -18
  86. data/.doc/ext/rays/polygon_line.cpp +0 -97
  87. data/ext/rays/polygon_line.cpp +0 -100
  88. data/lib/rays/polygon_line.rb +0 -33
  89. data/test/test_polygon_line.rb +0 -164
@@ -1,97 +0,0 @@
1
- #include "rays/ruby/polygon.h"
2
-
3
-
4
- #include <assert.h>
5
- #include "rays/ruby/polyline.h"
6
- #include "defs.h"
7
-
8
-
9
- RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(Rays::Polygon::Line)
10
-
11
- #define THIS to<Rays::Polygon::Line*>(self)
12
-
13
- #define CHECK RUCY_CHECK_OBJECT(Rays::Polygon::Line, self)
14
-
15
-
16
- static
17
- VALUE alloc(VALUE klass)
18
- {
19
- return new_type<Rays::Polygon::Line>(klass);
20
- }
21
-
22
- static
23
- VALUE setup(VALUE self, VALUE points, VALUE loop, VALUE hole)
24
- {
25
- CHECK;
26
-
27
- std::vector<Rays::Point> array;
28
- get_line_args(&array, points.size(), points.as_array());
29
- *THIS = Rays::Polygon::Line(&array[0], array.size(), loop, hole);
30
- }
31
-
32
- static
33
- VALUE hole(VALUE self)
34
- {
35
- CHECK;
36
- return value(THIS->hole());
37
- }
38
-
39
-
40
- static Class cPolygonLine;
41
-
42
- void
43
- Init_rays_polygon_line ()
44
- {
45
- Module mRays = rb_define_module("Rays");
46
- Class cPolygon = rb_define_class_under(mRays, "Polygon", rb_cObject);
47
-
48
- cPolygonLine = cPolygon.define_class("Line", Rays::polyline_class());
49
- rb_define_alloc_func(cPolygonLine, alloc);
50
- rb_define_private_method(cPolygonLine, "setup", RUBY_METHOD_FUNC(setup), 3);
51
- cPolygonLine.define_method("hole?", hole);
52
- }
53
-
54
-
55
- namespace Rucy
56
- {
57
-
58
-
59
- template <> Rays::Polygon::Line
60
- value_to<Rays::Polygon::Line> (int argc, const Value* argv, bool convert)
61
- {
62
- assert(argc == 0 || (argc > 0 && argv));
63
-
64
- if (convert)
65
- {
66
- if (argc <= 0)
67
- return Rays::Polygon::Line();
68
- else if (argv->is_num() || argv->is_array())
69
- {
70
- std::vector<Rays::Point> points;
71
- get_line_args(&points, argc, argv);
72
- return Rays::Polygon::Line(&points[0], points.size());
73
- }
74
- }
75
-
76
- if (argc != 1)
77
- argument_error(__FILE__, __LINE__);
78
-
79
- return value_to<Rays::Polygon::Line&>(*argv, convert);
80
- }
81
-
82
-
83
- }// Rucy
84
-
85
-
86
- namespace Rays
87
- {
88
-
89
-
90
- Class
91
- polygon_line_class ()
92
- {
93
- return cPolygonLine;
94
- }
95
-
96
-
97
- }// Rays
@@ -1,100 +0,0 @@
1
- #include "rays/ruby/polygon.h"
2
-
3
-
4
- #include <assert.h>
5
- #include "rays/ruby/polyline.h"
6
- #include "defs.h"
7
-
8
-
9
- RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(Rays::Polygon::Line)
10
-
11
- #define THIS to<Rays::Polygon::Line*>(self)
12
-
13
- #define CHECK RUCY_CHECK_OBJECT(Rays::Polygon::Line, self)
14
-
15
-
16
- static
17
- RUCY_DEF_ALLOC(alloc, klass)
18
- {
19
- return new_type<Rays::Polygon::Line>(klass);
20
- }
21
- RUCY_END
22
-
23
- static
24
- RUCY_DEF3(setup, points, loop, hole)
25
- {
26
- CHECK;
27
-
28
- std::vector<Rays::Point> array;
29
- get_line_args(&array, points.size(), points.as_array());
30
- *THIS = Rays::Polygon::Line(&array[0], array.size(), loop, hole);
31
- }
32
- RUCY_END
33
-
34
- static
35
- RUCY_DEF0(hole)
36
- {
37
- CHECK;
38
- return value(THIS->hole());
39
- }
40
- RUCY_END
41
-
42
-
43
- static Class cPolygonLine;
44
-
45
- void
46
- Init_rays_polygon_line ()
47
- {
48
- Module mRays = define_module("Rays");
49
- Class cPolygon = mRays.define_class("Polygon");
50
-
51
- cPolygonLine = cPolygon.define_class("Line", Rays::polyline_class());
52
- cPolygonLine.define_alloc_func(alloc);
53
- cPolygonLine.define_private_method("setup", setup);
54
- cPolygonLine.define_method("hole?", hole);
55
- }
56
-
57
-
58
- namespace Rucy
59
- {
60
-
61
-
62
- template <> Rays::Polygon::Line
63
- value_to<Rays::Polygon::Line> (int argc, const Value* argv, bool convert)
64
- {
65
- assert(argc == 0 || (argc > 0 && argv));
66
-
67
- if (convert)
68
- {
69
- if (argc <= 0)
70
- return Rays::Polygon::Line();
71
- else if (argv->is_num() || argv->is_array())
72
- {
73
- std::vector<Rays::Point> points;
74
- get_line_args(&points, argc, argv);
75
- return Rays::Polygon::Line(&points[0], points.size());
76
- }
77
- }
78
-
79
- if (argc != 1)
80
- argument_error(__FILE__, __LINE__);
81
-
82
- return value_to<Rays::Polygon::Line&>(*argv, convert);
83
- }
84
-
85
-
86
- }// Rucy
87
-
88
-
89
- namespace Rays
90
- {
91
-
92
-
93
- Class
94
- polygon_line_class ()
95
- {
96
- return cPolygonLine;
97
- }
98
-
99
-
100
- }// Rays
@@ -1,33 +0,0 @@
1
- require 'rays/ext'
2
-
3
-
4
- module Rays
5
-
6
-
7
- class Polygon
8
-
9
-
10
- class Line < Polyline
11
-
12
- def initialize(*points, loop: true, hole: false)
13
- setup points, loop, hole
14
- end
15
-
16
- def transform(matrix = nil, loop: loop?, hole: hole?, &block)
17
- points = to_a
18
- points = points.map {|point| matrix * point} if matrix
19
- points = block.call points if block
20
- self.class.new(*points, loop: loop, hole: hole)
21
- end
22
-
23
- def inspect()
24
- "#<Rays::Polygon::Line #{to_a.join ', '}, loop: #{loop?}, hole: #{hole?}>"
25
- end
26
-
27
- end# Line
28
-
29
-
30
- end# Polygon
31
-
32
-
33
- end# Rays
@@ -1,164 +0,0 @@
1
- require_relative 'helper'
2
-
3
-
4
- class TestPolygonLine < Test::Unit::TestCase
5
-
6
- class Rays::Polygon::Line
7
- def dump()
8
- map &:to_a
9
- end
10
-
11
- def loop_hole()
12
- [loop?, hole?]
13
- end
14
- end
15
-
16
- def line(*args, **kwargs)
17
- Rays::Polygon::Line.new(*args, **kwargs)
18
- end
19
-
20
- def point(*args)
21
- Rays::Point.new(*args)
22
- end
23
-
24
- def rect(*args)
25
- Rays::Polygon.rect(*args)
26
- end
27
-
28
- def test_initialize()
29
- assert_equal [[1, 2], [3, 4], [5, 6]], line( 1, 2, 3, 4 , 5, 6 ).dump
30
- assert_equal [[1, 2], [3, 4], [5, 6]], line( [1, 2], [3, 4], [5, 6]).dump
31
- assert_equal [[1, 1], [2, 2], [3, 3]], line( [1], [2], [3]).dump
32
- assert_equal [[1, 1], [2, 2], [3, 3]], line(point(1), point(2), point(3)).dump
33
-
34
- assert_equal [true, false], line(1, 2, 3, 4, 5, 6 ).loop_hole
35
- assert_equal [true, false], line(1, 2, 3, 4, 5, 6, loop: true ).loop_hole
36
- assert_equal [false, false], line(1, 2, 3, 4, 5, 6, loop: false ).loop_hole
37
- assert_equal [true, true ], line(1, 2, 3, 4, 5, 6, hole: true ).loop_hole
38
- assert_equal [true, false], line(1, 2, 3, 4, 5, 6, hole: false).loop_hole
39
- assert_equal [true, true ], line(1, 2, 3, 4, 5, 6, loop: true, hole: true ).loop_hole
40
- assert_equal [true, false], line(1, 2, 3, 4, 5, 6, loop: true, hole: false).loop_hole
41
- assert_raise(ArgumentError) {line(1, 2, 3, 4, 5, 6, loop: false, hole: true ).loop_hole}
42
- assert_equal [false, false], line(1, 2, 3, 4, 5, 6, loop: false, hole: false).loop_hole
43
-
44
- assert_nothing_raised {line( loop: true, hole: true )}
45
- assert_nothing_raised {line( loop: true, hole: false)}
46
- assert_raise(ArgumentError) {line( loop: false, hole: true )}
47
- assert_nothing_raised {line( loop: false, hole: false)}
48
- assert_raise(ArgumentError) {line(1, loop: true, hole: true )}
49
- assert_raise(ArgumentError) {line(1, loop: true, hole: false)}
50
- assert_raise(ArgumentError) {line(1, loop: false, hole: true )}
51
- assert_raise(ArgumentError) {line(1, loop: false, hole: false)}
52
- assert_nothing_raised {line(1, 2, loop: true, hole: true )}
53
- assert_nothing_raised {line(1, 2, loop: true, hole: false)}
54
- assert_raise(ArgumentError) {line(1, 2, loop: false, hole: true )}
55
- assert_nothing_raised {line(1, 2, loop: false, hole: false)}
56
- assert_raise(ArgumentError) {line(1, 2, 3, loop: true, hole: true )}
57
- assert_raise(ArgumentError) {line(1, 2, 3, loop: true, hole: false)}
58
- assert_raise(ArgumentError) {line(1, 2, 3, loop: false, hole: true )}
59
- assert_raise(ArgumentError) {line(1, 2, 3, loop: false, hole: false)}
60
- assert_nothing_raised {line(1, 2, 3, 4, loop: true, hole: true )}
61
- assert_nothing_raised {line(1, 2, 3, 4, loop: true, hole: false)}
62
- assert_raise(ArgumentError) {line(1, 2, 3, 4, loop: false, hole: true )}
63
- assert_nothing_raised {line(1, 2, 3, 4, loop: false, hole: false)}
64
- assert_raise(ArgumentError) {line(1, 2, 3, 4, 5, loop: true, hole: true )}
65
- assert_raise(ArgumentError) {line(1, 2, 3, 4, 5, loop: true, hole: false)}
66
- assert_raise(ArgumentError) {line(1, 2, 3, 4, 5, loop: false, hole: true )}
67
- assert_raise(ArgumentError) {line(1, 2, 3, 4, 5, loop: false, hole: false)}
68
- assert_nothing_raised {line(1, 2, 3, 4, 5, 6, loop: true, hole: true )}
69
- assert_nothing_raised {line(1, 2, 3, 4, 5, 6, loop: true, hole: false)}
70
- assert_raise(ArgumentError) {line(1, 2, 3, 4, 5, 6, loop: false, hole: true )}
71
- assert_nothing_raised {line(1, 2, 3, 4, 5, 6, loop: false, hole: false)}
72
- end
73
-
74
- def test_transform_with_materix()
75
- m = Rays::Matrix.translate 100, 200
76
- line([10,10], [20,20], loop: false).transform(m).tap {|o|
77
- assert_equal [[110,210], [120,220]], o.dump
78
- }
79
-
80
- m = Rays::Matrix.scale 2
81
- line([10,10], [20,20], loop: false).transform(m).tap {|o|
82
- assert_equal [[20,20], [40,40]], o.dump
83
- }
84
-
85
- m = Rays::Matrix.rotate 90
86
- line([10,10], [20,20], loop: false).transform(m).tap {|o|
87
- assert_equal [[-10,10], [-20,20]], o.dump
88
- }
89
- end
90
-
91
- def test_transform_with_block()
92
- line([10,10], [20,20], loop: false).transform {|points|
93
- points.map {|p| p + [10, 20]}
94
- }.tap {|o|
95
- assert_equal [[20,30], [30,40]], o.dump
96
- }
97
-
98
- line([10,10], [20,20], [30,30], loop: false).transform {|points|
99
- points.reject {|p| p == point(20, 20)}
100
- }.tap {|o|
101
- assert_equal [[10,10], [30,30]], o.dump
102
- }
103
-
104
- line([10,10], [20,20], loop: false).transform {|points|
105
- points + [[30, 30]]
106
- }.tap {|o|
107
- assert_equal [[10,10], [20,20], [30,30]], o.dump
108
- }
109
-
110
- points = [1, 2, 3, 4, 5, 6]
111
- line(*points, loop: false, hole: false).transform(loop: true ).tap {|o|
112
- assert_equal points, o.dump.flatten
113
- assert_equal [true, false], o.loop_hole
114
- }
115
- assert_raise(ArgumentError) {
116
- line(*points, loop: false, hole: false).transform( hole: true )
117
- }
118
- assert_raise(ArgumentError) {
119
- line(*points, loop: false, hole: false).transform(loop: false, hole: true )
120
- }
121
- line(*points, loop: false, hole: false).transform(loop: true, hole: true ).tap {|o|
122
- assert_equal points, o.dump.flatten
123
- assert_equal [true, true ], o.loop_hole
124
- }
125
- line(*points, loop: true, hole: false).transform(loop: false ).tap {|o|
126
- assert_equal points, o.dump.flatten
127
- assert_equal [false, false], o.loop_hole
128
- }
129
- line(*points, loop: true, hole: false).transform( hole: true ).tap {|o|
130
- assert_equal points, o.dump.flatten
131
- assert_equal [true, true ], o.loop_hole
132
- }
133
- assert_raise(ArgumentError) {
134
- line(*points, loop: true, hole: false).transform(loop: false, hole: true )
135
- }
136
- assert_raise(ArgumentError) {
137
- line(*points, loop: true, hole: true ).transform(loop: false )
138
- }
139
- line(*points, loop: true, hole: true ).transform( hole: false).tap {|o|
140
- assert_equal points, o.dump.flatten
141
- assert_equal [true, false], o.loop_hole
142
- }
143
- line(*points, loop: true, hole: true ).transform(loop: false, hole: false).tap {|o|
144
- assert_equal points, o.dump.flatten
145
- assert_equal [false, false], o.loop_hole
146
- }
147
- end
148
-
149
- def test_hole()
150
- (rect(0, 0, 10, 10) - rect(1, 1, 2, 2)).tap {|o|
151
- assert_equal 1, o.select {|line| line.hole?}.size
152
- }
153
- (rect(0, 0, 10, 10) - rect(100, 1, 2, 2)).tap {|o|
154
- assert_equal 0, o.select {|line| line.hole?}.size
155
- }
156
- end
157
-
158
- def test_inspect()
159
- assert_equal(
160
- "#<Rays::Polygon::Line [1.0, 2.0], [3.0, 4.0], [5.0, 6.0], loop: true, hole: false>",
161
- line(1, 2, 3, 4, 5, 6).inspect)
162
- end
163
-
164
- end# TestPolygonLine