Skip to content

Commit c868e62

Browse files
committedOct 23, 2018
fix map units per pixel in HiDPI
1 parent 2d1b539 commit c868e62

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed
 

‎src/core/qgsmaprenderercustompainterjob.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ void QgsMapRendererCustomPainterJob::start()
6868
QPaintDevice *paintDevice = mPainter->device();
6969
QString errMsg = QStringLiteral( "pre-set DPI not equal to painter's DPI (%1 vs %2)" )
7070
.arg( paintDevice->logicalDpiX() )
71-
.arg( mSettings.outputDpi() );
72-
Q_ASSERT_X( qgsDoubleNear( paintDevice->logicalDpiX(), mSettings.outputDpi() ),
71+
.arg( mSettings.outputDpi() * mSettings.devicePixelRatio() );
72+
Q_ASSERT_X( qgsDoubleNear( paintDevice->logicalDpiX(), mSettings.outputDpi() * mSettings.devicePixelRatio() ),
7373
"Job::startRender()", errMsg.toLatin1().data() );
7474
#endif
7575

‎src/core/qgsmaprenderersequentialjob.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ QgsMapRendererSequentialJob::QgsMapRendererSequentialJob( const QgsMapSettings &
2727

2828
mImage = QImage( mSettings.deviceOutputSize(), mSettings.outputImageFormat() );
2929
mImage.setDevicePixelRatio( mSettings.devicePixelRatio() );
30-
mImage.setDotsPerMeterX( 1000 * settings.outputDpi() / 25.4 );
31-
mImage.setDotsPerMeterY( 1000 * settings.outputDpi() / 25.4 );
30+
mImage.setDotsPerMeterX( mSettings.devicePixelRatio() * 1000 * settings.outputDpi() / 25.4 );
31+
mImage.setDotsPerMeterY( mSettings.devicePixelRatio() * 1000 * settings.outputDpi() / 25.4 );
3232
mImage.fill( Qt::transparent );
3333
}
3434

‎src/core/qgsmapsettings.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ void QgsMapSettings::updateDerived()
146146
}
147147
}
148148

149-
double myHeight = mSize.height() * mDevicePixelRatio;
150-
double myWidth = mSize.width() * mDevicePixelRatio;
149+
double myHeight = mSize.height();
150+
double myWidth = mSize.width();
151151

152152
if ( !myWidth || !myHeight )
153153
{
@@ -180,7 +180,7 @@ void QgsMapSettings::updateDerived()
180180
mVisibleExtent.set( dxmin, dymin, dxmax, dymax );
181181

182182
// update the scale
183-
mScaleCalculator.setDpi( mDpi );
183+
mScaleCalculator.setDpi( mDpi * mDevicePixelRatio );
184184
mScale = mScaleCalculator.calculate( mVisibleExtent, mSize.width() );
185185

186186
mMapToPixel.setParameters( mapUnitsPerPixel(),
@@ -238,6 +238,7 @@ float QgsMapSettings::devicePixelRatio() const
238238
void QgsMapSettings::setDevicePixelRatio( float dpr )
239239
{
240240
mDevicePixelRatio = dpr;
241+
updateDerived();
241242
}
242243

243244
QSize QgsMapSettings::deviceOutputSize() const

0 commit comments

Comments
 (0)
Please sign in to comment.