cairo: added xr_draw_svg_file function
authorFriedrich Beckmann <friedrich.beckmann@gmx.de>
Fri, 11 Sep 2020 16:32:13 +0000 (18:32 +0200)
committerFriedrich Beckmann <friedrich.beckmann@gmx.de>
Fri, 11 Sep 2020 21:10:22 +0000 (23:10 +0200)
This is used by the output window to render the items for copy and paste.

src/output/cairo.c
src/output/cairo.h

index 8c67ce03ae479a8d8ad0373f8ed35306822c9338..b733c941fd103711d26bb690262ed408cf0be839 100644 (file)
@@ -2253,3 +2253,23 @@ xr_render_output_item (struct xr_driver *xr,
   else
     return NULL;
 }
+
+bool
+xr_draw_svg_file (struct xr_rendering *r,
+                 const char *filename)
+{
+  int width, height;
+  g_assert (r);
+  xr_rendering_measure (r, &width, &height);
+  cairo_surface_t *surface = cairo_svg_surface_create (filename, width, height);
+  if (!surface)
+    {
+      g_error ("Could not create cairo svg surface with file %s", filename);
+      return FALSE;
+    }
+  cairo_t *cr = cairo_create (surface);
+  xr_rendering_draw (r, cr, 0, 0, width, height);
+  cairo_destroy (cr);
+  cairo_surface_destroy (surface);
+  return TRUE;
+}
index 4c32ca7ded1261436bf00b051b511f4c14edac99..a13154b550d19d8a37f97e9ef9905449f1ff1b88 100644 (file)
@@ -96,6 +96,9 @@ char *xr_draw_png_chart (const struct chart_item *,
                          const struct cell_color *fg,
                         const struct cell_color *bg);
 
+/* Render to a svg file */
+bool xr_draw_svg_file (struct xr_rendering *r,
+                      const char *filename);
 
 #endif  /* HAVE_CAIRO */