summaryrefslogtreecommitdiff
path: root/pdf/pdf_page.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2012-07-05 17:55:18 +0100
committerRobin Watts <robin.watts@artifex.com>2012-07-05 18:02:03 +0100
commiteeaccf8444a4884801a92c0d23f66bd54c986a67 (patch)
treefc9e254dfeef4d61a80aace2f5dbbcd985580a9a /pdf/pdf_page.c
parentb81be8d34b179d48e677463bd7b66ffdea129517 (diff)
parent15fc25b0055dbdbfaf4257ac908d43fd5a2da19d (diff)
downloadmupdf-eeaccf8444a4884801a92c0d23f66bd54c986a67.tar.xz
Merge branch 'master' into forms
Diffstat (limited to 'pdf/pdf_page.c')
-rw-r--r--pdf/pdf_page.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/pdf/pdf_page.c b/pdf/pdf_page.c
index d348ad40..8715590c 100644
--- a/pdf/pdf_page.c
+++ b/pdf/pdf_page.c
@@ -290,6 +290,7 @@ pdf_load_page(pdf_document *xref, int number)
pdf_obj *pageobj, *pageref, *obj;
fz_rect mediabox, cropbox, realbox;
fz_matrix ctm;
+ float userunit;
pdf_load_page_tree(xref);
if (number < 0 || number >= xref->page_len)
@@ -305,6 +306,12 @@ pdf_load_page(pdf_document *xref, int number)
page->links = NULL;
page->annots = NULL;
+ obj = pdf_dict_gets(pageobj, "UserUnit");
+ if (pdf_is_real(obj))
+ userunit = pdf_to_real(obj);
+ else
+ userunit = 1;
+
mediabox = pdf_to_rect(ctx, pdf_dict_gets(pageobj, "MediaBox"));
if (fz_is_empty_rect(mediabox))
{
@@ -319,10 +326,10 @@ pdf_load_page(pdf_document *xref, int number)
if (!fz_is_empty_rect(cropbox))
mediabox = fz_intersect_rect(mediabox, cropbox);
- page->mediabox.x0 = MIN(mediabox.x0, mediabox.x1);
- page->mediabox.y0 = MIN(mediabox.y0, mediabox.y1);
- page->mediabox.x1 = MAX(mediabox.x0, mediabox.x1);
- page->mediabox.y1 = MAX(mediabox.y0, mediabox.y1);
+ page->mediabox.x0 = fz_min(mediabox.x0, mediabox.x1) * userunit;
+ page->mediabox.y0 = fz_min(mediabox.y0, mediabox.y1) * userunit;
+ page->mediabox.x1 = fz_max(mediabox.x0, mediabox.x1) * userunit;
+ page->mediabox.y1 = fz_max(mediabox.y0, mediabox.y1) * userunit;
if (page->mediabox.x1 - page->mediabox.x0 < 1 || page->mediabox.y1 - page->mediabox.y0 < 1)
{
@@ -342,7 +349,9 @@ pdf_load_page(pdf_document *xref, int number)
ctm = fz_concat(fz_rotate(-page->rotate), fz_scale(1, -1));
realbox = fz_transform_rect(ctm, page->mediabox);
- page->ctm = fz_concat(ctm, fz_translate(-realbox.x0, -realbox.y0));
+ ctm = fz_concat(ctm, fz_scale(userunit, userunit));
+ ctm = fz_concat(ctm, fz_translate(-realbox.x0, -realbox.y0));
+ page->ctm = ctm;
obj = pdf_dict_gets(pageobj, "Annots");
if (obj)