Re: Draw in a GdkPixbuf
- From: Luis Menina <liberforce freeside fr>
- To: James Scott Jr <skoona verizon net>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Draw in a GdkPixbuf
- Date: Fri, 30 May 2008 20:00:19 +0200
Thank you James,
I found what I wanted in one of the links:
http://live.gnome.org/GtkCairoIntegration
I had previously seen this page, but didn't see a small code snippet in
python that does what I want. I've translated it in C, and it work now:
I can convert a pixbuf to something where I can draw in with cairo.
For the curious ones, here's a simple example on how to do that.
Thanks again,
--
Luis
#include <glib.h>
#include <cairo.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
int main (void)
{
GdkPixbuf *pixbuf;
gint width, height;
cairo_format_t format;
cairo_surface_t *surface;
cairo_t *cr;
g_type_init ();
pixbuf = gdk_pixbuf_new_from_file ("test.png", NULL);
g_assert (pixbuf != NULL);
format = (gdk_pixbuf_get_has_alpha (pixbuf)) ? CAIRO_FORMAT_ARGB32 :
CAIRO_FORMAT_RGB24;
width = gdk_pixbuf_get_width (pixbuf);
height = gdk_pixbuf_get_height (pixbuf);
surface = cairo_image_surface_create (format, width, height);
g_assert (surface != NULL);
cr = cairo_create (surface);
/* Draw the pixbuf */
gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
cairo_paint (cr);
/* Draw a red rectangle */
cairo_set_source_rgb (cr, 1, 0, 0);
cairo_rectangle (cr, width * .25, height * .25, width *.5, height *.5);
cairo_fill (cr);
/* Save to a PNG file */
cairo_surface_write_to_png (surface, "output.png");
cairo_surface_destroy (surface);
cairo_destroy (cr);
return 0;
}
James Scott Jr a écrit :
Ok,
http://cairographics.org/examples/
http://live.gnome.org/GtkCairoIntegration
These links have some examples of using everything from a raw image to a
pdf as the backend in cairo from the command line -- without the use of
gtk.
Hope this fits your need better than my last response.
James,
On Thu, 2008-05-29 at 03:18 +0200, Luis Menina wrote:
Hi list!
I'm trying to find a way to draw in a GdkPixbuf (for example draw a
rectangle on the pixbuf) and save the result to a file afterwards.
I found in devhelp the gdk_draw_* functions, but to use them I need a
GdkPixmap. gdk_pixmap_new requires a GdkDrawable. The problem is that
I'm developping a command line application, so I don't use GTK, only
glib, gdk, and gdk-pixbuf. Even creating the GdkPixmap with a NULL
GdkDrawable, I can't workaround the problem, because the documentation
of gdk_draw_pixbuf tells me that "All windows have a colormap, however,
pixmaps only have colormap by default if they were created with a
non-NULL window argument. Otherwise a colormap must be set on them with
gdk_drawable_set_colormap()". Trying to get a colormap requires other
stuff, which requires other stuff, and so on...
As this seems to be quite old-fashioned way of doing things, I tried to
see if cairo could do the trick. But it seems there's no way to draw to
a GdkPixbuf with cairo (I'm unfamiliar with cairo).
So, does anyone have an hint on how to draw and save an image from a
GdkPixbuf, with gdk or cairo ?
Thanks for you help,
Luis
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]