[cairo] Using gimp c file image

Dov Grobgeld dov.grobgeld at gmail.com
Thu Dec 17 04:37:29 PST 2009


You can use gdk_pixbuf and in your build system do:

gdk-pixbuf-csource --name=foo_inline foo.png > foo.i

And in your c-source do:

#include "foo.i"

:

GdkPixbuf* foo_pixbuf = gdk_pixbuf_new_from_inline(sizeof(foo_inline),
                           foo_inline,
                           FALSE,
                           &error);

You can then create a image surface through:

    cairo_surface_t *surface = cairo_image_surface_create_for_data
(gdk_pixbuf_get_pixels(foo_pixbuf),

gdk_pixbuf_get_has_alpha(foo_pixbuf) ? CAIRO_FORMAT_ARGB32 :
CAIRO_FORMAT_FORMAT_RGB24
                                         gdk_pixbuf_get_width(foo_pixbuf),
                                         gdk_pixbuf_get_height(foo_pixbuf),
                                         gdk_pixbuf_get_rowstride(foo_pixbuf));
    gdk_pixbuf_unref(foo_pixbuf);


There is one problem though, which is that cairo and gdk pixbuf does not
agree on the order of R,G,B and alpha. So you will have to swap the data
before you do this. (Instead of gdk pixbuf you can use any image library,
e.g. libpng, opencv, FreeImage, etc.)

Another option if cairo has been compiled with PNG support, is to do:

cairo_surface_t * cairo_image_surface_create_from_png_stream
                  (cairo_read_func_t read_func,
                   void *closure);

You will then have to write a read_func instance that will provide data from
your baked png file.

Hope this helps.

Lycka till!
Dov

On Thu, Dec 17, 2009 at 11:05, gurnett at telia.com <gurnett at telia.com> wrote:

> I have an app that has a lot of png files. I've asked previously if it was
> possible to use embedded png images with cairo, but this did not seem
> possible.
> As I really want to bake all this images into the exe I was wondering if it
> is
> possible to use the gimp c file image format and use that instead of
>
> image=cairo_image_surface_create_from_png("image.png");
>
> Thanks
>
> Michael
> --
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.cairographics.org/archives/cairo/attachments/20091217/bc9b6d7d/attachment.htm 


More information about the cairo mailing list