X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=src%2Fgrr_icon.c;h=c273bd712ef450a69672453f766d7252a1c8df54;hb=HEAD;hp=fa76331a042a52b066d7bfea3ed5c70993d53b47;hpb=37043599e9e17250fe49a47034bce0dfb2879537;p=grrobot diff --git a/src/grr_icon.c b/src/grr_icon.c index fa76331..c273bd7 100644 --- a/src/grr_icon.c +++ b/src/grr_icon.c @@ -1,6 +1,6 @@ /* grrobot - Ricochet Robot using GTK+ and Xr * - * Copyright © 2003 Carl Worth + * Copyright © 2003 Carl Worth * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without @@ -127,35 +127,28 @@ grr_icon_create (char *name) static rr_status_t _grr_icon_init (grr_icon_t *icon, char *name) { - svg_cairo_status_t status; char *file, *buf; int buflen; + GError *error = NULL; icon->surface = NULL; icon->surface_width = 0; icon->surface_height = 0; - status = svg_cairo_create (&icon->svg_cairo); - if (status) - return RR_STATUS_NO_MEMORY; - file = _grr_icon_find_file (name); - if (file) { - status = svg_cairo_parse (icon->svg_cairo, file); - if (status == SVG_CAIRO_STATUS_SUCCESS) { - free (file); - return RR_STATUS_SUCCESS; - } - fprintf (stderr, "Error parsing SVG icon: %s\n", file); - free (file); - } - - _grr_icon_find_buffer (name, &buf, &buflen); - status = svg_cairo_parse_buffer (icon->svg_cairo, buf, buflen); - if (status) { - fprintf (stderr, "Error parsing built-in SVG icon for: %s\n", name); - return RR_STATUS_PARSE_ERROR; + icon->rsvg = rsvg_handle_new_from_file(file, &error); + if (!icon->rsvg) { + fprintf (stderr, "Error parsing SVG icon: %s\n", file); + return RR_STATUS_PARSE_ERROR; + } + } else { + _grr_icon_find_buffer (name, &buf, &buflen); + icon->rsvg = rsvg_handle_new_from_data(buf, buflen, &error); + if (!icon->rsvg) { + fprintf (stderr, "Error parsing built-in SVG icon for: %s\n", name); + return RR_STATUS_PARSE_ERROR; + } } return RR_STATUS_SUCCESS; } @@ -225,13 +218,13 @@ grr_icon_target_name (rr_target_t target) void grr_icon_draw (grr_icon_t *icon, cairo_t *xrs) { - svg_cairo_status_t status; - - status = svg_cairo_render (icon->svg_cairo, xrs); + rsvg_handle_render_cairo(icon->rsvg, xrs); +#if 0 if (status) { fprintf (stderr, "svg_cairo_render error\n"); return; } +#endif } void @@ -246,7 +239,7 @@ grr_icon_predraw (grr_icon_t *icon, cairo_t *xrs, int width, int height) icon->surface_width = width; icon->surface_height = height; icon->surface = cairo_surface_create_similar (cairo_get_target (xrs), - CAIRO_FORMAT_ARGB32, + CAIRO_CONTENT_COLOR_ALPHA, width, height); }