Skip to content

Commit

Permalink
deduplicate duplicate code
Browse files Browse the repository at this point in the history
  • Loading branch information
signedav authored and nyalldawson committed Apr 1, 2023
1 parent 3574972 commit 495a76a
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 14 deletions.
28 changes: 14 additions & 14 deletions src/server/services/wms/qgswmsrenderer.cpp
Expand Up @@ -144,13 +144,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
Expand Down Expand Up @@ -216,13 +211,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 );
Expand Down Expand Up @@ -1392,6 +1381,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
{
Expand Down
6 changes: 6 additions & 0 deletions src/server/services/wms/qgswmsrenderer.h
Expand Up @@ -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;

Expand Down

0 comments on commit 495a76a

Please sign in to comment.