rays 0.1.47 → 0.1.49

Sign up to get free protection for your applications and to get access to all the features.
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
data/test/test_point.rb CHANGED
@@ -179,7 +179,7 @@ class TestPoint < Test::Unit::TestCase
179
179
  end
180
180
 
181
181
  def test_inspect()
182
- assert_equal "#<Rays::Point 1.0, 2.0, 3.0>", point(1, 2, 3).inspect
182
+ assert_equal "#<Rays::Point 1.0 2.0 3.0>", point(1, 2, 3).inspect
183
183
  end
184
184
 
185
185
  def test_dot()
data/test/test_polygon.rb CHANGED
@@ -13,12 +13,8 @@ class TestPolygon < Test::Unit::TestCase
13
13
  Rays::Polygon.new(*args, **kwargs)
14
14
  end
15
15
 
16
- def line(*args)
17
- Rays::Polygon::Line.new(*args)
18
- end
19
-
20
- def polyline(*args)
21
- Rays::Polyline.new(*args)
16
+ def polyline(*args, **kwargs)
17
+ Rays::Polyline.new(*args, **kwargs)
22
18
  end
23
19
 
24
20
  def point(*args)
@@ -44,20 +40,23 @@ class TestPolygon < Test::Unit::TestCase
44
40
  assert_equal [[[5, 6], [7, 8]]], polygon( [5, 6], [7, 8], loop: false).dump
45
41
  assert_equal [[[1, 1], [2, 2]]], polygon( [1], [2], loop: false).dump
46
42
  assert_equal [[[3, 3], [4, 4]]], polygon(point(3), point(4), loop: false).dump
47
- assert_nothing_raised {polygon( loop: true)}
48
- assert_nothing_raised {polygon( loop: false)}
49
- assert_raise(ArgumentError) {polygon(1, loop: true)}
50
- assert_raise(ArgumentError) {polygon(1, loop: false)}
51
- assert_nothing_raised {polygon(1, 2, loop: true)}
52
- assert_nothing_raised {polygon(1, 2, loop: false)}
53
- assert_raise(ArgumentError) {polygon(1, 2, 3, loop: true)}
54
- assert_raise(ArgumentError) {polygon(1, 2, 3, loop: false)}
55
- assert_nothing_raised {polygon(1, 2, 3, 4, loop: true)}
56
- assert_nothing_raised {polygon(1, 2, 3, 4, loop: false)}
57
- assert_raise(ArgumentError) {polygon(1, 2, 3, 4, 5, loop: true)}
58
- assert_raise(ArgumentError) {polygon(1, 2, 3, 4, 5, loop: false)}
59
- assert_nothing_raised {polygon(1, 2, 3, 4, 5, 6, loop: true)}
60
- assert_nothing_raised {polygon(1, 2, 3, 4, 5, 6, loop: false)}
43
+
44
+ assert_nothing_raised {polygon( loop: true)}
45
+ assert_nothing_raised {polygon( loop: false)}
46
+ assert_raise(ArgumentError) {polygon(1, loop: true)}
47
+ assert_raise(ArgumentError) {polygon(1, loop: false)}
48
+ assert_nothing_raised {polygon(1,2, loop: true)}
49
+ assert_nothing_raised {polygon(1,2, loop: false)}
50
+ assert_raise(ArgumentError) {polygon(1,2, 3, loop: true)}
51
+ assert_raise(ArgumentError) {polygon(1,2, 3, loop: false)}
52
+ assert_nothing_raised {polygon(1,2, 3,4, loop: true)}
53
+ assert_nothing_raised {polygon(1,2, 3,4, loop: false)}
54
+ assert_raise(ArgumentError) {polygon(1,2, 3,4, 5, loop: true)}
55
+ assert_raise(ArgumentError) {polygon(1,2, 3,4, 5, loop: false)}
56
+ assert_nothing_raised {polygon(1,2, 3,4, 5,6, loop: true)}
57
+ assert_nothing_raised {polygon(1,2, 3,4, 5,6, loop: false)}
58
+
59
+ assert_raise(ArgumentError) {polygon(polyline(1,2, 3,4, 5,6, loop: true, hole: true))}
61
60
  end
62
61
 
63
62
  def test_expand()
@@ -71,43 +70,26 @@ class TestPolygon < Test::Unit::TestCase
71
70
  }
72
71
  end
73
72
 
74
- def test_transform_with_matrix()
75
- m = Rays::Matrix.translate 10, 10
76
- assert_equal_polygon rect(20, 20, 50, 50), rect(10, 10, 50, 50).transform(m)
77
-
78
- m = Rays::Matrix.scale 2
79
- assert_equal_polygon rect(20, 20, 40, 40), rect(10, 10, 20, 20).transform(m)
80
-
81
- m = Rays::Matrix.rotate 90
82
- assert_equal_polygon rect(-10, 0, 10, 10), rect(0, 0, 10, 10).transform(m)
83
- end
84
-
85
- def test_transform_block()
73
+ def test_transform()
86
74
  o = rect(0, 0, 100, 100) - rect(10, 10, 50, 50)
87
75
  assert_equal 2, o.size
88
76
 
89
- o.transform {|lines|
90
- lines.map {|l| l.transform Rays::Matrix.translate 10, 10}
77
+ o.transform {|polylines|
78
+ m = Rays::Matrix.translate 10, 10
79
+ polylines.map {|pl| pl.with points: pl.points.map {|p| m * p}}
91
80
  }.tap {|x|
92
81
  assert_equal_polygon (rect(10, 10, 100, 100) - rect(20, 20, 50, 50)), x
93
82
  }
94
83
 
95
- o.transform {|lines|
96
- lines.reject {|l| l.to_a.include? point(10, 10)}
84
+ o.transform {|polylines|
85
+ polylines.reject {|pl| pl.to_a.include? point(10, 10)}
97
86
  }.tap {|x|
98
87
  assert_equal 1, x.size
99
88
  assert_equal 2, o.size
100
89
  }
101
90
 
102
- o.transform {|lines|
103
- lines.reject {|l| l.to_a.include? point(10, 10)}
104
- }.tap {|x|
105
- assert_equal 1, x.size
106
- assert_equal 2, o.size
107
- }
108
-
109
- o.transform {|lines|
110
- lines + [line(1, 2, 3, 4, 5, 6)]
91
+ o.transform {|polylines|
92
+ polylines + [polyline(1, 2, 3, 4, 5, 6)]
111
93
  }.tap {|x|
112
94
  assert_equal 3, x.size
113
95
  assert_equal 2, o.size
@@ -156,6 +138,31 @@ class TestPolygon < Test::Unit::TestCase
156
138
  assert_raise(IndexError) {o[-4]}
157
139
  end
158
140
 
141
+ def test_add()
142
+ assert_equal_polygon(
143
+ polygon(*rect(0, 0, 10, 10).to_a, *rect(5, 0, 10, 10).to_a),
144
+ rect(0, 0, 10, 10) + rect(5, 0, 10, 10))
145
+
146
+ assert_equal_polygon(
147
+ polygon(*rect(0, 0, 10, 10).to_a, *rect(5, 0, 10, 10).to_a, *rect(10, 0, 10, 10).to_a),
148
+ rect(0, 0, 10, 10) + [rect(5, 0, 10, 10), rect(10, 0, 10, 10)])
149
+
150
+ o = rect(0, 0, 10, 10)
151
+ assert_equal_polygon(
152
+ polygon(*rect(0, 0, 10, 10).to_a, *rect(0, 0, 10, 10).to_a),
153
+ o + o)
154
+
155
+ assert_equal_polygon rect(0, 0, 10, 10), rect(0, 0, 10, 10) + polygon()
156
+ assert_equal_polygon rect(0, 0, 10, 10), polygon() + rect(0, 0, 10, 10)
157
+ assert_equal_polygon rect(0, 0, 10, 10), rect(0, 0, 10, 10) + []
158
+
159
+ assert_equal(
160
+ polygon(
161
+ polyline(0,0, 0,10, 10,10, 10,0, loop: true, fill: true),
162
+ polyline(1,1, 2,1, 2,2, 1,2, loop: true, fill: true, hole: true)),
163
+ polygon(0,0, 0,10, 10,10, 10,0) + polyline(1,1, 2,1, 2,2, 1,2, loop: true, hole: true))
164
+ end
165
+
159
166
  def test_sub()
160
167
  rect10 = rect 0, 0, 10, 10
161
168
 
@@ -3,12 +3,6 @@ require_relative 'helper'
3
3
 
4
4
  class TestPolyline < Test::Unit::TestCase
5
5
 
6
- class Rays::Polyline
7
- def dump()
8
- map &:to_a
9
- end
10
- end
11
-
12
6
  def polyline(*args, **kwargs)
13
7
  Rays::Polyline.new(*args, **kwargs)
14
8
  end
@@ -21,32 +15,101 @@ class TestPolyline < Test::Unit::TestCase
21
15
  Rays::Bounds.new(*args)
22
16
  end
23
17
 
24
- def test_initialize()
25
- assert_equal [[1, 2], [3, 4]], polyline( 1, 2, 3, 4 ).dump
26
- assert_equal [[1, 2], [3, 4]], polyline( [1, 2], [3, 4]).dump
27
- assert_equal [[1, 1], [2, 2]], polyline( [1], [2]).dump
28
- assert_equal [[1, 1], [2, 2]], polyline(point(1), point(2)).dump
29
-
30
- assert_false polyline(1, 2, 3, 4, 5, 6 ).loop?
31
- assert_true polyline(1, 2, 3, 4, 5, 6, loop: true ).loop?
32
- assert_false polyline(1, 2, 3, 4, 5, 6, loop: false).loop?
33
- assert_true polyline( loop: true ).loop?
34
- assert_false polyline( loop: false).loop?
35
-
36
- assert_nothing_raised {polyline( loop: true)}
37
- assert_nothing_raised {polyline( loop: false)}
38
- assert_raise(ArgumentError) {polyline(1, loop: true)}
39
- assert_raise(ArgumentError) {polyline(1, loop: false)}
40
- assert_nothing_raised {polyline(1, 2, loop: true)}
41
- assert_nothing_raised {polyline(1, 2, loop: false)}
42
- assert_raise(ArgumentError) {polyline(1, 2, 3, loop: true)}
43
- assert_raise(ArgumentError) {polyline(1, 2, 3, loop: false)}
44
- assert_nothing_raised {polyline(1, 2, 3, 4, loop: true)}
45
- assert_nothing_raised {polyline(1, 2, 3, 4, loop: false)}
46
- assert_raise(ArgumentError) {polyline(1, 2, 3, 4, 5, loop: true)}
47
- assert_raise(ArgumentError) {polyline(1, 2, 3, 4, 5, loop: false)}
48
- assert_nothing_raised {polyline(1, 2, 3, 4, 5, 6, loop: true)}
49
- assert_nothing_raised {polyline(1, 2, 3, 4, 5, 6, loop: false)}
18
+ def color(*args)
19
+ Rays::Color.new(*args)
20
+ end
21
+
22
+ def dump(pl, name = :points)
23
+ pl.send(name).map(&:to_a)
24
+ end
25
+
26
+ def test_initialize_points()
27
+ assert_equal [[1,2], [3,4]], dump(polyline( 1,2, 3,4 ))
28
+ assert_equal [[1,2], [3,4]], dump(polyline( [1,2], [3,4]))
29
+ assert_equal [[1,1], [2,2]], dump(polyline( [1], [2]))
30
+ assert_equal [[1,1], [2,2]], dump(polyline(point(1), point(2)))
31
+ end
32
+
33
+ def test_initialize_colors()
34
+ assert_equal( [[1,2,3,1], [4,5,6,1]],
35
+ dump(polyline(1,2, 3,4, colors: [ 1,2,3, 4,5,6 ]), :colors))
36
+ assert_equal( [[1,2,3,1], [4,5,6,1]],
37
+ dump(polyline(1,2, 3,4, colors: [[1,2,3], [4,5,6] ]), :colors))
38
+ assert_equal( [[1,1,1,1], [2,2,2,1]],
39
+ dump(polyline(1,2, 3,4, colors: [[1], [2] ]), :colors))
40
+ assert_equal( [[1,1,1,1], [2,2,2,1]],
41
+ dump(polyline(1,2, 3,4, colors: [color(1), color(2) ]), :colors))
42
+
43
+ assert_raise(ArgumentError) {polyline([1,2, 3,4], colors: [[1,2,3]])}
44
+ end
45
+
46
+ def test_initialize_texcoords()
47
+ assert_equal( [[1,2], [3,4]],
48
+ dump(polyline(1,2, 3,4, texcoords: [ 1,2, 3,4 ]), :texcoords))
49
+ assert_equal( [[1,2], [3,4]],
50
+ dump(polyline(1,2, 3,4, texcoords: [[1,2], [3,4]]), :texcoords))
51
+ assert_equal( [[1,1], [2,2]],
52
+ dump(polyline(1,2, 3,4, texcoords: [[1], [2] ]), :texcoords))
53
+ assert_equal( [[1,2], [3,4]],
54
+ dump(polyline(1,2, 3,4, texcoords: [point(1,2), point(3,4)]), :texcoords))
55
+
56
+ assert_raise(ArgumentError) {polyline([1,2, 3,4], texcoords: [[1,2]])}
57
+ end
58
+
59
+ def test_initialize_loop_fill()
60
+ get = -> pl {[pl.loop?, pl.fill?]}
61
+
62
+ assert_equal [false, false], get[polyline(1,2, 3,4, 5,6)]
63
+
64
+ assert_equal [true, true], get[polyline(1,2, 3,4, 5,6, loop: true)]
65
+ assert_equal [false, false], get[polyline(1,2, 3,4, 5,6, loop: false)]
66
+ assert_equal [false, true], get[polyline(1,2, 3,4, 5,6, fill: true)]
67
+ assert_equal [false, false], get[polyline(1,2, 3,4, 5,6, fill: false)]
68
+
69
+ assert_equal [true, true], get[polyline(1,2, 3,4, 5,6, loop: true, fill: true)]
70
+ assert_equal [true, false], get[polyline(1,2, 3,4, 5,6, loop: true, fill: false)]
71
+ assert_equal [false, true], get[polyline(1,2, 3,4, 5,6, loop: false, fill: true)]
72
+ assert_equal [false, false], get[polyline(1,2, 3,4, 5,6, loop: false, fill: false)]
73
+
74
+ assert_equal [true, true], get[polyline( loop: true, fill: true)]
75
+ assert_equal [true, false], get[polyline( loop: true, fill: false)]
76
+ assert_equal [false, true], get[polyline( loop: false, fill: true)]
77
+ assert_equal [false, false], get[polyline( loop: false, fill: false)]
78
+ end
79
+
80
+ def test_initialize_hole()
81
+ assert_false polyline(1,2, 3,4, 5,6, loop: true).hole?
82
+
83
+ assert_true polyline(1,2, 3,4, 5,6, loop: true, hole: true) .hole?
84
+ assert_false polyline(1,2, 3,4, 5,6, loop: true, hole: false).hole?
85
+
86
+ assert_true polyline( loop: true, hole: true) .hole?
87
+ assert_false polyline( loop: true, hole: false).hole?
88
+ end
89
+
90
+ def test_initialize_errors()
91
+ assert_nothing_raised {polyline( loop: true, hole: true)}
92
+ assert_nothing_raised {polyline( loop: true, hole: false)}
93
+ assert_raise(ArgumentError) {polyline( loop: false, hole: true)}
94
+ assert_nothing_raised {polyline( loop: false, hole: false)}
95
+ assert_raise(ArgumentError) {polyline(1, loop: true)}
96
+ assert_raise(ArgumentError) {polyline(1, loop: false)}
97
+ assert_nothing_raised {polyline(1,2, loop: true, hole: true)}
98
+ assert_nothing_raised {polyline(1,2, loop: true, hole: false)}
99
+ assert_raise(ArgumentError) {polyline(1,2, loop: false, hole: true)}
100
+ assert_nothing_raised {polyline(1,2, loop: false, hole: false)}
101
+ assert_raise(ArgumentError) {polyline(1,2, 3, loop: true)}
102
+ assert_raise(ArgumentError) {polyline(1,2, 3, loop: false)}
103
+ assert_nothing_raised {polyline(1,2, 3,4, loop: true, hole: true)}
104
+ assert_nothing_raised {polyline(1,2, 3,4, loop: true, hole: false)}
105
+ assert_raise(ArgumentError) {polyline(1,2, 3,4, loop: false, hole: true)}
106
+ assert_nothing_raised {polyline(1,2, 3,4, loop: false, hole: false)}
107
+ assert_raise(ArgumentError) {polyline(1,2, 3,4, 5, loop: true)}
108
+ assert_raise(ArgumentError) {polyline(1,2, 3,4, 5, loop: false)}
109
+ assert_nothing_raised {polyline(1,2, 3,4, 5,6, loop: true, hole: true)}
110
+ assert_nothing_raised {polyline(1,2, 3,4, 5,6, loop: true, hole: false)}
111
+ assert_raise(ArgumentError) {polyline(1,2, 3,4, 5,6, loop: false, hole: true)}
112
+ assert_nothing_raised {polyline(1,2, 3,4, 5,6, loop: false, hole: false)}
50
113
  end
51
114
 
52
115
  def test_expand()
@@ -91,46 +154,74 @@ class TestPolyline < Test::Unit::TestCase
91
154
  assert_raise(ArgumentError) {pl[].expand 1, 99}
92
155
  end
93
156
 
94
- def test_transform_with_materix()
95
- m = Rays::Matrix.translate 100, 200
96
- polyline([10,10], [20,20]).transform(m).tap {|o|
97
- assert_equal [[110,210], [120,220]], o.dump
98
- }
157
+ def test_with_points()
158
+ assert_equal polyline(5,6, 7,8), polyline(1,2, 3,4).with(points: [5,6, 7,8])
159
+ assert_equal polyline(5,6), polyline(1,2, 3,4).with(points: [5,6])
99
160
 
100
- m = Rays::Matrix.scale 2
101
- polyline([10,10], [20,20]).transform(m).tap {|o|
102
- assert_equal [[20,20], [40,40]], o.dump
103
- }
161
+ assert_raise(ArgumentError) do
162
+ polyline(1,2, 3,4, colors: [[1], [2]]).with(points: [1,2])
163
+ end
164
+ end
104
165
 
105
- m = Rays::Matrix.rotate 90
106
- polyline([10,10], [20,20]).transform(m).tap {|o|
107
- assert_equal [[-10,10], [-20,20]], o.dump
108
- }
166
+ def test_with_loop_fill()
167
+ assert_equal(
168
+ polyline(1,2, 3,4, 5,6, loop: false, fill: false),
169
+ polyline(1,2, 3,4, 5,6))
170
+ assert_equal(
171
+ polyline(1,2, 3,4, 5,6, loop: true, fill: false),
172
+ polyline(1,2, 3,4, 5,6).with(loop: true))
173
+ assert_equal(
174
+ polyline(1,2, 3,4, 5,6, loop: false, fill: true),
175
+ polyline(1,2, 3,4, 5,6).with( fill: true))
109
176
  end
110
177
 
111
- def test_transform_with_block()
112
- polyline([10,10], [20,20] ).transform {|points|
113
- points.map {|p| p + [10, 20]}
114
- }.tap {|o|
115
- assert_equal [[20,30], [30,40]], o.dump
116
- }
178
+ def test_with_colors()
179
+ assert_equal(
180
+ polyline(1,2, 3,4, texcoords: [1,2, 3,4]),
181
+ polyline(1,2, 3,4).with(texcoords: [1,2, 3,4]))
182
+ assert_equal(
183
+ polyline(1,2, 3,4, texcoords: [5,6, 7,8]),
184
+ polyline(1,2, 3,4, texcoords: [1,2, 3,4]).with(texcoords: [5,6, 7,8]))
117
185
 
118
- polyline([10,10], [20,20], [30,30] ).transform {|points|
119
- points.reject {|p| p == point(20, 20)}
120
- }.tap {|o|
121
- assert_equal [[10,10], [30,30]], o.dump
122
- }
186
+ assert_raise(ArgumentError) {polyline(1,2, 3,4).with(colors: [[1]])}
187
+ end
123
188
 
124
- polyline([10,10], [20,20], [30,30] ).transform {|points|
125
- points + [[40, 40]]
126
- }.tap {|o|
127
- assert_equal [[10,10], [20,20], [30,30], [40,40]], o.dump
128
- }
189
+ def test_with_texcoords()
190
+ assert_equal(
191
+ polyline(1,2, 3,4, colors: [[1], [2]]),
192
+ polyline(1,2, 3,4).with(colors: [[1], [2]]))
193
+ assert_equal(
194
+ polyline(1,2, 3,4, colors: [[3], [4]]),
195
+ polyline(1,2, 3,4, colors: [[1], [2]]).with(colors: [[3], [4]]))
129
196
 
130
- polyline([10,10], [20,20], [30,30], loop: false).transform(loop: true).tap {|o|
131
- assert_equal [[10,10], [20,20], [30,30]], o.dump
132
- assert o.loop?
133
- }
197
+ assert_raise(ArgumentError) {polyline(1,2, 3,4).with(colors: [[1]])}
198
+ end
199
+
200
+ def test_with_hole()
201
+ assert_equal(
202
+ polyline(1,2, 3,4, 5,6, loop: true, hole: false),
203
+ polyline(1,2, 3,4, 5,6, loop: true))
204
+ assert_equal(
205
+ polyline(1,2, 3,4, 5,6, loop: true, hole: true),
206
+ polyline(1,2, 3,4, 5,6, loop: true).with(hole: true))
207
+ end
208
+
209
+ def test_equal()
210
+ assert_false polyline(1,2, 3,4) == polyline(1,2)
211
+
212
+ assert_true polyline(1,2, 3,4) == polyline(1,2, 3,4)
213
+ assert_false polyline(1,2, 3,4) == polyline(1,2, 3,9)
214
+
215
+ assert_true polyline(1,2, 3,4, loop: true, fill: true) == polyline(1,2, 3,4, loop: true, fill: true)
216
+ assert_true polyline(1,2, 3,4, loop: false, fill: false) == polyline(1,2, 3,4, loop: false, fill: false)
217
+ assert_false polyline(1,2, 3,4, loop: false, fill: false) == polyline(1,2, 3,4, loop: true, fill: false)
218
+ assert_false polyline(1,2, 3,4, loop: false, fill: false) == polyline(1,2, 3,4, loop: false, fill: true)
219
+
220
+ assert_true polyline(1,2, 3,4, colors: [[1], [2]]) == polyline(1,2, 3,4, colors: [[1], [2]])
221
+ assert_false polyline(1,2, 3,4, colors: [[1], [2]]) == polyline(1,2, 3,4, colors: [[1], [9]])
222
+
223
+ assert_true polyline(1,2, 3,4, texcoords: [1,2, 3,4]) == polyline(1,2, 3,4, texcoords: [1,2, 3,4])
224
+ assert_false polyline(1,2, 3,4, texcoords: [1,2, 3,4]) == polyline(1,2, 3,4, texcoords: [1,2, 3,9])
134
225
  end
135
226
 
136
227
  def test_bounds()
@@ -140,18 +231,34 @@ class TestPolyline < Test::Unit::TestCase
140
231
  assert_not polyline() .bounds.valid?
141
232
  end
142
233
 
234
+ def test_loop_fill()
235
+ get = -> pl {[pl.loop?, pl.fill?]}
236
+
237
+ assert_equal [false, false], get[polyline(1,2, 3,4)]
238
+ assert_equal [true, true], get[polyline(1,2, 3,4, loop: true)]
239
+ assert_equal [false, false], get[polyline(1,2, 3,4, loop: false)]
240
+ assert_equal [false, true], get[polyline(1,2, 3,4, fill: true)]
241
+ assert_equal [false, false], get[polyline(1,2, 3,4, fill: false)]
242
+ assert_equal [true, true], get[polyline(1,2, 3,4, loop: true, fill: true)]
243
+ assert_equal [false, false], get[polyline(1,2, 3,4, loop: false, fill: false)]
244
+ assert_equal [true, false], get[polyline(1,2, 3,4, loop: true, fill: false)]
245
+ assert_equal [false, true], get[polyline(1,2, 3,4, loop: false, fill: true)]
246
+ end
247
+
143
248
  def test_size()
144
- assert_equal 2, polyline(1, 2, 3, 4, ).size
145
- assert_equal 3, polyline(1, 2, 3, 4, 5, 6).size
249
+ assert_equal 0, polyline() .size
250
+ assert_equal 1, polyline(1,2) .size
251
+ assert_equal 2, polyline(1,2, 3,4) .size
252
+ assert_equal 3, polyline(1,2, 3,4, 5,6).size
146
253
  end
147
254
 
148
255
  def test_empty?()
149
- assert_equal true, polyline( ).empty?
150
- assert_equal false, polyline(1, 2, 3, 4).empty?
256
+ assert_equal true, polyline() .empty?
257
+ assert_equal false, polyline(1,2, 3,4).empty?
151
258
  end
152
259
 
153
260
  def test_index()
154
- o = polyline 1, 2, 3, 4, 5, 6
261
+ o = polyline 1,2, 3,4, 5,6
155
262
  assert_equal [1, 2], o[ 0].to_a
156
263
  assert_equal [3, 4], o[ 1].to_a
157
264
  assert_equal [5, 6], o[-1].to_a
@@ -161,8 +268,20 @@ class TestPolyline < Test::Unit::TestCase
161
268
 
162
269
  def test_inspect()
163
270
  assert_equal(
164
- "#<Rays::Polyline [1.0, 2.0], [3.0, 4.0], loop: false>",
165
- polyline(1, 2, 3, 4).inspect)
271
+ "#<Rays::Polyline [1.0,2.0, 3.0,4.0] loop:false fill:false hole:false colors:0 texcoords:0>",
272
+ polyline(1,2, 3,4).inspect)
273
+ assert_equal(
274
+ "#<Rays::Polyline [1.0,2.0, 3.0,4.0] loop:true fill:false hole:false colors:0 texcoords:0>",
275
+ polyline(1,2, 3,4, loop: true, fill: false).inspect)
276
+ assert_equal(
277
+ "#<Rays::Polyline [1.0,2.0, 3.0,4.0] loop:false fill:true hole:false colors:0 texcoords:0>",
278
+ polyline(1,2, 3,4, loop: false, fill: true).inspect)
279
+ assert_equal(
280
+ "#<Rays::Polyline [1.0,2.0, 3.0,4.0] loop:false fill:false hole:false colors:2 texcoords:0>",
281
+ polyline(1,2, 3,4, colors: [[1], [2]]).inspect)
282
+ assert_equal(
283
+ "#<Rays::Polyline [1.0,2.0, 3.0,4.0] loop:false fill:false hole:false colors:0 texcoords:2>",
284
+ polyline(1,2, 3,4, texcoords: [1,2, 3,4]).inspect)
166
285
  end
167
286
 
168
287
  end# TestPolyline
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rays
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.47
4
+ version: 0.1.49
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-09 00:00:00.000000000 Z
11
+ date: 2024-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.41
19
+ version: 0.1.42
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.41
26
+ version: 0.1.42
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.42
33
+ version: 0.1.44
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.42
40
+ version: 0.1.44
41
41
  description: This library helps you to develop graphics application with OpenGL.
42
42
  email: xordog@gmail.com
43
43
  executables: []
@@ -55,14 +55,13 @@ extra_rdoc_files:
55
55
  - ".doc/ext/rays/image.cpp"
56
56
  - ".doc/ext/rays/matrix.cpp"
57
57
  - ".doc/ext/rays/native.cpp"
58
- - ".doc/ext/rays/noise.cpp"
59
58
  - ".doc/ext/rays/painter.cpp"
60
59
  - ".doc/ext/rays/point.cpp"
61
60
  - ".doc/ext/rays/polygon.cpp"
62
- - ".doc/ext/rays/polygon_line.cpp"
63
61
  - ".doc/ext/rays/polyline.cpp"
64
62
  - ".doc/ext/rays/rays.cpp"
65
63
  - ".doc/ext/rays/shader.cpp"
64
+ - ".doc/ext/rays/util.cpp"
66
65
  files:
67
66
  - ".doc/ext/rays/bitmap.cpp"
68
67
  - ".doc/ext/rays/bounds.cpp"
@@ -75,14 +74,13 @@ files:
75
74
  - ".doc/ext/rays/image.cpp"
76
75
  - ".doc/ext/rays/matrix.cpp"
77
76
  - ".doc/ext/rays/native.cpp"
78
- - ".doc/ext/rays/noise.cpp"
79
77
  - ".doc/ext/rays/painter.cpp"
80
78
  - ".doc/ext/rays/point.cpp"
81
79
  - ".doc/ext/rays/polygon.cpp"
82
- - ".doc/ext/rays/polygon_line.cpp"
83
80
  - ".doc/ext/rays/polyline.cpp"
84
81
  - ".doc/ext/rays/rays.cpp"
85
82
  - ".doc/ext/rays/shader.cpp"
83
+ - ".doc/ext/rays/util.cpp"
86
84
  - ".github/workflows/release-gem.yml"
87
85
  - ".github/workflows/tag.yml"
88
86
  - ".github/workflows/test.yml"
@@ -107,14 +105,13 @@ files:
107
105
  - ext/rays/image.cpp
108
106
  - ext/rays/matrix.cpp
109
107
  - ext/rays/native.cpp
110
- - ext/rays/noise.cpp
111
108
  - ext/rays/painter.cpp
112
109
  - ext/rays/point.cpp
113
110
  - ext/rays/polygon.cpp
114
- - ext/rays/polygon_line.cpp
115
111
  - ext/rays/polyline.cpp
116
112
  - ext/rays/rays.cpp
117
113
  - ext/rays/shader.cpp
114
+ - ext/rays/util.cpp
118
115
  - include/rays.h
119
116
  - include/rays/bitmap.h
120
117
  - include/rays/bounds.h
@@ -128,7 +125,6 @@ files:
128
125
  - include/rays/font.h
129
126
  - include/rays/image.h
130
127
  - include/rays/matrix.h
131
- - include/rays/noise.h
132
128
  - include/rays/opengl.h
133
129
  - include/rays/painter.h
134
130
  - include/rays/point.h
@@ -153,6 +149,7 @@ files:
153
149
  - include/rays/ruby/rays.h
154
150
  - include/rays/ruby/shader.h
155
151
  - include/rays/shader.h
152
+ - include/rays/util.h
156
153
  - lib/rays.rb
157
154
  - lib/rays/autoinit.rb
158
155
  - lib/rays/bitmap.rb
@@ -168,7 +165,6 @@ files:
168
165
  - lib/rays/painter.rb
169
166
  - lib/rays/point.rb
170
167
  - lib/rays/polygon.rb
171
- - lib/rays/polygon_line.rb
172
168
  - lib/rays/polyline.rb
173
169
  - lib/rays/shader.rb
174
170
  - rays.gemspec
@@ -196,7 +192,6 @@ files:
196
192
  - src/ios/rays.mm
197
193
  - src/matrix.cpp
198
194
  - src/matrix.h
199
- - src/noise.cpp
200
195
  - src/opengl.cpp
201
196
  - src/opengl.h
202
197
  - src/osx/bitmap.h
@@ -224,6 +219,7 @@ files:
224
219
  - src/shader_source.h
225
220
  - src/texture.cpp
226
221
  - src/texture.h
222
+ - src/util.cpp
227
223
  - src/win32/bitmap.cpp
228
224
  - src/win32/font.cpp
229
225
  - src/win32/font.h
@@ -242,7 +238,6 @@ files:
242
238
  - test/test_painter_shape.rb
243
239
  - test/test_point.rb
244
240
  - test/test_polygon.rb
245
- - test/test_polygon_line.rb
246
241
  - test/test_polyline.rb
247
242
  - test/test_rays_init.rb
248
243
  - test/test_shader.rb
@@ -265,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
260
  - !ruby/object:Gem::Version
266
261
  version: '0'
267
262
  requirements: []
268
- rubygems_version: 3.4.10
263
+ rubygems_version: 3.4.19
269
264
  signing_key:
270
265
  specification_version: 4
271
266
  summary: A Drawing Engine using OpenGL.
@@ -282,7 +277,6 @@ test_files:
282
277
  - test/test_painter_shape.rb
283
278
  - test/test_point.rb
284
279
  - test/test_polygon.rb
285
- - test/test_polygon_line.rb
286
280
  - test/test_polyline.rb
287
281
  - test/test_rays_init.rb
288
282
  - test/test_shader.rb