1Prima::Drawable::Path(3U)ser Contributed Perl DocumentatiPornima::Drawable::Path(3)
2
3
4

NAME

6       Prima::Drawable::Path - stroke and fill complex paths
7

DESCRIPTION

9       The module augments the "Prima::Drawable" drawing and plotting
10       functionality by implementing paths that allow arbitrary combination of
11       polylines, splines, and arcs, to be used for drawing or clipping
12       shapes.
13

SYNOPSIS

15               # draws elliptic spiral
16               my ( $d1, $dx ) = ( 0.8, 0.05 );
17               $canvas-> new_path->
18                       scale(200, 100)->
19                       rotate(45)->
20                       arc( 0, 0, $d1 + $dx * 0, $d1 + $dx * 1, 0, 90)->
21                       arc( 0, 0, $d1 + $dx * 2, $d1 + $dx * 1, 90, 180)->
22                       arc( 0, 0, $d1 + $dx * 2, $d1 + $dx * 3, 180, 270)->
23                       arc( 0, 0, $d1 + $dx * 4, $d1 + $dx * 3, 270, 360)->
24               stroke;
25

API

27   Primitives
28       All primitives come in two versions, with absolute and relative
29       coordinates.  The absolute version draws a graphic primitive so that
30       its starting point (or a reference point) is at (0,0). The relative
31       version, called with an 'r' (f.ex. "line" vs "rline") has its starting
32       point as the ending point of the previous primitive (or (0,0) if
33       there's none).
34
35       arc CENTER_X, CENTER_Y, DIAMETER_X, DIAMETER_Y, ANGLE_START, ANGLE_END,
36       TILT = 0
37           Adds elliptic arc to path centered around (CENTER_X,CENTER_Y).
38
39       circular_arc ANGLE_START, ANGLE_END
40           Adds circular arc to the path. Note that adding transformations
41           will effectively make it into elliptic arc, which is used
42           internally by "arc" and "rarc".
43
44       ellipse CENTER_X, CENTER_Y, DIAMETER_X, DIAMETER_Y = DIAMETER_X, TILT =
45       0
46           Adds full ellipse to the path.
47
48       line, rline @POINTS
49           Adds a polyline to path
50
51       rarc DIAMETER_X, DIAMETER_Y, ANGLE_START, ANGLE_END, TILT = 0
52           Adds elliptic arc to path so that the first point of the arc starts
53           on the last point of the previous primitive, or (0,0) if there's
54           none.
55
56       spline, rspline $POINTS, %OPTIONS.
57           Adds B-spline to path. See "spline" in Prima::Drawable for %OPTIONS
58           descriptions.
59
60   Transformations
61       Transformation calls change the current path properties (matrix etc) so
62       that all subsequent calls will use them until a call to "restore" is
63       used. "save" and "restore" implement a stacking mechanism, so that
64       local transformations can be made.
65
66       The final transformations calculate coordinates the new and the
67       existing matrices:
68
69         P' = NewMatrix * P
70
71       matrix A, B, C, D, Tx, Ty
72           Applies transformation matrix to the path. The matrix, as used by
73           the module, is formed as such:
74
75             A  B  0
76             C  D  0
77             Tx Ty 1
78
79           and when applied to 2D coordinates, is calculated as
80
81             X' = AX + CY + Tx
82             Y' = BX + DY + Ty
83
84       precision INTEGER
85           Selects current precision for splines and arcs. See "spline" in
86           Prima::Drawable, "precision" entry.
87
88       restore
89           Pops the stack entry and replaces the current matrix and graphic
90           properties with it.
91
92       rotate ANGLE
93           Adds rotation to the current matrix
94
95       save
96           Duplicates the current matrix and graphic properties and pushes
97           them to the stack.
98
99       shear X, Y = X
100           Adds shearing to the current matrix
101
102       scale X, Y = X
103           Adds scaling to the current matrix
104
105       translate X, Y = X
106           Adds offset to the current matrix
107
108   Operations
109       These methods perform actual path rendering, that was delayed until
110       that, and will create an array of points that can be used for actual
111       drawing.
112
113       clip %options
114           Returns 1-bit image with clipping mask of the path. %options can be
115           used to pass "fillWinding" property that affects the result of the
116           filled shape.
117
118       extents
119           Returns 2 points that box the path.
120
121       points
122           Runs all accumulated commands, and returns rendered set of points,
123           suitable for further calls to "Prima::Drawable::polyline" and
124           "Prima::Drawable::fillpoly".
125
126       last_matrix
127           Return CTM resulted after running all commands
128
129       fill
130           Paints a filled shape over the path
131
132       stroke
133           Draws a polyline over the path
134
135       region WINDING=0
136           Creates a region object from polygonal shape. If WINDING is set,
137           applies fill winding mode (see "fillWinding" in Drawable for more).
138
139   Methods for custom primitives
140       append PATH
141           Copies all commands from another PATH object. The PATH object
142           doesn't need to have balanced stacking brackets "save" and
143           "restore", and can be viewed as a macro.
144
145       identity
146           Returns identity matrix
147
148       matrix_apply @POINTS
149           Applies current matrix to POINTS, returns the transformed points.
150           If @POINTS is a list, returns list; if it is an array reference,
151           returns array reference.
152

AUTHOR

154       Dmitry Karasik, <dmitry@karasik.eu.org>.
155

SEE ALSO

157       Prima::Drawable
158
159
160
161perl v5.28.1                      2019-02-02          Prima::Drawable::Path(3)
Impressum