Parent

Class Index [+]

Quicksearch

Magick::RVG::PathData

The PathData class provides an object-oriented way to produce an SVG path. Each of the methods corresponds to a path command. Construct a path by calling one or more methods. The path object can be passed as an argument to the RVG::ShapeConstructors#path method.

Public Class Methods

new() click to toggle source

Construct an empty path

    # File lib/rvg/pathdata.rb, line 28
28:             def initialize
29:                 @path = ''
30:             end

Public Instance Methods

arc(abs, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, x, y) click to toggle source

Add an arc command. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

     # File lib/rvg/pathdata.rb, line 123
123:             def arc(abs, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, x, y)
124:                 @path << sprintf("%s%g,%g %g %d %d %g,%g ", (abs ? 'A' : 'a'), rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, x, y)
125:             end
closepath(abs=true) click to toggle source

Add a closepath command. The abs argument is ignored.

    # File lib/rvg/pathdata.rb, line 52
52:             def closepath(abs=true)
53:                 @path << 'Z'    # ignore `abs'
54:             end
curveto(abs, x1, y1, x2, y2, x, y, *coords) click to toggle source

Add a curveto (cubic Bezier) command. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

    # File lib/rvg/pathdata.rb, line 84
84:             def curveto(abs, x1, y1, x2, y2, x, y, *coords)
85:                 @path << sprintf("%s%g,%g %g,%g %g,%g ", (abs ? 'C' : 'c'), x1, y1, x2, y2, x, y)
86:                 # "multiple sets of coordinates may be specified to draw a polybezier"
87:                 add_points(6, *coords)
88:             end
hlineto(abs, x) click to toggle source

Add a horizontal lineto command. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

    # File lib/rvg/pathdata.rb, line 69
69:             def hlineto(abs, x)
70:                 @path << sprintf("%s%g ", (abs ? 'H' : 'h'), x)
71:             end
lineto(abs, x, y, *coords) click to toggle source

Add a lineto command. Any number of x,y coordinate pairs may be specified. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

    # File lib/rvg/pathdata.rb, line 60
60:             def lineto(abs, x, y, *coords)
61:                 @path << sprintf("%s%g,%g ", (abs ? 'L' : 'l'), x, y)
62:                 # "a number of coordinate pairs may be specified to draw a polyline"
63:                 add_points(2, *coords)
64:             end
moveto(abs, x, y, *coords) click to toggle source

Add a moveto command. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

    # File lib/rvg/pathdata.rb, line 44
44:             def moveto(abs, x, y, *coords)
45:                 @path << sprintf("%s%g,%g ", (abs ? 'M' : 'm'), x, y)
46:                 # "subsequent pairs are treated as implicit lineto commands"
47:                 add_points(2, *coords)
48:             end
quadratic_curveto(abs, x1, y1, x, y, *coords) click to toggle source

Add a quadratic Bezier curveto command. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

     # File lib/rvg/pathdata.rb, line 104
104:             def quadratic_curveto(abs, x1, y1, x, y, *coords)
105:                 @path << sprintf("%s%g,%g %g,%g ", (abs ? 'Q' : 'q'), x1, y1, x, y)
106:                 add_points(4, *coords)
107:             end
smooth_curveto(abs, x2, y2, x, y, *coords) click to toggle source

Add a smooth curveto (cubic Bezier) command. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

    # File lib/rvg/pathdata.rb, line 94
94:             def smooth_curveto(abs, x2, y2, x, y, *coords)
95:                 @path << sprintf("%s%g,%g %g,%g ", (abs ? 'S' : 's'), x2, y2, x, y)
96:                 # "multiple sets of coordinates may be specified to draw a polybezier"
97:                 add_points(4, *coords)
98:             end
smooth_quadratic_curveto(abs, x, y, *coords) click to toggle source

Add a smooth quadratic Bezier curveto command. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

     # File lib/rvg/pathdata.rb, line 113
113:             def smooth_quadratic_curveto(abs, x, y, *coords)
114:                 @path << sprintf("%s%g,%g ", (abs ? 'T' : 't'), x, y)
115:                 add_points(2, *coords)
116:             end
to_s() click to toggle source

Convert the path to its string equivalent.

    # File lib/rvg/pathdata.rb, line 33
33:             def to_s
34:                 @path
35:             end
vlineto(abs, y) click to toggle source

Add a vertical lineto command. If abs is true the coordinates are absolute, otherwise the coordinates are relative.

    # File lib/rvg/pathdata.rb, line 76
76:             def vlineto(abs, y)
77:                 @path << sprintf("%s%g ", (abs ? 'V' : 'v'), y)
78:             end

Private Instance Methods

add_points(req, *coords) click to toggle source
    # File lib/rvg/pathdata.rb, line 16
16:             def add_points(req, *coords)
17:                 if coords
18:                     if coords.length % req != 0
19:                         raise ArgumentError, "wrong number of coordinates specified. A multiple of #{req} required, #{req+coords.length} given."
20:                     end
21:                     coords.each {|c| @path << ("%g" % c)}
22:                 end
23:             end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.