From f86e9738deb6c6887fb51f2d11e8294cfc1b51cb Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 29 Aug 2016 16:28:23 +0200 Subject: Simplify PDF resource caching table handling. --- include/mupdf/fitz/buffer.h | 5 +++++ include/mupdf/pdf/document.h | 6 ++++-- include/mupdf/pdf/resource.h | 26 ++++---------------------- 3 files changed, 13 insertions(+), 24 deletions(-) (limited to 'include') diff --git a/include/mupdf/fitz/buffer.h b/include/mupdf/fitz/buffer.h index a616fa86..40e46e73 100644 --- a/include/mupdf/fitz/buffer.h +++ b/include/mupdf/fitz/buffer.h @@ -138,4 +138,9 @@ size_t fz_buffer_printf(fz_context *ctx, fz_buffer *buffer, const char *fmt, ... size_t fz_buffer_vprintf(fz_context *ctx, fz_buffer *buffer, const char *fmt, va_list args); void fz_buffer_print_pdf_string(fz_context *ctx, fz_buffer *buffer, const char *text); +/* + fz_md5_buffer: create MD5 digest of buffer contents. +*/ +void fz_md5_buffer(fz_context *ctx, fz_buffer *buffer, unsigned char digest[16]); + #endif diff --git a/include/mupdf/pdf/document.h b/include/mupdf/pdf/document.h index 8a8fdd40..aabf05f9 100644 --- a/include/mupdf/pdf/document.h +++ b/include/mupdf/pdf/document.h @@ -12,7 +12,6 @@ typedef struct pdf_annot_s pdf_annot; typedef struct pdf_widget_s pdf_widget; typedef struct pdf_hotspot_s pdf_hotspot; typedef struct pdf_js_s pdf_js; -typedef struct pdf_resource_tables_s pdf_resource_tables; enum { @@ -266,7 +265,10 @@ struct pdf_document_s int max_type3_fonts; fz_font **type3_fonts; - pdf_resource_tables *resources; + struct { + fz_hash_table *images; + fz_hash_table *fonts; + } resources; }; /* diff --git a/include/mupdf/pdf/resource.h b/include/mupdf/pdf/resource.h index e0290247..f9f99da6 100644 --- a/include/mupdf/pdf/resource.h +++ b/include/mupdf/pdf/resource.h @@ -16,29 +16,11 @@ void pdf_remove_item(fz_context *ctx, fz_store_drop_fn *drop, pdf_obj *key); * the data, enabling rapid lookup. */ -typedef struct pdf_res_table_s pdf_res_table; -typedef pdf_obj *(pdf_res_search_fn)(fz_context *ctx, pdf_document *doc, pdf_res_table *list, - void *item, unsigned char md5[16]); - -struct pdf_res_table_s -{ - fz_hash_table *hash; - pdf_res_search_fn *search; -}; - -struct pdf_resource_tables_s -{ - pdf_res_table *image; - pdf_res_table *font; - pdf_res_table *color; - pdf_res_table *pattern; - pdf_res_table *shading; -}; - -pdf_obj *pdf_find_resource(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void *item, unsigned char md5[16]); -void pdf_init_resource_tables(fz_context *ctx, pdf_document *doc); +pdf_obj *pdf_find_font_resource(fz_context *ctx, pdf_document *doc, fz_buffer *item, unsigned char md5[16]); +pdf_obj *pdf_insert_font_resource(fz_context *ctx, pdf_document *doc, unsigned char md5[16], pdf_obj *obj); +pdf_obj *pdf_find_image_resource(fz_context *ctx, pdf_document *doc, fz_image *item, unsigned char md5[16]); +pdf_obj *pdf_insert_image_resource(fz_context *ctx, pdf_document *doc, unsigned char md5[16], pdf_obj *obj); void pdf_drop_resource_tables(fz_context *ctx, pdf_document *doc); -pdf_obj *pdf_insert_resource(fz_context *ctx, pdf_res_table *table, void *key, pdf_obj *obj); /* * Functions, Colorspaces, Shadings and Images -- cgit v1.2.3