- From: <bugzilla@jessica.w3.org>
- Date: Wed, 09 Jan 2013 00:50:46 +0000
- To: public-html-admin@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=20612
Bug ID: 20612
Summary: Canvas 2D Context needs to support fillRule attribute
Classification: Unclassified
Product: HTML WG
Version: unspecified
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P2
Component: HTML Canvas 2D Context
Assignee: jaymunro@microsoft.com
Reporter: jmann@microsoft.com
QA Contact: public-html-bugzilla@w3.org
CC: mike@w3.org, public-html-admin@w3.org,
public-html-wg-issue-tracking@w3.org
Developers should be able to specify which fill rule to use, even-odd or
non-zero winding rule, when painting a geometry created by sub-paths. Whereas
SVG and other technologies support both fill rules, Canvas 2D Context currently
only supports non-zero winding rule.
I recommend we update the specification to include support for the following
attribute on the CanvasRenderingContext2D interface, with a default value of
“nonzero” to be compatible with current Canvas sites and apps.
attribute DOMString fillRule; // "evenodd", "nonzero" (default: "nonzero")
I recommend updating “Section 12 Drawing paths to the canvas” with language
similar to the SVG fill-rule property, http://www.w3.org/TR/SVG/painting.html.
An example of text could be:
"The fillRule attribute represents the algorithm which is used to determine
which subpaths are considered inside a closed path. The two valid values are
nonzero and evenodd.
On getting, it must return the current value. On setting, if the new value is
one of the literal strings nonzero, or evenodd, then the current value must be
changed to the new value; other values must be ignored, leaving the value
unchanged.
"Nonzero"
This fill rule determines whether an independent subpath is inside a closed
path by drawing a ray from a point inside the subpath to infinity in any
direction and then examining the places where the subpaths of the path crosses
the ray. Starting with a count of zero, add one each time a subpath crosses the
ray from left to right and subtract one each time a subpath crosses the ray
from right to left. After counting the crossings, if the result is zero then
the point is outside the closed path. Otherwise, it is inside.
"evenodd"
This fill rule determines whether an independent subpath is inside a closed
path by drawing a ray from a point inside the subpath to infinity in any
direction and counting the number of subpaths of the path that the ray crosses.
If this number is odd, the point is inside; if even, the point is outside."
Definitions of fill(), clip(), and isPointInPath() methods would need to be
updated.
--
You are receiving this mail because:
You are on the CC list for the bug.
Received on Wednesday, 9 January 2013 00:50:47 UTC