summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-11-02 15:13:31 +0100
committerTor Andersson <tor.andersson@artifex.com>2016-11-02 15:15:13 +0100
commit0a1a2b016df622ceef289dc4035e146f60efc8f5 (patch)
treeaabbe4fb2ce7b9df8044423faadaf255d51b20fa /source
parent858ac10caae93ffad55ae0b8bdc8189924504bc8 (diff)
downloadmupdf-0a1a2b016df622ceef289dc4035e146f60efc8f5.tar.xz
Fix 697284: The origin was incorrectly calculated for rotated pages.
Diffstat (limited to 'source')
-rw-r--r--source/pdf/pdf-page.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c
index 7c7005e3..2667e184 100644
--- a/source/pdf/pdf-page.c
+++ b/source/pdf/pdf-page.c
@@ -448,6 +448,7 @@ pdf_page_transform(fz_context *ctx, pdf_page *page, fz_rect *page_mediabox, fz_m
pdf_obj *pageobj = page->obj;
pdf_obj *obj;
fz_rect mediabox, cropbox, realbox, pagebox;
+ fz_matrix tmp;
float userunit = 1;
int rotate;
@@ -492,11 +493,18 @@ pdf_page_transform(fz_context *ctx, pdf_page *page, fz_rect *page_mediabox, fz_m
/* Compute transform from fitz' page space (upper left page origin, y descending, 72 dpi)
* to PDF user space (arbitary page origin, y ascending, UserUnit dpi). */
- fz_rotate(page_ctm, -rotate);
+
+ /* Make left-handed and scale by UserUnit */
+ fz_scale(page_ctm, userunit, -userunit);
+
+ /* Rotate */
+ fz_pre_rotate(page_ctm, -rotate);
+
+ /* Translate page origin to 0,0 */
realbox = *page_mediabox;
fz_transform_rect(&realbox, page_ctm);
- fz_pre_translate(page_ctm, -realbox.x0, -realbox.y1);
- fz_post_scale(page_ctm, userunit, -userunit);
+ fz_translate(&tmp, -realbox.x0, -realbox.y0);
+ fz_concat(page_ctm, page_ctm, &tmp);
}
static void