diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-02-24 15:54:37 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2016-02-29 15:52:53 +0100 |
commit | 727dbaa8a7d987325688703db0d50895df4b097f (patch) | |
tree | 6f40d85e24ddbdc8245a92a220a152c944dbaf92 | |
parent | c2398cf7940e2533eb3158e93f271f471a4b369c (diff) | |
download | mupdf-727dbaa8a7d987325688703db0d50895df4b097f.tar.xz |
Rename some functions.
Remove void* typecasts.
-rw-r--r-- | include/mupdf/pdf/document.h | 2 | ||||
-rw-r--r-- | include/mupdf/pdf/resource.h | 14 | ||||
-rw-r--r-- | source/pdf/pdf-font.c | 36 | ||||
-rw-r--r-- | source/pdf/pdf-image.c | 4 | ||||
-rw-r--r-- | source/pdf/pdf-resources.c | 72 | ||||
-rw-r--r-- | source/pdf/pdf-xref.c | 4 |
6 files changed, 53 insertions, 79 deletions
diff --git a/include/mupdf/pdf/document.h b/include/mupdf/pdf/document.h index 7f6a63d9..1605a0d6 100644 --- a/include/mupdf/pdf/document.h +++ b/include/mupdf/pdf/document.h @@ -256,7 +256,7 @@ struct pdf_document_s int num_type3_fonts; int max_type3_fonts; fz_font **type3_fonts; - + pdf_resource_tables *resources; }; diff --git a/include/mupdf/pdf/resource.h b/include/mupdf/pdf/resource.h index 443123ee..fbcefc2e 100644 --- a/include/mupdf/pdf/resource.h +++ b/include/mupdf/pdf/resource.h @@ -12,7 +12,7 @@ void pdf_remove_item(fz_context *ctx, fz_store_drop_fn *drop, pdf_obj *key); * Structures used for managing resource locations and avoiding multiple * occurrences when resources are added to the document. The search for existing * resources will be performed when we are first trying to add an item. Object - * refs are stored in an fz_hash_table structure using a hash of the md5 sum of + * refs are stored in an fz_hash_table structure using a hash of the md5 sum of * the data, enabling rapid lookup. */ typedef struct pdf_res_s pdf_res; @@ -24,8 +24,8 @@ struct pdf_res_s }; typedef struct pdf_res_table_s pdf_res_table; -typedef void* (pdf_res_search_fn)(fz_context *ctx, pdf_document *doc, pdf_res_table *list, - void *item, void *val); +typedef pdf_res *(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 { @@ -43,10 +43,10 @@ struct pdf_resource_tables_s pdf_res_table *shading; }; -void* pdf_resource_table_search(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void *item, void *md5); -void pdf_resource_table_init(fz_context *ctx, pdf_document *doc); -void pdf_resource_table_free(fz_context *ctx, pdf_document *doc); -void* pdf_resource_table_put(fz_context *ctx, pdf_res_table *table, void *key, pdf_obj *obj); +pdf_res *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); +void pdf_drop_resource_tables(fz_context *ctx, pdf_document *doc); +pdf_res *pdf_insert_resource(fz_context *ctx, pdf_res_table *table, void *key, pdf_obj *obj); /* * Functions, Colorspaces, Shadings and Images diff --git a/source/pdf/pdf-font.c b/source/pdf/pdf-font.c index 57f22fe4..ee3d7b9d 100644 --- a/source/pdf/pdf-font.c +++ b/source/pdf/pdf-font.c @@ -1476,7 +1476,7 @@ static void ft_width_for_simple_table(fz_context *ctx, pdf_font_desc *fontdesc, } static pdf_obj* -pdf_font_stream_ref(fz_context *ctx, pdf_document *doc, fz_buffer *buf) +pdf_add_font_file(fz_context *ctx, pdf_document *doc, fz_buffer *buf) { pdf_obj *obj = NULL; pdf_obj *ref = NULL; @@ -1504,7 +1504,7 @@ pdf_font_stream_ref(fz_context *ctx, pdf_document *doc, fz_buffer *buf) } static pdf_obj* -pdf_font_desc_ref(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc, pdf_obj *fileref) +pdf_add_font_descriptor(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc, pdf_obj *fileref) { pdf_obj *ref = NULL; pdf_obj *fdobj = NULL; @@ -1563,7 +1563,7 @@ pdf_font_desc_ref(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc, p } static pdf_obj* -pdf_font_widths_ref(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc) +pdf_add_simple_font_widths(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc) { pdf_obj *ref = NULL; pdf_obj *arr = NULL; @@ -1623,7 +1623,7 @@ pdf_add_cid_system_info(fz_context *ctx, pdf_document *doc) enum { FW_START, FW_SAME, FW_RUN }; static void -pdf_publish_cid_widths(fz_context *ctx, pdf_document *doc, pdf_obj *fwobj, pdf_obj *run_obj, int state, int first_code, int prev_code, int prev_size) +pdf_add_cid_font_widths_entry(fz_context *ctx, pdf_document *doc, pdf_obj *fwobj, pdf_obj *run_obj, int state, int first_code, int prev_code, int prev_size) { pdf_obj *temp_array = NULL; @@ -1670,7 +1670,7 @@ pdf_publish_cid_widths(fz_context *ctx, pdf_document *doc, pdf_obj *fwobj, pdf_o /* ToDo: Ignore the default sized characters */ static pdf_obj* -pdf_create_cid_widths(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc, fz_font *source_font) +pdf_add_cid_font_widths(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdesc, fz_font *source_font) { pdf_obj *fwobj = NULL; pdf_obj *run_obj = NULL; @@ -1814,7 +1814,7 @@ pdf_create_cid_widths(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdes if (publish) { - pdf_publish_cid_widths(ctx, doc, fwobj, run_obj, state, first_code, prev_code, prev_size); + pdf_add_cid_font_widths_entry(ctx, doc, fwobj, run_obj, state, first_code, prev_code, prev_size); state = new_state; publish = 0; first_code = new_first_code; @@ -1824,7 +1824,7 @@ pdf_create_cid_widths(fz_context *ctx, pdf_document *doc, pdf_font_desc *fontdes /* See if we need to flush */ if (gindex == 0) - pdf_publish_cid_widths(ctx, doc, fwobj, run_obj, state, first_code, prev_code, prev_size); + pdf_add_cid_font_widths_entry(ctx, doc, fwobj, run_obj, state, first_code, prev_code, prev_size); } } fz_catch(ctx) @@ -1859,13 +1859,13 @@ pdf_add_descendant_font(fz_context *ctx, pdf_document *doc, fz_buffer *buffer, p fz_try(ctx) { /* refs */ - fstr_ref = pdf_font_stream_ref(ctx, doc, buffer); - fdes_ref = pdf_font_desc_ref(ctx, doc, fontdesc, fstr_ref); + fstr_ref = pdf_add_font_file(ctx, doc, buffer); + fdes_ref = pdf_add_font_descriptor(ctx, doc, fontdesc, fstr_ref); fsys_ref = pdf_add_cid_system_info(ctx, doc); /* We may have a cid font already with width info in source font and no * cmap in the ft face */ - fw = pdf_create_cid_widths(ctx, doc, fontdesc, source_font); + fw = pdf_add_cid_font_widths(ctx, doc, fontdesc, source_font); /* And now the font */ fobj = pdf_new_dict(ctx, doc, 3); @@ -2153,8 +2153,7 @@ pdf_add_cid_font_res(fz_context *ctx, pdf_document *doc, fz_buffer *buffer, fz_f /* Before we add this font as a resource check if the same font * already exists in our resources for this doc. If yes, then * hand back that reference */ - fres = pdf_resource_table_search(ctx, doc, doc->resources->font, - (void*)buffer, (void*)&(digest[0])); + fres = pdf_find_resource(ctx, doc, doc->resources->font, buffer, digest); if (fres == NULL) { /* Set up desc, width, and font file */ @@ -2189,7 +2188,7 @@ pdf_add_cid_font_res(fz_context *ctx, pdf_document *doc, fz_buffer *buffer, fz_f fref = pdf_new_ref(ctx, doc, fobj); /* Add ref to our font resource hash table. */ - fres = pdf_resource_table_put(ctx, doc->resources->font, digest, fref); + fres = pdf_insert_resource(ctx, doc->resources->font, digest, fref); } } fz_always(ctx) @@ -2247,8 +2246,7 @@ pdf_add_simple_font_res(fz_context *ctx, pdf_document *doc, fz_buffer *buffer) /* Before we add this font as a resource check if the same font * already exists in our resources for this doc. If yes, then * hand back that reference */ - fres = pdf_resource_table_search(ctx, doc, doc->resources->font, - (void*)buffer, (void*)&(digest[0])); + fres = pdf_find_resource(ctx, doc, doc->resources->font, buffer, digest); if (fres == NULL) { /* Set up desc, width, and font file */ @@ -2270,9 +2268,9 @@ pdf_add_simple_font_res(fz_context *ctx, pdf_document *doc, fz_buffer *buffer) has_lock = 0; /* refs */ - fstr_ref = pdf_font_stream_ref(ctx, doc, buffer); - fdes_ref = pdf_font_desc_ref(ctx, doc, fontdesc, fstr_ref); - fwidth_ref = pdf_font_widths_ref(ctx, doc, fontdesc); + fstr_ref = pdf_add_font_file(ctx, doc, buffer); + fdes_ref = pdf_add_font_descriptor(ctx, doc, fontdesc, fstr_ref); + fwidth_ref = pdf_add_simple_font_widths(ctx, doc, fontdesc); /* And now the font */ pdf_dict_put_drop(ctx, fobj, PDF_NAME_Type, PDF_NAME_Font); @@ -2299,7 +2297,7 @@ pdf_add_simple_font_res(fz_context *ctx, pdf_document *doc, fz_buffer *buffer) fref = pdf_new_ref(ctx, doc, fobj); /* Add ref to our font resource hash table. */ - fres = pdf_resource_table_put(ctx, doc->resources->font, digest, fref); + fres = pdf_insert_resource(ctx, doc->resources->font, digest, fref); } } fz_always(ctx) diff --git a/source/pdf/pdf-image.c b/source/pdf/pdf-image.c index 78828776..9641520a 100644 --- a/source/pdf/pdf-image.c +++ b/source/pdf/pdf-image.c @@ -317,7 +317,7 @@ pdf_add_image_res(fz_context *ctx, pdf_document *doc, fz_image *image, int mask) /* Before we add this image as a resource check if the same image * already exists in our resources for this doc. If yes, then * hand back that reference */ - imres = pdf_resource_table_search(ctx, doc, doc->resources->image, + imres = pdf_find_resource(ctx, doc, doc->resources->image, (void*)image, (void*) &(digest[0])); if (imres == NULL) { @@ -448,7 +448,7 @@ pdf_add_image_res(fz_context *ctx, pdf_document *doc, fz_image *image, int mask) pdf_update_stream(ctx, doc, imref, buffer, 1); /* Add ref to our image resource hash table. */ - imres = pdf_resource_table_put(ctx, doc->resources->image, digest, imref); + imres = pdf_insert_resource(ctx, doc->resources->image, digest, imref); } } fz_always(ctx) diff --git a/source/pdf/pdf-resources.c b/source/pdf/pdf-resources.c index 31812b3c..192e5893 100644 --- a/source/pdf/pdf-resources.c +++ b/source/pdf/pdf-resources.c @@ -13,10 +13,9 @@ res_table_free(fz_context *ctx, pdf_res_table *table) n = fz_hash_len(ctx, table->hash); for (i = 0; i < n; i++) { - void *v = fz_hash_get_val(ctx, table->hash, i); - if (v) + res = fz_hash_get_val(ctx, table->hash, i); + if (res) { - res = (pdf_res*)v; pdf_drop_obj(ctx, res->obj); fz_free(ctx, res); } @@ -109,13 +108,13 @@ res_image_init(fz_context *ctx, pdf_document *doc, pdf_res_table *table) image = NULL; /* Don't allow overwrites. Number the resources for pdfwrite */ - if (fz_hash_find(ctx, table->hash, (void *)digest) == NULL) + if (fz_hash_find(ctx, table->hash, digest) == NULL) { res = fz_malloc(ctx, sizeof(pdf_res)); res->num = num; res->obj = obj; num = num + 1; - fz_hash_insert(ctx, table->hash, (void *)digest, obj); + fz_hash_insert(ctx, table->hash, digest, obj); } } else @@ -138,13 +137,10 @@ res_image_init(fz_context *ctx, pdf_document *doc, pdf_res_table *table) } } -static void* -res_image_search(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void *item, - void *md5) +static pdf_res * +res_image_search(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void *item, unsigned char *digest) { - unsigned char digest[16]; - - fz_image *image = (fz_image*)item; + fz_image *image = item; fz_hash_table *hash = table->hash; pdf_res *res; @@ -154,15 +150,10 @@ res_image_search(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void /* Create md5 and see if we have the item in our table */ res_image_get_md5(ctx, image, digest); - res = fz_hash_find(ctx, hash, (void*)digest); - - /* Return the digest value so that we can avoid having to recompute it when - * we come back to add the new resource reference */ - if (res == NULL) - memcpy(md5, digest, 16); - else + res = fz_hash_find(ctx, hash, digest); + if (res) pdf_keep_obj(ctx, res->obj); - return (void*) res; + return res; } /* Font specific methods */ @@ -187,12 +178,10 @@ res_font_get_md5(fz_context *ctx, fz_buffer *buffer, unsigned char *digest) fz_md5_final(&state, digest); } -static void* -res_font_search(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void *item, - void *md5) +static pdf_res * +res_font_search(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void *item, unsigned char digest[16]) { - unsigned char digest[16]; - fz_buffer *buffer = (fz_buffer*)item; + fz_buffer *buffer = item; fz_hash_table *hash = table->hash; pdf_res *res; @@ -202,27 +191,21 @@ res_font_search(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void * /* Create md5 and see if we have the item in our table */ res_font_get_md5(ctx, buffer, digest); - res = fz_hash_find(ctx, hash, (void*)digest); - - /* Return the digest value so that we can avoid having to recompute it when - * we come back to add the new resource reference */ - if (res == NULL) - memcpy(md5, digest, 16); - else + res = fz_hash_find(ctx, hash, digest); + if (res) pdf_keep_obj(ctx, res->obj); - return (void*)res; + return res; } /* Accessible methods */ -void* -pdf_resource_table_search(fz_context *ctx, pdf_document *doc, pdf_res_table *table, - void *item, void *md5) +pdf_res * +pdf_find_resource(fz_context *ctx, pdf_document *doc, pdf_res_table *table, void *item, unsigned char md5[16]) { return table->search(ctx, doc, table, item, md5); } -void* -pdf_resource_table_put(fz_context *ctx, pdf_res_table *table, void *key, pdf_obj *obj) +pdf_res * +pdf_insert_resource(fz_context *ctx, pdf_res_table *table, void *key, pdf_obj *obj) { void *result; pdf_res *res = NULL; @@ -256,7 +239,7 @@ pdf_resource_table_put(fz_context *ctx, pdf_res_table *table, void *key, pdf_obj } void -pdf_resource_table_free(fz_context *ctx, pdf_document *doc) +pdf_drop_resource_tables(fz_context *ctx, pdf_document *doc) { if (doc->resources == NULL) return; @@ -270,9 +253,8 @@ pdf_resource_table_free(fz_context *ctx, pdf_document *doc) } void -pdf_resource_table_init(fz_context *ctx, pdf_document *doc) +pdf_init_resource_tables(fz_context *ctx, pdf_document *doc) { - fz_var(doc); fz_try(ctx) { doc->resources = fz_calloc(ctx, 1, sizeof(pdf_resource_tables)); @@ -283,13 +265,7 @@ pdf_resource_table_init(fz_context *ctx, pdf_document *doc) } fz_catch(ctx) { - if (doc->resources != NULL) - { - fz_free(ctx, doc->resources->color); - fz_free(ctx, doc->resources->font); - fz_free(ctx, doc->resources); - doc->resources = NULL; - } - fz_rethrow_message(ctx, "resources failed to allocate"); + pdf_drop_resource_tables(ctx, doc); + fz_rethrow_message(ctx, "cannot allocate resource tables"); } } diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c index 32b1d6a2..02e68530 100644 --- a/source/pdf/pdf-xref.c +++ b/source/pdf/pdf-xref.c @@ -1626,7 +1626,7 @@ pdf_close_document(fz_context *ctx, pdf_document *doc) pdf_lexbuf_fin(ctx, &doc->lexbuf.base); - pdf_resource_table_free(ctx, doc); + pdf_drop_resource_tables(ctx, doc); fz_free(ctx, doc); } @@ -2746,7 +2746,7 @@ pdf_document *pdf_create_document(fz_context *ctx) doc->num_incremental_sections = 0; doc->xref_base = 0; doc->disallow_new_increments = 0; - pdf_resource_table_init(ctx, doc); + pdf_init_resource_tables(ctx, doc); pdf_get_populating_xref_entry(ctx, doc, 0); trailer = pdf_new_dict(ctx, doc, 2); pdf_dict_put_drop(ctx, trailer, PDF_NAME_Size, pdf_new_int(ctx, doc, 3)); |