/* grr_board_view - GTK+ widget for displaying an rr_board
*
- * 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
#include <cairo.h>
#include <cairo-xlib.h>
-#include <svg-cairo.h>
+#include <librsvg/rsvg.h>
+#include <librsvg/rsvg-cairo.h>
#include <gtk/gtkmain.h>
#include <gtk/gtksignal.h>
view = GRR_BOARD_VIEW (widget);
board = view->board;
- /* Unabstract X from GTK+ */
- gdk_window_get_internal_paint_info (widget->window, &real_drawable, &x_off, &y_off);
- dpy = gdk_x11_drawable_get_xdisplay (real_drawable);
- drawable = gdk_x11_drawable_get_xid (real_drawable);
-
- /* Ignore GTK+ and use Cairo for drawing. */
- visual = GDK_VISUAL_XVISUAL (gdk_drawable_get_visual (real_drawable));
- surface = cairo_xlib_surface_create (dpy, drawable, visual,
- widget->allocation.width,
- widget->allocation.height);
- xrs = cairo_create (surface);
+ xrs = gdk_cairo_create (widget->window);
new_cell_width = widget->allocation.width / view->board_width;
if (new_cell_width == 0)
/* 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
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;
}
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
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);
}
/* 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
#define GRR_ICON_H
#include <rr.h>
-#include <svg-cairo.h>
+#include <librsvg/rsvg.h>
+#include <librsvg/rsvg-cairo.h>
typedef struct grr_icon {
- svg_cairo_t *svg_cairo;
-
+ RsvgHandle *rsvg;
cairo_surface_t *surface;
int surface_width;
int surface_height;