[cairo] Re: "retained" surface for cairo

Jost Boekemeier jost2345 at yahoo.de
Tue Jul 20 09:02:33 PDT 2004

On Mon, 2004-07-19 at 21:06, Carl Worth wrote:

> I'm not sure I follow. I don't see how what you propose requires
> anything different from what we have already.

At the moment cairo has only an image surface for that.  But this is one
step too far.  What I proposed was a xlib surface that applies the
transformations immediately (always sends the identity matrix to the
server) and keeps the trapezoids so that, when compose is called, it can
decide which trapezoids it must send to the server and which it can
ommit. This decision depends on dst's CTM which can change over time.

> All backends, (including X), happily ignore any objects that
> are outside the bounds of the surface.

Yes, they are sent immediately, then clipped away by the server and then
they are gone.  

But I want to keep the whole picture that the user has created.  For
example if I give him a cairo_t and he creates a 1000x1000 scene using
the cairo API, then I need a way to do different transformations to this
scene without destroying the scene graph.

Of course, you can argue that cairo is not meant for animatable scene
graphs, like scrolling windows, and that the graph should be maintained
on a level above cairo. This would not be a problem for us, because we
do not expose cairo_t to the users (they create XUL/SVG scenes).


More information about the cairo mailing list