From f22603aeb2eff2ae41b2633cd20bed008f3bf40d Mon Sep 17 00:00:00 2001 From: Andreas Butti Date: Mon, 14 Jan 2019 21:00:42 +0100 Subject: [PATCH] Hight DPI #172 --- src/control/tools/StrokeHandler.cpp | 11 +++++------ src/gui/PageView.cpp | 9 ++++----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/control/tools/StrokeHandler.cpp b/src/control/tools/StrokeHandler.cpp index be3a8a18..1388e2df 100644 --- a/src/control/tools/StrokeHandler.cpp +++ b/src/control/tools/StrokeHandler.cpp @@ -238,14 +238,13 @@ void StrokeHandler::onButtonPressEvent(const PositionInputData& pos) double zoom = xournal->getZoom(); PageRef page = redrawable->getPage(); + int dpiScaleFactor = 1; #ifdef UNSTABLE_HIGHDPI_FIXES -// Not working yet, input needs also be zoomed -// int dpiScaleFactor = xournal->getDpiScaleFactor(); -// zoom *= dpiScaleFactor; + dpiScaleFactor = xournal->getDpiScaleFactor(); #endif - double width = page->getWidth() * zoom; - double height = page->getHeight() * zoom; + double width = page->getWidth() * zoom * dpiScaleFactor; + double height = page->getHeight() * zoom * dpiScaleFactor; surfMask = cairo_image_surface_create(CAIRO_FORMAT_A8, width, height); @@ -258,7 +257,7 @@ void StrokeHandler::onButtonPressEvent(const PositionInputData& pos) cairo_fill(crMask); - cairo_scale(crMask, zoom, zoom); + cairo_scale(crMask, zoom * dpiScaleFactor, zoom * dpiScaleFactor); if (!stroke) { diff --git a/src/gui/PageView.cpp b/src/gui/PageView.cpp index 7faf6e07..9059b227 100644 --- a/src/gui/PageView.cpp +++ b/src/gui/PageView.cpp @@ -842,6 +842,10 @@ void XojPageView::paintPageSync(cairo_t* cr, GdkRectangle* rect) if (this->inputHandler) { +#ifdef UNSTABLE_HIGHDPI_FIXES + int dpiScaleFactor = xournal->getDpiScaleFactor(); + cairo_scale(cr, 1.0 / dpiScaleFactor, 1.0 / dpiScaleFactor); +#endif this->inputHandler->draw(cr); } } @@ -1042,11 +1046,6 @@ void XojPageView::elementChanged(Element* elem) cairo_t* cr = cairo_create(this->crBuffer); -#ifdef UNSTABLE_HIGHDPI_FIXES - int dpiScaleFactor = xournal->getDpiScaleFactor(); - cairo_scale(cr, dpiScaleFactor, dpiScaleFactor); -#endif - this->inputHandler->draw(cr); cairo_destroy(cr);