[whatwg] Canvas ath construction over save/restore boundaries

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

What I want to know is which behaviour the spec actually intends on  
providing.

--Oliver

Received on Friday, 7 March 2008 04:16:42 UTC