work toward getting rid of struct table in table_item
[pspp] / src / output / cairo-pager.c
index 6249a3ab8e09829a5aecff5df351b5f4625007cc..d096b0caceec08a783cdaf9f0d951ea51823681a 100644 (file)
@@ -322,6 +322,14 @@ xr_pager_add_page (struct xr_pager *p, cairo_t *cr)
                             fs->size[H], fs->size[V] + ps->object_spacing,
                             fs->font_resolution);
 
+  cairo_surface_t *surface = cairo_get_target (cr);
+  if (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_PDF)
+    {
+      char *page_label = xasprintf ("%d", page_number);
+      cairo_pdf_surface_set_page_label (surface, page_label);
+      free (page_label);
+    }
+
   xr_pager_run (p);
 }
 
@@ -388,7 +396,7 @@ xr_pager_run (struct xr_pager *p)
                 }
             }
 
-          p->fsm = xr_fsm_create (p->item, p->fsm_style, p->cr);
+          p->fsm = xr_fsm_create_for_printing (p->item, p->fsm_style, p->cr);
           if (!p->fsm)
             {
               output_item_unref (p->item);
@@ -443,27 +451,8 @@ xr_pager_run (struct xr_pager *p)
                     }
                   p->n_opens = 0;
 
-                  const char *text;
-                  if (is_table_item (p->item))
-                    {
-                      const struct table_item_text *title
-                        = table_item_get_title (to_table_item (p->item));
-                      text = title ? title->content : "Table";
-                    }
-                  else if (is_chart_item (p->item))
-                    {
-                      const char *title
-                        = chart_item_get_title (to_chart_item (p->item));
-                      text = title ? title : "Chart";
-                    }
-                  else
-                    text = (is_page_eject_item (p->item) ? "Page Break"
-                            : is_page_setup_item (p->item) ? "Page Setup"
-                            : is_message_item (p->item) ? "Message"
-                            : is_text_item (p->item) ? "Text"
-                            : NULL);
-                  if (text)
-                    add_outline (p->cr, parent_group_id, text, attrs, 0);
+                  add_outline (p->cr, parent_group_id,
+                               output_item_get_label (p->item), attrs, 0);
                   free (attrs);
                 }
               free (dest_name);