diff options
author | Robin Watts <robin.watts@artifex.com> | 2013-06-24 22:03:54 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2013-06-25 10:11:18 +0100 |
commit | 997902cd2a0d46404ff4fe09a7380410d1499c5a (patch) | |
tree | ded41aa535d7445807aea17a364f993fb8603729 /source/pdf/pdf-xref.c | |
parent | 07dd8540ae72b0e7be64d04c38d8c19b83d184b6 (diff) | |
download | mupdf-997902cd2a0d46404ff4fe09a7380410d1499c5a.tar.xz |
Rid the world of "pdf_document *xref".
For historical reasons lots of the code uses "xref" when talking about
a pdf document. Now pdf_xref is a separate type this has become
confusing, so replace 'xref' with 'doc' for clarity.
Diffstat (limited to 'source/pdf/pdf-xref.c')
-rw-r--r-- | source/pdf/pdf-xref.c | 310 |
1 files changed, 155 insertions, 155 deletions
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c index 087931bf..9aa1eab6 100644 --- a/source/pdf/pdf-xref.c +++ b/source/pdf/pdf-xref.c @@ -198,35 +198,35 @@ void pdf_replace_xref(pdf_document *doc, pdf_xref_entry *entries, int n) */ static void -pdf_load_version(pdf_document *xref) +pdf_load_version(pdf_document *doc) { char buf[20]; - fz_seek(xref->file, 0, SEEK_SET); - fz_read_line(xref->file, buf, sizeof buf); + fz_seek(doc->file, 0, SEEK_SET); + fz_read_line(doc->file, buf, sizeof buf); if (memcmp(buf, "%PDF-", 5) != 0) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "cannot recognize version marker"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "cannot recognize version marker"); - xref->version = atoi(buf + 5) * 10 + atoi(buf + 7); + doc->version = atoi(buf + 5) * 10 + atoi(buf + 7); } static void -pdf_read_start_xref(pdf_document *xref) +pdf_read_start_xref(pdf_document *doc) { unsigned char buf[1024]; int t, n; int i; - fz_seek(xref->file, 0, SEEK_END); + fz_seek(doc->file, 0, SEEK_END); - xref->file_size = fz_tell(xref->file); + doc->file_size = fz_tell(doc->file); - t = fz_maxi(0, xref->file_size - (int)sizeof buf); - fz_seek(xref->file, t, SEEK_SET); + t = fz_maxi(0, doc->file_size - (int)sizeof buf); + fz_seek(doc->file, t, SEEK_SET); - n = fz_read(xref->file, buf, sizeof buf); + n = fz_read(doc->file, buf, sizeof buf); if (n < 0) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "cannot read from file"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "cannot read from file"); for (i = n - 9; i >= 0; i--) { @@ -235,14 +235,14 @@ pdf_read_start_xref(pdf_document *xref) i += 9; while (iswhite(buf[i]) && i < n) i ++; - xref->startxref = atoi((char*)(buf + i)); - if (xref->startxref != 0) + doc->startxref = atoi((char*)(buf + i)); + if (doc->startxref != 0) return; break; } } - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "cannot find startxref"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "cannot find startxref"); } /* @@ -250,7 +250,7 @@ pdf_read_start_xref(pdf_document *xref) */ static int -pdf_xref_size_from_old_trailer(pdf_document *xref, pdf_lexbuf *buf) +pdf_xref_size_from_old_trailer(pdf_document *doc, pdf_lexbuf *buf) { int len; char *s; @@ -261,61 +261,61 @@ pdf_xref_size_from_old_trailer(pdf_document *xref, pdf_lexbuf *buf) int ofs; /* Record the current file read offset so that we can reinstate it */ - ofs = fz_tell(xref->file); + ofs = fz_tell(doc->file); - fz_read_line(xref->file, buf->scratch, buf->size); + fz_read_line(doc->file, buf->scratch, buf->size); if (strncmp(buf->scratch, "xref", 4) != 0) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "cannot find xref marker"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "cannot find xref marker"); while (1) { - c = fz_peek_byte(xref->file); + c = fz_peek_byte(doc->file); if (!(c >= '0' && c <= '9')) break; - fz_read_line(xref->file, buf->scratch, buf->size); + fz_read_line(doc->file, buf->scratch, buf->size); s = buf->scratch; fz_strsep(&s, " "); /* ignore ofs */ if (!s) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "invalid range marker in xref"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "invalid range marker in xref"); len = fz_atoi(fz_strsep(&s, " ")); /* broken pdfs where the section is not on a separate line */ if (s && *s != '\0') - fz_seek(xref->file, -(2 + (int)strlen(s)), SEEK_CUR); + fz_seek(doc->file, -(2 + (int)strlen(s)), SEEK_CUR); - t = fz_tell(xref->file); + t = fz_tell(doc->file); if (t < 0) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "cannot tell in file"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "cannot tell in file"); - fz_seek(xref->file, t + 20 * len, SEEK_SET); + fz_seek(doc->file, t + 20 * len, SEEK_SET); } - fz_try(xref->ctx) + fz_try(doc->ctx) { pdf_obj *trailer; - tok = pdf_lex(xref->file, buf); + tok = pdf_lex(doc->file, buf); if (tok != PDF_TOK_TRAILER) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "expected trailer marker"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "expected trailer marker"); - tok = pdf_lex(xref->file, buf); + tok = pdf_lex(doc->file, buf); if (tok != PDF_TOK_OPEN_DICT) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "expected trailer dictionary"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "expected trailer dictionary"); - trailer = pdf_parse_dict(xref, xref->file, buf); + trailer = pdf_parse_dict(doc, doc->file, buf); size = pdf_to_int(pdf_dict_gets(trailer, "Size")); if (!size) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "trailer missing Size entry"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "trailer missing Size entry"); pdf_drop_obj(trailer); } - fz_catch(xref->ctx) + fz_catch(doc->ctx) { - fz_rethrow_message(xref->ctx, "cannot parse trailer"); + fz_rethrow_message(doc->ctx, "cannot parse trailer"); } - fz_seek(xref->file, ofs, SEEK_SET); + fz_seek(doc->file, ofs, SEEK_SET); return size; } @@ -419,24 +419,24 @@ pdf_read_old_xref(pdf_document *doc, pdf_lexbuf *buf) } static void -pdf_read_new_xref_section(pdf_document *xref, fz_stream *stm, int i0, int i1, int w0, int w1, int w2) +pdf_read_new_xref_section(pdf_document *doc, fz_stream *stm, int i0, int i1, int w0, int w1, int w2) { int i, n; if (i0 < 0 || i1 < 0) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "negative xref stream entry index"); - if (i0 + i1 > pdf_xref_len(xref)) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "xref stream has too many entries"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "negative xref stream entry index"); + if (i0 + i1 > pdf_xref_len(doc)) + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "xref stream has too many entries"); for (i = i0; i < i0 + i1; i++) { - pdf_xref_entry *entry = pdf_get_populating_xref_entry(xref, i); + pdf_xref_entry *entry = pdf_get_populating_xref_entry(doc, i); int a = 0; int b = 0; int c = 0; if (fz_is_eof(stm)) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "truncated xref stream"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "truncated xref stream"); for (n = 0; n < w0; n++) a = (a << 8) + fz_read_byte(stm); @@ -457,7 +457,7 @@ pdf_read_new_xref_section(pdf_document *xref, fz_stream *stm, int i0, int i1, in /* Entered with file locked, remains locked throughout. */ static pdf_obj * -pdf_read_new_xref(pdf_document *xref, pdf_lexbuf *buf) +pdf_read_new_xref(pdf_document *doc, pdf_lexbuf *buf) { fz_stream *stm = NULL; pdf_obj *trailer = NULL; @@ -466,7 +466,7 @@ pdf_read_new_xref(pdf_document *xref, pdf_lexbuf *buf) int num, gen, stm_ofs; int size, w0, w1, w2; int t; - fz_context *ctx = xref->ctx; + fz_context *ctx = doc->ctx; fz_var(trailer); fz_var(stm); @@ -474,9 +474,9 @@ pdf_read_new_xref(pdf_document *xref, pdf_lexbuf *buf) fz_try(ctx) { pdf_xref_entry *entry; - int ofs = fz_tell(xref->file); - trailer = pdf_parse_ind_obj(xref, xref->file, buf, &num, &gen, &stm_ofs); - entry = pdf_get_populating_xref_entry(xref, num); + int ofs = fz_tell(doc->file); + trailer = pdf_parse_ind_obj(doc, doc->file, buf, &num, &gen, &stm_ofs); + entry = pdf_get_populating_xref_entry(doc, num); entry->ofs = ofs; entry->gen = gen; entry->stm_ofs = stm_ofs; @@ -497,10 +497,10 @@ pdf_read_new_xref(pdf_document *xref, pdf_lexbuf *buf) size = pdf_to_int(obj); /* Access xref entry to assure table size */ - (void)pdf_get_populating_xref_entry(xref, size-1); + (void)pdf_get_populating_xref_entry(doc, size-1); - if (num < 0 || num >= pdf_xref_len(xref)) - fz_throw(ctx, FZ_ERROR_GENERIC, "object id (%d %d R) out of range (0..%d)", num, gen, pdf_xref_len(xref) - 1); + if (num < 0 || num >= pdf_xref_len(doc)) + fz_throw(ctx, FZ_ERROR_GENERIC, "object id (%d %d R) out of range (0..%d)", num, gen, pdf_xref_len(doc) - 1); obj = pdf_dict_gets(trailer, "W"); if (!obj) @@ -522,11 +522,11 @@ pdf_read_new_xref(pdf_document *xref, pdf_lexbuf *buf) index = pdf_dict_gets(trailer, "Index"); - stm = pdf_open_stream_with_offset(xref, num, gen, trailer, stm_ofs); + stm = pdf_open_stream_with_offset(doc, num, gen, trailer, stm_ofs); if (!index) { - pdf_read_new_xref_section(xref, stm, 0, size, w0, w1, w2); + pdf_read_new_xref_section(doc, stm, 0, size, w0, w1, w2); } else { @@ -535,7 +535,7 @@ pdf_read_new_xref(pdf_document *xref, pdf_lexbuf *buf) { int i0 = pdf_to_int(pdf_array_get(index, t + 0)); int i1 = pdf_to_int(pdf_array_get(index, t + 1)); - pdf_read_new_xref_section(xref, stm, i0, i1, w0, w1, w2); + pdf_read_new_xref_section(doc, stm, i0, i1, w0, w1, w2); } } } @@ -554,24 +554,24 @@ pdf_read_new_xref(pdf_document *xref, pdf_lexbuf *buf) /* File is locked on entry, and exit (but may be dropped in the middle) */ static pdf_obj * -pdf_read_xref(pdf_document *xref, int ofs, pdf_lexbuf *buf) +pdf_read_xref(pdf_document *doc, int ofs, pdf_lexbuf *buf) { int c; - fz_context *ctx = xref->ctx; + fz_context *ctx = doc->ctx; pdf_obj *trailer; - fz_seek(xref->file, ofs, SEEK_SET); + fz_seek(doc->file, ofs, SEEK_SET); - while (iswhite(fz_peek_byte(xref->file))) - fz_read_byte(xref->file); + while (iswhite(fz_peek_byte(doc->file))) + fz_read_byte(doc->file); fz_try(ctx) { - c = fz_peek_byte(xref->file); + c = fz_peek_byte(doc->file); if (c == 'x') - trailer = pdf_read_old_xref(xref, buf); + trailer = pdf_read_old_xref(doc, buf); else if (c >= '0' && c <= '9') - trailer = pdf_read_new_xref(xref, buf); + trailer = pdf_read_new_xref(doc, buf); else fz_throw(ctx, FZ_ERROR_GENERIC, "cannot recognize xref format"); } @@ -592,10 +592,10 @@ struct ofs_list_s }; static int -read_xref_section(pdf_document *xref, int ofs, pdf_lexbuf *buf, ofs_list *offsets) +read_xref_section(pdf_document *doc, int ofs, pdf_lexbuf *buf, ofs_list *offsets) { pdf_obj *trailer = NULL; - fz_context *ctx = xref->ctx; + fz_context *ctx = doc->ctx; int xrefstmofs = 0; int prevofs = 0; @@ -622,9 +622,9 @@ read_xref_section(pdf_document *xref, int ofs, pdf_lexbuf *buf, ofs_list *offset } offsets->list[offsets->len++] = ofs; - trailer = pdf_read_xref(xref, ofs, buf); + trailer = pdf_read_xref(doc, ofs, buf); - pdf_set_populating_xref_trailer(xref, trailer); + pdf_set_populating_xref_trailer(doc, trailer); /* FIXME: do we overwrite free entries properly? */ xrefstmofs = pdf_to_int(pdf_dict_gets(trailer, "XRefStm")); @@ -638,7 +638,7 @@ read_xref_section(pdf_document *xref, int ofs, pdf_lexbuf *buf, ofs_list *offset follow any Prev tag therein, as specified on Page 108 of the PDF reference 1.7 */ - pdf_drop_obj(pdf_read_xref(xref, xrefstmofs, buf)); + pdf_drop_obj(pdf_read_xref(doc, xrefstmofs, buf)); } prevofs = pdf_to_int(pdf_dict_gets(trailer, "Prev")); @@ -659,9 +659,9 @@ read_xref_section(pdf_document *xref, int ofs, pdf_lexbuf *buf, ofs_list *offset } static void -pdf_read_xref_sections(pdf_document *xref, int ofs, pdf_lexbuf *buf) +pdf_read_xref_sections(pdf_document *doc, int ofs, pdf_lexbuf *buf) { - fz_context *ctx = xref->ctx; + fz_context *ctx = doc->ctx; ofs_list list; list.len = 0; @@ -671,8 +671,8 @@ pdf_read_xref_sections(pdf_document *xref, int ofs, pdf_lexbuf *buf) { while(ofs) { - pdf_populate_next_xref_level(xref); - ofs = read_xref_section(xref, ofs, buf, &list); + pdf_populate_next_xref_level(doc); + ofs = read_xref_section(doc, ofs, buf, &list); } } fz_always(ctx) @@ -692,72 +692,72 @@ pdf_read_xref_sections(pdf_document *xref, int ofs, pdf_lexbuf *buf) */ static void -pdf_load_xref(pdf_document *xref, pdf_lexbuf *buf) +pdf_load_xref(pdf_document *doc, pdf_lexbuf *buf) { int i; int xref_len; - fz_context *ctx = xref->ctx; + fz_context *ctx = doc->ctx; - pdf_load_version(xref); + pdf_load_version(doc); - pdf_read_start_xref(xref); + pdf_read_start_xref(doc); - pdf_read_xref_sections(xref, xref->startxref, buf); + pdf_read_xref_sections(doc, doc->startxref, buf); - if (pdf_xref_len(xref) == 0) + if (pdf_xref_len(doc) == 0) fz_throw(ctx, FZ_ERROR_GENERIC, "found xref was empty"); /* broken pdfs where first object is not free */ - if (pdf_get_xref_entry(xref, 0)->type != 'f') + if (pdf_get_xref_entry(doc, 0)->type != 'f') fz_throw(ctx, FZ_ERROR_GENERIC, "first object in xref is not free"); /* broken pdfs where object offsets are out of range */ - xref_len = pdf_xref_len(xref); + xref_len = pdf_xref_len(doc); for (i = 0; i < xref_len; i++) { - pdf_xref_entry *entry = pdf_get_xref_entry(xref, i); + pdf_xref_entry *entry = pdf_get_xref_entry(doc, i); if (entry->type == 'n') { /* Special case code: "0000000000 * n" means free, * according to some producers (inc Quartz) */ if (entry->ofs == 0) entry->type = 'f'; - else if (entry->ofs <= 0 || entry->ofs >= xref->file_size) + else if (entry->ofs <= 0 || entry->ofs >= doc->file_size) fz_throw(ctx, FZ_ERROR_GENERIC, "object offset out of range: %d (%d 0 R)", entry->ofs, i); } if (entry->type == 'o') - if (entry->ofs <= 0 || entry->ofs >= xref_len || pdf_get_xref_entry(xref, entry->ofs)->type != 'n') + if (entry->ofs <= 0 || entry->ofs >= xref_len || pdf_get_xref_entry(doc, entry->ofs)->type != 'n') fz_throw(ctx, FZ_ERROR_GENERIC, "invalid reference to an objstm that does not exist: %d (%d 0 R)", entry->ofs, i); } } void -pdf_ocg_set_config(pdf_document *xref, int config) +pdf_ocg_set_config(pdf_document *doc, int config) { int i, j, len, len2; - pdf_ocg_descriptor *desc = xref->ocg; + pdf_ocg_descriptor *desc = doc->ocg; pdf_obj *obj, *cobj; char *name; - obj = pdf_dict_gets(pdf_dict_gets(pdf_trailer(xref), "Root"), "OCProperties"); + obj = pdf_dict_gets(pdf_dict_gets(pdf_trailer(doc), "Root"), "OCProperties"); if (!obj) { if (config == 0) return; else - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "Unknown OCG config (None known!)"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "Unknown OCG config (None known!)"); } if (config == 0) { cobj = pdf_dict_gets(obj, "D"); if (!cobj) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "No default OCG config"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "No default OCG config"); } else { cobj = pdf_array_get(pdf_dict_gets(obj, "Configs"), config); if (!cobj) - fz_throw(xref->ctx, FZ_ERROR_GENERIC, "Illegal OCG config"); + fz_throw(doc->ctx, FZ_ERROR_GENERIC, "Illegal OCG config"); } pdf_drop_obj(desc->intent); @@ -836,16 +836,16 @@ pdf_ocg_set_config(pdf_document *xref, int config) } static void -pdf_read_ocg(pdf_document *xref) +pdf_read_ocg(pdf_document *doc) { pdf_obj *obj, *ocg; int len, i; pdf_ocg_descriptor *desc; - fz_context *ctx = xref->ctx; + fz_context *ctx = doc->ctx; fz_var(desc); - obj = pdf_dict_gets(pdf_dict_gets(pdf_trailer(xref), "Root"), "OCProperties"); + obj = pdf_dict_gets(pdf_dict_gets(pdf_trailer(doc), "Root"), "OCProperties"); if (!obj) return; ocg = pdf_dict_gets(obj, "OCGs"); @@ -866,7 +866,7 @@ pdf_read_ocg(pdf_document *xref) desc->ocgs[i].gen = pdf_to_gen(o); desc->ocgs[i].state = 0; } - xref->ocg = desc; + doc->ocg = desc; } fz_catch(ctx) { @@ -876,7 +876,7 @@ pdf_read_ocg(pdf_document *xref) fz_rethrow(ctx); } - pdf_ocg_set_config(xref, 0); + pdf_ocg_set_config(doc, 0); } static void @@ -1010,58 +1010,58 @@ pdf_init_document(pdf_document *doc) } void -pdf_close_document(pdf_document *xref) +pdf_close_document(pdf_document *doc) { int i; fz_context *ctx; - if (!xref) + if (!doc) return; - ctx = xref->ctx; + ctx = doc->ctx; - pdf_drop_js(xref->js); + pdf_drop_js(doc->js); - pdf_free_xref_sections(xref); + pdf_free_xref_sections(doc); - if (xref->page_objs) + if (doc->page_objs) { - for (i = 0; i < xref->page_len; i++) - pdf_drop_obj(xref->page_objs[i]); - fz_free(ctx, xref->page_objs); + for (i = 0; i < doc->page_len; i++) + pdf_drop_obj(doc->page_objs[i]); + fz_free(ctx, doc->page_objs); } - if (xref->page_refs) + if (doc->page_refs) { - for (i = 0; i < xref->page_len; i++) - pdf_drop_obj(xref->page_refs[i]); - fz_free(ctx, xref->page_refs); + for (i = 0; i < doc->page_len; i++) + pdf_drop_obj(doc->page_refs[i]); + fz_free(ctx, doc->page_refs); } - if (xref->focus_obj) - pdf_drop_obj(xref->focus_obj); - if (xref->file) - fz_close(xref->file); - if (xref->crypt) - pdf_free_crypt(ctx, xref->crypt); + if (doc->focus_obj) + pdf_drop_obj(doc->focus_obj); + if (doc->file) + fz_close(doc->file); + if (doc->crypt) + pdf_free_crypt(ctx, doc->crypt); - pdf_free_ocg(ctx, xref->ocg); + pdf_free_ocg(ctx, doc->ocg); fz_empty_store(ctx); - pdf_lexbuf_fin(&xref->lexbuf.base); + pdf_lexbuf_fin(&doc->lexbuf.base); - fz_free(ctx, xref); + fz_free(ctx, doc); } void -pdf_print_xref(pdf_document *xref) +pdf_print_xref(pdf_document *doc) { int i; - int xref_len = pdf_xref_len(xref); - printf("xref\n0 %d\n", pdf_xref_len(xref)); + int xref_len = pdf_xref_len(doc); + printf("xref\n0 %d\n", xref_len); for (i = 0; i < xref_len; i++) { - pdf_xref_entry *entry = pdf_get_xref_entry(xref, i); + pdf_xref_entry *entry = pdf_get_xref_entry(doc, i); printf("%05d: %010d %05d %c (stm_ofs=%d; stm_buf=%p)\n", i, entry->ofs, entry->gen, @@ -1076,7 +1076,7 @@ pdf_print_xref(pdf_document *xref) */ static void -pdf_load_obj_stm(pdf_document *xref, int num, int gen, pdf_lexbuf *buf) +pdf_load_obj_stm(pdf_document *doc, int num, int gen, pdf_lexbuf *buf) { fz_stream *stm = NULL; pdf_obj *objstm = NULL; @@ -1088,7 +1088,7 @@ pdf_load_obj_stm(pdf_document *xref, int num, int gen, pdf_lexbuf *buf) int count; int i; pdf_token tok; - fz_context *ctx = xref->ctx; + fz_context *ctx = doc->ctx; fz_var(numbuf); fz_var(ofsbuf); @@ -1097,7 +1097,7 @@ pdf_load_obj_stm(pdf_document *xref, int num, int gen, pdf_lexbuf *buf) fz_try(ctx) { - objstm = pdf_load_object(xref, num, gen); + objstm = pdf_load_object(doc, num, gen); count = pdf_to_int(pdf_dict_gets(objstm, "N")); first = pdf_to_int(pdf_dict_gets(objstm, "First")); @@ -1110,7 +1110,7 @@ pdf_load_obj_stm(pdf_document *xref, int num, int gen, pdf_lexbuf *buf) numbuf = fz_calloc(ctx, count, sizeof(int)); ofsbuf = fz_calloc(ctx, count, sizeof(int)); - stm = pdf_open_stream(xref, num, gen); + stm = pdf_open_stream(doc, num, gen); for (i = 0; i < count; i++) { tok = pdf_lex(stm, buf); @@ -1128,11 +1128,11 @@ pdf_load_obj_stm(pdf_document *xref, int num, int gen, pdf_lexbuf *buf) for (i = 0; i < count; i++) { - int xref_len = pdf_xref_len(xref); + int xref_len = pdf_xref_len(doc); pdf_xref_entry *entry; fz_seek(stm, first + ofsbuf[i], SEEK_SET); - obj = pdf_parse_stm_obj(xref, stm, buf); + obj = pdf_parse_stm_obj(doc, stm, buf); if (numbuf[i] < 1 || numbuf[i] >= xref_len) { @@ -1140,7 +1140,7 @@ pdf_load_obj_stm(pdf_document *xref, int num, int gen, pdf_lexbuf *buf) fz_throw(ctx, FZ_ERROR_GENERIC, "object id (%d 0 R) out of range (0..%d)", numbuf[i], xref_len - 1); } - entry = pdf_get_xref_entry(xref, numbuf[i]); + entry = pdf_get_xref_entry(doc, numbuf[i]); if (entry->type == 'o' && entry->ofs == num) { @@ -1166,8 +1166,8 @@ pdf_load_obj_stm(pdf_document *xref, int num, int gen, pdf_lexbuf *buf) fz_always(ctx) { fz_close(stm); - fz_free(xref->ctx, ofsbuf); - fz_free(xref->ctx, numbuf); + fz_free(ctx, ofsbuf); + fz_free(ctx, numbuf); pdf_drop_obj(objstm); } fz_catch(ctx) @@ -1247,21 +1247,21 @@ pdf_cache_object(pdf_document *doc, int num, int gen) } pdf_obj * -pdf_load_object(pdf_document *xref, int num, int gen) +pdf_load_object(pdf_document *doc, int num, int gen) { - fz_context *ctx = xref->ctx; + fz_context *ctx = doc->ctx; pdf_xref_entry *entry; fz_try(ctx) { - pdf_cache_object(xref, num, gen); + pdf_cache_object(doc, num, gen); } fz_catch(ctx) { fz_rethrow_message(ctx, "cannot load object (%d %d R) into cache", num, gen); } - entry = pdf_get_xref_entry(xref, num); + entry = pdf_get_xref_entry(doc, num); assert(entry->obj); @@ -1275,7 +1275,7 @@ pdf_resolve_indirect(pdf_obj *ref) int num; int gen; fz_context *ctx = NULL; /* Avoid warning for stupid compilers */ - pdf_document *xref; + pdf_document *doc; pdf_xref_entry *entry; while (pdf_is_indirect(ref)) @@ -1285,15 +1285,15 @@ pdf_resolve_indirect(pdf_obj *ref) fz_warn(ctx, "Too many indirections (possible indirection cycle involving %d %d R)", num, gen); return NULL; } - xref = pdf_get_indirect_document(ref); - if (!xref) + doc = pdf_get_indirect_document(ref); + if (!doc) return NULL; - ctx = xref->ctx; + ctx = doc->ctx; num = pdf_to_num(ref); gen = pdf_to_gen(ref); fz_try(ctx) { - pdf_cache_object(xref, num, gen); + pdf_cache_object(doc, num, gen); } fz_catch(ctx) { @@ -1301,7 +1301,7 @@ pdf_resolve_indirect(pdf_obj *ref) fz_warn(ctx, "cannot load object (%d %d R) into cache", num, gen); return NULL; } - entry = pdf_get_xref_entry(xref, num); + entry = pdf_get_xref_entry(doc, num); if (!entry->obj) return NULL; ref = entry->obj; @@ -1317,12 +1317,12 @@ pdf_count_objects(pdf_document *doc) } int -pdf_create_object(pdf_document *xref) +pdf_create_object(pdf_document *doc) { /* TODO: reuse free object slots by properly linking free object chains in the ofs field */ pdf_xref_entry *entry; - int num = pdf_xref_len(xref); - entry = pdf_get_new_xref_entry(xref, num); + int num = pdf_xref_len(doc); + entry = pdf_get_new_xref_entry(doc, num); entry->type = 'f'; entry->ofs = -1; entry->gen = 0; @@ -1333,19 +1333,19 @@ pdf_create_object(pdf_document *xref) } void -pdf_delete_object(pdf_document *xref, int num) +pdf_delete_object(pdf_document *doc, int num) { pdf_xref_entry *x; - if (num < 0 || num >= pdf_xref_len(xref)) + if (num < 0 || num >= pdf_xref_len(doc)) { - fz_warn(xref->ctx, "object out of range (%d 0 R); xref size %d", num, pdf_xref_len(xref)); + fz_warn(doc->ctx, "object out of range (%d 0 R); xref size %d", num, pdf_xref_len(doc)); return; } - x = pdf_get_new_xref_entry(xref, num); + x = pdf_get_new_xref_entry(doc, num); - fz_drop_buffer(xref->ctx, x->stm_buf); + fz_drop_buffer(doc->ctx, x->stm_buf); pdf_drop_obj(x->obj); x->type = 'f'; @@ -1357,17 +1357,17 @@ pdf_delete_object(pdf_document *xref, int num) } void -pdf_update_object(pdf_document *xref, int num, pdf_obj *newobj) +pdf_update_object(pdf_document *doc, int num, pdf_obj *newobj) { pdf_xref_entry *x; - if (num < 0 || num >= pdf_xref_len(xref)) + if (num < 0 || num >= pdf_xref_len(doc)) { - fz_warn(xref->ctx, "object out of range (%d 0 R); xref size %d", num, pdf_xref_len(xref)); + fz_warn(doc->ctx, "object out of range (%d 0 R); xref size %d", num, pdf_xref_len(doc)); return; } - x = pdf_get_new_xref_entry(xref, num); + x = pdf_get_new_xref_entry(doc, num); pdf_drop_obj(x->obj); @@ -1377,20 +1377,20 @@ pdf_update_object(pdf_document *xref, int num, pdf_obj *newobj) } void -pdf_update_stream(pdf_document *xref, int num, fz_buffer *newbuf) +pdf_update_stream(pdf_document *doc, int num, fz_buffer *newbuf) { pdf_xref_entry *x; - if (num < 0 || num >= pdf_xref_len(xref)) + if (num < 0 || num >= pdf_xref_len(doc)) { - fz_warn(xref->ctx, "object out of range (%d 0 R); xref size %d", num, pdf_xref_len(xref)); + fz_warn(doc->ctx, "object out of range (%d 0 R); xref size %d", num, pdf_xref_len(doc)); return; } - x = pdf_get_xref_entry(xref, num); + x = pdf_get_xref_entry(doc, num); - fz_drop_buffer(xref->ctx, x->stm_buf); - x->stm_buf = fz_keep_buffer(xref->ctx, newbuf); + fz_drop_buffer(doc->ctx, x->stm_buf); + x->stm_buf = fz_keep_buffer(doc->ctx, newbuf); } int |