[cairo] Simple SVG Example in C

Uli Schlachter psychon at znc.in
Fri Sep 14 08:53:30 PDT 2012

On 14.09.2012 17:25, Timothy Bolton wrote:
> Hi all,
> I'm looking for a very simple example of getting Cairo to save to an SVG 
> file.  I'm working in ANSI-C.
> I've gone through the documentation as best I could, I've searched 
> Google, mulled over StackOverflow and even cried a little.  So far, I 
> haven't been able to get it to work.  Writing a surface to a PNG works 
> for me, but for whatever reason, I'm at a loss for the SVG.
> I've included a pastebin of the code: http://pastebin.com/bDtFZ9Ww
> The environment that I'm working in is Ubuntu server (11 I think), and 
> I'm using gcc for compiling.

Attached is a new version of that code which actually works.

Changes that I did:

- Instead of using a char array, this now has a char pointer for the filename
(causes less garbage at the end of the filename)
- The broken call to cairo_image_surface_create_for_data() and the usage of
text_surface was removed, it's not important for getting this to work.
- The problem you have was fixed by adding the following at the end of main:


Always make sure to destroy ressources when you are done with them.

The call to cairo_surface_finish() isn't strictly needed for your example
because a surface is automatically finished when the last reference to it gets
destroyed. However, this is what makes cairo actually write the svg out.

"In the beginning the Universe was created. This has made a lot of
 people very angry and has been widely regarded as a bad move."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: t.c
Type: text/x-csrc
Size: 1182 bytes
Desc: not available
URL: <http://lists.cairographics.org/archives/cairo/attachments/20120914/6ac47ff8/attachment-0001.c>

More information about the cairo mailing list