summaryrefslogtreecommitdiff
path: root/source/xps/xps-doc.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2017-04-27 12:43:00 +0200
committerTor Andersson <tor.andersson@artifex.com>2017-04-27 15:12:03 +0200
commitc586d072fd786e66851173f5ddd31241ad28f3e6 (patch)
treed6db1b68dc122f8349513633ae76a73ed353b69b /source/xps/xps-doc.c
parentce680b96e207c90429eb702c5ee4b9bec177fdfd (diff)
downloadmupdf-c586d072fd786e66851173f5ddd31241ad28f3e6.tar.xz
Avoid typecasting function pointers in subclasses.
Do the typecasting in the functions instead, reducing the risk of function prototype mismatches.
Diffstat (limited to 'source/xps/xps-doc.c')
-rw-r--r--source/xps/xps-doc.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/source/xps/xps-doc.c b/source/xps/xps-doc.c
index c4034d48..611e5903 100644
--- a/source/xps/xps-doc.c
+++ b/source/xps/xps-doc.c
@@ -105,10 +105,11 @@ xps_add_link_target(fz_context *ctx, xps_document *doc, char *name)
}
int
-xps_lookup_link_target(fz_context *ctx, xps_document *doc, char *target_uri, float *xp, float *yp)
+xps_lookup_link_target(fz_context *ctx, fz_document *doc_, const char *target_uri, float *xp, float *yp)
{
+ xps_document *doc = (xps_document*)doc_;
xps_target *target;
- char *needle = strrchr(target_uri, '#');
+ const char *needle = strrchr(target_uri, '#');
needle = needle ? needle + 1 : target_uri;
for (target = doc->target; target; target = target->next)
if (!strcmp(target->name, needle))
@@ -318,8 +319,9 @@ xps_read_page_list(fz_context *ctx, xps_document *doc)
}
int
-xps_count_pages(fz_context *ctx, xps_document *doc)
+xps_count_pages(fz_context *ctx, fz_document *doc_)
{
+ xps_document *doc = (xps_document*)doc_;
return doc->page_count;
}
@@ -388,8 +390,9 @@ xps_load_fixed_page(fz_context *ctx, xps_document *doc, xps_fixpage *page)
}
static fz_rect *
-xps_bound_page(fz_context *ctx, xps_page *page, fz_rect *bounds)
+xps_bound_page(fz_context *ctx, fz_page *page_, fz_rect *bounds)
{
+ xps_page *page = (xps_page*)page_;
bounds->x0 = bounds->y0 = 0;
bounds->x1 = page->fix->width * 72.0f / 96.0f;
bounds->y1 = page->fix->height * 72.0f / 96.0f;
@@ -397,15 +400,17 @@ xps_bound_page(fz_context *ctx, xps_page *page, fz_rect *bounds)
}
static void
-xps_drop_page_imp(fz_context *ctx, xps_page *page)
+xps_drop_page_imp(fz_context *ctx, fz_page *page_)
{
+ xps_page *page = (xps_page*)page_;
fz_drop_document(ctx, &page->doc->super);
fz_drop_xml(ctx, page->root);
}
-xps_page *
-xps_load_page(fz_context *ctx, xps_document *doc, int number)
+fz_page *
+xps_load_page(fz_context *ctx, fz_document *doc_, int number)
{
+ xps_document *doc = (xps_document*)doc_;
xps_page *page = NULL;
xps_fixpage *fix;
fz_xml *root;
@@ -421,12 +426,12 @@ xps_load_page(fz_context *ctx, xps_document *doc, int number)
fz_try(ctx)
{
page = fz_new_derived_page(ctx, xps_page);
- page->super.load_links = (fz_page_load_links_fn*)xps_load_links;
- page->super.bound_page = (fz_page_bound_page_fn*)xps_bound_page;
- page->super.run_page_contents = (fz_page_run_page_contents_fn*)xps_run_page;
- page->super.drop_page = (fz_page_drop_page_fn*)xps_drop_page_imp;
+ page->super.load_links = xps_load_links;
+ page->super.bound_page = xps_bound_page;
+ page->super.run_page_contents = xps_run_page;
+ page->super.drop_page = xps_drop_page_imp;
- page->doc = (xps_document*) fz_keep_document(ctx, &doc->super);
+ page->doc = (xps_document*) fz_keep_document(ctx, (fz_document*)doc);
page->fix = fix;
page->root = root;
}
@@ -435,7 +440,7 @@ xps_load_page(fz_context *ctx, xps_document *doc, int number)
fz_drop_xml(ctx, root);
fz_rethrow(ctx);
}
- return page;
+ return (fz_page*)page;
}
n ++;
}
@@ -469,8 +474,8 @@ static const char *xps_mimetypes[] =
fz_document_handler xps_document_handler =
{
xps_recognize,
- (fz_document_open_fn*)xps_open_document,
- (fz_document_open_with_stream_fn*)xps_open_document_with_stream,
+ xps_open_document,
+ xps_open_document_with_stream,
xps_extensions,
xps_mimetypes
};