summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-06-30 15:21:56 +0200
committerTor Andersson <tor.andersson@artifex.com>2016-07-06 13:34:37 +0200
commit255776a778b519183d6935ff0cb4b766644fa830 (patch)
tree16c2d411870b31cc25a2941d90ca862c10083667 /include
parentb644ed1360d0e47c03a637bbc568000d57d0cdbf (diff)
downloadmupdf-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.h6
-rw-r--r--include/mupdf/pdf/document.h2
-rw-r--r--include/mupdf/pdf/object.h2
-rw-r--r--include/mupdf/pdf/xref.h31
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);