From f84a189d5f94250e46d2cbd1a75aba00130e2dd6 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 21 Jan 2015 16:42:45 +0100 Subject: Add ctx parameter and remove embedded contexts for API regularity. Purge several embedded contexts: Remove embedded context in fz_output. Remove embedded context in fz_stream. Remove embedded context in fz_device. Remove fz_rebind_stream (since it is no longer necessary). Remove embedded context in svg_device. Remove embedded context in XML parser. Add ctx argument to fz_document functions. Remove embedded context in fz_document. Remove embedded context in pdf_document. Remove embedded context in pdf_obj. Make fz_page independent of fz_document in the interface. We shouldn't need to pass the document to all functions handling a page. If a page is tied to the source document, it's redundant; otherwise it's just pointless. Fix reference counting oddity in fz_new_image_from_pixmap. --- source/pdf/pdf-annot.c | 268 ++++++++++++++++++++++++------------------------- 1 file changed, 131 insertions(+), 137 deletions(-) (limited to 'source/pdf/pdf-annot.c') diff --git a/source/pdf/pdf-annot.c b/source/pdf/pdf-annot.c index 72f5cd8e..b25c24df 100644 --- a/source/pdf/pdf-annot.c +++ b/source/pdf/pdf-annot.c @@ -1,47 +1,47 @@ #include "mupdf/pdf.h" static pdf_obj * -resolve_dest_rec(pdf_document *doc, pdf_obj *dest, fz_link_kind kind, int depth) +resolve_dest_rec(fz_context *ctx, pdf_document *doc, pdf_obj *dest, fz_link_kind kind, int depth) { if (depth > 10) /* Arbitrary to avoid infinite recursion */ return NULL; - if (pdf_is_name(dest) || pdf_is_string(dest)) + if (pdf_is_name(ctx, dest) || pdf_is_string(ctx, dest)) { if (kind == FZ_LINK_GOTO) { - dest = pdf_lookup_dest(doc, dest); - dest = resolve_dest_rec(doc, dest, kind, depth+1); + dest = pdf_lookup_dest(ctx, doc, dest); + dest = resolve_dest_rec(ctx, doc, dest, kind, depth+1); } return dest; } - else if (pdf_is_array(dest)) + else if (pdf_is_array(ctx, dest)) { return dest; } - else if (pdf_is_dict(dest)) + else if (pdf_is_dict(ctx, dest)) { - dest = pdf_dict_gets(dest, "D"); - return resolve_dest_rec(doc, dest, kind, depth+1); + dest = pdf_dict_gets(ctx, dest, "D"); + return resolve_dest_rec(ctx, doc, dest, kind, depth+1); } - else if (pdf_is_indirect(dest)) + else if (pdf_is_indirect(ctx, dest)) return dest; return NULL; } static pdf_obj * -resolve_dest(pdf_document *doc, pdf_obj *dest, fz_link_kind kind) +resolve_dest(fz_context *ctx, pdf_document *doc, pdf_obj *dest, fz_link_kind kind) { - return resolve_dest_rec(doc, dest, kind, 0); + return resolve_dest_rec(ctx, doc, dest, kind, 0); } fz_link_dest -pdf_parse_link_dest(pdf_document *doc, fz_link_kind kind, pdf_obj *dest) +pdf_parse_link_dest(fz_context *ctx, pdf_document *doc, fz_link_kind kind, pdf_obj *dest) { fz_link_dest ld; pdf_obj *obj; @@ -63,65 +63,65 @@ pdf_parse_link_dest(pdf_document *doc, fz_link_kind kind, pdf_obj *dest) ld.ld.gotor.page = -1; ld.ld.gotor.dest = NULL; - dest = resolve_dest(doc, dest, kind); + dest = resolve_dest(ctx, doc, dest, kind); if (dest == NULL) { - fz_warn(doc->ctx, "undefined link destination"); + fz_warn(ctx, "undefined link destination"); return ld; } - if (pdf_is_name(dest)) + if (pdf_is_name(ctx, dest)) { - ld.ld.gotor.dest = pdf_to_name(dest); + ld.ld.gotor.dest = pdf_to_name(ctx, dest); return ld; } - else if (pdf_is_string(dest)) + else if (pdf_is_string(ctx, dest)) { - ld.ld.gotor.dest = pdf_to_str_buf(dest); + ld.ld.gotor.dest = pdf_to_str_buf(ctx, dest); return ld; } - obj = pdf_array_get(dest, 0); - if (pdf_is_int(obj)) - ld.ld.gotor.page = pdf_to_int(obj); + obj = pdf_array_get(ctx, dest, 0); + if (pdf_is_int(ctx, obj)) + ld.ld.gotor.page = pdf_to_int(ctx, obj); else { - fz_try(doc->ctx) + fz_try(ctx) { - ld.ld.gotor.page = pdf_lookup_page_number(doc, obj); + ld.ld.gotor.page = pdf_lookup_page_number(ctx, doc, obj); } - fz_catch(doc->ctx) + fz_catch(ctx) { ld.kind = FZ_LINK_NONE; return ld; } } - obj = pdf_array_get(dest, 1); - if (!pdf_is_name(obj)) + obj = pdf_array_get(ctx, dest, 1); + if (!pdf_is_name(ctx, obj)) return ld; - if (!strcmp("XYZ", pdf_to_name(obj))) + if (!strcmp("XYZ", pdf_to_name(ctx, obj))) { l_from_2 = t_from_3 = z_from_4 = 1; ld.ld.gotor.flags |= fz_link_flag_r_is_zoom; } - else if ((!strcmp("Fit", pdf_to_name(obj))) || (!strcmp("FitB", pdf_to_name(obj)))) + else if ((!strcmp("Fit", pdf_to_name(ctx, obj))) || (!strcmp("FitB", pdf_to_name(ctx, obj)))) { ld.ld.gotor.flags |= fz_link_flag_fit_h; ld.ld.gotor.flags |= fz_link_flag_fit_v; } - else if ((!strcmp("FitH", pdf_to_name(obj))) || (!strcmp("FitBH", pdf_to_name(obj)))) + else if ((!strcmp("FitH", pdf_to_name(ctx, obj))) || (!strcmp("FitBH", pdf_to_name(ctx, obj)))) { t_from_2 = 1; ld.ld.gotor.flags |= fz_link_flag_fit_h; } - else if ((!strcmp("FitV", pdf_to_name(obj))) || (!strcmp("FitBV", pdf_to_name(obj)))) + else if ((!strcmp("FitV", pdf_to_name(ctx, obj))) || (!strcmp("FitBV", pdf_to_name(ctx, obj)))) { l_from_2 = 1; ld.ld.gotor.flags |= fz_link_flag_fit_v; } - else if (!strcmp("FitR", pdf_to_name(obj))) + else if (!strcmp("FitR", pdf_to_name(ctx, obj))) { l_from_2 = b_from_3 = r_from_4 = t_from_5 = 1; ld.ld.gotor.flags |= fz_link_flag_fit_h; @@ -130,77 +130,77 @@ pdf_parse_link_dest(pdf_document *doc, fz_link_kind kind, pdf_obj *dest) if (l_from_2) { - obj = pdf_array_get(dest, 2); - if (pdf_is_int(obj)) + obj = pdf_array_get(ctx, dest, 2); + if (pdf_is_int(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_l_valid; - ld.ld.gotor.lt.x = pdf_to_int(obj); + ld.ld.gotor.lt.x = pdf_to_int(ctx, obj); } - else if (pdf_is_real(obj)) + else if (pdf_is_real(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_l_valid; - ld.ld.gotor.lt.x = pdf_to_real(obj); + ld.ld.gotor.lt.x = pdf_to_real(ctx, obj); } } if (b_from_3) { - obj = pdf_array_get(dest, 3); - if (pdf_is_int(obj)) + obj = pdf_array_get(ctx, dest, 3); + if (pdf_is_int(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_b_valid; - ld.ld.gotor.rb.y = pdf_to_int(obj); + ld.ld.gotor.rb.y = pdf_to_int(ctx, obj); } - else if (pdf_is_real(obj)) + else if (pdf_is_real(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_b_valid; - ld.ld.gotor.rb.y = pdf_to_real(obj); + ld.ld.gotor.rb.y = pdf_to_real(ctx, obj); } } if (r_from_4) { - obj = pdf_array_get(dest, 4); - if (pdf_is_int(obj)) + obj = pdf_array_get(ctx, dest, 4); + if (pdf_is_int(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_r_valid; - ld.ld.gotor.rb.x = pdf_to_int(obj); + ld.ld.gotor.rb.x = pdf_to_int(ctx, obj); } - else if (pdf_is_real(obj)) + else if (pdf_is_real(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_r_valid; - ld.ld.gotor.rb.x = pdf_to_real(obj); + ld.ld.gotor.rb.x = pdf_to_real(ctx, obj); } } if (t_from_5 || t_from_3 || t_from_2) { if (t_from_5) - obj = pdf_array_get(dest, 5); + obj = pdf_array_get(ctx, dest, 5); else if (t_from_3) - obj = pdf_array_get(dest, 3); + obj = pdf_array_get(ctx, dest, 3); else - obj = pdf_array_get(dest, 2); - if (pdf_is_int(obj)) + obj = pdf_array_get(ctx, dest, 2); + if (pdf_is_int(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_t_valid; - ld.ld.gotor.lt.y = pdf_to_int(obj); + ld.ld.gotor.lt.y = pdf_to_int(ctx, obj); } - else if (pdf_is_real(obj)) + else if (pdf_is_real(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_t_valid; - ld.ld.gotor.lt.y = pdf_to_real(obj); + ld.ld.gotor.lt.y = pdf_to_real(ctx, obj); } } if (z_from_4) { - obj = pdf_array_get(dest, 4); - if (pdf_is_int(obj)) + obj = pdf_array_get(ctx, dest, 4); + if (pdf_is_int(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_r_valid; - ld.ld.gotor.rb.x = pdf_to_int(obj); + ld.ld.gotor.rb.x = pdf_to_int(ctx, obj); } - else if (pdf_is_real(obj)) + else if (pdf_is_real(ctx, obj)) { ld.ld.gotor.flags |= fz_link_flag_r_valid; - ld.ld.gotor.rb.x = pdf_to_real(obj); + ld.ld.gotor.rb.x = pdf_to_real(ctx, obj); } } @@ -218,26 +218,25 @@ pdf_parse_link_dest(pdf_document *doc, fz_link_kind kind, pdf_obj *dest) } static char * -pdf_parse_file_spec(pdf_document *doc, pdf_obj *file_spec) +pdf_parse_file_spec(fz_context *ctx, pdf_document *doc, pdf_obj *file_spec) { - fz_context *ctx = doc->ctx; pdf_obj *filename; - if (pdf_is_string(file_spec)) - return pdf_to_utf8(doc, file_spec); + if (pdf_is_string(ctx, file_spec)) + return pdf_to_utf8(ctx, doc, file_spec); - if (pdf_is_dict(file_spec)) { - filename = pdf_dict_gets(file_spec, "UF"); + if (pdf_is_dict(ctx, file_spec)) { + filename = pdf_dict_gets(ctx, file_spec, "UF"); if (!filename) - filename = pdf_dict_gets(file_spec, "F"); + filename = pdf_dict_gets(ctx, file_spec, "F"); if (!filename) - filename = pdf_dict_gets(file_spec, "Unix"); + filename = pdf_dict_gets(ctx, file_spec, "Unix"); if (!filename) - filename = pdf_dict_gets(file_spec, "Mac"); + filename = pdf_dict_gets(ctx, file_spec, "Mac"); if (!filename) - filename = pdf_dict_gets(file_spec, "DOS"); + filename = pdf_dict_gets(ctx, file_spec, "DOS"); - return pdf_to_utf8(doc, filename); + return pdf_to_utf8(ctx, doc, filename); } fz_warn(ctx, "cannot parse file specification"); @@ -245,65 +244,61 @@ pdf_parse_file_spec(pdf_document *doc, pdf_obj *file_spec) } fz_link_dest -pdf_parse_action(pdf_document *doc, pdf_obj *action) +pdf_parse_action(fz_context *ctx, pdf_document *doc, pdf_obj *action) { fz_link_dest ld; pdf_obj *obj, *dest, *file_spec; - fz_context *ctx = doc->ctx; - - UNUSED(ctx); ld.kind = FZ_LINK_NONE; if (!action) return ld; - obj = pdf_dict_gets(action, "S"); - if (!strcmp(pdf_to_name(obj), "GoTo")) + obj = pdf_dict_gets(ctx, action, "S"); + if (!strcmp(pdf_to_name(ctx, obj), "GoTo")) { - dest = pdf_dict_gets(action, "D"); - ld = pdf_parse_link_dest(doc, FZ_LINK_GOTO, dest); + dest = pdf_dict_gets(ctx, action, "D"); + ld = pdf_parse_link_dest(ctx, doc, FZ_LINK_GOTO, dest); } - else if (!strcmp(pdf_to_name(obj), "URI")) + else if (!strcmp(pdf_to_name(ctx, obj), "URI")) { ld.kind = FZ_LINK_URI; - ld.ld.uri.is_map = pdf_to_bool(pdf_dict_gets(action, "IsMap")); - ld.ld.uri.uri = pdf_to_utf8(doc, pdf_dict_gets(action, "URI")); + ld.ld.uri.is_map = pdf_to_bool(ctx, pdf_dict_gets(ctx, action, "IsMap")); + ld.ld.uri.uri = pdf_to_utf8(ctx, doc, pdf_dict_gets(ctx, action, "URI")); } - else if (!strcmp(pdf_to_name(obj), "Launch")) + else if (!strcmp(pdf_to_name(ctx, obj), "Launch")) { ld.kind = FZ_LINK_LAUNCH; - file_spec = pdf_dict_gets(action, "F"); - ld.ld.launch.file_spec = pdf_parse_file_spec(doc, file_spec); - ld.ld.launch.new_window = pdf_to_int(pdf_dict_gets(action, "NewWindow")); - ld.ld.launch.is_uri = !strcmp(pdf_to_name(pdf_dict_gets(file_spec, "FS")), "URL"); + file_spec = pdf_dict_gets(ctx, action, "F"); + ld.ld.launch.file_spec = pdf_parse_file_spec(ctx, doc, file_spec); + ld.ld.launch.new_window = pdf_to_int(ctx, pdf_dict_gets(ctx, action, "NewWindow")); + ld.ld.launch.is_uri = !strcmp(pdf_to_name(ctx, pdf_dict_gets(ctx, file_spec, "FS")), "URL"); } - else if (!strcmp(pdf_to_name(obj), "Named")) + else if (!strcmp(pdf_to_name(ctx, obj), "Named")) { ld.kind = FZ_LINK_NAMED; - ld.ld.named.named = fz_strdup(ctx, pdf_to_name(pdf_dict_gets(action, "N"))); + ld.ld.named.named = fz_strdup(ctx, pdf_to_name(ctx, pdf_dict_gets(ctx, action, "N"))); } - else if (!strcmp(pdf_to_name(obj), "GoToR")) + else if (!strcmp(pdf_to_name(ctx, obj), "GoToR")) { - dest = pdf_dict_gets(action, "D"); - file_spec = pdf_dict_gets(action, "F"); - ld = pdf_parse_link_dest(doc, FZ_LINK_GOTOR, dest); - ld.ld.gotor.file_spec = pdf_parse_file_spec(doc, file_spec); - ld.ld.gotor.new_window = pdf_to_int(pdf_dict_gets(action, "NewWindow")); + dest = pdf_dict_gets(ctx, action, "D"); + file_spec = pdf_dict_gets(ctx, action, "F"); + ld = pdf_parse_link_dest(ctx, doc, FZ_LINK_GOTOR, dest); + ld.ld.gotor.file_spec = pdf_parse_file_spec(ctx, doc, file_spec); + ld.ld.gotor.new_window = pdf_to_int(ctx, pdf_dict_gets(ctx, action, "NewWindow")); } return ld; } static fz_link * -pdf_load_link(pdf_document *doc, pdf_obj *dict, const fz_matrix *page_ctm) +pdf_load_link(fz_context *ctx, pdf_document *doc, pdf_obj *dict, const fz_matrix *page_ctm) { pdf_obj *action; pdf_obj *obj; fz_rect bbox; - fz_context *ctx = doc->ctx; fz_link_dest ld; - obj = pdf_dict_gets(dict, "Rect"); + obj = pdf_dict_gets(ctx, dict, "Rect"); if (obj) pdf_to_rect(ctx, obj, &bbox); else @@ -311,17 +306,17 @@ pdf_load_link(pdf_document *doc, pdf_obj *dict, const fz_matrix *page_ctm) fz_transform_rect(&bbox, page_ctm); - obj = pdf_dict_gets(dict, "Dest"); + obj = pdf_dict_gets(ctx, dict, "Dest"); if (obj) - ld = pdf_parse_link_dest(doc, FZ_LINK_GOTO, obj); + ld = pdf_parse_link_dest(ctx, doc, FZ_LINK_GOTO, obj); else { - action = pdf_dict_gets(dict, "A"); + action = pdf_dict_gets(ctx, dict, "A"); /* fall back to additional action button's down/up action */ if (!action) - action = pdf_dict_getsa(pdf_dict_gets(dict, "AA"), "U", "D"); + action = pdf_dict_getsa(ctx, pdf_dict_gets(ctx, dict, "AA"), "U", "D"); - ld = pdf_parse_action(doc, action); + ld = pdf_parse_action(ctx, doc, action); } if (ld.kind == FZ_LINK_NONE) return NULL; @@ -329,7 +324,7 @@ pdf_load_link(pdf_document *doc, pdf_obj *dict, const fz_matrix *page_ctm) } fz_link * -pdf_load_link_annots(pdf_document *doc, pdf_obj *annots, const fz_matrix *page_ctm) +pdf_load_link_annots(fz_context *ctx, pdf_document *doc, pdf_obj *annots, const fz_matrix *page_ctm) { fz_link *link, *head, *tail; pdf_obj *obj; @@ -338,18 +333,18 @@ pdf_load_link_annots(pdf_document *doc, pdf_obj *annots, const fz_matrix *page_c head = tail = NULL; link = NULL; - n = pdf_array_len(annots); + n = pdf_array_len(ctx, annots); for (i = 0; i < n; i++) { /* FIXME: Move the try/catch out of the loop for performance? */ - fz_try(doc->ctx) + fz_try(ctx) { - obj = pdf_array_get(annots, i); - link = pdf_load_link(doc, obj, page_ctm); + obj = pdf_array_get(ctx, annots, i); + link = pdf_load_link(ctx, doc, obj, page_ctm); } - fz_catch(doc->ctx) + fz_catch(ctx) { - fz_rethrow_if(doc->ctx, FZ_ERROR_TRYLATER); + fz_rethrow_if(ctx, FZ_ERROR_TRYLATER); link = NULL; } @@ -378,14 +373,14 @@ pdf_drop_annot(fz_context *ctx, pdf_annot *annot) next = annot->next; if (annot->ap) pdf_drop_xobject(ctx, annot->ap); - pdf_drop_obj(annot->obj); + pdf_drop_obj(ctx, annot->obj); fz_free(ctx, annot); annot = next; } } void -pdf_transform_annot(pdf_annot *annot) +pdf_transform_annot(fz_context *ctx, pdf_annot *annot) { fz_rect bbox = annot->ap->bbox; fz_rect rect = annot->rect; @@ -406,9 +401,9 @@ pdf_transform_annot(pdf_annot *annot) fz_pre_scale(fz_translate(&annot->matrix, x, y), w, h); } -fz_annot_type pdf_annot_obj_type(pdf_obj *obj) +fz_annot_type pdf_annot_obj_type(fz_context *ctx, pdf_obj *obj) { - char *subtype = pdf_to_name(pdf_dict_gets(obj, "Subtype")); + char *subtype = pdf_to_name(ctx, pdf_dict_gets(ctx, obj, "Subtype")); if (!strcmp(subtype, "Text")) return FZ_ANNOT_TEXT; else if (!strcmp(subtype, "Link")) @@ -464,12 +459,11 @@ fz_annot_type pdf_annot_obj_type(pdf_obj *obj) } void -pdf_load_annots(pdf_document *doc, pdf_page *page, pdf_obj *annots) +pdf_load_annots(fz_context *ctx, pdf_document *doc, pdf_page *page, pdf_obj *annots) { pdf_annot *annot, **itr; pdf_obj *obj, *ap, *as, *n, *rect; int i, len, keep_annot; - fz_context *ctx = doc->ctx; fz_var(annot); fz_var(itr); @@ -477,7 +471,7 @@ pdf_load_annots(pdf_document *doc, pdf_page *page, pdf_obj *annots) itr = &page->annots; - len = pdf_array_len(annots); + len = pdf_array_len(ctx, annots); /* Create an initial linked list of pdf_annot structures with only the obj field filled in. We do this because update_appearance has the potential to change @@ -488,9 +482,9 @@ pdf_load_annots(pdf_document *doc, pdf_page *page, pdf_obj *annots) { for (i = 0; i < len; i++) { - obj = pdf_array_get(annots, i); + obj = pdf_array_get(ctx, annots, i); annot = fz_malloc_struct(ctx, pdf_annot); - annot->obj = pdf_keep_obj(obj); + annot->obj = pdf_keep_obj(ctx, obj); annot->page = page; annot->next = NULL; @@ -521,45 +515,45 @@ pdf_load_annots(pdf_document *doc, pdf_page *page, pdf_obj *annots) n = NULL; if (doc->update_appearance) - doc->update_appearance(doc, annot); + doc->update_appearance(ctx, doc, annot); obj = annot->obj; - rect = pdf_dict_gets(obj, "Rect"); - ap = pdf_dict_gets(obj, "AP"); - as = pdf_dict_gets(obj, "AS"); + rect = pdf_dict_gets(ctx, obj, "Rect"); + ap = pdf_dict_gets(ctx, obj, "AP"); + as = pdf_dict_gets(ctx, obj, "AS"); /* We only collect annotations with an appearance * stream into this list, so remove any that don't * (such as links) and continue. */ - keep_annot = pdf_is_dict(ap); + keep_annot = pdf_is_dict(ctx, ap); if (!keep_annot) break; - if (hp->num == pdf_to_num(obj) - && hp->gen == pdf_to_gen(obj) + if (hp->num == pdf_to_num(ctx, obj) + && hp->gen == pdf_to_gen(ctx, obj) && (hp->state & HOTSPOT_POINTER_DOWN)) { - n = pdf_dict_gets(ap, "D"); /* down state */ + n = pdf_dict_gets(ctx, ap, "D"); /* down state */ } if (n == NULL) - n = pdf_dict_gets(ap, "N"); /* normal state */ + n = pdf_dict_gets(ctx, ap, "N"); /* normal state */ /* lookup current state in sub-dictionary */ - if (!pdf_is_stream(doc, pdf_to_num(n), pdf_to_gen(n))) - n = pdf_dict_get(n, as); + if (!pdf_is_stream(ctx, doc, pdf_to_num(ctx, n), pdf_to_gen(ctx, n))) + n = pdf_dict_get(ctx, n, as); pdf_to_rect(ctx, rect, &annot->rect); annot->pagerect = annot->rect; fz_transform_rect(&annot->pagerect, &page->ctm); annot->ap = NULL; - annot->annot_type = pdf_annot_obj_type(obj); - annot->widget_type = annot->annot_type == FZ_ANNOT_WIDGET ? pdf_field_type(doc, obj) : PDF_WIDGET_TYPE_NOT_WIDGET; + annot->annot_type = pdf_annot_obj_type(ctx, obj); + annot->widget_type = annot->annot_type == FZ_ANNOT_WIDGET ? pdf_field_type(ctx, doc, obj) : PDF_WIDGET_TYPE_NOT_WIDGET; - if (pdf_is_stream(doc, pdf_to_num(n), pdf_to_gen(n))) + if (pdf_is_stream(ctx, doc, pdf_to_num(ctx, n), pdf_to_gen(ctx, n))) { - annot->ap = pdf_load_xobject(doc, n); - pdf_transform_annot(annot); + annot->ap = pdf_load_xobject(ctx, doc, n); + pdf_transform_annot(ctx, annot); annot->ap_iteration = annot->ap->iteration; } @@ -593,19 +587,19 @@ pdf_load_annots(pdf_document *doc, pdf_page *page, pdf_obj *annots) } pdf_annot * -pdf_first_annot(pdf_document *doc, pdf_page *page) +pdf_first_annot(fz_context *ctx, pdf_page *page) { return page ? page->annots : NULL; } pdf_annot * -pdf_next_annot(pdf_document *doc, pdf_annot *annot) +pdf_next_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot) { return annot ? annot->next : NULL; } fz_rect * -pdf_bound_annot(pdf_document *doc, pdf_annot *annot, fz_rect *rect) +pdf_bound_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot, fz_rect *rect) { if (rect == NULL) return NULL; @@ -618,7 +612,7 @@ pdf_bound_annot(pdf_document *doc, pdf_annot *annot, fz_rect *rect) } fz_annot_type -pdf_annot_type(pdf_annot *annot) +pdf_annot_type(fz_context *ctx, pdf_annot *annot) { return annot->annot_type; } -- cgit v1.2.3