#include "data/file-handle-def.h"
#include "libpspp/cast.h"
+#include "output/cairo-chart.h"
+#include "output/chart-item.h"
#include "output/group-item.h"
+#include "output/image-item.h"
+#include "output/page-eject-item.h"
#include "output/page-setup-item.h"
#include "output/table-item.h"
#include "output/text-item.h"
return d;
error:
- fh_unref (fh);
output_driver_destroy (d);
return NULL;
}
if (table_item->pt)
spv_writer_put_table (spv->writer, table_item->pt);
}
+ else if (is_chart_item (output_item))
+ {
+ cairo_surface_t *surface = xr_draw_image_chart (
+ to_chart_item (output_item),
+ &(struct cell_color) CELL_COLOR_BLACK,
+ &(struct cell_color) CELL_COLOR_WHITE);
+ if (cairo_surface_status (surface) == CAIRO_STATUS_SUCCESS)
+ spv_writer_put_image (spv->writer, surface);
+ cairo_surface_destroy (surface);
+ }
+ else if (is_image_item (output_item))
+ spv_writer_put_image (spv->writer, to_image_item (output_item)->image);
else if (is_text_item (output_item))
- spv_writer_put_text (spv->writer, to_text_item (output_item),
- output_get_command_name ());
+ {
+ char *command_id = output_get_command_name ();
+ spv_writer_put_text (spv->writer, to_text_item (output_item),
+ command_id);
+ free (command_id);
+ }
+ else if (is_page_eject_item (output_item))
+ spv_writer_eject_page (spv->writer);
else if (is_page_setup_item (output_item))
spv_writer_set_page_setup (spv->writer,
to_page_setup_item (output_item)->page_setup);