summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-07-06 13:15:49 +0200
committerTor Andersson <tor.andersson@artifex.com>2016-07-06 15:49:55 +0200
commitf0eabc17d6ec113c6e765ac3272f19623a6cbd4e (patch)
tree873d91bfbc610d70e571358550c59d24c8b64ed2 /include
parentc3944e2e1cfb4ac86a8580829376357e1d5bccda (diff)
downloadmupdf-f0eabc17d6ec113c6e765ac3272f19623a6cbd4e.tar.xz
Start slimming pdf_page.
We want to turn pdf_page into a thin wrapper around a pdf_obj, so that any updates to the underlying PDF objects will be reflected without having to reload the pdf_page.
Diffstat (limited to 'include')
-rw-r--r--include/mupdf/fitz/document.h14
-rw-r--r--include/mupdf/pdf/annot.h5
-rw-r--r--include/mupdf/pdf/page.h21
3 files changed, 19 insertions, 21 deletions
diff --git a/include/mupdf/fitz/document.h b/include/mupdf/fitz/document.h
index 1f3f474d..889b66b1 100644
--- a/include/mupdf/fitz/document.h
+++ b/include/mupdf/fitz/document.h
@@ -40,7 +40,7 @@ typedef fz_link *(fz_page_load_links_fn)(fz_context *ctx, fz_page *page);
typedef fz_rect *(fz_page_bound_page_fn)(fz_context *ctx, fz_page *page, fz_rect *);
typedef void (fz_page_run_page_contents_fn)(fz_context *ctx, fz_page *page, fz_device *dev, const fz_matrix *transform, fz_cookie *cookie);
typedef void (fz_page_drop_page_imp_fn)(fz_context *ctx, fz_page *page);
-typedef fz_transition *(fz_page_page_presentation_fn)(fz_context *ctx, fz_page *page, float *duration);
+typedef fz_transition *(fz_page_page_presentation_fn)(fz_context *ctx, fz_page *page, fz_transition *transition, float *duration);
typedef fz_annot *(fz_page_first_annot_fn)(fz_context *ctx, fz_page *page);
@@ -334,15 +334,15 @@ void *fz_new_annot(fz_context *ctx, int size);
/*
fz_page_presentation: Get the presentation details for a given page.
- duration: NULL, or a pointer to a place to set the page duration in
- seconds. (Will be set to 0 if unspecified).
+ transition: A pointer to a transition struct to fill out.
- Returns: a pointer to a transition structure, or NULL if there isn't
- one.
+ duration: A pointer to a place to set the page duration in seconds.
+ Will be set to 0 if no transition is specified for the page.
- Does not throw exceptions.
+ Returns: a pointer to a the transition structure, or NULL if there is no
+ transition specified for the page.
*/
-fz_transition *fz_page_presentation(fz_context *ctx, fz_page *page, float *duration);
+fz_transition *fz_page_presentation(fz_context *ctx, fz_page *page, fz_transition *transition, float *duration);
/*
fz_has_permission: Check permission flags on document.
diff --git a/include/mupdf/pdf/annot.h b/include/mupdf/pdf/annot.h
index ed18aae1..e6ea5b8d 100644
--- a/include/mupdf/pdf/annot.h
+++ b/include/mupdf/pdf/annot.h
@@ -59,6 +59,7 @@ struct pdf_annot_s
{
fz_annot super;
pdf_page *page;
+ fz_matrix page_ctm, inv_page_ctm;
pdf_obj *obj;
fz_rect rect;
fz_rect pagerect;
@@ -81,7 +82,7 @@ pdf_obj *pdf_load_name_tree(fz_context *ctx, pdf_document *doc, pdf_obj *which);
fz_link *pdf_load_link_annots(fz_context *ctx, pdf_document *, pdf_obj *annots, const fz_matrix *page_ctm);
void pdf_transform_annot(fz_context *ctx, pdf_annot *annot);
-void pdf_load_annots(fz_context *ctx, pdf_document *, pdf_page *page, pdf_obj *annots);
+void pdf_load_annots(fz_context *ctx, pdf_document *, pdf_page *page, pdf_obj *annots, const fz_matrix *page_transform);
void pdf_update_annot(fz_context *ctx, pdf_document *, pdf_annot *annot);
void pdf_drop_annots(fz_context *ctx, pdf_annot *annot_list);
@@ -155,6 +156,6 @@ pdf_annot *pdf_poll_changed_annot(fz_context *ctx, pdf_document *idoc, pdf_page
/*
pdf_new_annot: Internal function for creating a new pdf annotation.
*/
-pdf_annot *pdf_new_annot(fz_context *ctx, pdf_page *page);
+pdf_annot *pdf_new_annot(fz_context *ctx, pdf_page *page, const fz_matrix *page_ctm, const fz_matrix *inv_page_ctm);
#endif
diff --git a/include/mupdf/pdf/page.h b/include/mupdf/pdf/page.h
index 43634d46..e3efb1e7 100644
--- a/include/mupdf/pdf/page.h
+++ b/include/mupdf/pdf/page.h
@@ -19,7 +19,7 @@ int pdf_lookup_anchor(fz_context *ctx, pdf_document *doc, const char *name);
Copy any inheritable page keys into the actual page object, removing
any dependencies on the page tree parents.
*/
-void pdf_flatten_inheritable_page_items(fz_context *ctx, pdf_document *doc, pdf_obj *page);
+void pdf_flatten_inheritable_page_items(fz_context *ctx, pdf_obj *page);
/*
pdf_load_page: Load a page and its resources.
@@ -32,9 +32,12 @@ void pdf_flatten_inheritable_page_items(fz_context *ctx, pdf_document *doc, pdf_
number: page number, where 0 is the first page of the document.
*/
pdf_page *pdf_load_page(fz_context *ctx, pdf_document *doc, int number);
-
void pdf_drop_page(fz_context *ctx, pdf_page *page);
+void pdf_page_transform(fz_context *ctx, pdf_page *page, fz_rect *mediabox, fz_matrix *ctm);
+pdf_obj *pdf_page_resources(fz_context *ctx, pdf_page *page);
+pdf_obj *pdf_page_contents(fz_context *ctx, pdf_page *page);
+
fz_link *pdf_load_links(fz_context *ctx, pdf_page *page);
/*
@@ -159,7 +162,7 @@ void pdf_clean_annot_contents(fz_context *ctx, pdf_document *doc, pdf_annot *ann
/*
Presentation interface.
*/
-fz_transition *pdf_page_presentation(fz_context *ctx, pdf_page *page, float *duration);
+fz_transition *pdf_page_presentation(fz_context *ctx, pdf_page *page, fz_transition *transition, float *duration);
/*
* Page tree, pages and related objects
@@ -169,23 +172,17 @@ struct pdf_page_s
{
fz_page super;
pdf_document *doc;
+ pdf_obj *obj;
- fz_matrix ctm; /* calculated from mediabox and rotate */
- fz_rect mediabox;
- int rotate;
int transparency;
- pdf_obj *resources;
- pdf_obj *contents;
+
fz_link *links;
pdf_annot *annots;
pdf_annot **annot_tailp;
pdf_annot *changed_annots;
pdf_annot *deleted_annots;
pdf_annot *tmp_annots;
- pdf_obj *me;
- float duration;
- int transition_present;
- fz_transition transition;
+
int incomplete;
};