19.145 draw:enhanced-path - issues with definition of behavior

XMLWordPrintable

Details

• Type: Bug
• Status: Resolved
• Priority: Major
• Resolution: Fixed
• Affects Version/s: None
• Fix Version/s:
• Component/s: None
• Labels:
None
• Proposal:
Hide

Command T

Name angle-ellipseto

Parameters (x y wR hR t0 t1) +

Description

Draws a line from the current point to the start point of an arc of an ellipse and then draws the arc itself. The ellipse is given by the center(x, y), the width 2*wR, and the height 2*hR.

The arc is specified by the start-angle t0 in degrees and end-angle t1 in degrees. The angles may be of any value, but are used modulo 360° with range 0° <= angle < 360° to get start and end point of the arc. The angles specify radial vectors. The start and end point of the arc are the intersection of these vectors with the ellipse. In case the start point equals the end point, only in case |t1 − t0| = 360° a full ellipse is drawn, otherwise an arc of 0° central angle is drawn. The orientation of the angles is the same as in command G, see figure nnn.

The arc is drawn clockwise.

The end point becomes the new current point at the end of the command.

Command U

Name angle-ellipse

Parameters (x y wR hR t0 t1) +

Description

The same as the “T” command, except that no current point is required but an implicit moveto to the start point is done and thus no line to the start point is drawn.

Show
Command T Name angle-ellipseto Parameters (x y wR hR t0 t1) + Description Draws a line from the current point to the start point of an arc of an ellipse and then draws the arc itself. The ellipse is given by the center(x, y), the width 2*wR, and the height 2*hR. The arc is specified by the start-angle t0 in degrees and end-angle t1 in degrees. The angles may be of any value, but are used modulo 360° with range 0° <= angle < 360° to get start and end point of the arc. The angles specify radial vectors. The start and end point of the arc are the intersection of these vectors with the ellipse. In case the start point equals the end point, only in case |t1 − t0| = 360° a full ellipse is drawn, otherwise an arc of 0° central angle is drawn. The orientation of the angles is the same as in command G, see figure nnn. The arc is drawn clockwise. The end point becomes the new current point at the end of the command.   Command U Name angle-ellipse Parameters (x y wR hR t0 t1) + Description The same as the “T” command, except that no current point is required but an implicit moveto to the start point is done and thus no line to the start point is drawn.
• Resolution:
Hide

Editorial note: Coloured text has been inserted in resolution of OFFICE-3710. The Description of Command G has been inserted in resolution of OFFICE-4026. The Descriptions of Commands T and U have been modified in resolution of OFFICE-4027.

Table 10 - Enhanced path commands

Command Name Parameters Description
A arcto (x1 y1 x2 y2 x3 y3 x4 y4) + (x1, y1) and (x2, y2) define the bounding box of an ellipse. A line is then drawn from the current point to the start angle of the arc that is specified by the radial vector of point (x3, y3) and then counter-clockwise to the end-angle that is specified by point (x4, y4). The intersection of the radial vector of point (x4, y4) with the ellipse becomes the new current point.
B arc (x1 y1 x2 y2 x3 y3 x4 y4) + The same as the “A” command, except that an implied moveto to the starting point is done.
C curveto (x1 y1 x2 y2 x y) + Draws a cubic Bézier curve from the current point to (x,y) using (x1,y1) as the control point at the beginning of the curve and (x2,y2) as the control point at the end of the curve. The point (x, y) becomes the new current point.
F nofill (none) Specifies that the current set of sub-paths will not be filled.
L lineto (x y) + Draws a line from the current point to (x, y). If followed by multiple coordinate pairs, they are all interpreted as lineto. The point (x, y) becomes the new current point in each case.
‍G arcangleto (wR hR st sw) + Draws an arc of an ellipse. The ellipse is given by the width 2*wR, and the height 2*hR. The arc is specified by the start angle st in degrees and the swing angle sw in degrees. The ellipse is positioned so that the current point is the start point of the arc. The arc is drawn so that sw is the central angle of the arc. If sw is positive, the arc is drawn clockwise; if sw is negative, the arc is drawn counter-clockwise. The endpoint of the arc becomes the new current point.
In case the path is filled, the filling is drawn as an ellipse segment.
The swing angle may be greater than 360° and may be smaller than -360°. In such cases the fill will overlap.
M moveto (x y) + Start a new sub-path at the given (x,y) coordinate. If a moveto is followed by multiple pairs of coordinates, they are treated as lineto. The point (x, y) becomes the new current point in each case.
N endpath (none) Ends the current set of sub-paths. The sub-paths will be filled by using the “even-odd” filling rule. Other following subpaths will be filled independently. The current point becomes undefined.
Q quadratic­curveto (x1 y1 x y)+ Draws a quadratic Bézier curve from the current point to (x, y) using (x1, y1) as the control point. (x, y) becomes the new current point at the end of the command.
S nostroke (none) Specifies that the current set of sub-paths will not be stroked.
T angle­ellipseto (x y wR hR t0 t1) + Draws a segment of an ellipse. The ellipse is specified by the center(x, y), the width 2*wR, the height 2*hR.
The arc is specified by the start-angle t0 in degrees and end-angle t1 in degrees. The angles may be of any value, but are used modulo 360° with range 0° <= angle < 360° to get start and end point of the arc. The angles specify radial vectors. The start and end point of the arc are the intersection of these vectors with the ellipse. In case the start point equals the end point, only in case |t1 − t0| = 360° a full ellipse is drawn, otherwise an arc of 0° central angle is drawn. The orientation of the angles is the same as in command G, see figure nnn.
The segment is drawn clockwise.
The point of the ellipse, which is specified by the end-angle t1 becomes the new current point.
U angle­ellipse (x y wR hR t0 t1) + The same as the “T” command, except that no current point is required but an implied moveto to the starting point is done and thus no line to the start point is drawn..
V clockwise­arc (x1 y1 x2 y2 x3 y3 x4 y4)+ The same as the “A” command, except that an implied moveto to the starting point is done and the arc is drawn clockwise.
W clockwise­arcto (x1 y1 x2 y2 x3 y3 x4 y4) + The same as the “A” command except, that the arc is drawn clockwise.
X elliptical­quatrantx (x y) + Draws a quarter ellipse, whose initial segment is tangential to the x-axis from the current point to (x, y). For each additional quarter ellipse command, the axis to which the segment is tangential to switches from x to y and from y to x. The point (x, y) becomes the new current point in each case.
Y elliptical­quadranty (x y) + Draws a quarter ellipse, whose initial segment is tangential to the y-axis from the current point to (x, y). For each additional quarter ellipse command, the axis to which the segment is tangential to switches from y to x and from x to y. The point (x, y) becomes the new current point in each case.
Z closepath (none) Close the current sub-path by drawing a straight line from the current point to current sub-path's initial point. The path’s initial point becomes the new current point.

If the value of the draw:enhanced-path attribute does not follow the specified syntax, the behavior is undefined. This includes the case, that a command expects a current point, but the current point is undefined.

Note: The value of the draw:enhanced-path attribute is based upon [SVG] §8.3.

Show
Editorial note : Coloured text has been inserted in resolution of OFFICE-3710 . The Description of Command G has been inserted in resolution of OFFICE-4026 . The Descriptions of Commands T and U have been modified in resolution of OFFICE-4027 . Table 10 - Enhanced path commands Command Name Parameters Description A arcto (x1 y1 x2 y2 x3 y3 x4 y4) + (x1, y1) and (x2, y2) define the bounding box of an ellipse. A line is then drawn from the current point to the start angle of the arc that is specified by the radial vector of point (x3, y3) and then counter-clockwise to the end-angle that is specified by point (x4, y4). The intersection of the radial vector of point (x4, y4) with the ellipse becomes the new current point. B arc (x1 y1 x2 y2 x3 y3 x4 y4) + The same as the “A” command, except that an implied moveto to the starting point is done. C curveto (x1 y1 x2 y2 x y) + Draws a cubic Bézier curve from the current point to (x,y) using (x1,y1) as the control point at the beginning of the curve and (x2,y2) as the control point at the end of the curve. The point (x, y) becomes the new current point. F nofill (none) Specifies that the current set of sub-paths will not be filled. L lineto (x y) + Draws a line from the current point to (x, y). If followed by multiple coordinate pairs, they are all interpreted as lineto. The point (x, y) becomes the new current point in each case. ‍G arcangleto (wR hR st sw) + Draws an arc of an ellipse. The ellipse is given by the width 2*wR, and the height 2*hR. The arc is specified by the start angle st in degrees and the swing angle sw in degrees. The ellipse is positioned so that the current point is the start point of the arc. The arc is drawn so that sw is the central angle of the arc. If sw is positive, the arc is drawn clockwise; if sw is negative, the arc is drawn counter-clockwise. The endpoint of the arc becomes the new current point. In case the path is filled, the filling is drawn as an ellipse segment. The swing angle may be greater than 360° and may be smaller than -360°. In such cases the fill will overlap. M moveto (x y) + Start a new sub-path at the given (x,y) coordinate. If a moveto is followed by multiple pairs of coordinates, they are treated as lineto. The point (x, y) becomes the new current point in each case. N endpath (none) Ends the current set of sub-paths. The sub-paths will be filled by using the “even-odd” filling rule. Other following subpaths will be filled independently. The current point becomes undefined. Q quadratic­curveto (x1 y1 x y)+ Draws a quadratic Bézier curve from the current point to (x, y) using (x1, y1) as the control point. (x, y) becomes the new current point at the end of the command. S nostroke (none) Specifies that the current set of sub-paths will not be stroked. T angle­ellipseto (x y wR hR t0 t1) + Draws a segment of an ellipse. The ellipse is specified by the center(x, y), the width 2*wR, the height 2*hR. The arc is specified by the start-angle t0 in degrees and end-angle t1 in degrees. The angles may be of any value, but are used modulo 360° with range 0° <= angle < 360° to get start and end point of the arc. The angles specify radial vectors. The start and end point of the arc are the intersection of these vectors with the ellipse. In case the start point equals the end point, only in case |t1 − t0| = 360° a full ellipse is drawn, otherwise an arc of 0° central angle is drawn. The orientation of the angles is the same as in command G, see figure nnn. The segment is drawn clockwise. The point of the ellipse, which is specified by the end-angle t1 becomes the new current point. U angle­ellipse (x y wR hR t0 t1) + The same as the “T” command, except that no current point is required but an implied moveto to the starting point is done and thus no line to the start point is drawn.. V clockwise­arc (x1 y1 x2 y2 x3 y3 x4 y4)+ The same as the “A” command, except that an implied moveto to the starting point is done and the arc is drawn clockwise. W clockwise­arcto (x1 y1 x2 y2 x3 y3 x4 y4) + The same as the “A” command except, that the arc is drawn clockwise. X elliptical­quatrantx (x y) + Draws a quarter ellipse, whose initial segment is tangential to the x-axis from the current point to (x, y). For each additional quarter ellipse command, the axis to which the segment is tangential to switches from x to y and from y to x. The point (x, y) becomes the new current point in each case. Y elliptical­quadranty (x y) + Draws a quarter ellipse, whose initial segment is tangential to the y-axis from the current point to (x, y). For each additional quarter ellipse command, the axis to which the segment is tangential to switches from y to x and from x to y. The point (x, y) becomes the new current point in each case. Z closepath (none) Close the current sub-path by drawing a straight line from the current point to current sub-path's initial point. The path’s initial point becomes the new current point. If the value of the draw:enhanced-path attribute does not follow the specified syntax, the behavior is undefined. This includes the case, that a command expects a current point, but the current point is undefined. Note: The value of the draw:enhanced-path attribute is based upon [SVG] §8.3.

Description

The word "segment of ellipse" is misleading. No application draws a segment, but all draw an arc, and in case of filling, a filling in shape of a sector.

The meaning of the angles it not clear. Examples: t0=0, t1=360 generates a full ellipse in applications. What rendering is expected for t0=-10, t1=350 (negative values), or for t0=350, t1=240 (start > end), of for t0=30, t1=480 (difference > 360) ?

People

• Assignee:
Unassigned
Reporter:
Patrick Durusau
• Watchers:
2 Start watching this issue

Dates

• Created:
Updated:
Resolved: