On Tue, Jan 29, 2013 at 8:23 PM, Tab Atkins Jr. <jackalm...@gmail.com>wrote:

> On Tue, Jan 29, 2013 at 6:10 PM, Rik Cabanier <caban...@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
> the
> > 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.
>

Yes, that's why I said "without significant overhead" in my original
message. :-)
You'd have to store all the paths to the clips + the drawing states just in
case someone calls 'resetClip' in order to pull this off. Not impossible,
but the CG canvas code will get very ugly.

Reply via email to