rays 0.1.47 → 0.1.48

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 (69) 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/defs.cpp +32 -8
  5. data/.doc/ext/rays/font.cpp +50 -2
  6. data/.doc/ext/rays/native.cpp +2 -4
  7. data/.doc/ext/rays/painter.cpp +73 -3
  8. data/.doc/ext/rays/polygon.cpp +131 -97
  9. data/.doc/ext/rays/polyline.cpp +89 -10
  10. data/.doc/ext/rays/rays.cpp +80 -0
  11. data/.doc/ext/rays/{noise.cpp → util.cpp} +2 -2
  12. data/ChangeLog.md +23 -0
  13. data/VERSION +1 -1
  14. data/ext/rays/bitmap.cpp +288 -46
  15. data/ext/rays/camera.cpp +2 -2
  16. data/ext/rays/defs.cpp +32 -8
  17. data/ext/rays/defs.h +56 -3
  18. data/ext/rays/font.cpp +56 -4
  19. data/ext/rays/native.cpp +2 -4
  20. data/ext/rays/painter.cpp +80 -3
  21. data/ext/rays/polygon.cpp +134 -99
  22. data/ext/rays/polyline.cpp +95 -9
  23. data/ext/rays/rays.cpp +80 -0
  24. data/ext/rays/{noise.cpp → util.cpp} +2 -2
  25. data/include/rays/defs.h +24 -26
  26. data/include/rays/font.h +17 -3
  27. data/include/rays/painter.h +14 -0
  28. data/include/rays/polygon.h +56 -37
  29. data/include/rays/polyline.h +17 -2
  30. data/include/rays/ruby/polygon.h +0 -11
  31. data/include/rays/ruby/rays.h +4 -0
  32. data/include/rays/{noise.h → util.h} +2 -2
  33. data/lib/rays/color.rb +1 -1
  34. data/lib/rays/font.rb +1 -1
  35. data/lib/rays/image.rb +1 -1
  36. data/lib/rays/painter.rb +12 -1
  37. data/lib/rays/point.rb +1 -1
  38. data/lib/rays/polygon.rb +44 -35
  39. data/lib/rays/polyline.rb +54 -8
  40. data/lib/rays.rb +0 -1
  41. data/rays.gemspec +1 -1
  42. data/src/font.cpp +24 -2
  43. data/src/font.h +8 -1
  44. data/src/ios/font.mm +88 -27
  45. data/src/osx/font.mm +90 -28
  46. data/src/osx/helper.h +2 -2
  47. data/src/osx/helper.mm +2 -2
  48. data/src/painter.cpp +155 -85
  49. data/src/painter.h +11 -3
  50. data/src/polygon.cpp +404 -315
  51. data/src/polyline.cpp +138 -27
  52. data/src/polyline.h +3 -5
  53. data/src/shader.cpp +36 -4
  54. data/src/shader.h +1 -1
  55. data/src/texture.cpp +2 -2
  56. data/src/{noise.cpp → util.cpp} +1 -1
  57. data/src/win32/font.cpp +1 -1
  58. data/test/test_bitmap.rb +12 -5
  59. data/test/test_color.rb +4 -0
  60. data/test/test_font.rb +20 -2
  61. data/test/test_image.rb +18 -18
  62. data/test/test_point.rb +1 -1
  63. data/test/test_polygon.rb +52 -45
  64. data/test/test_polyline.rb +191 -72
  65. metadata +9 -15
  66. data/.doc/ext/rays/polygon_line.cpp +0 -97
  67. data/ext/rays/polygon_line.cpp +0 -100
  68. data/lib/rays/polygon_line.rb +0 -33
  69. data/test/test_polygon_line.rb +0 -164
data/include/rays/defs.h CHANGED
@@ -23,32 +23,6 @@ namespace Rays
23
23
  typedef float coord;
24
24
 
25
25
 
26
- enum DrawMode
27
- {
28
-
29
- DRAW_POINTS = 0,
30
-
31
- DRAW_LINES,
32
-
33
- DRAW_LINE_STRIP,
34
-
35
- DRAW_TRIANGLES,
36
-
37
- DRAW_TRIANGLE_STRIP,
38
-
39
- DRAW_TRIANGLE_FAN,
40
-
41
- DRAW_QUADS,
42
-
43
- DRAW_QUAD_STRIP,
44
-
45
- DRAW_POLYGON,
46
-
47
- DRAW_MAX,
48
-
49
- };// DrawMode
50
-
51
-
52
26
  enum CapType
53
27
  {
54
28
 
@@ -108,6 +82,30 @@ namespace Rays
108
82
  };// BlendMode
109
83
 
110
84
 
85
+ enum TexCoordMode
86
+ {
87
+
88
+ TEXCOORD_IMAGE = 0,
89
+
90
+ TEXCOORD_NORMAL,
91
+
92
+ TEXCOORD_MODE_MAX
93
+
94
+ };// TexCoordMode
95
+
96
+
97
+ enum TexCoordWrap
98
+ {
99
+
100
+ TEXCOORD_CLAMP = 0,
101
+
102
+ TEXCOORD_REPEAT,
103
+
104
+ TEXCOORD_WRAP_MAX
105
+
106
+ };// TexCoordWrap
107
+
108
+
111
109
  }// Rays
112
110
 
113
111
 
data/include/rays/font.h CHANGED
@@ -4,6 +4,8 @@
4
4
  #define __RAYS_FONT_H__
5
5
 
6
6
 
7
+ #include <vector>
8
+ #include <map>
7
9
  #include <xot/pimpl.h>
8
10
  #include <rays/defs.h>
9
11
 
@@ -17,15 +19,21 @@ namespace Rays
17
19
 
18
20
  public:
19
21
 
22
+ enum {DEFAULT_SIZE = 12};
23
+
20
24
  Font ();
21
25
 
22
- Font (const char* name, coord size = 0);
26
+ Font (const char* name, coord size = DEFAULT_SIZE);
23
27
 
24
28
  ~Font ();
25
29
 
30
+ Font dup () const;
31
+
26
32
  String name () const;
27
33
 
28
- coord size () const;
34
+ void set_size (coord size);
35
+
36
+ coord size () const;
29
37
 
30
38
  coord get_width (const char* str) const;
31
39
 
@@ -45,7 +53,13 @@ namespace Rays
45
53
  };// Font
46
54
 
47
55
 
48
- const Font& default_font ();
56
+ typedef std::map<String, std::vector<String>> FontFamilyMap;
57
+
58
+ const FontFamilyMap& get_font_families ();
59
+
60
+ Font load_font (const char* path, coord size = Font::DEFAULT_SIZE);
61
+
62
+ const Font& get_default_font ();
49
63
 
50
64
 
51
65
  }// Rays
@@ -253,6 +253,20 @@ namespace Rays
253
253
 
254
254
  const Font& font () const;
255
255
 
256
+ void set_texture (const Image& image);
257
+
258
+ void no_texture ();
259
+
260
+ const Image& texture () const;
261
+
262
+ void set_texcoord_mode (TexCoordMode mode);
263
+
264
+ TexCoordMode texcoord_mode () const;
265
+
266
+ void set_texcoord_wrap (TexCoordWrap wrap);
267
+
268
+ TexCoordWrap texcoord_wrap () const;
269
+
256
270
  void set_shader (const Shader& shader);
257
271
 
258
272
  void no_shader ();
@@ -20,50 +20,19 @@ namespace Rays
20
20
 
21
21
  public:
22
22
 
23
- struct Line : public Polyline
24
- {
23
+ typedef std::vector<Polyline> PolylineList;
25
24
 
26
- typedef Polyline Super;
27
-
28
- public:
29
-
30
- Line ();
31
-
32
- Line (
33
- const Point* points, size_t size,
34
- bool loop = true,
35
- bool hole = false);
36
-
37
- Line (const Polyline& polyline, bool hole = false);
38
-
39
- bool hole () const;
40
-
41
- operator bool () const;
42
-
43
- bool operator ! () const;
44
-
45
- private:
46
-
47
- bool hole_;
48
-
49
- };// Line
50
-
51
- typedef std::vector<Line> LineList;
52
-
53
- typedef LineList::const_iterator const_iterator;
25
+ typedef PolylineList::const_iterator const_iterator;
54
26
 
55
27
  Polygon ();
56
28
 
57
29
  Polygon (
58
- const Point* points, size_t size, bool loop = true);
59
-
60
- Polygon (
61
- DrawMode mode,
62
- const Point* points, size_t size, bool loop = true);
30
+ const Point* points, size_t size, bool loop = true,
31
+ const Color* colors = NULL, const Coord3* texcoords = NULL);
63
32
 
64
33
  Polygon (const Polyline& polyline);
65
34
 
66
- Polygon (const Line* lines, size_t size);
35
+ Polygon (const Polyline* polylines, size_t size);
67
36
 
68
37
  ~Polygon ();
69
38
 
@@ -84,12 +53,14 @@ namespace Rays
84
53
 
85
54
  const_iterator end () const;
86
55
 
87
- const Line& operator [] (size_t index) const;
56
+ const Polyline& operator [] (size_t index) const;
88
57
 
89
58
  operator bool () const;
90
59
 
91
60
  bool operator ! () const;
92
61
 
62
+ friend Polygon operator + (const Polygon& lhs, const Polyline& rhs);
63
+
93
64
  friend Polygon operator + (const Polygon& lhs, const Polygon& rhs);
94
65
 
95
66
  friend Polygon operator - (const Polygon& lhs, const Polygon& rhs);
@@ -115,6 +86,13 @@ namespace Rays
115
86
  };// Polygon
116
87
 
117
88
 
89
+ Polygon create_point (coord x, coord y);
90
+
91
+ Polygon create_point (const Point& point);
92
+
93
+ Polygon create_points (const Point* points, size_t size);
94
+
95
+
118
96
  Polygon create_line (coord x1, coord y1, coord x2, coord y2);
119
97
 
120
98
  Polygon create_line (const Point& p1, const Point& p2);
@@ -123,6 +101,29 @@ namespace Rays
123
101
 
124
102
  Polygon create_line (const Polyline& polyline);
125
103
 
104
+ Polygon create_lines (const Point* points, size_t size);
105
+
106
+
107
+ Polygon create_triangle (
108
+ coord x1, coord y1, coord x2, coord y2, coord x3, coord y3,
109
+ bool loop = true);
110
+
111
+ Polygon create_triangle (
112
+ const Point& p1, const Point& p2, const Point& p3,
113
+ bool loop = true);
114
+
115
+ Polygon create_triangles (
116
+ const Point* points, size_t size, bool loop = true,
117
+ const Color* colors = NULL, const Coord3* texcoords = NULL);
118
+
119
+ Polygon create_triangle_strip (
120
+ const Point* points, size_t size,
121
+ const Color* colors = NULL, const Coord3* texcoords = NULL);
122
+
123
+ Polygon create_triangle_fan (
124
+ const Point* points, size_t size,
125
+ const Color* colors = NULL, const Coord3* texcoords = NULL);
126
+
126
127
 
127
128
  Polygon create_rect (
128
129
  coord x, coord y, coord width, coord height,
@@ -147,6 +148,24 @@ namespace Rays
147
148
  uint nsegment = 0);
148
149
 
149
150
 
151
+ Polygon create_quad (
152
+ coord x1, coord y1, coord x2, coord y2,
153
+ coord x3, coord y3, coord x4, coord y4,
154
+ bool loop = true);
155
+
156
+ Polygon create_quad (
157
+ const Point& p1, const Point& p2, const Point& p3, const Point& p4,
158
+ bool loop = true);
159
+
160
+ Polygon create_quads (
161
+ const Point* points, size_t size, bool loop = true,
162
+ const Color* colors = NULL, const Coord3* texcoords = NULL);
163
+
164
+ Polygon create_quad_strip (
165
+ const Point* points, size_t size,
166
+ const Color* colors = NULL, const Coord3* texcoords = NULL);
167
+
168
+
150
169
  Polygon create_ellipse (
151
170
  coord x, coord y, coord width, coord height = 0,
152
171
  const Point& hole_size = 0,
@@ -15,6 +15,7 @@ namespace Rays
15
15
  {
16
16
 
17
17
 
18
+ struct Color;
18
19
  class Polygon;
19
20
 
20
21
 
@@ -29,9 +30,15 @@ namespace Rays
29
30
 
30
31
  Polyline ();
31
32
 
32
- Polyline (const Point* points, size_t size, bool loop = false);
33
+ Polyline (
34
+ const Point* points, size_t size, bool loop = false,
35
+ const Color* colors = NULL, const Coord3* texcoords = NULL,
36
+ bool hole = false);
33
37
 
34
- Polyline (const Point* points, size_t size, bool loop, bool fill);
38
+ Polyline (
39
+ const Point* points, size_t size, bool loop, bool fill,
40
+ const Color* colors = NULL, const Coord3* texcoords = NULL,
41
+ bool hole = false);
35
42
 
36
43
  ~Polyline ();
37
44
 
@@ -48,6 +55,14 @@ namespace Rays
48
55
 
49
56
  bool fill () const;
50
57
 
58
+ bool hole () const;
59
+
60
+ const Point* points () const;
61
+
62
+ const Color* colors () const;
63
+
64
+ const Coord3* texcoords () const;
65
+
51
66
  size_t size () const;
52
67
 
53
68
  bool empty () const;
@@ -11,8 +11,6 @@
11
11
 
12
12
  RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Polygon)
13
13
 
14
- RUCY_DECLARE_VALUE_OR_ARRAY_FROM_TO(Rays::Polygon::Line)
15
-
16
14
 
17
15
  namespace Rays
18
16
  {
@@ -21,9 +19,6 @@ namespace Rays
21
19
  Rucy::Class polygon_class ();
22
20
  // class Rays::Polygon
23
21
 
24
- Rucy::Class polygon_line_class ();
25
- // class Rays::Polygon::Line
26
-
27
22
 
28
23
  }// Rays
29
24
 
@@ -38,12 +33,6 @@ namespace Rucy
38
33
  return Rays::polygon_class();
39
34
  }
40
35
 
41
- template <> inline Class
42
- get_ruby_class<Rays::Polygon::Line> ()
43
- {
44
- return Rays::polygon_line_class();
45
- }
46
-
47
36
 
48
37
  }// Rucy
49
38
 
@@ -15,6 +15,10 @@ RUCY_DECLARE_CONVERT_TO(Rays::JoinType)
15
15
 
16
16
  RUCY_DECLARE_CONVERT_TO(Rays::BlendMode)
17
17
 
18
+ RUCY_DECLARE_CONVERT_TO(Rays::TexCoordMode)
19
+
20
+ RUCY_DECLARE_CONVERT_TO(Rays::TexCoordWrap)
21
+
18
22
 
19
23
  namespace Rays
20
24
  {
@@ -1,7 +1,7 @@
1
1
  // -*- c++ -*-
2
2
  #pragma once
3
- #ifndef __RAYS_NOISE_H__
4
- #define __RAYS_NOISE_H__
3
+ #ifndef __RAYS_UTIL_H__
4
+ #define __RAYS_UTIL_H__
5
5
 
6
6
 
7
7
  #include <rays/defs.h>
data/lib/rays/color.rb CHANGED
@@ -82,7 +82,7 @@ module Rays
82
82
  end
83
83
 
84
84
  def inspect()
85
- "#<#{self.class.name} #{to_s}>"
85
+ "#<#{self.class.name} #{to_a.join ' '}>"
86
86
  end
87
87
 
88
88
  end# Color
data/lib/rays/font.rb CHANGED
@@ -17,7 +17,7 @@ module Rays
17
17
  end
18
18
 
19
19
  def inspect()
20
- "#<Rays::Font name=#{name}, size=#{size}>"
20
+ "#<Rays::Font name='#{name}', size=#{size}>"
21
21
  end
22
22
 
23
23
  end# Font
data/lib/rays/image.rb CHANGED
@@ -9,7 +9,7 @@ module Rays
9
9
 
10
10
  extend Forwardable
11
11
 
12
- def_delegators :bitmap, :[], :[]=
12
+ def_delegators :bitmap, :pixels=, :pixels, :[]=, :[]
13
13
 
14
14
  def paint(&block)
15
15
  painter.paint self, &block
data/lib/rays/painter.rb CHANGED
@@ -118,9 +118,20 @@ module Rays
118
118
  replace: BLEND_REPLACE
119
119
  }
120
120
 
121
+ const_symbol_accessor :texcoord_mode, **{
122
+ image: TEXCOORD_IMAGE,
123
+ normal: TEXCOORD_NORMAL
124
+ }
125
+
126
+ const_symbol_accessor :texcoord_wrap, **{
127
+ clamp: TEXCOORD_CLAMP,
128
+ repeat: TEXCOORD_REPEAT
129
+ }
130
+
121
131
  universal_accessor :background, :fill, :stroke, :color,
122
132
  :stroke_width, :stroke_outset, :stroke_cap, :stroke_join, :miter_limit,
123
- :nsegment, :blend_mode, :shader, :clip, :font
133
+ :nsegment, :blend_mode, :texture, :texcoord_mode, :texcoord_wrap,
134
+ :shader, :clip, :font
124
135
 
125
136
  private
126
137
 
data/lib/rays/point.rb CHANGED
@@ -47,7 +47,7 @@ module Rays
47
47
  end
48
48
 
49
49
  def inspect()
50
- "#<Rays::Point #{to_a(3).join ', '}>"
50
+ "#<Rays::Point #{to_a(3).join ' '}>"
51
51
  end
52
52
 
53
53
  end# Point
data/lib/rays/polygon.rb CHANGED
@@ -8,74 +8,83 @@ module Rays
8
8
  class Polygon
9
9
 
10
10
  include Enumerable
11
+ include Comparable
11
12
 
12
- def initialize(*args, loop: true)
13
- setup args, loop
13
+ def initialize(*args, loop: true, colors: nil, texcoords: nil)
14
+ setup args, loop, colors, texcoords
14
15
  end
15
16
 
16
- def transform(matrix = nil, &block)
17
- lines = to_a
18
- lines = lines.map {|line| line.transform matrix} if matrix
19
- lines = block.call lines if block
20
- self.class.new(*lines)
17
+ def transform(&block)
18
+ polylines = block.call to_a
19
+ self.class.new(*polylines)
21
20
  end
22
21
 
23
22
  def intersects(obj)
24
23
  !(self & obj).empty?
25
24
  end
26
25
 
27
- def self.points(*args)
28
- points! args
26
+ def <=>(o)
27
+ (size <=> o.size).then {|cmp| return cmp if cmp != 0}
28
+ to_a.zip(o.to_a).each {|a, b| cmp = a <=> b; return cmp if cmp != 0}
29
+ 0
29
30
  end
30
31
 
31
- def self.lines(*args)
32
- lines! args
32
+ def inspect()
33
+ "#<Rays::Polygon [#{map {|polyline| polyline.inspect}.join ', '}]>"
33
34
  end
34
35
 
35
- def self.line_strip(*args, loop: false)
36
- line_strip! args, loop
36
+ def self.points(*points)
37
+ points! points
37
38
  end
38
39
 
39
- def self.rect(
40
- *args, round: nil, lt: nil, rt: nil, lb: nil, rb: nil,
41
- nsegment: nil)
40
+ def self.line(*points, loop: false)
41
+ line! points, loop
42
+ end
42
43
 
43
- rect! args, round, lt, rt, lb, rb, nsegment
44
+ def self.lines(*points)
45
+ lines! points
44
46
  end
45
47
 
46
- def self.ellipse(
47
- *args, center: nil, radius: nil, hole: nil, from: nil, to: nil,
48
- nsegment: nil)
48
+ def self.triangles(*points, loop: true, colors: nil, texcoords: nil)
49
+ triangles! points, loop, colors, texcoords
50
+ end
49
51
 
50
- ellipse! args, center, radius, hole, from, to, nsegment
52
+ def self.triangle_strip(*points, colors: nil, texcoords: nil)
53
+ triangle_strip! points, colors, texcoords
51
54
  end
52
55
 
53
- def self.triangles(*args, loop: true)
54
- triangles! args, loop
56
+ def self.triangle_fan(*points, colors: nil, texcoords: nil)
57
+ triangle_fan! points, colors, texcoords
55
58
  end
56
59
 
57
- def self.triangle_strip(*args)
58
- triangle_strip! args
60
+ def self.rect(
61
+ *args, round: nil, lt: nil, rt: nil, lb: nil, rb: nil,
62
+ nsegment: nil)
63
+
64
+ rect! args, round, lt, rt, lb, rb, nsegment
59
65
  end
60
66
 
61
- def self.triangle_fan(*args)
62
- triangle_fan! args
67
+ def self.quads(*points, loop: true, colors: nil, texcoords: nil)
68
+ quads! points, loop, colors, texcoords
63
69
  end
64
70
 
65
- def self.quads(*args, loop: true)
66
- quads! args, loop
71
+ def self.quad_strip(*points, colors: nil, texcoords: nil)
72
+ quad_strip! points, colors, texcoords
67
73
  end
68
74
 
69
- def self.quad_strip(*args)
70
- quad_strip! args
75
+ def self.ellipse(
76
+ *args, center: nil, radius: nil, hole: nil, from: nil, to: nil,
77
+ nsegment: nil)
78
+
79
+ ellipse! args, center, radius, hole, from, to, nsegment
71
80
  end
72
81
 
73
- def self.curve(*args, loop: false)
74
- curve! args, loop
82
+ def self.curve(*points, loop: false)
83
+ curve! points, loop
75
84
  end
76
85
 
77
- def self.bezier(*args, loop: false)
78
- bezier! args, loop
86
+ def self.bezier(*points, loop: false)
87
+ bezier! points, loop
79
88
  end
80
89
 
81
90
  end# Polygon
data/lib/rays/polyline.rb CHANGED
@@ -7,20 +7,66 @@ module Rays
7
7
  class Polyline
8
8
 
9
9
  include Enumerable
10
+ include Comparable
10
11
 
11
- def initialize(*points, loop: false)
12
- setup points, loop
12
+ def initialize(
13
+ *points, loop: false, fill: nil, colors: nil, texcoords: nil, hole: false)
14
+
15
+ setup points, loop, (fill != nil ? fill : loop), colors, texcoords, hole
16
+ end
17
+
18
+ def with(**kwargs)
19
+ points_, loop_, fill_, colors_, texcoords_, hole_ =
20
+ kwargs.values_at :points, :loop, :fill, :colors, :texcoords, :hole
21
+ self.class.new(
22
+ *(points_ || (points? ? points : [])),
23
+ loop: loop_ != nil ? loop_ : loop?,
24
+ fill: fill_ != nil ? fill_ : fill?,
25
+ colors: colors_ || (colors? ? colors : nil),
26
+ texcoords: texcoords_ || (texcoords? ? texcoords : nil),
27
+ hole: hole_ != nil ? hole_ : hole?)
28
+ end
29
+
30
+ def points()
31
+ each_point.to_a
32
+ end
33
+
34
+ def colors()
35
+ each_color.to_a
36
+ end
37
+
38
+ def texcoords()
39
+ each_texcoord.to_a
40
+ end
41
+
42
+ def each_point(&block)
43
+ block ? each_point!(&block) : enum_for(:each_point!)
44
+ end
45
+
46
+ def each_color(&block)
47
+ block ? each_color!(&block) : enum_for(:each_color!)
48
+ end
49
+
50
+ def each_texcoord(&block)
51
+ block ? each_texcoord!(&block) : enum_for(:each_texcoord!)
13
52
  end
14
53
 
15
- def transform(matrix = nil, loop: loop?, &block)
16
- points = to_a
17
- points = points.map {|point| matrix * point} if matrix
18
- points = block.call points if block
19
- self.class.new(*points, loop: loop)
54
+ alias each each_point
55
+
56
+ def <=>(o)
57
+ (size <=> o.size) .then {|cmp| return cmp if cmp != 0}
58
+ (loop? <=> o.loop?).then {|cmp| return cmp if cmp != 0}
59
+ (fill? <=> o.fill?).then {|cmp| return cmp if cmp != 0}
60
+ points .zip(o.points) .each {|a, b| cmp = a <=> b; return cmp if cmp != 0}
61
+ colors .zip(o.colors) .each {|a, b| cmp = a <=> b; return cmp if cmp != 0}
62
+ texcoords.zip(o.texcoords).each {|a, b| cmp = a <=> b; return cmp if cmp != 0}
63
+ 0
20
64
  end
21
65
 
22
66
  def inspect()
23
- "#<Rays::Polyline #{to_a.join ', '}, loop: #{loop?}>"
67
+ p = points.map {|o| o.to_a.join ','}.join ', '
68
+ c, t = colors.size, texcoords.size
69
+ "#<Rays::Polyline [#{p}] loop:#{loop?} fill:#{fill?} hole:#{hole?} colors:#{c} texcoords:#{t}>"
24
70
  end
25
71
 
26
72
  end# Polyline
data/lib/rays.rb CHANGED
@@ -10,7 +10,6 @@ require 'rays/matrix'
10
10
  require 'rays/painter'
11
11
  require 'rays/polyline'
12
12
  require 'rays/polygon'
13
- require 'rays/polygon_line'
14
13
  require 'rays/bitmap'
15
14
  require 'rays/image'
16
15
  require 'rays/font'
data/rays.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.required_ruby_version = '>= 3.0.0'
27
27
 
28
28
  s.add_runtime_dependency 'xot', '~> 0.1.41'
29
- s.add_runtime_dependency 'rucy', '~> 0.1.42'
29
+ s.add_runtime_dependency 'rucy', '~> 0.1.43'
30
30
 
31
31
  s.files = `git ls-files`.split $/
32
32
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
data/src/font.cpp CHANGED
@@ -27,7 +27,7 @@ namespace Rays
27
27
  if (pixel_density != for_pixel_density)
28
28
  {
29
29
  rawfont_for_pixel_density =
30
- RawFont(rawfont.name(), rawfont.size() * pixel_density);
30
+ RawFont(rawfont, rawfont.size() * pixel_density);
31
31
  for_pixel_density = pixel_density;
32
32
  }
33
33
 
@@ -37,8 +37,16 @@ namespace Rays
37
37
  };// Font::Data
38
38
 
39
39
 
40
+ Font
41
+ load_font (const char* path, coord size)
42
+ {
43
+ Font font;
44
+ font.self->rawfont = RawFont_load(path, size);
45
+ return font;
46
+ }
47
+
40
48
  const Font&
41
- default_font ()
49
+ get_default_font ()
42
50
  {
43
51
  static const Font FONT(NULL);
44
52
  return FONT;
@@ -79,12 +87,26 @@ namespace Rays
79
87
  {
80
88
  }
81
89
 
90
+ Font
91
+ Font::dup () const
92
+ {
93
+ Font f;
94
+ f.self->rawfont = RawFont(self->rawfont, self->rawfont.size());
95
+ return f;
96
+ }
97
+
82
98
  String
83
99
  Font::name () const
84
100
  {
85
101
  return self->rawfont.name();
86
102
  }
87
103
 
104
+ void
105
+ Font::set_size (coord size)
106
+ {
107
+ self->rawfont = RawFont(self->rawfont, size);
108
+ }
109
+
88
110
  coord
89
111
  Font::size () const
90
112
  {