[whatwg] Path API feedback

Ian Hickson ian at hixie.ch
Wed Oct 16 15:01:11 PDT 2013


On Wed, 18 Sep 2013, Rik Cabanier wrote:
> On Tue, Sep 17, 2013 at 10:20 AM, Ian Hickson <ian at hixie.ch> wrote:
> > On Tue, 20 Aug 2013, Rik Cabanier wrote:
> > > > On Sat, 23 Mar 2013, Rik Cabanier wrote:
> > > > >
> > > > > The current path APIs suffer from conflating path segments and 
> > > > > geometry. To fix this, I proposed to modify the API so path just 
> > > > > describe the path segments.
> > > > >
> > > > > http://blogs.adobe.com/webplatform/2013/01/31/revised-canvas-paths/
> > > >
> > > > I disagree with the premise of this post -- it's not the case that 
> > > > you never want to add segments. It is in fact quite common to add 
> > > > segments to a path -- that's what constructing a path is.
> > >
> > > I disagree. How many times does an author want to add segments to an 
> > > existing path?
> >
> > Pretty much every time they create a path with more than one segment.
> 
> Maybe I phrased that wrong. The existing path is a path that was created 
> earlier (and could have already been used to draw). It's not often that 
> you would want to append to such a path.

Right, the current API is only about building paths, not about later 
combining paths. We haven't added that feature yet. That would be covered 
by: https://www.w3.org/Bugs/Public/show_bug.cgi?id=21835


> > > Let's say an application stores a circle in a path and now want to 
> > > draw a rectangle too. You propose that the application just appends 
> > > the rectangle.
> >
> > No, not necessarily. It depends on what they want to do. If they want 
> > a single path that is constructed of a circle and a rectangle in the 
> > same way that it would be if they did:
> >
> >    x.beginPath();
> >    x.arc(...);
> >    x.rect(...);
> >    x.fill();
> >
> > ...then yeah, they should just append the rectangle. But if they want 
> > the same effect as:
> >
> >    x.beginPath();
> >    x.arc();
> >    x.fill();
> >    x.rect(...);
> >    x.fill();
> >
> > ...then they should not just append them, since as you say, it won't 
> > work.
> 
> Yes, but for hit regions, you would have to calculate the area that 
> these 2 fill operations covered. This is why we need the extra 'union' 
> API.

I don't think anyone is arguing that we don't eventually need such an API.


> > Once the Path API is implemented, we can add any number of features, 
> > such as adding a path so as to form the union of both paths, adding a 
> > path so as to form the intersection of both paths, etc.
> 
> OK. In order to make that possible, 'addPath', 'addPathByStrokingPath', 
> 'addText' and 'addTextByStrokingText' should be cut from the interface.

Why?


> > Sure, for that you need a new API function, e.g. union, which as I've 
> > mentioned before, I think would be a logical addition to the API in 
> > due course. But I don't think we should add features too quickly, lest 
> > we get too far ahead of browsers.
> 
> That sounds reasonable.
> So please remove the APIs such as AddPathByStrokingPath that rely on 
> these difficult algorithms.

I don't understand why one implies the other. Can you elaborate on your 
reasoning here?

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'


More information about the whatwg mailing list