Skip to content

Commit

Permalink
pass painter to the function to create the default renderer context a…
Browse files Browse the repository at this point in the history
…nd return it
  • Loading branch information
signedav authored and nyalldawson committed Apr 1, 2023
1 parent 67a7073 commit e501d76
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
9 changes: 5 additions & 4 deletions src/server/services/wms/qgswmsrenderer.cpp
Expand Up @@ -145,7 +145,7 @@ namespace QgsWms
else
{
//use default scale settings
configureDefaultRenderContext( context );
context = configureDefaultRenderContext();
}

// create image according to context
Expand Down Expand Up @@ -210,8 +210,7 @@ namespace QgsWms
ctx.painter = painter.get();

// create context
QgsRenderContext context = QgsRenderContext::fromQPainter( painter.get() );
configureDefaultRenderContext( context );
QgsRenderContext context = configureDefaultRenderContext( painter.get() );
ctx.context = &context;

nodeModel.drawSymbol( settings, &ctx, size.height() / dpmm );
Expand Down Expand Up @@ -1381,15 +1380,17 @@ namespace QgsWms
}
}

void QgsRenderer::configureDefaultRenderContext( QgsRenderContext &context )
QgsRenderContext QgsRenderer::configureDefaultRenderContext( QPainter *painter )
{
QgsRenderContext context = QgsRenderContext::fromQPainter( painter );
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 );
return context;
}

QDomDocument QgsRenderer::featureInfoDocument( QList<QgsMapLayer *> &layers, const QgsMapSettings &mapSettings,
Expand Down
8 changes: 5 additions & 3 deletions src/server/services/wms/qgswmsrenderer.h
Expand Up @@ -196,10 +196,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
* Configures QgsRenderContext according to the WMS parameters and default settings as well as the passed painter.
* Used, for example, when no mapSettings are available.
* \param painter to create the context from
* \returns the renderer context with default parameters and settings of the passed painter
*/
void configureDefaultRenderContext( QgsRenderContext &context );
QgsRenderContext configureDefaultRenderContext( QPainter *painter = nullptr );

QDomDocument featureInfoDocument( QList<QgsMapLayer *> &layers, const QgsMapSettings &mapSettings,
const QImage *outputImage, const QString &version ) const;
Expand Down

0 comments on commit e501d76

Please sign in to comment.