- cairo_surface_t *surface = xr_draw_image_chart (
- to_chart_item (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 (w, item, surface);
- cairo_surface_destroy (surface);
- }
- else if (is_image_item (item))
- spv_writer_put_image (w, item, to_image_item (item)->image);
- else if (is_text_item (item))
- {
- char *command_id = output_get_command_name ();
- spv_writer_put_text (w, to_text_item (item),
- command_id);
- free (command_id);
- }
- else if (is_page_break_item (item))
- w->need_page_break = true;
- else if (is_page_setup_item (item))
- {
- page_setup_destroy (w->page_setup);
- w->page_setup = page_setup_clone (to_page_setup_item (item)->page_setup);
+ case OUTPUT_ITEM_CHART:
+ {
+ cairo_surface_t *surface = xr_draw_image_chart (
+ item->chart,
+ &(struct cell_color) CELL_COLOR_BLACK,
+ &(struct cell_color) CELL_COLOR_WHITE);
+ if (cairo_surface_status (surface) == CAIRO_STATUS_SUCCESS)
+ spv_writer_put_image (w, item, surface);
+ cairo_surface_destroy (surface);
+ }
+ break;
+
+ case OUTPUT_ITEM_GROUP:
+ spv_writer_open_heading (w, item);
+ for (size_t i = 0; i < item->group.n_children; i++)
+ spv_writer_write (w, item->group.children[i]);
+ spv_writer_close_heading (w);
+ break;
+
+ case OUTPUT_ITEM_IMAGE:
+ spv_writer_put_image (w, item, item->image);
+ break;
+
+ case OUTPUT_ITEM_MESSAGE:
+ spv_writer_put_text (
+ w, message_item_to_text_item (output_item_ref (item)));
+ break;
+
+ case OUTPUT_ITEM_PAGE_BREAK:
+ w->need_page_break = true;
+ break;
+
+ case OUTPUT_ITEM_TABLE:
+ spv_writer_put_table (w, item);
+ break;
+
+ case OUTPUT_ITEM_TEXT:
+ spv_writer_put_text (w, output_item_ref (item));
+ break;