From 09a4cb0bac5fe8a6c2563f811171804044c60d65 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 14 Jun 2016 18:36:23 +0200 Subject: [PATCH] Use screen dpi as reference dpi for computing wmts composer scale factor Ref: 813f818caef896a0f3b3e0ebed8436803ee908e4 --- src/core/raster/qgsrasterdrawer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/raster/qgsrasterdrawer.cpp b/src/core/raster/qgsrasterdrawer.cpp index e2ec92147c..eeec6957ec 100644 --- a/src/core/raster/qgsrasterdrawer.cpp +++ b/src/core/raster/qgsrasterdrawer.cpp @@ -49,7 +49,9 @@ void QgsRasterDrawer::draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsM if ( ctx && ctx->customRenderFlags().split( ";" ).contains( "composer" ) && isWMTSLayer( mIterator->input() ) ) //wmts case, comply with standard pixel size of 0.28mm from specification { - scaleFactor = ( 1.0 / 0.28 * 25.4 ) / p->device()->logicalDpiX(); + QImage image( 1, 1, QImage::Format_ARGB32 ); + scaleFactor = double( image.logicalDpiX() ) / p->device()->logicalDpiX(); + QgsDebugMsg( QString( "Scale factor: %1 (device DPI: %2)" ).arg( scaleFactor ).arg( p->device()->logicalDpiX() ) ); width = width * scaleFactor; height = height * scaleFactor; mapToPixel.setParameters( ctx->extent().width() / width, ctx->extent().xMinimum(), ctx->extent().yMinimum(), height );