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
@@ -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