diff options
author | Vincent Sanders <vince@kyllikki.org> | 2018-01-06 23:44:17 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2018-01-06 23:44:17 +0000 |
commit | e8dbf1fa8049169e6918cce20e98e309a793cffe (patch) | |
tree | 7f52336e2291186726538903de90e16389507474 /src/pdf_doc.h | |
parent | ad6da4a71f2b837a791401e658a16bf6903fd3b5 (diff) | |
download | libnspdf-e8dbf1fa8049169e6918cce20e98e309a793cffe.tar.gz libnspdf-e8dbf1fa8049169e6918cce20e98e309a793cffe.tar.bz2 |
split out cross reference table handling to separate module
Diffstat (limited to 'src/pdf_doc.h')
-rw-r--r-- | src/pdf_doc.h | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/src/pdf_doc.h b/src/pdf_doc.h index a75c90e..5c25878 100644 --- a/src/pdf_doc.h +++ b/src/pdf_doc.h @@ -1,21 +1,6 @@ -/** indirect object */ -struct xref_table_entry { - /* reference identifier */ - struct cos_reference ref; - /** offset of object */ - uint64_t offset; - - /* indirect object if already decoded */ - struct cos_object *object; -}; - -/** page entry */ -struct page_table_entry { - struct cos_object *resources; - struct cos_object *mediabox; - struct cos_object *contents; -}; +struct xref_table_entry; +struct page_table_entry; /** pdf document */ struct nspdf_doc { @@ -29,7 +14,7 @@ struct nspdf_doc { /** * Indirect object cross reference table */ - uint64_t xref_size; + uint64_t xref_table_size; struct xref_table_entry *xref_table; struct cos_object *root; @@ -45,9 +30,21 @@ struct nspdf_doc { /* byte data acessory, allows for more complex buffer handling in future */ #define DOC_BYTE(doc, offset) (doc->start[(offset)]) +/* helpers in pdf_doc.h */ nspdferror doc_skip_ws(struct nspdf_doc *doc, uint64_t *offset); nspdferror doc_skip_eol(struct nspdf_doc *doc, uint64_t *offset); +nspdferror doc_read_uint(struct nspdf_doc *doc, uint64_t *offset_out, uint64_t *result_out); + +/** + * parse xref from file + */ +nspdferror nspdf__xref_parse(struct nspdf_doc *doc, uint64_t *offset_out); + +/** + * get an object dereferencing through xref table if necessary + */ +nspdferror nspdf__xref_get_referenced(struct nspdf_doc *doc, struct cos_object **cobj_out); -nspdferror xref_get_referenced(struct nspdf_doc *doc, struct cos_object **cobj_out); +nspdferror nspdf__xref_allocate(struct nspdf_doc *doc, int64_t size); nspdferror nspdf__decode_page_tree(struct nspdf_doc *doc, struct cos_object *page_tree_node, unsigned int *page_index); |