Skip to content

Commit

Permalink
Merge pull request #4667 from mhugent/server_tilemode
Browse files Browse the repository at this point in the history
Fix tile render mode not applied in 2.18 server
  • Loading branch information
mhugent committed Jun 2, 2017
2 parents 8987bb5 + 4f307f7 commit 19ddeb1
Show file tree
Hide file tree
Showing 10 changed files with 57 additions and 0 deletions.
3 changes: 3 additions & 0 deletions python/core/qgsmaprenderer.sip
Expand Up @@ -325,6 +325,9 @@ class QgsMapRenderer : QObject
*/
void setFeatureFilterProvider( const QgsFeatureFilterProvider* ffp );

/** Set tile mode (render code tries to prevent tile border effects)*/
void setTileRenderMode( bool enabled );

signals:

//! @deprecated in 2.4 - not emitted anymore
Expand Down
3 changes: 3 additions & 0 deletions python/server/qgswmsconfigparser.sip
Expand Up @@ -123,6 +123,9 @@ class QgsWMSConfigParser

virtual bool useLayerIDs() const = 0;

/** True if tile render mode is enabled in the configuration*/
virtual bool tileRenderMode() const = 0;

private:

QgsWMSConfigParser();
Expand Down
4 changes: 4 additions & 0 deletions src/core/qgsmaprenderer.cpp
Expand Up @@ -62,6 +62,8 @@ QgsMapRenderer::QgsMapRenderer()

mLabelingEngine = nullptr;
readDefaultDatumTransformations();

mTileRenderMode = false;
}

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

mRenderContext.setFlag( QgsRenderContext::RenderMapTile, mTileRenderMode );

QgsRectangle r1, r2;

while ( li.hasPrevious() )
Expand Down
6 changes: 6 additions & 0 deletions src/core/qgsmaprenderer.h
Expand Up @@ -396,6 +396,9 @@ class CORE_EXPORT QgsMapRenderer : public QObject
mRenderContext.setFeatureFilterProvider( ffp );
}

/** Set tile mode (render code tries to prevent tile border effects)*/
void setTileRenderMode( bool enabled ) { mTileRenderMode = enabled; }

signals:

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

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

/** Tell the render system we are rendering a map tile*/
bool mTileRenderMode;

private:
void readDefaultDatumTransformations();
};
Expand Down
9 changes: 9 additions & 0 deletions src/server/qgssldconfigparser.cpp
Expand Up @@ -801,6 +801,15 @@ void QgsSLDConfigParser::serviceCapabilities( QDomElement& parentElement, QDomDo
}
}

bool QgsSLDConfigParser::tileRenderMode() const
{
if ( mFallbackParser )
{
return mFallbackParser->tileRenderMode();
}
return false;
}

QList<QDomElement> QgsSLDConfigParser::findNamedLayerElements( const QString& layerName ) const
{
QList<QDomElement> resultList;
Expand Down
3 changes: 3 additions & 0 deletions src/server/qgssldconfigparser.h
Expand Up @@ -132,6 +132,9 @@ class QgsSLDConfigParser : public QgsWMSConfigParser

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

/** True if tile render mode is enabled in the configuration*/
bool tileRenderMode() const override;

private:

/** SLD as dom document*/
Expand Down
3 changes: 3 additions & 0 deletions src/server/qgswmsconfigparser.h
Expand Up @@ -139,6 +139,9 @@ class SERVER_EXPORT QgsWMSConfigParser

virtual bool useLayerIDs() const = 0;

/** True if tile render mode is enabled in the configuration*/
virtual bool tileRenderMode() const = 0;

/** Adds highlight layers to the layer registry and to the layer set. Returns the ids of the newly created layers (for later removal)*/
static QStringList addHighlightLayers( const QMap<QString, QString>& parameterMap, QStringList& layerSet, const QString& parameterPrefix = QString() );
static void removeHighlightLayers( const QStringList& layerIds );
Expand Down
22 changes: 22 additions & 0 deletions src/server/qgswmsprojectparser.cpp
Expand Up @@ -2323,6 +2323,28 @@ void QgsWMSProjectParser::serviceCapabilities( QDomElement& parentElement, QDomD
mProjectParser->serviceCapabilities( parentElement, doc, "WMS", featureInfoFormatSIA2045() );
}

bool QgsWMSProjectParser::tileRenderMode() const
{
if ( !mProjectParser->xmlDocument() )
{
return false;
}

QDomElement qgisElem = mProjectParser->xmlDocument()->documentElement();
QDomElement mapCanvasElem = qgisElem.firstChildElement( "mapcanvas" );
if ( mapCanvasElem.isNull() )
{
return false;
}
QDomElement renderMapTileElem = mapCanvasElem.firstChildElement( "rendermaptile" );
if ( renderMapTileElem.isNull() )
{
return false;
}

return ( renderMapTileElem.text() == "1" );
}

QDomElement QgsWMSProjectParser::composerByName( const QString& composerName ) const
{
QDomElement composerElem;
Expand Down
3 changes: 3 additions & 0 deletions src/server/qgswmsprojectparser.h
Expand Up @@ -127,6 +127,9 @@ class SERVER_EXPORT QgsWMSProjectParser : public QgsWMSConfigParser

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

/** True if tile render mode is enabled in the configuration*/
bool tileRenderMode() const override;

private:
QgsServerProjectParser* mProjectParser;
#ifdef HAVE_SERVER_PYTHON_PLUGINS
Expand Down
1 change: 1 addition & 0 deletions src/server/qgswmsserver.cpp
Expand Up @@ -2103,6 +2103,7 @@ int QgsWMSServer::configureMapRender( const QPaintDevice* paintDevice ) const

mMapRenderer->clearLayerCoordinateTransforms();
mMapRenderer->setOutputSize( QSize( paintDevice->width(), paintDevice->height() ), paintDevice->logicalDpiX() );
mMapRenderer->setTileRenderMode( mConfigParser->tileRenderMode() );

//map extent
bool bboxOk = true;
Expand Down

0 comments on commit 19ddeb1

Please sign in to comment.