Re: Raster operations
- From: Iago Rubio <iago iagorubio com>
- To: gtk-app-devel-list gnome org
- Subject: Re: Raster operations
- Date: Tue, 18 Jul 2006 19:04:38 +0200
Hi Asela,
On Tue, 2006-07-11 at 11:45 +0900, Asela Leelaratne wrote:
Hello List members,
[snip]
The problem is I need to do some raster operations like ROP2, ROP3,
Porter and Duff etc... Are there any api's in Gtk(or Gdk) to achive it?
If not is there a library or something that I can use(C language)?
If both the above is not possible is there a standard method to do the
above operations(C language, GDK and Gtk widgets)?
There is support for Porter/Duff operations in cairo. Check the cairo
documentation on cairo_operator_t .
It supports all 12 Porter/Duff operations plus 'add' and 'saturate'.
typedef enum _cairo_operator {
CAIRO_OPERATOR_CLEAR,
CAIRO_OPERATOR_SOURCE,
CAIRO_OPERATOR_OVER,
CAIRO_OPERATOR_IN,
CAIRO_OPERATOR_OUT,
CAIRO_OPERATOR_ATOP,
CAIRO_OPERATOR_DEST,
CAIRO_OPERATOR_DEST_OVER,
CAIRO_OPERATOR_DEST_IN,
CAIRO_OPERATOR_DEST_OUT,
CAIRO_OPERATOR_DEST_ATOP,
CAIRO_OPERATOR_XOR,
CAIRO_OPERATOR_ADD,
CAIRO_OPERATOR_SATURATE
} cairo_operator_t;
You just need to set the operator with cairo_set_operator(cairo_t,
cairo_operator_t) and it will be used on subsequent drawing operators.
To pick the cairo context from a GdkDrawable you may use
cairo_t* gdk_cairo_create (GdkDrawable *drawable);
Once you aquired the cairo context, you can start to use the cairo API
on it.
// ...
cairo_t ct;
GtkWidget* widget;
widget = gtk_drawing_area_new();
ct = gdk_cairo_create (widget->window);
cairo_set_operator(ct, CAIRO_OPERATOR_DEST_OVER);
// ...
This is available as for GTK+2.8.
--
Iago Rubio
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]