diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-06-30 15:21:56 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2016-07-06 13:34:37 +0200 |
commit | 255776a778b519183d6935ff0cb4b766644fa830 (patch) | |
tree | 16c2d411870b31cc25a2941d90ca862c10083667 /include | |
parent | b644ed1360d0e47c03a637bbc568000d57d0cdbf (diff) | |
download | mupdf-255776a778b519183d6935ff0cb4b766644fa830.tar.xz |
pdf: Drop generation number from public interfaces.
The generation number is only needed for decryption, and is assumed
to be zero or irrelevant for all other uses.
Store the original object number and generation in the xref slot, so
that we can decrypt them even when the objects have been renumbered,
without needing to pass the original object number around through
the stream loading APIs.
Diffstat (limited to 'include')
-rw-r--r-- | include/mupdf/fitz/store.h | 6 | ||||
-rw-r--r-- | include/mupdf/pdf/document.h | 2 | ||||
-rw-r--r-- | include/mupdf/pdf/object.h | 2 | ||||
-rw-r--r-- | include/mupdf/pdf/xref.h | 31 |
4 files changed, 16 insertions, 25 deletions
diff --git a/include/mupdf/fitz/store.h b/include/mupdf/fitz/store.h index e9b81539..07f6a286 100644 --- a/include/mupdf/fitz/store.h +++ b/include/mupdf/fitz/store.h @@ -67,12 +67,6 @@ struct fz_store_hash_s { struct { - int i0; - int i1; - void *ptr; - } i; - struct - { const void *ptr; int i; } pi; diff --git a/include/mupdf/pdf/document.h b/include/mupdf/pdf/document.h index 8c3b7591..0bec12b0 100644 --- a/include/mupdf/pdf/document.h +++ b/include/mupdf/pdf/document.h @@ -40,7 +40,6 @@ struct pdf_lexbuf_large_s struct pdf_hotspot_s { int num; - int gen; int state; }; @@ -115,7 +114,6 @@ typedef struct pdf_ocg_entry_s pdf_ocg_entry; struct pdf_ocg_entry_s { int num; - int gen; int state; }; diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h index 51bfa593..cfae8645 100644 --- a/include/mupdf/pdf/object.h +++ b/include/mupdf/pdf/object.h @@ -43,7 +43,7 @@ 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_obj_num_is_stream(fz_context *ctx, pdf_document *doc, int num, int gen); +int pdf_obj_num_is_stream(fz_context *ctx, pdf_document *doc, int num); int pdf_is_stream(fz_context *ctx, pdf_obj *obj); pdf_obj *pdf_resolve_obj(fz_context *ctx, pdf_obj *a); int pdf_objcmp(fz_context *ctx, pdf_obj *a, pdf_obj *b); diff --git a/include/mupdf/pdf/xref.h b/include/mupdf/pdf/xref.h index a6692cab..2c8ab858 100644 --- a/include/mupdf/pdf/xref.h +++ b/include/mupdf/pdf/xref.h @@ -37,13 +37,14 @@ typedef struct pdf_xref_entry_s pdf_xref_entry; struct pdf_xref_entry_s { - char type; /* 0=unset (f)ree i(n)use (o)bjstm */ - unsigned char flags; /* bit 0 = marked */ + char type; /* 0=unset (f)ree i(n)use (o)bjstm */ + unsigned char flags; /* bit 0 = marked */ unsigned short gen; /* generation / objstm index */ - fz_off_t ofs; /* file offset / objstm object number */ + int num; /* original object number (for decryption after renumbering) */ + fz_off_t ofs; /* file offset / objstm object number */ fz_off_t stm_ofs; /* on-disk stream */ - fz_buffer *stm_buf; /* in-memory stream (for updated objects) */ - pdf_obj *obj; /* stored/cached object */ + fz_buffer *stm_buf; /* in-memory stream (for updated objects) */ + pdf_obj *obj; /* stored/cached object */ }; enum @@ -72,26 +73,24 @@ struct pdf_xref_s fz_off_t end_ofs; /* file offset to end of xref */ }; -pdf_xref_entry *pdf_cache_object(fz_context *ctx, pdf_document *doc, int num, int gen); +pdf_xref_entry *pdf_cache_object(fz_context *ctx, pdf_document *doc, int num); 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); +pdf_obj *pdf_load_object(fz_context *ctx, pdf_document *doc, int num); -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_buffer *pdf_load_raw_stream(fz_context *ctx, pdf_document *doc, int num); +fz_buffer *pdf_load_stream(fz_context *ctx, pdf_document *doc, int num); +fz_stream *pdf_open_raw_stream(fz_context *ctx, pdf_document *doc, int num); +fz_stream *pdf_open_stream(fz_context *ctx, pdf_document *doc, int num); 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); +fz_compressed_buffer *pdf_load_compressed_stream(fz_context *ctx, pdf_document *doc, int num); void pdf_load_compressed_inline_image(fz_context *ctx, pdf_document *doc, pdf_obj *dict, int length, fz_stream *cstm, int indexed, fz_compressed_image *image); -fz_stream *pdf_open_stream_with_offset(fz_context *ctx, pdf_document *doc, int num, int gen, pdf_obj *dict, fz_off_t stm_ofs); +fz_stream *pdf_open_stream_with_offset(fz_context *ctx, pdf_document *doc, int num, pdf_obj *dict, fz_off_t stm_ofs); fz_stream *pdf_open_compressed_stream(fz_context *ctx, fz_compressed_buffer *); 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); +fz_buffer *pdf_load_stream_truncated(fz_context *ctx, pdf_document *doc, int num, int *truncated); 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); |