From 96cc776650a1845f4b3894c2311bee4d51d60f20 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Tue, 3 Jul 2018 15:07:25 +0200 Subject: Add fz_transform_page helper function. Create a matrix that transforms a page with resolution and rotation, and grid fits the resulting bounding box. --- platform/gl/gl-main.c | 16 +++------------- platform/x11/pdfapp.c | 2 +- 2 files changed, 4 insertions(+), 14 deletions(-) (limited to 'platform') diff --git a/platform/gl/gl-main.c b/platform/gl/gl-main.c index 5c42c482..46566f2f 100644 --- a/platform/gl/gl-main.c +++ b/platform/gl/gl-main.c @@ -207,17 +207,7 @@ void update_title(void) void transform_page(void) { - fz_rect rect; - fz_matrix matrix; - - draw_page_ctm = fz_scale(currentzoom / 72, currentzoom / 72); - draw_page_ctm = fz_pre_rotate(draw_page_ctm, -currentrotate); - - /* fix the page origin at 0,0 after rotation */ - rect = fz_transform_rect(page_bounds, draw_page_ctm); - matrix = fz_translate(-rect.x0, -rect.y0); - draw_page_ctm = fz_concat(draw_page_ctm, matrix); - + draw_page_ctm = fz_transform_page(page_bounds, currentzoom, currentrotate); draw_page_bounds = fz_transform_rect(page_bounds, draw_page_ctm); } @@ -846,8 +836,8 @@ static void do_app(void) case 'z': set_zoom(number > 0 ? number : DEFRES, canvas_w/2, canvas_h/2); break; case '+': set_zoom(zoom_in(currentzoom), ui.x, ui.y); break; case '-': set_zoom(zoom_out(currentzoom), ui.x, ui.y); break; - case '[': currentrotate += 90; break; - case ']': currentrotate -= 90; break; + case '[': currentrotate -= 90; break; + case ']': currentrotate += 90; break; case 'k': case KEY_UP: scroll_y -= 10; break; case 'j': case KEY_DOWN: scroll_y += 10; break; case 'h': case KEY_LEFT: scroll_x -= 10; break; diff --git a/platform/x11/pdfapp.c b/platform/x11/pdfapp.c index a12cb4c1..707fa689 100644 --- a/platform/x11/pdfapp.c +++ b/platform/x11/pdfapp.c @@ -605,7 +605,7 @@ int pdfapp_preclose(pdfapp_t *app) static void pdfapp_viewctm(fz_matrix *mat, pdfapp_t *app) { - *mat = fz_pre_rotate(fz_scale(app->resolution/72.0f, app->resolution/72.0f), app->rotate); + *mat = fz_transform_page(app->page_bbox, app->resolution, app->rotate); } static void pdfapp_panview(pdfapp_t *app, int newx, int newy) -- cgit v1.2.3