summaryrefslogtreecommitdiff
path: root/include/mupdf/pdf
diff options
context:
space:
mode:
Diffstat (limited to 'include/mupdf/pdf')
-rw-r--r--include/mupdf/pdf/annot.h48
-rw-r--r--include/mupdf/pdf/appearance.h20
-rw-r--r--include/mupdf/pdf/cmap.h2
-rw-r--r--include/mupdf/pdf/crypt.h34
-rw-r--r--include/mupdf/pdf/document.h36
-rw-r--r--include/mupdf/pdf/event.h28
-rw-r--r--include/mupdf/pdf/field.h36
-rw-r--r--include/mupdf/pdf/font.h18
-rw-r--r--include/mupdf/pdf/javascript.h6
-rw-r--r--include/mupdf/pdf/object.h180
-rw-r--r--include/mupdf/pdf/output-pdf.h6
-rw-r--r--include/mupdf/pdf/page.h32
-rw-r--r--include/mupdf/pdf/parse.h16
-rw-r--r--include/mupdf/pdf/resource.h22
-rw-r--r--include/mupdf/pdf/widget.h28
-rw-r--r--include/mupdf/pdf/xref.h86
16 files changed, 296 insertions, 302 deletions
diff --git a/include/mupdf/pdf/annot.h b/include/mupdf/pdf/annot.h
index 6586eb3e..a6959f32 100644
--- a/include/mupdf/pdf/annot.h
+++ b/include/mupdf/pdf/annot.h
@@ -20,26 +20,26 @@ enum
Does not throw exceptions.
*/
-pdf_annot *pdf_first_annot(pdf_document *doc, pdf_page *page);
+pdf_annot *pdf_first_annot(fz_context *ctx, pdf_page *page);
/*
pdf_next_annot: Return the next annotation on a page.
Does not throw exceptions.
*/
-pdf_annot *pdf_next_annot(pdf_document *doc, pdf_annot *annot);
+pdf_annot *pdf_next_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot);
/*
pdf_bound_annot: Return the rectangle for an annotation on a page.
Does not throw exceptions.
*/
-fz_rect *pdf_bound_annot(pdf_document *doc, pdf_annot *annot, fz_rect *rect);
+fz_rect *pdf_bound_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot, fz_rect *rect);
/*
pdf_annot_type: Return the type of an annotation
*/
-fz_annot_type pdf_annot_type(pdf_annot *annot);
+fz_annot_type pdf_annot_type(fz_context *ctx, pdf_annot *annot);
/*
pdf_run_annot: Interpret an annotation and render it on a device.
@@ -53,7 +53,7 @@ fz_annot_type pdf_annot_type(pdf_annot *annot);
ctm: A transformation matrix applied to the objects on the page,
e.g. to scale or rotate the page contents as desired.
*/
-void pdf_run_annot(pdf_document *doc, pdf_page *page, pdf_annot *annot, fz_device *dev, const fz_matrix *ctm, fz_cookie *cookie);
+void pdf_run_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot, fz_device *dev, const fz_matrix *ctm, fz_cookie *cookie);
struct pdf_annot_s
{
@@ -70,17 +70,17 @@ struct pdf_annot_s
int widget_type;
};
-fz_link_dest pdf_parse_link_dest(pdf_document *doc, fz_link_kind kind, pdf_obj *dest);
-fz_link_dest pdf_parse_action(pdf_document *doc, pdf_obj *action);
-pdf_obj *pdf_lookup_dest(pdf_document *doc, pdf_obj *needle);
-pdf_obj *pdf_lookup_name(pdf_document *doc, char *which, pdf_obj *needle);
-pdf_obj *pdf_load_name_tree(pdf_document *doc, char *which);
+fz_link_dest pdf_parse_link_dest(fz_context *ctx, pdf_document *doc, fz_link_kind kind, pdf_obj *dest);
+fz_link_dest pdf_parse_action(fz_context *ctx, pdf_document *doc, pdf_obj *action);
+pdf_obj *pdf_lookup_dest(fz_context *ctx, pdf_document *doc, pdf_obj *needle);
+pdf_obj *pdf_lookup_name(fz_context *ctx, pdf_document *doc, char *which, pdf_obj *needle);
+pdf_obj *pdf_load_name_tree(fz_context *ctx, pdf_document *doc, char *which);
-fz_link *pdf_load_link_annots(pdf_document *, pdf_obj *annots, const fz_matrix *page_ctm);
+fz_link *pdf_load_link_annots(fz_context *ctx, pdf_document *, pdf_obj *annots, const fz_matrix *page_ctm);
-void pdf_transform_annot(pdf_annot *annot);
-void pdf_load_annots(pdf_document *, pdf_page *page, pdf_obj *annots);
-void pdf_update_annot(pdf_document *, pdf_annot *annot);
+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_update_annot(fz_context *ctx, pdf_document *, pdf_annot *annot);
void pdf_drop_annot(fz_context *ctx, pdf_annot *link);
/*
@@ -88,51 +88,51 @@ void pdf_drop_annot(fz_context *ctx, pdf_annot *link);
specified page. The returned pdf_annot structure is owned by the page
and does not need to be freed.
*/
-pdf_annot *pdf_create_annot(pdf_document *doc, pdf_page *page, fz_annot_type type);
+pdf_annot *pdf_create_annot(fz_context *ctx, pdf_document *doc, pdf_page *page, fz_annot_type type);
/*
pdf_delete_annot: delete an annotation
*/
-void pdf_delete_annot(pdf_document *doc, pdf_page *page, pdf_annot *annot);
+void pdf_delete_annot(fz_context *ctx, pdf_document *doc, pdf_page *page, pdf_annot *annot);
/*
pdf_set_markup_annot_quadpoints: set the quadpoints for a text-markup annotation.
*/
-void pdf_set_markup_annot_quadpoints(pdf_document *doc, pdf_annot *annot, fz_point *qp, int n);
+void pdf_set_markup_annot_quadpoints(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_point *qp, int n);
/*
pdf_set_ink_annot_list: set the details of an ink annotation. All the points of the multiple arcs
are carried in a single array, with the counts for each arc held in a secondary array.
*/
-void pdf_set_ink_annot_list(pdf_document *doc, pdf_annot *annot, fz_point *pts, int *counts, int ncount, float color[3], float thickness);
+void pdf_set_ink_annot_list(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_point *pts, int *counts, int ncount, float color[3], float thickness);
/*
pdf_set_text_annot_position: set the position on page for a text (sticky note) annotation.
*/
-void pdf_set_text_annot_position(pdf_document *doc, pdf_annot *annot, fz_point pt);
+void pdf_set_text_annot_position(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_point pt);
/*
pdf_set_annot_contents: set the contents of an annotation.
*/
-void pdf_set_annot_contents(pdf_document *doc, pdf_annot *annot, char *text);
+void pdf_set_annot_contents(fz_context *ctx, pdf_document *doc, pdf_annot *annot, char *text);
/*
pdf_annot_contents: return the contents of an annotation.
*/
-char *pdf_annot_contents(pdf_document *doc, pdf_annot *annot);
+char *pdf_annot_contents(fz_context *ctx, pdf_document *doc, pdf_annot *annot);
/*
pdf_set_free_text_details: set the position, text, font and color for a free text annotation.
Only base 14 fonts are supported and are specified by name.
*/
-void pdf_set_free_text_details(pdf_document *doc, pdf_annot *annot, fz_point *pos, char *text, char *font_name, float font_size, float color[3]);
+void pdf_set_free_text_details(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_point *pos, char *text, char *font_name, float font_size, float color[3]);
-fz_annot_type pdf_annot_obj_type(pdf_obj *obj);
+fz_annot_type pdf_annot_obj_type(fz_context *ctx, pdf_obj *obj);
/*
pdf_poll_changed_annot: enumerate the changed annotations recoreded
by a call to pdf_update_page.
*/
-pdf_annot *pdf_poll_changed_annot(pdf_document *idoc, pdf_page *page);
+pdf_annot *pdf_poll_changed_annot(fz_context *ctx, pdf_document *idoc, pdf_page *page);
#endif
diff --git a/include/mupdf/pdf/appearance.h b/include/mupdf/pdf/appearance.h
index 3cdfb103..ddf64516 100644
--- a/include/mupdf/pdf/appearance.h
+++ b/include/mupdf/pdf/appearance.h
@@ -13,30 +13,30 @@ void pdf_da_info_fin(fz_context *ctx, pdf_da_info *di);
void pdf_parse_da(fz_context *ctx, char *da, pdf_da_info *di);
void pdf_fzbuf_print_da(fz_context *ctx, fz_buffer *fzbuf, pdf_da_info *di);
-void pdf_update_text_appearance(pdf_document *doc, pdf_obj *obj, char *eventValue);
-void pdf_update_combobox_appearance(pdf_document *doc, pdf_obj *obj);
-void pdf_update_pushbutton_appearance(pdf_document *doc, pdf_obj *obj);
-void pdf_update_text_markup_appearance(pdf_document *doc, pdf_annot *annot, fz_annot_type type);
-void pdf_update_ink_appearance(pdf_document *doc, pdf_annot *annot);
-void pdf_update_text_annot_appearance(pdf_document *doc, pdf_annot *annot);
+void pdf_update_text_appearance(fz_context *ctx, pdf_document *doc, pdf_obj *obj, char *eventValue);
+void pdf_update_combobox_appearance(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
+void pdf_update_pushbutton_appearance(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
+void pdf_update_text_markup_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_annot_type type);
+void pdf_update_ink_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot);
+void pdf_update_text_annot_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot);
/*
pdf_update_free_text_annot_appearance: update the appearance stream for a free text
annotation, basing it on the annoations rectangle and contents.
*/
-void pdf_update_free_text_annot_appearance(pdf_document *doc, pdf_annot *annot);
+void pdf_update_free_text_annot_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot);
/*
pdf_set_annot_appearance: update the appearance of an annotation based
on a display list.
*/
-void pdf_set_annot_appearance(pdf_document *doc, pdf_annot *annot, fz_rect *rect, fz_display_list *disp_list);
+void pdf_set_annot_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_rect *rect, fz_display_list *disp_list);
/*
fz_set_markup_appearance: set the appearance stream of a text markup annotations, basing it on
its QuadPoints array
*/
-void pdf_set_markup_appearance(pdf_document *doc, pdf_annot *annot, float color[3], float alpha, float line_thickness, float line_height);
+void pdf_set_markup_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot, float color[3], float alpha, float line_thickness, float line_height);
-void pdf_set_signature_appearance(pdf_document *doc, pdf_annot *annot, char *name, char *dn, char *date);
+void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot, char *name, char *dn, char *date);
#endif
diff --git a/include/mupdf/pdf/cmap.h b/include/mupdf/pdf/cmap.h
index a8079b67..e17ebbaa 100644
--- a/include/mupdf/pdf/cmap.h
+++ b/include/mupdf/pdf/cmap.h
@@ -79,7 +79,7 @@ pdf_cmap *pdf_new_identity_cmap(fz_context *ctx, int wmode, int bytes);
pdf_cmap *pdf_load_cmap(fz_context *ctx, fz_stream *file);
pdf_cmap *pdf_load_system_cmap(fz_context *ctx, char *name);
pdf_cmap *pdf_load_builtin_cmap(fz_context *ctx, char *name);
-pdf_cmap *pdf_load_embedded_cmap(pdf_document *doc, pdf_obj *ref);
+pdf_cmap *pdf_load_embedded_cmap(fz_context *ctx, pdf_document *doc, pdf_obj *ref);
#ifndef NDEBUG
void pdf_print_cmap(fz_context *ctx, pdf_cmap *cmap);
diff --git a/include/mupdf/pdf/crypt.h b/include/mupdf/pdf/crypt.h
index c3d6dd8d..30a74ec0 100644
--- a/include/mupdf/pdf/crypt.h
+++ b/include/mupdf/pdf/crypt.h
@@ -10,17 +10,17 @@ void pdf_drop_crypt(fz_context *ctx, pdf_crypt *crypt);
void pdf_crypt_obj(fz_context *ctx, pdf_crypt *crypt, pdf_obj *obj, int num, int gen);
void pdf_crypt_buffer(fz_context *ctx, pdf_crypt *crypt, fz_buffer *buf, int num, int gen);
-fz_stream *pdf_open_crypt(fz_stream *chain, pdf_crypt *crypt, int num, int gen);
-fz_stream *pdf_open_crypt_with_filter(fz_stream *chain, pdf_crypt *crypt, char *name, int num, int gen);
+fz_stream *pdf_open_crypt(fz_context *ctx, fz_stream *chain, pdf_crypt *crypt, int num, int gen);
+fz_stream *pdf_open_crypt_with_filter(fz_context *ctx, fz_stream *chain, pdf_crypt *crypt, char *name, int num, int gen);
-int pdf_crypt_version(pdf_document *doc);
-int pdf_crypt_revision(pdf_document *doc);
-char *pdf_crypt_method(pdf_document *doc);
-int pdf_crypt_length(pdf_document *doc);
-unsigned char *pdf_crypt_key(pdf_document *doc);
+int pdf_crypt_version(fz_context *ctx, pdf_document *doc);
+int pdf_crypt_revision(fz_context *ctx, pdf_document *doc);
+char *pdf_crypt_method(fz_context *ctx, pdf_document *doc);
+int pdf_crypt_length(fz_context *ctx, pdf_document *doc);
+unsigned char *pdf_crypt_key(fz_context *ctx, pdf_document *doc);
#ifndef NDEBUG
-void pdf_print_crypt(pdf_crypt *crypt);
+void pdf_print_crypt(fz_context *ctx, pdf_crypt *crypt);
#endif
typedef struct pdf_designated_name_s
@@ -33,33 +33,33 @@ typedef struct pdf_designated_name_s
}
pdf_designated_name;
-void pdf_drop_designated_name(pdf_designated_name *dn);
+void pdf_drop_designated_name(fz_context *ctx, pdf_designated_name *dn);
pdf_signer *pdf_read_pfx(fz_context *ctx, const char *sigfile, const char *password);
-pdf_signer *pdf_keep_signer(pdf_signer *signer);
-void pdf_drop_signer(pdf_signer *signer);
-pdf_designated_name *pdf_signer_designated_name(pdf_signer *signer);
-void pdf_write_digest(pdf_document *doc, char *filename, pdf_obj *byte_range, int digest_offset, int digest_length, pdf_signer *signer);
+pdf_signer *pdf_keep_signer(fz_context *ctx, pdf_signer *signer);
+void pdf_drop_signer(fz_context *ctx, pdf_signer *signer);
+pdf_designated_name *pdf_signer_designated_name(fz_context *ctx, pdf_signer *signer);
+void pdf_write_digest(fz_context *ctx, pdf_document *doc, char *filename, pdf_obj *byte_range, int digest_offset, int digest_length, pdf_signer *signer);
/*
pdf_signature_widget_byte_range: retrieve the byte range for a signature widget
*/
-int pdf_signature_widget_byte_range(pdf_document *doc, pdf_widget *widget, int (*byte_range)[2]);
+int pdf_signature_widget_byte_range(fz_context *ctx, pdf_document *doc, pdf_widget *widget, int (*byte_range)[2]);
/*
pdf_signature_widget_contents: retrieve the contents for a signature widget
*/
-int pdf_signature_widget_contents(pdf_document *doc, pdf_widget *widget, char **contents);
+int pdf_signature_widget_contents(fz_context *ctx, pdf_document *doc, pdf_widget *widget, char **contents);
/*
pdf_check_signature: check a signature's certificate chain and digest
*/
-int pdf_check_signature(pdf_document *doc, pdf_widget *widget, char *file, char *ebuf, int ebufsize);
+int pdf_check_signature(fz_context *ctx, pdf_document *doc, pdf_widget *widget, char *file, char *ebuf, int ebufsize);
/*
pdf_sign_signature: sign a signature form field
*/
-void pdf_sign_signature(pdf_document *doc, pdf_widget *widget, const char *sigfile, const char *password);
+void pdf_sign_signature(fz_context *ctx, pdf_document *doc, pdf_widget *widget, const char *sigfile, const char *password);
#endif
diff --git a/include/mupdf/pdf/document.h b/include/mupdf/pdf/document.h
index ef060776..f8fc23ca 100644
--- a/include/mupdf/pdf/document.h
+++ b/include/mupdf/pdf/document.h
@@ -21,7 +21,6 @@ enum
struct pdf_lexbuf_s
{
- fz_context *ctx;
int size;
int base_size;
int len;
@@ -54,7 +53,7 @@ typedef struct pdf_doc_event_s pdf_doc_event;
pdf_doc_event_cb: the type of function via which the app receives
document events.
*/
-typedef void (pdf_doc_event_cb)(pdf_doc_event *event, void *data);
+typedef void (pdf_doc_event_cb)(fz_context *ctx, pdf_document *doc, pdf_doc_event *event, void *data);
/*
pdf_open_document: Open a PDF document.
@@ -97,16 +96,16 @@ pdf_document *pdf_open_document_no_run_with_stream(fz_context *ctx, fz_stream *f
Does not throw exceptions.
*/
-void pdf_close_document(pdf_document *doc);
+void pdf_close_document(fz_context *ctx, pdf_document *doc);
/*
pdf_specific: down-cast an fz_document to a pdf_document.
Returns NULL if underlying document is not PDF
*/
-pdf_document *pdf_specifics(fz_document *doc);
+pdf_document *pdf_specifics(fz_context *ctx, fz_document *doc);
-int pdf_needs_password(pdf_document *doc);
-int pdf_authenticate_password(pdf_document *doc, const char *pw);
+int pdf_needs_password(fz_context *ctx, pdf_document *doc);
+int pdf_authenticate_password(fz_context *ctx, pdf_document *doc, const char *pw);
enum
{
@@ -121,14 +120,14 @@ enum
PDF_DEFAULT_PERM_FLAGS = 0xfffc
};
-int pdf_has_permission(pdf_document *doc, int p);
+int pdf_has_permission(fz_context *ctx, pdf_document *doc, int p);
/*
Metadata interface.
*/
-int pdf_meta(pdf_document *doc, int key, void *ptr, int size);
+int pdf_meta(fz_context *ctx, pdf_document *doc, int key, void *ptr, int size);
-fz_outline *pdf_load_outline(pdf_document *doc);
+fz_outline *pdf_load_outline(fz_context *ctx, pdf_document *doc);
typedef struct pdf_ocg_entry_s pdf_ocg_entry;
@@ -160,13 +159,13 @@ struct pdf_ocg_descriptor_s
a call to pdf_update_page would not reliably be able to report all changed
areas.
*/
-void pdf_update_page(pdf_document *doc, pdf_page *page);
+void pdf_update_page(fz_context *ctx, pdf_document *doc, pdf_page *page);
/*
Determine whether changes have been made since the
document was opened or last saved.
*/
-int pdf_has_unsaved_changes(pdf_document *doc);
+int pdf_has_unsaved_changes(fz_context *ctx, pdf_document *doc);
typedef struct pdf_signer_s pdf_signer;
@@ -189,7 +188,6 @@ struct pdf_document_s
{
fz_document super;
- fz_context *ctx;
fz_stream *file;
int version;
@@ -269,7 +267,7 @@ struct pdf_document_s
int dirty;
pdf_unsaved_sig *unsaved_sigs;
- void (*update_appearance)(pdf_document *doc, pdf_annot *annot);
+ void (*update_appearance)(fz_context *ctx, pdf_document *doc, pdf_annot *annot);
pdf_doc_event_cb *event_cb;
void *event_cb_data;
@@ -288,17 +286,17 @@ struct pdf_document_s
*/
pdf_document *pdf_create_document(fz_context *ctx);
-pdf_page *pdf_create_page(pdf_document *doc, fz_rect rect, int res, int rotate);
+pdf_page *pdf_create_page(fz_context *ctx, pdf_document *doc, fz_rect rect, int res, int rotate);
-void pdf_insert_page(pdf_document *doc, pdf_page *page, int at);
+void pdf_insert_page(fz_context *ctx, pdf_document *doc, pdf_page *page, int at);
-void pdf_delete_page(pdf_document *doc, int number);
+void pdf_delete_page(fz_context *ctx, pdf_document *doc, int number);
-void pdf_delete_page_range(pdf_document *doc, int start, int end);
+void pdf_delete_page_range(fz_context *ctx, pdf_document *doc, int start, int end);
-fz_device *pdf_page_write(pdf_document *doc, pdf_page *page);
+fz_device *pdf_page_write(fz_context *ctx, pdf_document *doc, pdf_page *page);
-void pdf_finish_edit(pdf_document *doc);
+void pdf_finish_edit(fz_context *ctx, pdf_document *doc);
int pdf_recognize(fz_context *doc, const char *magic);
diff --git a/include/mupdf/pdf/event.h b/include/mupdf/pdf/event.h
index c2adf057..6e16ab33 100644
--- a/include/mupdf/pdf/event.h
+++ b/include/mupdf/pdf/event.h
@@ -57,7 +57,7 @@ void pdf_init_ui_pointer_event(pdf_ui_event *event, int type, float x, float y);
passing the events that make up a drag, if the down event isn't
accepted then don't send the move events or the up event.
*/
-int pdf_pass_event(pdf_document *doc, pdf_page *page, pdf_ui_event *ui_event);
+int pdf_pass_event(fz_context *ctx, pdf_document *doc, pdf_page *page, pdf_ui_event *ui_event);
struct pdf_doc_event_s
{
@@ -79,7 +79,7 @@ enum
pdf_set_doc_event_callback: set the function via which to receive
document events.
*/
-void pdf_set_doc_event_callback(pdf_document *doc, pdf_doc_event_cb *event_cb, void *data);
+void pdf_set_doc_event_callback(fz_context *ctx, pdf_document *doc, pdf_doc_event_cb *event_cb, void *data);
/*
The various types of document events
@@ -141,13 +141,13 @@ enum
structire are owned by mupdf and need not be freed by the
caller.
*/
-pdf_alert_event *pdf_access_alert_event(pdf_doc_event *event);
+pdf_alert_event *pdf_access_alert_event(fz_context *ctx, pdf_doc_event *event);
/*
pdf_access_exec_menu_item_event: access the details of am execMenuItem
event, which consists of just the name of the menu item
*/
-char *pdf_access_exec_menu_item_event(pdf_doc_event *event);
+char *pdf_access_exec_menu_item_event(fz_context *ctx, pdf_doc_event *event);
/*
pdf_submit_event: details of a submit event. The app should submit
@@ -167,7 +167,7 @@ typedef struct
The returned pointer and all data referred to by the structure are
owned by mupdf and need not be freed by the caller.
*/
-pdf_submit_event *pdf_access_submit_event(pdf_doc_event *event);
+pdf_submit_event *pdf_access_submit_event(fz_context *ctx, pdf_doc_event *event);
/*
pdf_launch_url_event: details of a launch-url event. The app should
@@ -184,7 +184,7 @@ typedef struct
event. The returned pointer and all data referred to by the structure
are owned by mupdf and need not be freed by the caller.
*/
-pdf_launch_url_event *pdf_access_launch_url_event(pdf_doc_event *event);
+pdf_launch_url_event *pdf_access_launch_url_event(fz_context *ctx, pdf_doc_event *event);
/*
pdf_mail_doc_event: details of a mail_doc event. The app should save
@@ -204,13 +204,13 @@ typedef struct
/*
pdf_acccess_mail_doc_event: access the details of a mail-doc event.
*/
-pdf_mail_doc_event *pdf_access_mail_doc_event(pdf_doc_event *event);
-
-void pdf_event_issue_alert(pdf_document *doc, pdf_alert_event *event);
-void pdf_event_issue_print(pdf_document *doc);
-void pdf_event_issue_exec_menu_item(pdf_document *doc, char *item);
-void pdf_event_issue_exec_dialog(pdf_document *doc);
-void pdf_event_issue_launch_url(pdf_document *doc, char *url, int new_frame);
-void pdf_event_issue_mail_doc(pdf_document *doc, pdf_mail_doc_event *event);
+pdf_mail_doc_event *pdf_access_mail_doc_event(fz_context *ctx, pdf_doc_event *event);
+
+void pdf_event_issue_alert(fz_context *ctx, pdf_document *doc, pdf_alert_event *event);
+void pdf_event_issue_print(fz_context *ctx, pdf_document *doc);
+void pdf_event_issue_exec_menu_item(fz_context *ctx, pdf_document *doc, char *item);
+void pdf_event_issue_exec_dialog(fz_context *ctx, pdf_document *doc);
+void pdf_event_issue_launch_url(fz_context *ctx, pdf_document *doc, char *url, int new_frame);
+void pdf_event_issue_mail_doc(fz_context *ctx, pdf_document *doc, pdf_mail_doc_event *event);
#endif
diff --git a/include/mupdf/pdf/field.h b/include/mupdf/pdf/field.h
index f0aa70ff..272e14be 100644
--- a/include/mupdf/pdf/field.h
+++ b/include/mupdf/pdf/field.h
@@ -33,23 +33,23 @@ enum
Ff_CommitOnSelCHange = 1 << (27-1),
};
-char *pdf_get_string_or_stream(pdf_document *doc, pdf_obj *obj);
-pdf_obj *pdf_get_inheritable(pdf_document *doc, pdf_obj *obj, char *key);
-int pdf_get_field_flags(pdf_document *doc, pdf_obj *obj);
-int pdf_field_type(pdf_document *doc, pdf_obj *field);
-void pdf_set_field_type(pdf_document *doc, pdf_obj *obj, int type);
-char *pdf_field_value(pdf_document *doc, pdf_obj *field);
-int pdf_field_set_value(pdf_document *doc, pdf_obj *field, char *text);
-char *pdf_field_border_style(pdf_document *doc, pdf_obj *field);
-void pdf_field_set_border_style(pdf_document *doc, pdf_obj *field, char *text);
-void pdf_field_set_button_caption(pdf_document *doc, pdf_obj *field, char *text);
-void pdf_field_set_fill_color(pdf_document *doc, pdf_obj *field, pdf_obj *col);
-void pdf_field_set_text_color(pdf_document *doc, pdf_obj *field, pdf_obj *col);
-void pdf_signature_set_value(pdf_document *doc, pdf_obj *field, pdf_signer *signer);
-int pdf_field_display(pdf_document *doc, pdf_obj *field);
-char *pdf_field_name(pdf_document *doc, pdf_obj *field);
-void pdf_field_set_display(pdf_document *doc, pdf_obj *field, int d);
-pdf_obj *pdf_lookup_field(pdf_obj *form, char *name);
-void pdf_field_reset(pdf_document *doc, pdf_obj *field);
+char *pdf_get_string_or_stream(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
+pdf_obj *pdf_get_inheritable(fz_context *ctx, pdf_document *doc, pdf_obj *obj, char *key);
+int pdf_get_field_flags(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
+int pdf_field_type(fz_context *ctx, pdf_document *doc, pdf_obj *field);
+void pdf_set_field_type(fz_context *ctx, pdf_document *doc, pdf_obj *obj, int type);
+char *pdf_field_value(fz_context *ctx, pdf_document *doc, pdf_obj *field);
+int pdf_field_set_value(fz_context *ctx, pdf_document *doc, pdf_obj *field, char *text);
+char *pdf_field_border_style(fz_context *ctx, pdf_document *doc, pdf_obj *field);
+void pdf_field_set_border_style(fz_context *ctx, pdf_document *doc, pdf_obj *field, char *text);
+void pdf_field_set_button_caption(fz_context *ctx, pdf_document *doc, pdf_obj *field, char *text);
+void pdf_field_set_fill_color(fz_context *ctx, pdf_document *doc, pdf_obj *field, pdf_obj *col);
+void pdf_field_set_text_color(fz_context *ctx, pdf_document *doc, pdf_obj *field, pdf_obj *col);
+void pdf_signature_set_value(fz_context *ctx, pdf_document *doc, pdf_obj *field, pdf_signer *signer);
+int pdf_field_display(fz_context *ctx, pdf_document *doc, pdf_obj *field);
+char *pdf_field_name(fz_context *ctx, pdf_document *doc, pdf_obj *field);
+void pdf_field_set_display(fz_context *ctx, pdf_document *doc, pdf_obj *field, int d);
+pdf_obj *pdf_lookup_field(fz_context *ctx, pdf_obj *form, char *name);
+void pdf_field_reset(fz_context *ctx, pdf_document *doc, pdf_obj *field);
#endif
diff --git a/include/mupdf/pdf/font.h b/include/mupdf/pdf/font.h
index c1576483..7697053f 100644
--- a/include/mupdf/pdf/font.h
+++ b/include/mupdf/pdf/font.h
@@ -99,18 +99,18 @@ void pdf_end_vmtx(fz_context *ctx, pdf_font_desc *font);
pdf_hmtx pdf_lookup_hmtx(fz_context *ctx, pdf_font_desc *font, int cid);
pdf_vmtx pdf_lookup_vmtx(fz_context *ctx, pdf_font_desc *font, int cid);
-void pdf_load_to_unicode(pdf_document *doc, pdf_font_desc *font, char **strings, char *collection, pdf_obj *cmapstm);
+void pdf_load_to_unicode(fz_context *ctx, pdf_document *doc, pdf_font_desc *font, char **strings, char *collection, pdf_obj *cmapstm);
int pdf_font_cid_to_gid(fz_context *ctx, pdf_font_desc *fontdesc, int cid);
-unsigned char *pdf_lookup_builtin_font(const char *name, unsigned int *len);
-unsigned char *pdf_lookup_substitute_font(int mono, int serif, int bold, int italic, unsigned int *len);
-unsigned char *pdf_lookup_substitute_cjk_font(int ros, int serif, int wmode, unsigned int *len, int *index);
+unsigned char *pdf_lookup_builtin_font(fz_context *ctx, const char *name, unsigned int *len);
+unsigned char *pdf_lookup_substitute_font(fz_context *ctx, int mono, int serif, int bold, int italic, unsigned int *len);
+unsigned char *pdf_lookup_substitute_cjk_font(fz_context *ctx, int ros, int serif, int wmode, unsigned int *len, int *index);
-pdf_font_desc *pdf_load_type3_font(pdf_document *doc, pdf_obj *rdb, pdf_obj *obj);
-void pdf_load_type3_glyphs(pdf_document *doc, pdf_font_desc *fontdesc, int nestedDepth);
-pdf_font_desc *pdf_load_font(pdf_document *doc, pdf_obj *rdb, pdf_obj *obj, int nestedDepth);
-pdf_font_desc *pdf_load_hail_mary_font(pdf_document *doc);
+pdf_font_desc *pdf_load_type3_font(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *obj);
+void pdf_load_type3_glyphs(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc, int nestedDepth);
+pdf_font_desc *pdf_load_font(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *obj, int nestedDepth);
+pdf_font_desc *pdf_load_hail_mary_font(fz_context *ctx, pdf_document *doc);
pdf_font_desc *pdf_new_font_desc(fz_context *ctx);
pdf_font_desc *pdf_keep_font(fz_context *ctx, pdf_font_desc *fontdesc);
@@ -123,6 +123,6 @@ void pdf_print_font(fz_context *ctx, pdf_font_desc *fontdesc);
fz_rect *pdf_measure_text(fz_context *ctx, pdf_font_desc *fontdesc, unsigned char *buf, int len, fz_rect *rect);
float pdf_text_stride(fz_context *ctx, pdf_font_desc *fontdesc, float fontsize, unsigned char *buf, int len, float room, int *count);
-void pdf_run_glyph(pdf_document *doc, pdf_obj *resources, fz_buffer *contents, fz_device *dev, const fz_matrix *ctm, void *gstate, int nestedDepth);
+void pdf_run_glyph(fz_context *ctx, pdf_document *doc, pdf_obj *resources, fz_buffer *contents, fz_device *dev, const fz_matrix *ctm, void *gstate, int nestedDepth);
#endif
diff --git a/include/mupdf/pdf/javascript.h b/include/mupdf/pdf/javascript.h
index ba8af4d6..a9a9213a 100644
--- a/include/mupdf/pdf/javascript.h
+++ b/include/mupdf/pdf/javascript.h
@@ -8,9 +8,9 @@ typedef struct pdf_js_event_s
int rc;
} pdf_js_event;
-void pdf_enable_js(pdf_document *doc);
-void pdf_disable_js(pdf_document *doc);
-int pdf_js_supported(pdf_document *doc);
+void pdf_enable_js(fz_context *ctx, pdf_document *doc);
+void pdf_disable_js(fz_context *ctx, pdf_document *doc);
+int pdf_js_supported(fz_context *ctx, pdf_document *doc);
void pdf_js_setup_event(pdf_js *js, pdf_js_event *e);
pdf_js_event *pdf_js_get_event(pdf_js *js);
diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h
index c8417224..bcb4ab56 100644
--- a/include/mupdf/pdf/object.h
+++ b/include/mupdf/pdf/object.h
@@ -11,92 +11,92 @@ typedef struct pdf_document_s pdf_document;
typedef struct pdf_obj_s pdf_obj;
-pdf_obj *pdf_new_null(pdf_document *doc);
-pdf_obj *pdf_new_bool(pdf_document *doc, int b);
-pdf_obj *pdf_new_int(pdf_document *doc, int i);
-pdf_obj *pdf_new_real(pdf_document *doc, float f);
-pdf_obj *pdf_new_name(pdf_document *doc, const char *str);
-pdf_obj *pdf_new_string(pdf_document *doc, const char *str, int len);
-pdf_obj *pdf_new_indirect(pdf_document *doc, int num, int gen);
-pdf_obj *pdf_new_array(pdf_document *doc, int initialcap);
-pdf_obj *pdf_new_dict(pdf_document *doc, int initialcap);
-pdf_obj *pdf_new_rect(pdf_document *doc, const fz_rect *rect);
-pdf_obj *pdf_new_matrix(pdf_document *doc, const fz_matrix *mtx);
-pdf_obj *pdf_copy_array(pdf_obj *array);
-pdf_obj *pdf_copy_dict(pdf_obj *dict);
-
-pdf_obj *pdf_new_obj_from_str(pdf_document *doc, const char *src);
-
-pdf_obj *pdf_keep_obj(pdf_obj *obj);
-void pdf_drop_obj(pdf_obj *obj);
+pdf_obj *pdf_new_null(fz_context *ctx, pdf_document *doc);
+pdf_obj *pdf_new_bool(fz_context *ctx, pdf_document *doc, int b);
+pdf_obj *pdf_new_int(fz_context *ctx, pdf_document *doc, int i);
+pdf_obj *pdf_new_real(fz_context *ctx, pdf_document *doc, float f);
+pdf_obj *pdf_new_name(fz_context *ctx, pdf_document *doc, const char *str);
+pdf_obj *pdf_new_string(fz_context *ctx, pdf_document *doc, const char *str, int len);
+pdf_obj *pdf_new_indirect(fz_context *ctx, pdf_document *doc, int num, int gen);
+pdf_obj *pdf_new_array(fz_context *ctx, pdf_document *doc, int initialcap);
+pdf_obj *pdf_new_dict(fz_context *ctx, pdf_document *doc, int initialcap);
+pdf_obj *pdf_new_rect(fz_context *ctx, pdf_document *doc, const fz_rect *rect);
+pdf_obj *pdf_new_matrix(fz_context *ctx, pdf_document *doc, const fz_matrix *mtx);
+pdf_obj *pdf_copy_array(fz_context *ctx, pdf_obj *array);
+pdf_obj *pdf_copy_dict(fz_context *ctx, pdf_obj *dict);
+
+pdf_obj *pdf_new_obj_from_str(fz_context *ctx, pdf_document *doc, const char *src);
+
+pdf_obj *pdf_keep_obj(fz_context *ctx, pdf_obj *obj);
+void pdf_drop_obj(fz_context *ctx, pdf_obj *obj);
/* type queries */
-int pdf_is_null(pdf_obj *obj);
-int pdf_is_bool(pdf_obj *obj);
-int pdf_is_int(pdf_obj *obj);
-int pdf_is_real(pdf_obj *obj);
-int pdf_is_number(pdf_obj *obj);
-int pdf_is_name(pdf_obj *obj);
-int pdf_is_string(pdf_obj *obj);
-int pdf_is_array(pdf_obj *obj);
-int pdf_is_dict(pdf_obj *obj);
-int pdf_is_indirect(pdf_obj *obj);
-int pdf_is_stream(pdf_document *doc, int num, int gen);
-
-int pdf_objcmp(pdf_obj *a, pdf_obj *b);
+int pdf_is_null(fz_context *ctx, pdf_obj *obj);
+int pdf_is_bool(fz_context *ctx, pdf_obj *obj);
+int pdf_is_int(fz_context *ctx, pdf_obj *obj);
+int pdf_is_real(fz_context *ctx, pdf_obj *obj);
+int pdf_is_number(fz_context *ctx, pdf_obj *obj);
+int pdf_is_name(fz_context *ctx, pdf_obj *obj);
+int pdf_is_string(fz_context *ctx, pdf_obj *obj);
+int pdf_is_array(fz_context *ctx, pdf_obj *obj);
+int pdf_is_dict(fz_context *ctx, pdf_obj *obj);
+int pdf_is_indirect(fz_context *ctx, pdf_obj *obj);
+int pdf_is_stream(fz_context *ctx, pdf_document *doc, int num, int gen);
+
+int pdf_objcmp(fz_context *ctx, pdf_obj *a, pdf_obj *b);
/* obj marking and unmarking functions - to avoid infinite recursions. */
-int pdf_obj_marked(pdf_obj *obj);
-int pdf_mark_obj(pdf_obj *obj);
-void pdf_unmark_obj(pdf_obj *obj);
+int pdf_obj_marked(fz_context *ctx, pdf_obj *obj);
+int pdf_mark_obj(fz_context *ctx, pdf_obj *obj);
+void pdf_unmark_obj(fz_context *ctx, pdf_obj *obj);
/* obj memo functions - allows us to secretly remember "a memo" (a bool) in
* an object, and to read back whether there was a memo, and if so, what it
* was. */
-void pdf_set_obj_memo(pdf_obj *obj, int memo);
-int pdf_obj_memo(pdf_obj *obj, int *memo);
+void pdf_set_obj_memo(fz_context *ctx, pdf_obj *obj, int memo);
+int pdf_obj_memo(fz_context *ctx, pdf_obj *obj, int *memo);
/* obj dirty bit support. */
-int pdf_obj_is_dirty(pdf_obj *obj);
-void pdf_dirty_obj(pdf_obj *obj);
-void pdf_clean_obj(pdf_obj *obj);
+int pdf_obj_is_dirty(fz_context *ctx, pdf_obj *obj);
+void pdf_dirty_obj(fz_context *ctx, pdf_obj *obj);
+void pdf_clean_obj(fz_context *ctx, pdf_obj *obj);
/* safe, silent failure, no error reporting on type mismatches */
-int pdf_to_bool(pdf_obj *obj);
-int pdf_to_int(pdf_obj *obj);
-float pdf_to_real(pdf_obj *obj);
-char *pdf_to_name(pdf_obj *obj);
-char *pdf_to_str_buf(pdf_obj *obj);
-pdf_obj *pdf_to_dict(pdf_obj *obj);
-int pdf_to_str_len(pdf_obj *obj);
-int pdf_to_num(pdf_obj *obj);
-int pdf_to_gen(pdf_obj *obj);
-
-int pdf_array_len(pdf_obj *array);
-pdf_obj *pdf_array_get(pdf_obj *array, int i);
-void pdf_array_put(pdf_obj *array, int i, pdf_obj *obj);
-void pdf_array_push(pdf_obj *array, pdf_obj *obj);
-void pdf_array_push_drop(pdf_obj *array, pdf_obj *obj);
-void pdf_array_insert(pdf_obj *array, pdf_obj *obj, int index);
-void pdf_array_insert_drop(pdf_obj *array, pdf_obj *obj, int index);
-void pdf_array_delete(pdf_obj *array, int index);
-int pdf_array_contains(pdf_obj *array, pdf_obj *obj);
-
-int pdf_dict_len(pdf_obj *dict);
-pdf_obj *pdf_dict_get_key(pdf_obj *dict, int idx);
-pdf_obj *pdf_dict_get_val(pdf_obj *dict, int idx);
-pdf_obj *pdf_dict_get(pdf_obj *dict, pdf_obj *key);
-pdf_obj *pdf_dict_gets(pdf_obj *dict, const char *key);
-pdf_obj *pdf_dict_getp(pdf_obj *dict, const char *key);
-pdf_obj *pdf_dict_getsa(pdf_obj *dict, const char *key, const char *abbrev);
-void pdf_dict_put(pdf_obj *dict, pdf_obj *key, pdf_obj *val);
-void pdf_dict_puts(pdf_obj *dict, const char *key, pdf_obj *val);
-void pdf_dict_puts_drop(pdf_obj *dict, const char *key, pdf_obj *val);
-void pdf_dict_putp(pdf_obj *dict, const char *key, pdf_obj *val);
-void pdf_dict_putp_drop(pdf_obj *dict, const char *key, pdf_obj *val);
-void pdf_dict_del(pdf_obj *dict, pdf_obj *key);
-void pdf_dict_dels(pdf_obj *dict, const char *key);
-void pdf_sort_dict(pdf_obj *dict);
+int pdf_to_bool(fz_context *ctx, pdf_obj *obj);
+int pdf_to_int(fz_context *ctx, pdf_obj *obj);
+float pdf_to_real(fz_context *ctx, pdf_obj *obj);
+char *pdf_to_name(fz_context *ctx, pdf_obj *obj);
+char *pdf_to_str_buf(fz_context *ctx, pdf_obj *obj);
+pdf_obj *pdf_to_dict(fz_context *ctx, pdf_obj *obj);
+int pdf_to_str_len(fz_context *ctx, pdf_obj *obj);
+int pdf_to_num(fz_context *ctx, pdf_obj *obj);
+int pdf_to_gen(fz_context *ctx, pdf_obj *obj);
+
+int pdf_array_len(fz_context *ctx, pdf_obj *array);
+pdf_obj *pdf_array_get(fz_context *ctx, pdf_obj *array, int i);
+void pdf_array_put(fz_context *ctx, pdf_obj *array, int i, pdf_obj *obj);
+void pdf_array_push(fz_context *ctx, pdf_obj *array, pdf_obj *obj);
+void pdf_array_push_drop(fz_context *ctx, pdf_obj *array, pdf_obj *obj);
+void pdf_array_insert(fz_context *ctx, pdf_obj *array, pdf_obj *obj, int index);
+void pdf_array_insert_drop(fz_context *ctx, pdf_obj *array, pdf_obj *obj, int index);
+void pdf_array_delete(fz_context *ctx, pdf_obj *array, int index);
+int pdf_array_contains(fz_context *ctx, pdf_obj *array, pdf_obj *obj);
+
+int pdf_dict_len(fz_context *ctx, pdf_obj *dict);
+pdf_obj *pdf_dict_get_key(fz_context *ctx, pdf_obj *dict, int idx);
+pdf_obj *pdf_dict_get_val(fz_context *ctx, pdf_obj *dict, int idx);
+pdf_obj *pdf_dict_get(fz_context *ctx, pdf_obj *dict, pdf_obj *key);
+pdf_obj *pdf_dict_gets(fz_context *ctx, pdf_obj *dict, const char *key);
+pdf_obj *pdf_dict_getp(fz_context *ctx, pdf_obj *dict, const char *key);
+pdf_obj *pdf_dict_getsa(fz_context *ctx, pdf_obj *dict, const char *key, const char *abbrev);
+void pdf_dict_put(fz_context *ctx, pdf_obj *dict, pdf_obj *key, pdf_obj *val);
+void pdf_dict_puts(fz_context *ctx, pdf_obj *dict, const char *key, pdf_obj *val);
+void pdf_dict_puts_drop(fz_context *ctx, pdf_obj *dict, const char *key, pdf_obj *val);
+void pdf_dict_putp(fz_context *ctx, pdf_obj *dict, const char *key, pdf_obj *val);
+void pdf_dict_putp_drop(fz_context *ctx, pdf_obj *dict, const char *key, pdf_obj *val);
+void pdf_dict_del(fz_context *ctx, pdf_obj *dict, pdf_obj *key);
+void pdf_dict_dels(fz_context *ctx, pdf_obj *dict, const char *key);
+void pdf_sort_dict(fz_context *ctx, pdf_obj *dict);
/*
Recurse through the object structure setting the node's parent_num to num.
@@ -104,32 +104,32 @@ void pdf_sort_dict(pdf_obj *dict);
The whole containing hierarchy is moved to the incremental xref section, so
to be later written out as an incremental file update.
*/
-void pdf_set_obj_parent(pdf_obj *obj, int num);
+void pdf_set_obj_parent(fz_context *ctx, pdf_obj *obj, int num);
-int pdf_obj_refs(pdf_obj *ref);
+int pdf_obj_refs(fz_context *ctx, pdf_obj *ref);
-int pdf_obj_parent_num(pdf_obj *obj);
+int pdf_obj_parent_num(fz_context *ctx, pdf_obj *obj);
-int pdf_sprint_obj(char *s, int n, pdf_obj *obj, int tight);
-int pdf_fprint_obj(FILE *fp, pdf_obj *obj, int tight);
-int pdf_output_obj(fz_output *out, pdf_obj *obj, int tight);
+int pdf_sprint_obj(fz_context *ctx, char *s, int n, pdf_obj *obj, int tight);
+int pdf_fprint_obj(fz_context *ctx, FILE *fp, pdf_obj *obj, int tight);
+int pdf_output_obj(fz_context *ctx, fz_output *out, pdf_obj *obj, int tight);
#ifndef NDEBUG
-void pdf_print_obj(pdf_obj *obj);
-void pdf_print_ref(pdf_obj *obj);
+void pdf_print_obj(fz_context *ctx, pdf_obj *obj);
+void pdf_print_ref(fz_context *ctx, pdf_obj *obj);
#endif
-char *pdf_to_utf8(pdf_document *doc, pdf_obj *src);
-unsigned short *pdf_to_ucs2(pdf_document *doc, pdf_obj *src);
-pdf_obj *pdf_to_utf8_name(pdf_document *doc, pdf_obj *src);
-char *pdf_from_ucs2(pdf_document *doc, unsigned short *str);
-void pdf_to_ucs2_buf(unsigned short *buffer, pdf_obj *src);
+char *pdf_to_utf8(fz_context *ctx, pdf_document *doc, pdf_obj *src);
+unsigned short *pdf_to_ucs2(fz_context *ctx, pdf_document *doc, pdf_obj *src);
+pdf_obj *pdf_to_utf8_name(fz_context *ctx, pdf_document *doc, pdf_obj *src);
+char *pdf_from_ucs2(fz_context *ctx, pdf_document *doc, unsigned short *str);
+void pdf_to_ucs2_buf(fz_context *ctx, unsigned short *buffer, pdf_obj *src);
fz_rect *pdf_to_rect(fz_context *ctx, pdf_obj *array, fz_rect *rect);
fz_matrix *pdf_to_matrix(fz_context *ctx, pdf_obj *array, fz_matrix *mat);
-pdf_document *pdf_get_indirect_document(pdf_obj *obj);
-void pdf_set_str_len(pdf_obj *obj, int newlen);
-void pdf_set_int(pdf_obj *obj, int i);
+pdf_document *pdf_get_indirect_document(fz_context *ctx, pdf_obj *obj);
+void pdf_set_str_len(fz_context *ctx, pdf_obj *obj, int newlen);
+void pdf_set_int(fz_context *ctx, pdf_obj *obj, int i);
#endif
diff --git a/include/mupdf/pdf/output-pdf.h b/include/mupdf/pdf/output-pdf.h
index fe7e4b5a..c823b201 100644
--- a/include/mupdf/pdf/output-pdf.h
+++ b/include/mupdf/pdf/output-pdf.h
@@ -6,13 +6,13 @@
new pdf content. WARNING: this device is work in progress. It doesn't
currently support all rendering cases.
*/
-fz_device *pdf_new_pdf_device(pdf_document *doc, pdf_obj *contents, pdf_obj *resources, const fz_matrix *ctm);
+fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, pdf_obj *contents, pdf_obj *resources, const fz_matrix *ctm);
/*
pdf_write_document: Write out the document to a file with all changes finalised.
*/
-void pdf_write_document(pdf_document *doc, char *filename, fz_write_options *opts);
+void pdf_write_document(fz_context *ctx, pdf_document *doc, char *filename, fz_write_options *opts);
-void pdf_localise_page_resources(pdf_document *doc);
+void pdf_localise_page_resources(fz_context *ctx, pdf_document *doc);
#endif
diff --git a/include/mupdf/pdf/page.h b/include/mupdf/pdf/page.h
index a265828b..ab4a8ce3 100644
--- a/include/mupdf/pdf/page.h
+++ b/include/mupdf/pdf/page.h
@@ -1,9 +1,9 @@
#ifndef MUPDF_PDF_PAGE_H
#define MUPDF_PDF_PAGE_H
-int pdf_lookup_page_number(pdf_document *doc, pdf_obj *pageobj);
-int pdf_count_pages(pdf_document *doc);
-pdf_obj *pdf_lookup_page_obj(pdf_document *doc, int needle);
+int pdf_lookup_page_number(fz_context *ctx, pdf_document *doc, pdf_obj *pageobj);
+int pdf_count_pages(fz_context *ctx, pdf_document *doc);
+pdf_obj *pdf_lookup_page_obj(fz_context *ctx, pdf_document *doc, int needle);
/*
pdf_load_page: Load a page and its resources.
@@ -15,9 +15,9 @@ pdf_obj *pdf_lookup_page_obj(pdf_document *doc, int needle);
number: page number, where 0 is the first page of the document.
*/
-pdf_page *pdf_load_page(pdf_document *doc, int number);
+pdf_page *pdf_load_page(fz_context *ctx, pdf_document *doc, int number);
-fz_link *pdf_load_links(pdf_document *doc, pdf_page *page);
+fz_link *pdf_load_links(fz_context *ctx, pdf_page *page);
/*
pdf_bound_page: Determine the size of a page.
@@ -29,14 +29,7 @@ fz_link *pdf_load_links(pdf_document *doc, pdf_page *page);
Does not throw exceptions.
*/
-fz_rect *pdf_bound_page(pdf_document *doc, pdf_page *page, fz_rect *);
-
-/*
- pdf_drop_page: Frees a page and its resources.
-
- Does not throw exceptions.
-*/
-void pdf_drop_page(pdf_document *doc, pdf_page *page);
+fz_rect *pdf_bound_page(fz_context *ctx, pdf_page *page, fz_rect *);
/*
pdf_run_page: Interpret a loaded page and render it on a device.
@@ -48,7 +41,7 @@ void pdf_drop_page(pdf_document *doc, pdf_page *page);
ctm: A transformation matrix applied to the objects on the page,
e.g. to scale or rotate the page contents as desired.
*/
-void pdf_run_page(pdf_document *doc, pdf_page *page, fz_device *dev, const fz_matrix *ctm, fz_cookie *cookie);
+void pdf_run_page(fz_context *ctx, pdf_page *page, fz_device *dev, const fz_matrix *ctm, fz_cookie *cookie);
/*
pdf_run_page: Interpret a loaded page and render it on a device.
@@ -63,7 +56,7 @@ void pdf_run_page(pdf_document *doc, pdf_page *page, fz_device *dev, const fz_ma
cookie: A pointer to an optional fz_cookie structure that can be used
to track progress, collect errors etc.
*/
-void pdf_run_page_with_usage(pdf_document *doc, pdf_page *page, fz_device *dev, const fz_matrix *ctm, char *event, fz_cookie *cookie);
+void pdf_run_page_with_usage(fz_context *ctx, pdf_document *doc, pdf_page *page, fz_device *dev, const fz_matrix *ctm, char *event, fz_cookie *cookie);
/*
pdf_run_page_contents: Interpret a loaded page and render it on a device.
@@ -76,7 +69,7 @@ void pdf_run_page_with_usage(pdf_document *doc, pdf_page *page, fz_device *dev,
ctm: A transformation matrix applied to the objects on the page,
e.g. to scale or rotate the page contents as desired.
*/
-void pdf_run_page_contents(pdf_document *doc, pdf_page *page, fz_device *dev, const fz_matrix *ctm, fz_cookie *cookie);
+void pdf_run_page_contents(fz_context *ctx, pdf_page *page, fz_device *dev, const fz_matrix *ctm, fz_cookie *cookie);
/*
pdf_clean_page_contents: Clean a loaded pages rendering operations.
@@ -92,12 +85,12 @@ void pdf_run_page_contents(pdf_document *doc, pdf_page *page, fz_device *dev, co
cookie: A pointer to an optional fz_cookie structure that can be used
to track progress, collect errors etc.
*/
-void pdf_clean_page_contents(pdf_document *doc, pdf_page *page, fz_cookie *cookie);
+void pdf_clean_page_contents(fz_context *ctx, pdf_document *doc, pdf_page *page, fz_cookie *cookie);
/*
Presentation interface.
*/
-fz_transition *pdf_page_presentation(pdf_document *doc, pdf_page *page, float *duration);
+fz_transition *pdf_page_presentation(fz_context *ctx, pdf_page *page, float *duration);
/*
* Page tree, pages and related objects
@@ -105,6 +98,9 @@ fz_transition *pdf_page_presentation(pdf_document *doc, pdf_page *page, float *d
struct pdf_page_s
{
+ fz_page super;
+ pdf_document *doc;
+
fz_matrix ctm; /* calculated from mediabox and rotate */
fz_rect mediabox;
int rotate;
diff --git a/include/mupdf/pdf/parse.h b/include/mupdf/pdf/parse.h
index 625ebfca..23584029 100644
--- a/include/mupdf/pdf/parse.h
+++ b/include/mupdf/pdf/parse.h
@@ -20,16 +20,16 @@ typedef enum
} pdf_token;
void pdf_lexbuf_init(fz_context *ctx, pdf_lexbuf *lexbuf, int size);
-void pdf_lexbuf_fin(pdf_lexbuf *lexbuf);
-ptrdiff_t pdf_lexbuf_grow(pdf_lexbuf *lexbuf);
+void pdf_lexbuf_fin(fz_context *ctx, pdf_lexbuf *lexbuf);
+ptrdiff_t pdf_lexbuf_grow(fz_context *ctx, pdf_lexbuf *lexbuf);
-pdf_token pdf_lex(fz_stream *f, pdf_lexbuf *lexbuf);
-pdf_token pdf_lex_no_string(fz_stream *f, pdf_lexbuf *lexbuf);
+pdf_token pdf_lex(fz_context *ctx, fz_stream *f, pdf_lexbuf *lexbuf);
+pdf_token pdf_lex_no_string(fz_context *ctx, fz_stream *f, pdf_lexbuf *lexbuf);
-pdf_obj *pdf_parse_array(pdf_document *doc, fz_stream *f, pdf_lexbuf *buf);
-pdf_obj *pdf_parse_dict(pdf_document *doc, fz_stream *f, pdf_lexbuf *buf);
-pdf_obj *pdf_parse_stm_obj(pdf_document *doc, fz_stream *f, pdf_lexbuf *buf);
-pdf_obj *pdf_parse_ind_obj(pdf_document *doc, fz_stream *f, pdf_lexbuf *buf, int *num, int *gen, int *stm_ofs, int *try_repair);
+pdf_obj *pdf_parse_array(fz_context *ctx, pdf_document *doc, fz_stream *f, pdf_lexbuf *buf);
+pdf_obj *pdf_parse_dict(fz_context *ctx, pdf_document *doc, fz_stream *f, pdf_lexbuf *buf);
+pdf_obj *pdf_parse_stm_obj(fz_context *ctx, pdf_document *doc, fz_stream *f, pdf_lexbuf *buf);
+pdf_obj *pdf_parse_ind_obj(fz_context *ctx, pdf_document *doc, fz_stream *f, pdf_lexbuf *buf, int *num, int *gen, int *stm_ofs, int *try_repair);
/*
pdf_print_token: print a lexed token to a buffer, growing if necessary
diff --git a/include/mupdf/pdf/resource.h b/include/mupdf/pdf/resource.h
index 3828f5a1..fb542f59 100644
--- a/include/mupdf/pdf/resource.h
+++ b/include/mupdf/pdf/resource.h
@@ -12,17 +12,17 @@ void pdf_remove_item(fz_context *ctx, fz_store_drop_fn *drop, pdf_obj *key);
* Functions, Colorspaces, Shadings and Images
*/
-fz_function *pdf_load_function(pdf_document *doc, pdf_obj *ref, int in, int out);
+fz_function *pdf_load_function(fz_context *ctx, pdf_document *doc, pdf_obj *ref, int in, int out);
-fz_colorspace *pdf_load_colorspace(pdf_document *doc, pdf_obj *obj);
-int pdf_is_tint_colorspace(fz_colorspace *cs);
+fz_colorspace *pdf_load_colorspace(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
+int pdf_is_tint_colorspace(fz_context *ctx, fz_colorspace *cs);
-fz_shade *pdf_load_shading(pdf_document *doc, pdf_obj *obj);
+fz_shade *pdf_load_shading(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
-fz_image *pdf_load_inline_image(pdf_document *doc, pdf_obj *rdb, pdf_obj *dict, fz_stream *file);
+fz_image *pdf_load_inline_image(fz_context *ctx, pdf_document *doc, pdf_obj *rdb, pdf_obj *dict, fz_stream *file);
int pdf_is_jpx_image(fz_context *ctx, pdf_obj *dict);
-fz_image *pdf_load_image(pdf_document *doc, pdf_obj *obj);
+fz_image *pdf_load_image(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
/*
* Pattern
@@ -42,7 +42,7 @@ struct pdf_pattern_s
pdf_obj *contents;
};
-pdf_pattern *pdf_load_pattern(pdf_document *doc, pdf_obj *obj);
+pdf_pattern *pdf_load_pattern(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
pdf_pattern *pdf_keep_pattern(fz_context *ctx, pdf_pattern *pat);
void pdf_drop_pattern(fz_context *ctx, pdf_pattern *pat);
@@ -67,12 +67,12 @@ struct pdf_xobject_s
int iteration;
};
-pdf_xobject *pdf_load_xobject(pdf_document *doc, pdf_obj *obj);
-pdf_obj *pdf_new_xobject(pdf_document *doc, const fz_rect *bbox, const fz_matrix *mat);
+pdf_xobject *pdf_load_xobject(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
+pdf_obj *pdf_new_xobject(fz_context *ctx, pdf_document *doc, const fz_rect *bbox, const fz_matrix *mat);
pdf_xobject *pdf_keep_xobject(fz_context *ctx, pdf_xobject *xobj);
void pdf_drop_xobject(fz_context *ctx, pdf_xobject *xobj);
-void pdf_update_xobject_contents(pdf_document *doc, pdf_xobject *form, fz_buffer *buffer);
+void pdf_update_xobject_contents(fz_context *ctx, pdf_document *doc, pdf_xobject *form, fz_buffer *buffer);
-void pdf_update_appearance(pdf_document *doc, pdf_annot *annot);
+void pdf_update_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot);
#endif
diff --git a/include/mupdf/pdf/widget.h b/include/mupdf/pdf/widget.h
index 9f2745cc..45441e55 100644
--- a/include/mupdf/pdf/widget.h
+++ b/include/mupdf/pdf/widget.h
@@ -37,22 +37,22 @@ enum
widget, e.g., to collect the text for a text widget, rather than
routing key strokes through pdf_pass_event.
*/
-pdf_widget *pdf_focused_widget(pdf_document *doc);
+pdf_widget *pdf_focused_widget(fz_context *ctx, pdf_document *doc);
/*
pdf_first_widget: get first widget when enumerating
*/
-pdf_widget *pdf_first_widget(pdf_document *doc, pdf_page *page);
+pdf_widget *pdf_first_widget(fz_context *ctx, pdf_document *doc, pdf_page *page);
/*
pdf_next_widget: get next widget when enumerating
*/
-pdf_widget *pdf_next_widget(pdf_widget *previous);
+pdf_widget *pdf_next_widget(fz_context *ctx, pdf_widget *previous);
/*
pdf_create_widget: create a new widget of a specific type
*/
-pdf_widget *pdf_create_widget(pdf_document *doc, pdf_page *page, int type, char *fieldname);
+pdf_widget *pdf_create_widget(fz_context *ctx, pdf_document *doc, pdf_page *page, int type, char *fieldname);
/*
pdf_widget_get_type: find out the type of a widget.
@@ -60,37 +60,37 @@ pdf_widget *pdf_create_widget(pdf_document *doc, pdf_page *page, int type, char
The type determines what widget subclass the widget
can safely be cast to.
*/
-int pdf_widget_get_type(pdf_widget *widget);
+int pdf_widget_get_type(fz_context *ctx, pdf_widget *widget);
/*
pdf_bound_widget: get the bounding box of a widget.
*/
-fz_rect *pdf_bound_widget(pdf_widget *widget, fz_rect *);
+fz_rect *pdf_bound_widget(fz_context *ctx, pdf_widget *widget, fz_rect *);
/*
pdf_text_widget_text: Get the text currently displayed in
a text widget.
*/
-char *pdf_text_widget_text(pdf_document *doc, pdf_widget *tw);
+char *pdf_text_widget_text(fz_context *ctx, pdf_document *doc, pdf_widget *tw);
/*
pdf_widget_text_max_len: get the maximum number of
characters permitted in a text widget
*/
-int pdf_text_widget_max_len(pdf_document *doc, pdf_widget *tw);
+int pdf_text_widget_max_len(fz_context *ctx, pdf_document *doc, pdf_widget *tw);
/*
pdf_text_widget_content_type: get the type of content
required by a text widget
*/
-int pdf_text_widget_content_type(pdf_document *doc, pdf_widget *tw);
+int pdf_text_widget_content_type(fz_context *ctx, pdf_document *doc, pdf_widget *tw);
/*
pdf_text_widget_set_text: Update the text of a text widget.
The text is first validated and accepted only if it passes. The
function returns whether validation passed.
*/
-int pdf_text_widget_set_text(pdf_document *doc, pdf_widget *tw, char *text);
+int pdf_text_widget_set_text(fz_context *ctx, pdf_document *doc, pdf_widget *tw, char *text);
/*
pdf_choice_widget_options: get the list of options for a list
@@ -98,13 +98,13 @@ int pdf_text_widget_set_text(pdf_document *doc, pdf_widget *tw, char *text);
names within the supplied array. Should first be called with a
NULL array to find out how big the array should be.
*/
-int pdf_choice_widget_options(pdf_document *doc, pdf_widget *tw, char *opts[]);
+int pdf_choice_widget_options(fz_context *ctx, pdf_document *doc, pdf_widget *tw, char *opts[]);
/*
pdf_choice_widget_is_multiselect: returns whether a list box or
combo box supports selection of multiple options
*/
-int pdf_choice_widget_is_multiselect(pdf_document *doc, pdf_widget *tw);
+int pdf_choice_widget_is_multiselect(fz_context *ctx, pdf_document *doc, pdf_widget *tw);
/*
pdf_choice_widget_value: get the value of a choice widget.
@@ -113,13 +113,13 @@ int pdf_choice_widget_is_multiselect(pdf_document *doc, pdf_widget *tw);
with NULL as the array to find out how big the array need to
be. The filled in elements should not be freed by the caller.
*/
-int pdf_choice_widget_value(pdf_document *doc, pdf_widget *tw, char *opts[]);
+int pdf_choice_widget_value(fz_context *ctx, pdf_document *doc, pdf_widget *tw, char *opts[]);
/*
pdf_widget_set_value: set the value of a choice widget. The
caller should pass the number of options selected and an
array of their names
*/
-void pdf_choice_widget_set_value(pdf_document *doc, pdf_widget *tw, int n, char *opts[]);
+void pdf_choice_widget_set_value(fz_context *ctx, pdf_document *doc, pdf_widget *tw, int n, char *opts[]);
#endif
diff --git a/include/mupdf/pdf/xref.h b/include/mupdf/pdf/xref.h
index 63580723..c41b0291 100644
--- a/include/mupdf/pdf/xref.h
+++ b/include/mupdf/pdf/xref.h
@@ -4,17 +4,17 @@
/*
pdf_create_object: Allocate a slot in the xref table and return a fresh unused object number.
*/
-int pdf_create_object(pdf_document *doc);
+int pdf_create_object(fz_context *ctx, pdf_document *doc);
/*
pdf_delete_object: Remove object from xref table, marking the slot as free.
*/
-void pdf_delete_object(pdf_document *doc, int num);
+void pdf_delete_object(fz_context *ctx, pdf_document *doc, int num);
/*
pdf_update_object: Replace object in xref table with the passed in object.
*/
-void pdf_update_object(pdf_document *doc, int num, pdf_obj *obj);
+void pdf_update_object(fz_context *ctx, pdf_document *doc, int num, pdf_obj *obj);
/*
pdf_update_stream: Replace stream contents for object in xref table with the passed in buffer.
@@ -24,7 +24,7 @@ void pdf_update_object(pdf_document *doc, int num, pdf_obj *obj);
the stream dictionary. If storing deflated data, make sure to set the
/Filter value to /FlateDecode.
*/
-void pdf_update_stream(pdf_document *doc, int num, fz_buffer *buf);
+void pdf_update_stream(fz_context *ctx, pdf_document *doc, int num, fz_buffer *buf);
/*
* xref and object / stream api
@@ -66,48 +66,48 @@ struct pdf_xref_s
pdf_obj *pre_repair_trailer;
};
-pdf_xref_entry *pdf_cache_object(pdf_document *doc, int num, int gen);
+pdf_xref_entry *pdf_cache_object(fz_context *ctx, pdf_document *doc, int num, int gen);
-int pdf_count_objects(pdf_document *doc);
-pdf_obj *pdf_resolve_indirect(pdf_obj *ref);
-pdf_obj *pdf_load_object(pdf_document *doc, int num, int gen);
+int pdf_count_objects(fz_context *ctx, pdf_document *doc);
+pdf_obj *pdf_resolve_indirect(fz_context *ctx, pdf_obj *ref);
+pdf_obj *pdf_load_object(fz_context *ctx, pdf_document *doc, int num, int gen);
-fz_buffer *pdf_load_raw_stream(pdf_document *doc, int num, int gen);
-fz_buffer *pdf_load_stream(pdf_document *doc, int num, int gen);
-fz_stream *pdf_open_raw_stream(pdf_document *doc, int num, int gen);
-fz_stream *pdf_open_stream(pdf_document *doc, int num, int gen);
+fz_buffer *pdf_load_raw_stream(fz_context *ctx, pdf_document *doc, int num, int gen);
+fz_buffer *pdf_load_stream(fz_context *ctx, pdf_document *doc, int num, int gen);
+fz_stream *pdf_open_raw_stream(fz_context *ctx, pdf_document *doc, int num, int gen);
+fz_stream *pdf_open_stream(fz_context *ctx, pdf_document *doc, int num, int gen);
-fz_stream *pdf_open_inline_stream(pdf_document *doc, pdf_obj *stmobj, int length, fz_stream *chain, fz_compression_params *params);
-fz_compressed_buffer *pdf_load_compressed_stream(pdf_document *doc, int num, int gen);
-void pdf_load_compressed_inline_image(pdf_document *doc, pdf_obj *dict, int length, fz_stream *cstm, int indexed, fz_image *image);
-fz_stream *pdf_open_stream_with_offset(pdf_document *doc, int num, int gen, pdf_obj *dict, int stm_ofs);
+fz_stream *pdf_open_inline_stream(fz_context *ctx, pdf_document *doc, pdf_obj *stmobj, int length, fz_stream *chain, fz_compression_params *params);
+fz_compressed_buffer *pdf_load_compressed_stream(fz_context *ctx, pdf_document *doc, int num, int gen);
+void pdf_load_compressed_inline_image(fz_context *ctx, pdf_document *doc, pdf_obj *dict, int length, fz_stream *cstm, int indexed, fz_image *image);
+fz_stream *pdf_open_stream_with_offset(fz_context *ctx, pdf_document *doc, int num, int gen, pdf_obj *dict, int stm_ofs);
fz_stream *pdf_open_compressed_stream(fz_context *ctx, fz_compressed_buffer *);
-fz_stream *pdf_open_contents_stream(pdf_document *doc, pdf_obj *obj);
-fz_buffer *pdf_load_raw_renumbered_stream(pdf_document *doc, int num, int gen, int orig_num, int orig_gen);
-fz_buffer *pdf_load_renumbered_stream(pdf_document *doc, int num, int gen, int orig_num, int orig_gen, int *truncated);
-fz_stream *pdf_open_raw_renumbered_stream(pdf_document *doc, int num, int gen, int orig_num, int orig_gen);
-
-pdf_obj *pdf_trailer(pdf_document *doc);
-void pdf_set_populating_xref_trailer(pdf_document *doc, pdf_obj *trailer);
-int pdf_xref_len(pdf_document *doc);
-pdf_xref_entry *pdf_get_populating_xref_entry(pdf_document *doc, int i);
-pdf_xref_entry *pdf_get_xref_entry(pdf_document *doc, int i);
-void pdf_replace_xref(pdf_document *doc, pdf_xref_entry *entries, int n);
-void pdf_xref_ensure_incremental_object(pdf_document *doc, int num);
-int pdf_xref_is_incremental(pdf_document *doc, int num);
-
-void pdf_repair_xref(pdf_document *doc);
-void pdf_repair_obj_stms(pdf_document *doc);
-pdf_obj *pdf_new_ref(pdf_document *doc, pdf_obj *obj);
-void pdf_ensure_solid_xref(pdf_document *doc, int num);
-void pdf_mark_xref(pdf_document *doc);
-void pdf_clear_xref(pdf_document *doc);
-void pdf_clear_xref_to_mark(pdf_document *doc);
-
-int pdf_repair_obj(pdf_document *doc, pdf_lexbuf *buf, int *stmofsp, int *stmlenp, pdf_obj **encrypt, pdf_obj **id, pdf_obj **page, int *tmpofs);
-
-pdf_obj *pdf_progressive_advance(pdf_document *doc, int pagenum);
-
-void pdf_print_xref(pdf_document *);
+fz_stream *pdf_open_contents_stream(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
+fz_buffer *pdf_load_raw_renumbered_stream(fz_context *ctx, pdf_document *doc, int num, int gen, int orig_num, int orig_gen);
+fz_buffer *pdf_load_renumbered_stream(fz_context *ctx, pdf_document *doc, int num, int gen, int orig_num, int orig_gen, int *truncated);
+fz_stream *pdf_open_raw_renumbered_stream(fz_context *ctx, pdf_document *doc, int num, int gen, int orig_num, int orig_gen);
+
+pdf_obj *pdf_trailer(fz_context *ctx, pdf_document *doc);
+void pdf_set_populating_xref_trailer(fz_context *ctx, pdf_document *doc, pdf_obj *trailer);
+int pdf_xref_len(fz_context *ctx, pdf_document *doc);
+pdf_xref_entry *pdf_get_populating_xref_entry(fz_context *ctx, pdf_document *doc, int i);
+pdf_xref_entry *pdf_get_xref_entry(fz_context *ctx, pdf_document *doc, int i);
+void pdf_replace_xref(fz_context *ctx, pdf_document *doc, pdf_xref_entry *entries, int n);
+void pdf_xref_ensure_incremental_object(fz_context *ctx, pdf_document *doc, int num);
+int pdf_xref_is_incremental(fz_context *ctx, pdf_document *doc, int num);
+
+void pdf_repair_xref(fz_context *ctx, pdf_document *doc);
+void pdf_repair_obj_stms(fz_context *ctx, pdf_document *doc);
+pdf_obj *pdf_new_ref(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
+void pdf_ensure_solid_xref(fz_context *ctx, pdf_document *doc, int num);
+void pdf_mark_xref(fz_context *ctx, pdf_document *doc);
+void pdf_clear_xref(fz_context *ctx, pdf_document *doc);
+void pdf_clear_xref_to_mark(fz_context *ctx, pdf_document *doc);
+
+int pdf_repair_obj(fz_context *ctx, pdf_document *doc, pdf_lexbuf *buf, int *stmofsp, int *stmlenp, pdf_obj **encrypt, pdf_obj **id, pdf_obj **page, int *tmpofs);
+
+pdf_obj *pdf_progressive_advance(fz_context *ctx, pdf_document *doc, int pagenum);
+
+void pdf_print_xref(fz_context *ctx, pdf_document *);
#endif