Re: [whatwg] Interpretation of CanvasRenderingContext2D.closePath()

On Mon, Nov 16, 2015 at 9:02 AM, Justin Novosad <junov@google.com> wrote:

> Hi All,
>
> The text in the spec:
>
> <snip>
>
> The closePath() method must do nothing if the object's path has no
> subpaths. Otherwise, it must mark the last subpath as closed, create a new
> subpath whose first point is the same as the previous subpath's first
> point, and finally add this new subpath to the path.
>
> Note: If the last subpath had more than one point in its list of points,
> then this is equivalent to adding a straight line connecting the last point
> back to the first point, thus "closing" the shape, and then repeating the
> last (possibly implied) moveTo() call.
>
> </snip>
>
> Problematic use case:
>
> ctx.moveTo(9.8255,71.1829);
> ctx.lineTo(103,25);
> ctx.lineTo(118,25);
> ctx.moveTo(9.8255,71.1829);
> ctx.closePath();
> ctx.stroke();
>
> Should this draw a closed triangle or two connected line segments?
> According to the "Note" (or at least my interpretation of it), this should
> draw a closed triangle. But it appears that this is not what many browsers
> have implemented.  Chrome recently became compliant (or what I think is
> compliant), and the change in behavior was reported as a regression.
>
> Thoughts?
>

moveTo creates a new subpath. This means the closePath is going to do
nothing because the subpath is empty.
So according to the spec, this should create 2 connected lines.

Received on Monday, 16 November 2015 17:30:54 UTC