summaryrefslogtreecommitdiff
path: root/src/cairo-pdf-surface-private.h
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2016-10-01 22:28:02 +0930
committerAdrian Johnson <ajohnson@redneon.com>2016-10-01 22:28:02 +0930
commitdfc7b9e6698d5923a858ae9a77345c983ab51e4c (patch)
tree2f409df3a7bcc4f5769aeb979221d6e71a5f5557 /src/cairo-pdf-surface-private.h
parentdcbfb726478f5ab2277bd52813b40e565612566a (diff)
downloadcairo-dfc7b9e6698d5923a858ae9a77345c983ab51e4c.tar.gz
pdf: add document outline API
Diffstat (limited to 'src/cairo-pdf-surface-private.h')
-rw-r--r--src/cairo-pdf-surface-private.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cairo-pdf-surface-private.h b/src/cairo-pdf-surface-private.h
index cbe4599a1..010b127de 100644
--- a/src/cairo-pdf-surface-private.h
+++ b/src/cairo-pdf-surface-private.h
@@ -193,6 +193,19 @@ typedef struct _cairo_pdf_named_dest {
cairo_bool_t referenced;
} cairo_pdf_named_dest_t;
+typedef struct _cairo_pdf_outline_entry {
+ char *name;
+ char *dest;
+ cairo_pdf_outline_flags_t flags;
+ cairo_pdf_resource_t res;
+ struct _cairo_pdf_outline_entry *parent;
+ struct _cairo_pdf_outline_entry *first_child;
+ struct _cairo_pdf_outline_entry *last_child;
+ struct _cairo_pdf_outline_entry *next;
+ struct _cairo_pdf_outline_entry *prev;
+ int count;
+} cairo_pdf_outline_entry_t;
+
typedef struct _cairo_pdf_interchange {
cairo_tag_stack_t analysis_tag_stack;
cairo_tag_stack_t render_tag_stack;
@@ -211,6 +224,7 @@ typedef struct _cairo_pdf_interchange {
cairo_pdf_named_dest_t **sorted_dests;
cairo_pdf_resource_t dests_res;
int annot_page;
+ cairo_array_t outline; /* array of pointers to cairo_pdf_outline_entry_t; */
} cairo_pdf_interchange_t;
@@ -298,6 +312,7 @@ struct _cairo_pdf_surface {
int page_parent_tree; /* -1 if not used */
cairo_array_t page_annots;
cairo_bool_t tagged;
+ cairo_pdf_resource_t outlines_dict_res;
cairo_pdf_resource_t names_dict_res;
cairo_surface_t *paginated_surface;
@@ -344,5 +359,12 @@ _cairo_pdf_interchange_write_page_objects (cairo_pdf_surface_t *surface);
cairo_private cairo_int_status_t
_cairo_pdf_interchange_write_document_objects (cairo_pdf_surface_t *surface);
+cairo_private cairo_int_status_t
+_cairo_pdf_interchange_add_outline (cairo_pdf_surface_t *surface,
+ int parent_id,
+ const char *name,
+ const char *dest,
+ cairo_pdf_outline_flags_t flags,
+ int *id);
#endif /* CAIRO_PDF_SURFACE_PRIVATE_H */