diff --git a/src/server/services/wms/qgswmsrenderer.cpp b/src/server/services/wms/qgswmsrenderer.cpp index 48f2c12a208..b9bb6d43229 100644 --- a/src/server/services/wms/qgswmsrenderer.cpp +++ b/src/server/services/wms/qgswmsrenderer.cpp @@ -118,23 +118,8 @@ namespace QgsWms QList layers = mContext.layersToRender(); configureLayers( layers ); - // getting scale from bbox or default size - QgsLegendSettings settings = mWmsParameters.legendSettings(); - if ( !mWmsParameters.bbox().isEmpty() ) - { - QgsMapSettings mapSettings; - std::unique_ptr tmp( createImage( mContext.mapSize( false ) ) ); - configureMapSettings( tmp.get(), mapSettings ); - settings.setMapScale( mapSettings.scale() ); - settings.setMapUnitsPerPixel( mapSettings.mapUnitsPerPixel() ); - } - else - { - double defaultMapUnitsPerPixel = QgsServerProjectUtils::wmsDefaultMapUnitsPerMm( *mContext.project() ) / mContext.dotsPerMm(); - settings.setMapUnitsPerPixel( defaultMapUnitsPerPixel ); - } - // init renderer + QgsLegendSettings legendSettings(); QgsLegendRenderer renderer( &model, settings ); // create image @@ -167,26 +152,9 @@ namespace QgsWms QList layers = mContext.layersToRender(); configureLayers( layers ); - // getting scale from bbox - QgsLegendSettings settings = mWmsParameters.legendSettings(); - if ( !mWmsParameters.bbox().isEmpty() ) - { - QgsMapSettings mapSettings; - std::unique_ptr tmp( createImage( mContext.mapSize( false ) ) ); - configureMapSettings( tmp.get(), mapSettings ); - settings.setMapScale( mapSettings.scale() ); - settings.setMapUnitsPerPixel( mapSettings.mapUnitsPerPixel() ); - } - else - { - double defaultMapUnitsPerPixel = QgsServerProjectUtils::wmsDefaultMapUnitsPerMm( *mContext.project() ) / mContext.dotsPerMm(); - settings.setMapUnitsPerPixel( defaultMapUnitsPerPixel ); - } - // create image - const int width = mWmsParameters.widthAsInt(); - const int height = mWmsParameters.heightAsInt(); - std::unique_ptr image( createImage( QSize( width, height ) ) ); + const QSize size( mWmsParameters.widthAsInt(), mWmsParameters.heightAsInt() ); + std::unique_ptr image( createImage( size ) ); // configure painter const qreal dpmm = mContext.dotsPerMm(); @@ -196,6 +164,7 @@ namespace QgsWms painter->scale( dpmm, dpmm ); // rendering + QgsLegendSettings legendSettings(); QgsLayerTreeModelLegendNode::ItemContext ctx; ctx.painter = painter.get(); ctx.labelXOffset = 0; @@ -2855,4 +2824,26 @@ namespace QgsWms layer->readSld( sld, err ); layer->setCustomProperty( "readSLD", true ); } + + QgsLegendSettings QgsRenderer::legendSettings() const + { + // getting scale from bbox or default size + QgsLegendSettings settings = mWmsParameters.legendSettings(); + + if ( !mWmsParameters.bbox().isEmpty() ) + { + QgsMapSettings mapSettings; + std::unique_ptr tmp( createImage( mContext.mapSize( false ) ) ); + configureMapSettings( tmp.get(), mapSettings ); + settings.setMapScale( mapSettings.scale() ); + settings.setMapUnitsPerPixel( mapSettings.mapUnitsPerPixel() ); + } + else + { + double defaultMapUnitsPerPixel = QgsServerProjectUtils::wmsDefaultMapUnitsPerMm( *mContext.project() ) / mContext.dotsPerMm(); + settings.setMapUnitsPerPixel( defaultMapUnitsPerPixel ); + } + + return settings; + } } // namespace QgsWms diff --git a/src/server/services/wms/qgswmsrenderer.h b/src/server/services/wms/qgswmsrenderer.h index edd1f3e1a4a..417cc10547d 100644 --- a/src/server/services/wms/qgswmsrenderer.h +++ b/src/server/services/wms/qgswmsrenderer.h @@ -129,6 +129,7 @@ namespace QgsWms QByteArray getFeatureInfo( const QString &version = "1.3.0" ); private: + QgsLegendSettings legendSettings() const; // Build and returns highlight layers QList highlightLayers( QList params );