deduplicate duplicate code

This commit is contained in:
signedav 2023-02-24 17:18:22 +01:00
parent e1d43b01a8
commit cc3c2ec022
2 changed files with 20 additions and 14 deletions

View File

@ -139,13 +139,8 @@ namespace QgsWms
}
else
{
context.setScaleFactor( mContext.dotsPerMm() );
const double mmPerMapUnit = 1 / QgsServerProjectUtils::wmsDefaultMapUnitsPerMm( *mProject );
context.setMapToPixel( QgsMapToPixel( 1 / ( mmPerMapUnit * context.scaleFactor() ) ) );
QgsDistanceArea distanceArea;
distanceArea.setSourceCrs( QgsCoordinateReferenceSystem( mWmsParameters.crs() ), mProject->transformContext() );
distanceArea.setEllipsoid( geoNone() );
context.setDistanceArea( distanceArea );
//use default scale settings
configureDefaultRenderContext( context );
}
// create image according to context
@ -211,13 +206,7 @@ namespace QgsWms
// create context
QgsRenderContext context = QgsRenderContext::fromQPainter( painter.get() );
context.setScaleFactor( mContext.dotsPerMm() );
const double mmPerMapUnit = 1 / QgsServerProjectUtils::wmsDefaultMapUnitsPerMm( *mProject );
context.setMapToPixel( QgsMapToPixel( 1 / ( mmPerMapUnit * context.scaleFactor() ) ) );
QgsDistanceArea distanceArea = QgsDistanceArea();
distanceArea.setSourceCrs( QgsCoordinateReferenceSystem( mWmsParameters.crs() ), mProject->transformContext() );
distanceArea.setEllipsoid( geoNone() );
context.setDistanceArea( distanceArea );
configureDefaultRenderContext( context );
ctx.context = &context;
nodeModel.drawSymbol( settings, &ctx, size.height() / dpmm );
@ -1387,6 +1376,17 @@ namespace QgsWms
}
}
void QgsRenderer::configureDefaultRenderContext( QgsRenderContext &context )
{
context.setScaleFactor( mContext.dotsPerMm() );
const double mmPerMapUnit = 1 / QgsServerProjectUtils::wmsDefaultMapUnitsPerMm( *mProject );
context.setMapToPixel( QgsMapToPixel( 1 / ( mmPerMapUnit * context.scaleFactor() ) ) );
QgsDistanceArea distanceArea = QgsDistanceArea();
distanceArea.setSourceCrs( QgsCoordinateReferenceSystem( mWmsParameters.crs() ), mProject->transformContext() );
distanceArea.setEllipsoid( geoNone() );
context.setDistanceArea( distanceArea );
}
QDomDocument QgsRenderer::featureInfoDocument( QList<QgsMapLayer *> &layers, const QgsMapSettings &mapSettings,
const QImage *outputImage, const QString &version ) const
{

View File

@ -195,6 +195,12 @@ namespace QgsWms
*/
void configureMapSettings( const QPaintDevice *paintDevice, QgsMapSettings &mapSettings, bool mandatoryCrsParam = true );
/**
* Configures QgsRenderContext according to the WMS parameters and default settings. Used, for example, when no mapSettings are available.
* \param context render context keeping info about the scale
*/
void configureDefaultRenderContext( QgsRenderContext &context );
QDomDocument featureInfoDocument( QList<QgsMapLayer *> &layers, const QgsMapSettings &mapSettings,
const QImage *outputImage, const QString &version ) const;