[cairo] cairo as an immediate base for retained API and gsave/grestore

Carl Worth cworth at east.isi.edu
Wed Jul 21 18:50:58 PDT 2004


On Wed, 21 Jul 2004 21:06:55 -0400 (EDT), "viczh" wrote:
> I just wanted to understand logic behind this decision to keep
> implicit paths in graphic state and have gsave/grestore.

When you want to draw something in cairo, you provide the path data and
ask it to be drawn. We can certainly add something like explicit paths,
(or maybe just a way to hand cairo an array of vertices in a single
function call as has been proposed), but we plan to wait until the
performance demands of a real application prove it is necessary.

The motivation for avoiding this is semantic clarity. As soon as the
user has a "path object" the user might expect various bits of the
graphics state to belong to the path, (current transform, color, etc.),
which could lead to confusion.

I don't see how the existence of cairo_save/restore have any bearing on
the issue of explicit paths at all. The use of these functions are not
strictly necessary, and there will always be a way to copy the graphics
state from one cairo_t to another without using the implicit stack of
cairo_save/restore. (Today this is with cairo_copy but we may introduce
a separate cairo_gstate_t object to capture that instead.)

Does that help explain where we're at?

-Carl



More information about the cairo mailing list