psppire-data-sheet: Use specific functions instead of g_object_set().
[pspp] / src / output / cairo.c
index a98df2e6c18bc1d59a4cb4033879fec09b905242..954ae30f5448b40ecfb3bd0bd5691e9a8f9cd4d7 100644 (file)
@@ -249,9 +249,18 @@ apply_options (struct xr_driver *xr, struct string_map *o)
 {
   struct output_driver *d = &xr->driver;
 
-  int paper_width, paper_length;
+  int paper_width, paper_length, i;
 
   int font_points = parse_int (opt (d, o, "font-size", "10000"), 1000, 1000000);
+
+  for (i = 0; i < XR_N_FONTS; i++)
+    {
+      struct xr_font *font = &xr->fonts[i];
+
+      if (font->desc != NULL)
+        pango_font_description_free (font->desc);
+    }
+
   xr->fonts[XR_FONT_FIXED].desc = parse_font (d, o, "fixed-font", "monospace",
                                               font_points);
   xr->fonts[XR_FONT_PROPORTIONAL].desc = parse_font (d, o, "prop-font",
@@ -313,7 +322,7 @@ xr_set_cairo (struct xr_driver *xr, cairo_t *cairo)
   cairo_set_line_width (xr->cairo, xr_to_pt (xr->line_width));
 
   map = pango_cairo_font_map_get_default ();
-  context = pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (map));
+  context = pango_font_map_create_context (map);
   if (xr_is_72dpi (cairo))
     {
       /* Pango seems to always scale fonts according to the DPI specified
@@ -377,14 +386,12 @@ xr_create (const char *file_name, enum settings_output_devices device_type,
            struct string_map *o, enum xr_output_type file_type)
 {
   enum { MIN_WIDTH = 3, MIN_LENGTH = 3 };
-  struct output_driver *d;
   struct xr_driver *xr;
   cairo_surface_t *surface;
   cairo_status_t status;
   double width_pt, length_pt;
 
   xr = xr_allocate (file_name, device_type, o);
-  d = &xr->driver;
 
   width_pt = (xr->width + xr->left_margin + xr->right_margin) / 1000.0;
   length_pt = (xr->length + xr->top_margin + xr->bottom_margin) / 1000.0;