summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mupdf/fitz/outline.h1
-rw-r--r--source/pdf/pdf-outline.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/include/mupdf/fitz/outline.h b/include/mupdf/fitz/outline.h
index 6a3ca81a..f0b2cc42 100644
--- a/include/mupdf/fitz/outline.h
+++ b/include/mupdf/fitz/outline.h
@@ -34,6 +34,7 @@ struct fz_outline_s
fz_link_dest dest;
fz_outline *next;
fz_outline *down;
+ int is_open;
};
/*
diff --git a/source/pdf/pdf-outline.c b/source/pdf/pdf-outline.c
index 8f83fdf9..e8635551 100644
--- a/source/pdf/pdf-outline.c
+++ b/source/pdf/pdf-outline.c
@@ -23,6 +23,7 @@ pdf_load_outline_imp(fz_context *ctx, pdf_document *doc, pdf_obj *dict)
node->dest.kind = FZ_LINK_NONE;
node->down = NULL;
node->next = NULL;
+ node->is_open = 0;
*prev = node;
prev = &node->next;
@@ -37,8 +38,14 @@ pdf_load_outline_imp(fz_context *ctx, pdf_document *doc, pdf_obj *dict)
obj = pdf_dict_get(ctx, dict, PDF_NAME_First);
if (obj)
+ {
node->down = pdf_load_outline_imp(ctx, doc, obj);
+ obj = pdf_dict_gets(ctx, dict, PDF_NAME_Count);
+ if (pdf_to_int(ctx, obj) > 0)
+ node->is_open = 1;
+ }
+
dict = pdf_dict_get(ctx, dict, PDF_NAME_Next);
}
}