[whatwg] remove resetClip from the Canvas 2D spec
cabanier at gmail.com
Tue Jan 29 20:59:13 PST 2013
On Tue, Jan 29, 2013 at 8:28 PM, Charles Pritchard <chuck at jumis.com> wrote:
> On 1/29/2013 8:23 PM, Tab Atkins Jr. wrote:
>> On Tue, Jan 29, 2013 at 6:10 PM, Rik Cabanier <cabanier at gmail.com> wrote:
>>> It restores the graphics state back to the state at 'save' time and this
>>> includes the clip area.
>>> 'Clip' is a nested operation so every clip will be the intersection of
>>> existing clip area and the new one.
>>> PDF also has no initclip/resetClip and since CG is based on that model,
>>> maybe they didn't bother to add it.
>>> I can certainly see its use though (it's used quite often in PostScript)
>> I find that bizarre, but I've seen weirder APIs, so whatever.
>> It may still be possible without being too hacky - if the UA manually
>> rewinds and replays the state stack, only omitting clip() changes, it
>> would be the same thing. You'd have to be clever to allow the user to
>> restore() from that state again, though - maybe by recording the stack
>> of clip() operations and doing *another* rewind+replay, but this time
>> with the clip() calls happening again.
>> My definition of "not too hacky" may be miscalibrated.
> Do we want to consider PDF as a target for discussion? It seems more
> appropriate than Apple's documented (and undocumented) APIs.
No, I mentioned the PDF angle just for my own interest. Better to stick
with the available APIs
> Within PDF, we'd be rebuilding the state -- doing a full restore(), then
> replaying the existing state upon resetClip().
> I've had worse experiences with PDF. Transformations come to mind.
> That said, the point of this API was to optimize the implementation, I
> believe, not to simply make things easier on the developer.
I'm unfamiliar with the history. If so, that is definitely not the case for
CoreGraphics and at first glance not for Direct2D either.
> It seems likely that this will not be an optimization for the Apple stack
> any time soon.
No, it looks like there was a transition API 'ClipCGContextToRegion' that
let you remove the clip, but it was removed.
More information about the whatwg