[cairo] Cairo and ISO C++

Ray Gardener rayg at daylongraphics.com
Tue Jan 14 23:51:52 PST 2014

On 1/14/2014 3:10 PM, Bill Spitzak wrote:
> I would have filling/stroking a path not clear the path, but instead 
> put cairo in a state so the next moveto/lineto will clear the path. 
> This will allow fill, stroke to work like users expect, and by 
> removing the "preserve" calls reduce the size of the api.
As a general design rule, it's nice if functions have minimal or no side 
effects. There is an explicit way to clear the path: newpath.

You could add a new function: setpostpaintbehavior(enum { 
clearcurrentpath, preservecurrentpath });

By default, the post-paint behavior does what it currently does, which 
is to clear the current path after fill/stroke. But the user can change 
it to preserve the path. The "preserve" APIs could then be dropped. The 
arg is an enum so a CLEAR_PATH_ON_NEXT_MOVETO could be added too, if you 
want that behavior.


More information about the cairo mailing list