summaryrefslogtreecommitdiff
path: root/xps
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2012-01-12 01:12:28 +0100
committerTor Andersson <tor.andersson@artifex.com>2012-01-12 01:12:28 +0100
commit9994b3f49db7bd925a7ae7874cbc99025469ee9e (patch)
treec718919738e0c70cc94959aad1b5b4997f11389f /xps
parent09086b236af6e49f2f090f80a450b1d82f217f30 (diff)
downloadmupdf-9994b3f49db7bd925a7ae7874cbc99025469ee9e.tar.xz
Use the same coordinate system for pdf and xps pages in the interface.
Move coordinate space tweaks into pdf_ and xps_run_page, and provide neutral pdf_ and xps_bound_page functions to return the page size as a zero-origined bounding box.
Diffstat (limited to 'xps')
-rw-r--r--xps/muxps.h1
-rw-r--r--xps/xps_doc.c10
-rw-r--r--xps/xps_tile.c5
3 files changed, 16 insertions, 0 deletions
diff --git a/xps/muxps.h b/xps/muxps.h
index 95b68860..96a8a1eb 100644
--- a/xps/muxps.h
+++ b/xps/muxps.h
@@ -105,6 +105,7 @@ void xps_free_page_list(xps_document *doc);
int xps_count_pages(xps_document *doc);
xps_page *xps_load_page(xps_document *doc, int number);
+fz_rect xps_bound_page(xps_document *doc, xps_page *page);
void xps_free_page(xps_document *doc, xps_page *page);
fz_outline *xps_load_outline(xps_document *doc);
diff --git a/xps/xps_doc.c b/xps/xps_doc.c
index c01b7561..36903266 100644
--- a/xps/xps_doc.c
+++ b/xps/xps_doc.c
@@ -364,6 +364,16 @@ xps_load_page(xps_document *doc, int number)
return NULL;
}
+fz_rect
+xps_bound_page(xps_document *doc, xps_page *page)
+{
+ fz_rect bounds;
+ bounds.x0 = bounds.y0 = 0;
+ bounds.x1 = page->width * 72.0f / 96.0f;
+ bounds.y1 = page->height * 72.0f / 96.0f;
+ return bounds;
+}
+
void
xps_free_page(xps_document *doc, xps_page *page)
{
diff --git a/xps/xps_tile.c b/xps/xps_tile.c
index 842e4cda..b672724b 100644
--- a/xps/xps_tile.c
+++ b/xps/xps_tile.c
@@ -360,6 +360,11 @@ xps_parse_fixed_page(xps_document *doc, fz_matrix ctm, xps_page *page)
void
xps_run_page(xps_document *doc, xps_page *page, fz_device *dev, fz_matrix ctm, fz_cookie *cookie)
{
+ fz_matrix page_ctm;
+
+ page_ctm = fz_scale(72.0f / 96.0f, 72.0f / 96.0f);
+ ctm = fz_concat(page_ctm, ctm);
+
doc->cookie = cookie;
doc->dev = dev;
xps_parse_fixed_page(doc, ctm, page);