output-item: Collapse the inheritance hierarchy into a single struct.
[pspp] / src / output / cairo-chart.h
index 116a8c990110be01d1e21a900874e18823a703c9..18c242efcebd0c779f74e9b4cba3f540f0256140 100644 (file)
@@ -22,7 +22,8 @@
 #include <stdint.h>
 #include "libpspp/compiler.h"
 
-struct chart_item;
+struct cell_color;
+struct chart;
 
 struct xrchart_colour
   {
@@ -117,13 +118,12 @@ void xrchart_write_title (cairo_t *, const struct xrchart_geometry *,
   PRINTF_FORMAT (3, 4);
 
 /* Set the scale for the abscissa */
-void xrchart_write_xscale (cairo_t *, struct xrchart_geometry *,
-                           double min, double max);
-
+bool xrchart_write_xscale (cairo_t *, struct xrchart_geometry *,
+                           double min, double max) WARN_UNUSED_RESULT;
 
 /* Set the scale for the ordinate */
-void xrchart_write_yscale (cairo_t *, struct xrchart_geometry *,
-                           double smin, double smax);
+bool xrchart_write_yscale (cairo_t *, struct xrchart_geometry *,
+                           double smin, double smax) WARN_UNUSED_RESULT;
 
 void xrchart_write_xlabel (cairo_t *, const struct xrchart_geometry *,
                            const char *label) ;
@@ -159,28 +159,42 @@ void xrchart_line (cairo_t *, const struct xrchart_geometry *,
                    double limit1, double limit2, enum xrchart_dim lim_dim);
 
 /* Drawing various kinds of charts. */
-void xrchart_draw_boxplot (const struct chart_item *, cairo_t *,
+void xrchart_draw_boxplot (const struct chart *, cairo_t *,
                            struct xrchart_geometry *);
-void xrchart_draw_roc (const struct chart_item *, cairo_t *,
+void xrchart_draw_roc (const struct chart *, cairo_t *,
                        struct xrchart_geometry *);
-void xrchart_draw_piechart (const struct chart_item *, cairo_t *,
+void xrchart_draw_piechart (const struct chart *, cairo_t *,
                             struct xrchart_geometry *);
-void xrchart_draw_barchart (const struct chart_item *, cairo_t *,
+void xrchart_draw_barchart (const struct chart *, cairo_t *,
                             struct xrchart_geometry *);
-void xrchart_draw_histogram (const struct chart_item *, cairo_t *,
+void xrchart_draw_histogram (const struct chart *, cairo_t *,
                              struct xrchart_geometry *);
-void xrchart_draw_np_plot (const struct chart_item *, cairo_t *,
+void xrchart_draw_np_plot (const struct chart *, cairo_t *,
                            struct xrchart_geometry *);
-void xrchart_draw_scree (const struct chart_item *, cairo_t *,
+void xrchart_draw_scree (const struct chart *, cairo_t *,
                          struct xrchart_geometry *);
-void xrchart_draw_spreadlevel (const struct chart_item *, cairo_t *,
+void xrchart_draw_spreadlevel (const struct chart *, cairo_t *,
                          struct xrchart_geometry *);
-void xrchart_draw_scatterplot (const struct chart_item *, cairo_t *,
+void xrchart_draw_scatterplot (const struct chart *, cairo_t *,
                          struct xrchart_geometry *);
 
-/* Get the width and height of rendered label text */
-void xrchart_text_extents (cairo_t *cr, const struct xrchart_geometry *geom,
-                          const char *utf8,
-                          double *width, double *height);
+void xr_draw_chart (const struct chart *, cairo_t *,
+                    double width, double height);
+
+cairo_surface_t *xr_draw_image_chart (const struct chart *,
+                                      const struct cell_color *fg,
+                                      const struct cell_color *bg);
+char *xr_write_png_image (cairo_surface_t *,
+                          const char *file_name_template, int number);
+
+char *xr_draw_png_chart (const struct chart *,
+                         const char *file_name_template, int number,
+                         const struct cell_color *fg,
+                        const struct cell_color *bg);
+
+char *xr_draw_eps_chart (const struct chart *,
+                         const char *file_name_template, int number,
+                         const struct cell_color *fg,
+                         const struct cell_color *bg);
 
 #endif /* output/cairo-chart.h */