[whatwg] Canvas ath construction over save/restore boundaries
Krzysztof Żelechowski
giecrilj at stegny.2a.pl
Fri Mar 7 10:54:51 PST 2008
Dnia 07-03-2008, Pt o godzinie 04:16 -0800, Oliver Hunt pisze:
> Hi all, while working on a bug in our canvas implementation I've
> noticed that there's a difference in behaviour between Opera and
> Firefox when handling path construction over save/restore
> boundaries. Section 3.12.11.1.1 says that the canvas path is not
> part of the state that is effected by save/restore, unfortunately
> Opera and Firefox disagree on what this actually means. Firefox
> appears to treat restore() (effectively) as a transform that undoes
> the any transformations performed in the current state, so given the
> example:
>
> context.beginPath();
> context.save()
> context.translate(100,100)
> context.rect(0,0,10,10)
This instruction means to me:
put a rectangle on a drawing plane, not over it.
Once it has been put, it cannot be moved.
> context.restore()
> context.fill()
>
> Firefox behaves as though the set of operations was
>
> context.beginPath();
> context.translate(100,100)
> context.rect(0,0,10,10)
> context.translate(-100,-100)
> context.fill()
>
> which, given 3.12.11.1.8., results in the fill operation still drawing
> a 10x10 rect at (100,100). Opera meanwhile treats the path as being
> completely independent of the canvas state, and so draws the rect at
> (0,0).
Firefox is right.
>
> What I want to know is which behaviour the spec actually intends on
> providing.
>
> --Oliver
More information about the whatwg
mailing list