summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-outline.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf/pdf-outline.c')
-rw-r--r--source/pdf/pdf-outline.c39
1 files changed, 19 insertions, 20 deletions
diff --git a/source/pdf/pdf-outline.c b/source/pdf/pdf-outline.c
index 4e4ad642..34bb79ed 100644
--- a/source/pdf/pdf-outline.c
+++ b/source/pdf/pdf-outline.c
@@ -1,9 +1,8 @@
#include "mupdf/pdf.h"
static fz_outline *
-pdf_load_outline_imp(pdf_document *doc, pdf_obj *dict)
+pdf_load_outline_imp(fz_context *ctx, pdf_document *doc, pdf_obj *dict)
{
- fz_context *ctx = doc->ctx;
fz_outline *node, **prev, *first;
pdf_obj *obj;
pdf_obj *odict = dict;
@@ -15,9 +14,9 @@ pdf_load_outline_imp(pdf_document *doc, pdf_obj *dict)
{
first = NULL;
prev = &first;
- while (dict && pdf_is_dict(dict))
+ while (dict && pdf_is_dict(ctx, dict))
{
- if (pdf_mark_obj(dict))
+ if (pdf_mark_obj(ctx, dict))
break;
node = fz_malloc_struct(ctx, fz_outline);
node->title = NULL;
@@ -27,26 +26,26 @@ pdf_load_outline_imp(pdf_document *doc, pdf_obj *dict)
*prev = node;
prev = &node->next;
- obj = pdf_dict_gets(dict, "Title");
+ obj = pdf_dict_gets(ctx, dict, "Title");
if (obj)
- node->title = pdf_to_utf8(doc, obj);
+ node->title = pdf_to_utf8(ctx, doc, obj);
- if ((obj = pdf_dict_gets(dict, "Dest")) != NULL)
- node->dest = pdf_parse_link_dest(doc, FZ_LINK_GOTO, obj);
- else if ((obj = pdf_dict_gets(dict, "A")) != NULL)
- node->dest = pdf_parse_action(doc, obj);
+ if ((obj = pdf_dict_gets(ctx, dict, "Dest")) != NULL)
+ node->dest = pdf_parse_link_dest(ctx, doc, FZ_LINK_GOTO, obj);
+ else if ((obj = pdf_dict_gets(ctx, dict, "A")) != NULL)
+ node->dest = pdf_parse_action(ctx, doc, obj);
- obj = pdf_dict_gets(dict, "First");
+ obj = pdf_dict_gets(ctx, dict, "First");
if (obj)
- node->down = pdf_load_outline_imp(doc, obj);
+ node->down = pdf_load_outline_imp(ctx, doc, obj);
- dict = pdf_dict_gets(dict, "Next");
+ dict = pdf_dict_gets(ctx, dict, "Next");
}
}
fz_always(ctx)
{
- for (dict = odict; dict && pdf_obj_marked(dict); dict = pdf_dict_gets(dict, "Next"))
- pdf_unmark_obj(dict);
+ for (dict = odict; dict && pdf_obj_marked(ctx, dict); dict = pdf_dict_gets(ctx, dict, "Next"))
+ pdf_unmark_obj(ctx, dict);
}
fz_catch(ctx)
{
@@ -58,15 +57,15 @@ pdf_load_outline_imp(pdf_document *doc, pdf_obj *dict)
}
fz_outline *
-pdf_load_outline(pdf_document *doc)
+pdf_load_outline(fz_context *ctx, pdf_document *doc)
{
pdf_obj *root, *obj, *first;
- root = pdf_dict_gets(pdf_trailer(doc), "Root");
- obj = pdf_dict_gets(root, "Outlines");
- first = pdf_dict_gets(obj, "First");
+ root = pdf_dict_gets(ctx, pdf_trailer(ctx, doc), "Root");
+ obj = pdf_dict_gets(ctx, root, "Outlines");
+ first = pdf_dict_gets(ctx, obj, "First");
if (first)
- return pdf_load_outline_imp(doc, first);
+ return pdf_load_outline_imp(ctx, doc, first);
return NULL;
}