[cairo] Program logic for interactive usage

Hakki Dogusan dogusanh at tr.net
Wed Mar 19 04:25:39 PDT 2008


I'm working on an interactive drawing program.
There are some master-shapes -needing hittest- drawn outside of 
OnPaint/OnExpose etc. event and some temporary-shapes to be drawn on 
master-shapes on each OnPaint event.

To be able to draw and have path data outside of OnPaint I used 
following logic.

- create a stationary context in program startup
   mastersurface = cairo_image_surface_create(CAIRO.FORMAT_ARGB32, 
width, height)
   mastercontext = cairo_create(mastersurface)

- use master context to draw master-shapes (could be anywhere/anytime)
   save paths with cairo_copy_path_flat

- HitTest in Mouse events
   for each master-shape's path:
     cairo_append_path(mastercontext, path)
     result = cairo_in_fill(mastercontext, x, y)

- OnPaint event
   cr = create a context for paint DC
   cairo_push_group_with_content(cr, CAIRO_CONTENT_COLOR)
   -- put master-shapes
   cairo_set_source_surface(cr, mastersurface, 0, 0)
   -- paint temporary-shapes here

Is my logic reasonable?

Hakki Dogusan

More information about the cairo mailing list