Avoid "definition without prototype" warnings
[pspp] / src / output / cairo.c
index 9a0cb6797e5f7d309c16e4eac5e95ff294eb8276..7f220641061907ae771c5caf5cd5a28af3635cd5 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -30,6 +30,7 @@
 #include "output/charts/boxplot.h"
 #include "output/charts/np-plot.h"
 #include "output/charts/piechart.h"
+#include "output/charts/barchart.h"
 #include "output/charts/plot-hist.h"
 #include "output/charts/roc-chart.h"
 #include "output/charts/spreadlevel-plot.h"
@@ -287,7 +288,7 @@ apply_options (struct xr_driver *xr, struct string_map *o)
   xr->fonts[XR_FONT_MARKER].desc = parse_font (d, o, "marker-font", "serif",
                                                font_size * PANGO_SCALE_X_SMALL);
 
-  xr->line_gutter = 0;
+  xr->line_gutter = XR_POINT / 2;
   xr->line_space = XR_POINT;
   xr->line_width = XR_POINT / 2;
   xr->page_number = 0;
@@ -563,24 +564,19 @@ xr_submit (struct output_driver *driver, const struct output_item *output_item)
 
    See the big comment in cairo.h for intended usage. */
 
-/* Gives new page CAIRO to XR for output.  CAIRO may be null to skip actually
-   rendering the page (which might be useful to find out how many pages an
-   output document has without actually rendering it). */
+/* Gives new page CAIRO to XR for output. */
 void
 xr_driver_next_page (struct xr_driver *xr, cairo_t *cairo)
 {
-  if (cairo != NULL)
-    {
-      cairo_save (cairo);
-      cairo_set_source_rgb (cairo, xr->bg.red, xr->bg.green, xr->bg.blue);
-      cairo_rectangle (cairo, 0, 0, xr->width, xr->length);
-      cairo_fill (cairo);
-      cairo_restore (cairo);
-
-      cairo_translate (cairo,
-                      xr_to_pt (xr->left_margin),
-                      xr_to_pt (xr->top_margin));
-    }
+  cairo_save (cairo);
+  cairo_set_source_rgb (cairo, xr->bg.red, xr->bg.green, xr->bg.blue);
+  cairo_rectangle (cairo, 0, 0, xr->width, xr->length);
+  cairo_fill (cairo);
+  cairo_restore (cairo);
+
+  cairo_translate (cairo,
+                   xr_to_pt (xr->left_margin),
+                   xr_to_pt (xr->top_margin));
 
   xr->page_number++;
   xr->cairo = cairo;
@@ -846,8 +842,6 @@ xr_measure_cell_height (void *xr_, const struct table_cell *cell,
 
   bb[H][0] = 0;
   bb[H][1] = width - xr->cell_margin * 2;
-  if (bb[H][1] <= 0)
-    return 0;
   bb[V][0] = 0;
   bb[V][1] = INT_MAX;
   clip[H][0] = clip[H][1] = clip[V][0] = clip[V][1] = 0;
@@ -1375,11 +1369,9 @@ xr_rendering_measure (struct xr_rendering *r, int *w, int *h)
 static void xr_draw_chart (const struct chart_item *, cairo_t *,
                     double x, double y, double width, double height);
 
-/* Draws onto CR at least the region of R that is enclosed in (X,Y)-(X+W,Y+H),
-   and possibly some additional parts. */
+/* Draws onto CR */
 void
-xr_rendering_draw (struct xr_rendering *r, cairo_t *cr,
-                   int x, int y, int w, int h)
+xr_rendering_draw_all (struct xr_rendering *r, cairo_t *cr)
 {
   if (is_table_item (r->item))
     {
@@ -1387,10 +1379,8 @@ xr_rendering_draw (struct xr_rendering *r, cairo_t *cr,
 
       xr_set_cairo (xr, cr);
 
-      xr->y = 0;
-      render_pager_draw_region (r->p,
-                                x * XR_POINT, y * XR_POINT,
-                                w * XR_POINT, h * XR_POINT);
+      render_pager_draw (r->p);
+
     }
   else
     xr_draw_chart (to_chart_item (r->item), cr,
@@ -1415,6 +1405,8 @@ xr_draw_chart (const struct chart_item *chart_item, cairo_t *cr,
     xrchart_draw_np_plot (chart_item, cr, &geom);
   else if (is_piechart (chart_item))
     xrchart_draw_piechart (chart_item, cr, &geom);
+  else if (is_barchart (chart_item))
+    xrchart_draw_barchart (chart_item, cr, &geom);
   else if (is_roc_chart (chart_item))
     xrchart_draw_roc (chart_item, cr, &geom);
   else if (is_scree (chart_item))