[cairo] Re: Proposal: cairo_save_state/cairo_restore_state

Robert Staudinger robert.staudinger at gmail.com
Tue Jan 24 12:32:05 PST 2006


Hi,

On 1/24/06, Carl Worth <cworth at cworth.org> wrote:

[...]

> Here's the API that I think is needed:
>
>         cairo_state_t *
>         cairo_save_state (cairo_t *cr);
>
>         void
>         cairo_restore_state (cairo_t *cr, cairo_state_t *state);
>
> along with the necessary:
>
>         void
>         cairo_state_reference (cairo_state_t *state);
>
>         void
>         cairo_state_destroy (cairo_state_t *state);

given the internals permit this, it would be very handy to have a
variant for putting the cairo_state_t on the stack.

Usage example:

void draw_foo (cairo_t *cr) {

    cairo_state_t cs;
    cairo_save_state (cr, &cs);
    /* drawing code goes here */
    cairo_restore_state (cr, &cs);
}

That would make it very easy and efficient to draw on the cairo_t
instance without side effects.

Best,
Rob


More information about the cairo mailing list