]> git.cworth.org Git - grrobot/blobdiff - src/grr_icon.c
Update to 2020
[grrobot] / src / grr_icon.c
index fa76331a042a52b066d7bfea3ed5c70993d53b47..c273bd712ef450a69672453f766d7252a1c8df54 100644 (file)
@@ -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);
     }