[whatwg] Stroking algorithm in Canvas 2d

Ian Hickson ian at hixie.ch
Thu Oct 10 15:36:53 PDT 2013


On Thu, 10 Oct 2013, Justin Novosad wrote:
> On Thu, Oct 10, 2013 at 5:48 PM, Ian Hickson <ian at hixie.ch> wrote:
> > On Thu, 10 Oct 2013, Rik Cabanier wrote:
> > >
> > > setLineDash([30]);
> > > rect(10, 10, 100, 100);
> > > rect(10, 110, 100, 100);
> > > rect(10, 210, 100, 100);
> > > stroke();
> > >
> > > These rectangles should look the same.
> >
> > I presume you mean "I want those rectangles to look the same". I don't 
> > see any a priori objective reason why they should look the same.
> 
> And is there an a priori objective reason why they should look 
> different? It seem pretty obvious to me that there would be way more 
> designers wanting the rects to look the same than there would be wanting 
> the rects to look different.
>
> [...] should we not provide the most desirable behavior by default?

We should definitely provide the most desirable behaviour by default. The 
question is, what is it? The only argument one way or the other I've seen 
on this so far is the idea that if we don't reset, we get a more balanced 
distribution of the dash density, whereas if we do reset, the dash density 
is biased towards the start of the dash pattern.

The actual most desireable behaviour may in fact be neither Rik's proposal 
nor mine, but something more like yours, where we somehow balance the 
dashes between each node in the path, but I don't really know exactly how 
to do that.


Just so we're clear, I really don't have a strong opinion on this issue. I 
just want to make sure we apply the same rigour to deciding what the model 
should be as we do to everything else, and that means not just doing 
things because they've always been done that way, but instead either 
figuring out why they've always been done that way, or starting from first 
principles or data and deriving the right behaviour.

So far, the proposals seem to be to reset on each subpath, to not reset on 
each subpath, and to add more features to the API.

If we don't want to add more features (features are expensive), then we're 
left with reset and not reset. You can do everything you can do with 
resetting in the no-resetting case; you can't do everything you can do 
without resetting in the reset case. So the only strong argument there is 
that one of the two ways provides more power to authors.

-- 
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