On Sun, 2006-11-05 at 09:35 -0700, Jim George wrote:
> I suppose one problem with the Pixbuf approach is that a Pixbuf is not
> a drawable (unlike a Pixmap), so you either need to come up with your
> own drawing routines for lines and such, or draw onto a Pixmap and use
> gdk_pixbuf_get_from_drawable. If there's a better way, do let me know
> (it's one area where my application could use some speedup - I use the
> second approach).

You can use Cairo to draw to the pixbuf.

You will need some information about the pixbuf:
gdk_pixbuf_get_pixels()
gdk_pixbuf_get_width()
gdk_pixbuf_get_height()
gdk_pixbuf_get_rowstride()

which you then give to Cairo to wrap a cairo_t around the raw pixel
buffer:

cairo_image_surface_create_for_data()

(you might need to modify the rowstride value before passing it to cairo
-- I haven't checked the details.)

Make sure that the pixbuf is in a Cairo-friendly format (ARGB32 or
RGB24).

In order to make Cairo and your own drawing code coexist nicely, you
will need to tell Cairo when it owns the pixbuf data and when it
doesn't:

cairo_surface_mark_dirty()
cairo_surface_mark_dirty_rectangle()
cairo_surface_flush()

-Peter

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to