Skip to content

Commit 4f307f7

Browse files
committed
Fix tile render mode not applied in 2.18 server
1 parent 1318518 commit 4f307f7

10 files changed

Lines changed: 57 additions & 0 deletions

‎python/core/qgsmaprenderer.sip‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,9 @@ class QgsMapRenderer : QObject
325325
*/
326326
void setFeatureFilterProvider( const QgsFeatureFilterProvider* ffp );
327327

328+
/** Set tile mode (render code tries to prevent tile border effects)*/
329+
void setTileRenderMode( bool enabled );
330+
328331
signals:
329332

330333
//! @deprecated in 2.4 - not emitted anymore

‎python/server/qgswmsconfigparser.sip‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ class QgsWMSConfigParser
123123

124124
virtual bool useLayerIDs() const = 0;
125125

126+
/** True if tile render mode is enabled in the configuration*/
127+
virtual bool tileRenderMode() const = 0;
128+
126129
private:
127130

128131
QgsWMSConfigParser();

‎src/core/qgsmaprenderer.cpp‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ QgsMapRenderer::QgsMapRenderer()
6262

6363
mLabelingEngine = nullptr;
6464
readDefaultDatumTransformations();
65+
66+
mTileRenderMode = false;
6567
}
6668

6769
QgsMapRenderer::~QgsMapRenderer()
@@ -343,6 +345,8 @@ void QgsMapRenderer::render( QPainter* painter, double* forceWidthScale )
343345
QListIterator<QString> li( mLayerSet );
344346
li.toBack();
345347

348+
mRenderContext.setFlag( QgsRenderContext::RenderMapTile, mTileRenderMode );
349+
346350
QgsRectangle r1, r2;
347351

348352
while ( li.hasPrevious() )

‎src/core/qgsmaprenderer.h‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,9 @@ class CORE_EXPORT QgsMapRenderer : public QObject
396396
mRenderContext.setFeatureFilterProvider( ffp );
397397
}
398398

399+
/** Set tile mode (render code tries to prevent tile border effects)*/
400+
void setTileRenderMode( bool enabled ) { mTileRenderMode = enabled; }
401+
399402
signals:
400403

401404
//! @deprecated in 2.4 - not emitted anymore
@@ -512,6 +515,9 @@ class CORE_EXPORT QgsMapRenderer : public QObject
512515

513516
QHash< QPair< QString, QString >, QPair< int, int > > mDefaultDatumTransformations;
514517

518+
/** Tell the render system we are rendering a map tile*/
519+
bool mTileRenderMode;
520+
515521
private:
516522
void readDefaultDatumTransformations();
517523
};

‎src/server/qgssldconfigparser.cpp‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,15 @@ void QgsSLDConfigParser::serviceCapabilities( QDomElement& parentElement, QDomDo
801801
}
802802
}
803803

804+
bool QgsSLDConfigParser::tileRenderMode() const
805+
{
806+
if ( mFallbackParser )
807+
{
808+
return mFallbackParser->tileRenderMode();
809+
}
810+
return false;
811+
}
812+
804813
QList<QDomElement> QgsSLDConfigParser::findNamedLayerElements( const QString& layerName ) const
805814
{
806815
QList<QDomElement> resultList;

‎src/server/qgssldconfigparser.h‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ class QgsSLDConfigParser : public QgsWMSConfigParser
132132

133133
void serviceCapabilities( QDomElement& parentElement, QDomDocument& doc ) const override;
134134

135+
/** True if tile render mode is enabled in the configuration*/
136+
bool tileRenderMode() const override;
137+
135138
private:
136139

137140
/** SLD as dom document*/

‎src/server/qgswmsconfigparser.h‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,9 @@ class SERVER_EXPORT QgsWMSConfigParser
139139

140140
virtual bool useLayerIDs() const = 0;
141141

142+
/** True if tile render mode is enabled in the configuration*/
143+
virtual bool tileRenderMode() const = 0;
144+
142145
/** Adds highlight layers to the layer registry and to the layer set. Returns the ids of the newly created layers (for later removal)*/
143146
static QStringList addHighlightLayers( const QMap<QString, QString>& parameterMap, QStringList& layerSet, const QString& parameterPrefix = QString() );
144147
static void removeHighlightLayers( const QStringList& layerIds );

‎src/server/qgswmsprojectparser.cpp‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2323,6 +2323,28 @@ void QgsWMSProjectParser::serviceCapabilities( QDomElement& parentElement, QDomD
23232323
mProjectParser->serviceCapabilities( parentElement, doc, "WMS", featureInfoFormatSIA2045() );
23242324
}
23252325

2326+
bool QgsWMSProjectParser::tileRenderMode() const
2327+
{
2328+
if ( !mProjectParser->xmlDocument() )
2329+
{
2330+
return false;
2331+
}
2332+
2333+
QDomElement qgisElem = mProjectParser->xmlDocument()->documentElement();
2334+
QDomElement mapCanvasElem = qgisElem.firstChildElement( "mapcanvas" );
2335+
if ( mapCanvasElem.isNull() )
2336+
{
2337+
return false;
2338+
}
2339+
QDomElement renderMapTileElem = mapCanvasElem.firstChildElement( "rendermaptile" );
2340+
if ( renderMapTileElem.isNull() )
2341+
{
2342+
return false;
2343+
}
2344+
2345+
return ( renderMapTileElem.text() == "1" );
2346+
}
2347+
23262348
QDomElement QgsWMSProjectParser::composerByName( const QString& composerName ) const
23272349
{
23282350
QDomElement composerElem;

‎src/server/qgswmsprojectparser.h‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ class SERVER_EXPORT QgsWMSProjectParser : public QgsWMSConfigParser
127127

128128
bool useLayerIDs() const override { return mProjectParser->useLayerIDs(); }
129129

130+
/** True if tile render mode is enabled in the configuration*/
131+
bool tileRenderMode() const override;
132+
130133
private:
131134
QgsServerProjectParser* mProjectParser;
132135
#ifdef HAVE_SERVER_PYTHON_PLUGINS

‎src/server/qgswmsserver.cpp‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2103,6 +2103,7 @@ int QgsWMSServer::configureMapRender( const QPaintDevice* paintDevice ) const
21032103

21042104
mMapRenderer->clearLayerCoordinateTransforms();
21052105
mMapRenderer->setOutputSize( QSize( paintDevice->width(), paintDevice->height() ), paintDevice->logicalDpiX() );
2106+
mMapRenderer->setTileRenderMode( mConfigParser->tileRenderMode() );
21062107

21072108
//map extent
21082109
bool bboxOk = true;

0 commit comments

Comments
 (0)