[cairo] cairo and gdk/X11
Tamas K Papp
tpapp at Princeton.EDU
Sun Jun 10 03:02:58 PDT 2007
On Wed, Jun 06, 2007 at 07:56:40PM -0700, Dan Amelang wrote:
>
> >I have looked at the Cairo tutorial code and saw that it works by
> >calling the draw function to redraw everything whenever required (if
> >the window is resized/exposed etc). Is there a way to avoid this, eg
> >by making Cairo remember the draw operations and replay them when
> >needed?
>
> Nope. Cairo is a an immediate-mode graphics library; it has no
> remebrance of drawings past.
>
> If rerendering the whole scene is costly, it is best to use the
> "damaged" area of the screen (you get this from the expose event) to
> determine what needs to be redrawn, so you can skip the rest.
> cairo_clip is a handy way to tell cairo not to bother rendering
> anything outside a particular region, although it's best if you just
> don't bother issuing unecessary drawing calls.
Dear Dan (and Dominic too),
Thanks for your answers. Recording operations in my application would
be clumsy, so I started looking at another solution: drawing into a
buffer with cairo and copying it onto the screen when needed.
This thread [1] suggests that I create a GdkPixmap, use
gtk_cairo_create(GdkPixmap*) to create a Cairo surface, then copy with
gdk_draw_drawable(). But it appears that GdkPixmap is deprecated. [2]
What would be the recommended way to implement this `double-buffering'
in the current Gtk? Is there perhaps some widget that could take care
of double buffering and provide a Cairo surface?
Thanks,
Tamas
[1] http://permalink.gmane.org/gmane.comp.lib.cairo/5468
[2] http://www.gtk.org/api/2.6/gtk/GtkPixmap.html
More information about the cairo
mailing list