diff options
author | Robin Watts <robin.watts@artifex.com> | 2012-07-05 17:55:18 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2012-07-05 18:02:03 +0100 |
commit | eeaccf8444a4884801a92c0d23f66bd54c986a67 (patch) | |
tree | fc9e254dfeef4d61a80aace2f5dbbcd985580a9a /pdf/pdf_page.c | |
parent | b81be8d34b179d48e677463bd7b66ffdea129517 (diff) | |
parent | 15fc25b0055dbdbfaf4257ac908d43fd5a2da19d (diff) | |
download | mupdf-eeaccf8444a4884801a92c0d23f66bd54c986a67.tar.xz |
Merge branch 'master' into forms
Diffstat (limited to 'pdf/pdf_page.c')
-rw-r--r-- | pdf/pdf_page.c | 19 |
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) |