Skip to content

Commit

Permalink
Allow the usage of opacity parameter in a WMS provider URL
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent committed Nov 17, 2020
1 parent 9708edb commit d2e953e
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 1 deletion.
21 changes: 21 additions & 0 deletions src/providers/wms/qgswmscapabilities.cpp
Expand Up @@ -138,6 +138,27 @@ bool QgsWmsSettings::parseUri( const QString &uriString )
mActiveSubStyles = uri.params( QStringLiteral( "styles" ) );
QgsDebugMsgLevel( "Entering: layers:" + mActiveSubLayers.join( ", " ) + ", styles:" + mActiveSubStyles.join( ", " ), 2 );

//opacities
if ( uri.hasParam( QStringLiteral( "opacities" ) ) )
{
mOpacities.clear();
QStringList opacities = uri.params( QStringLiteral( "opacities" ) );
QStringList::const_iterator oIt = opacities.constBegin();
for ( ; oIt != opacities.constEnd(); ++oIt )
{
bool ok = false;
oIt->toInt( &ok );
if ( ok )
{
mOpacities.append( *oIt );
}
else
{
mOpacities.append( QStringLiteral( "255" ) );
}
}
}

mImageMimeType = uri.param( QStringLiteral( "format" ) );
QgsDebugMsgLevel( "Setting image encoding to " + mImageMimeType + '.', 2 );

Expand Down
2 changes: 2 additions & 0 deletions src/providers/wms/qgswmscapabilities.h
Expand Up @@ -933,6 +933,8 @@ class QgsWmsSettings
QStringList mActiveSubLayers;
QStringList mActiveSubStyles;

QStringList mOpacities;

/**
* Visibility status of the given active sublayer
*/
Expand Down
5 changes: 5 additions & 0 deletions src/providers/wms/qgswmsprovider.cpp
Expand Up @@ -1068,6 +1068,11 @@ QUrl QgsWmsProvider::createRequestUrlWMS( const QgsRectangle &viewExtent, int pi
setQueryItem( query, QStringLiteral( "HEIGHT" ), QString::number( pixelHeight ) );
setQueryItem( query, QStringLiteral( "LAYERS" ), layers );
setQueryItem( query, QStringLiteral( "STYLES" ), styles );
QStringList opacityList = mSettings.mOpacities;
if ( !opacityList.isEmpty() )
{
setQueryItem( query, QStringLiteral( "OPACITIES" ), mSettings.mOpacities.join( ',' ) );
}

// For WMS-T layers
if ( temporalCapabilities() &&
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wms/qgswmsparameters.cpp
Expand Up @@ -1891,7 +1891,7 @@ namespace QgsWms
for ( ; paramIt != paramMap.constEnd(); ++paramIt )
{
QString paramName = paramIt.key().toLower();
if ( paramName == QLatin1String( "layers" ) || paramName == QLatin1String( "styles" ) )
if ( paramName == QLatin1String( "layers" ) || paramName == QLatin1String( "styles" ) || paramName == QLatin1String( "opacities" ) )
{
const QStringList values = paramIt.value().split( ',' );
for ( const QString &value : values )
Expand Down

0 comments on commit d2e953e

Please sign in to comment.