Skip to content

Commit b27efe9

Browse files
committed
Also support layer transparency in server for old symbology
1 parent 89b0ea9 commit b27efe9

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

src/mapserver/qgswmsserver.cpp

+23-7
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,9 @@ QImage* QgsWMSServer::getMap()
616616

617617
QHash<QgsVectorLayer*, QgsFeatureRendererV2*> bkVectorRenderers;
618618
QHash< QgsRasterLayer*, QgsRasterRenderer* > bkRasterRenderers;
619-
applyOpacities( layersList, bkVectorRenderers, bkRasterRenderers );
619+
QHash<QgsVectorLayer*, int> bkVectorOld;
620+
621+
applyOpacities( layersList, bkVectorRenderers, bkVectorOld, bkRasterRenderers );
620622

621623
mMapRenderer->render( &thePainter );
622624
if ( mConfigParser )
@@ -625,7 +627,7 @@ QImage* QgsWMSServer::getMap()
625627
mConfigParser->drawOverlays( &thePainter, theImage->dotsPerMeterX() / 1000.0 * 25.4, theImage->width(), theImage->height() );
626628
}
627629

628-
restoreOpacities( bkVectorRenderers, bkRasterRenderers );
630+
restoreOpacities( bkVectorRenderers, bkVectorOld, bkRasterRenderers );
629631
restoreLayerFilters( originalLayerFilters );
630632
clearFeatureSelections( selectedLayerIdList );
631633

@@ -1984,7 +1986,7 @@ void QgsWMSServer::clearFeatureSelections( const QStringList& layerIds ) const
19841986
return;
19851987
}
19861988

1987-
void QgsWMSServer::applyOpacities( const QStringList& layerList, QHash<QgsVectorLayer*, QgsFeatureRendererV2*>& vectorRenderers,
1989+
void QgsWMSServer::applyOpacities( const QStringList& layerList, QHash<QgsVectorLayer*, QgsFeatureRendererV2*>& vectorRenderers, QHash<QgsVectorLayer*, int> vectorOld,
19881990
QHash< QgsRasterLayer*, QgsRasterRenderer* >& rasterRenderers )
19891991
{
19901992
//get opacity list
@@ -2039,9 +2041,15 @@ void QgsWMSServer::applyOpacities( const QStringList& layerList, QHash<QgsVector
20392041
QgsSymbolV2List::iterator symbolIt = symbolList.begin();
20402042
for ( ; symbolIt != symbolList.end(); ++symbolIt )
20412043
{
2042-
( *symbolIt )->setAlpha(( *symbolIt )->alpha() * lOpIt->second / 255.0 );
2044+
( *symbolIt )->setAlpha(( *symbolIt )->alpha() * opacity / 255.0 );
20432045
}
20442046
}
2047+
else //old symbology
2048+
{
2049+
vectorOld.insert( vl, vl->getTransparency() );
2050+
vl->setTransparency( opacity );
2051+
}
2052+
20452053
}
20462054
else if ( ml->type() == QgsMapLayer::RasterLayer )
20472055
{
@@ -2056,12 +2064,11 @@ void QgsWMSServer::applyOpacities( const QStringList& layerList, QHash<QgsVector
20562064
}
20572065
}
20582066
}
2059-
//todo: rasters
20602067
}
20612068
}
20622069

2063-
void QgsWMSServer::restoreOpacities( QHash<QgsVectorLayer*, QgsFeatureRendererV2*>& vectorRenderers, QHash < QgsRasterLayer*,
2064-
QgsRasterRenderer* > & rasterRenderers )
2070+
void QgsWMSServer::restoreOpacities( QHash<QgsVectorLayer*, QgsFeatureRendererV2*>& vectorRenderers, QHash<QgsVectorLayer*, int> vectorOld,
2071+
QHash < QgsRasterLayer*, QgsRasterRenderer* > & rasterRenderers )
20652072
{
20662073
QHash<QgsVectorLayer*, QgsFeatureRendererV2*>::iterator vIt = vectorRenderers.begin();
20672074
for ( ; vIt != vectorRenderers.end(); ++vIt )
@@ -2077,6 +2084,15 @@ void QgsWMSServer::restoreOpacities( QHash<QgsVectorLayer*, QgsFeatureRendererV2
20772084
rIt.key()->setRenderer( rIt.value() );
20782085
}
20792086
}
2087+
2088+
QHash<QgsVectorLayer*, int>::iterator oIt = vectorOld.begin();
2089+
for ( ; oIt != vectorOld.end(); ++oIt )
2090+
{
2091+
if ( oIt.key() )
2092+
{
2093+
oIt.key()->setTransparency( oIt.value() );
2094+
}
2095+
}
20802096
}
20812097

20822098
bool QgsWMSServer::checkMaximumWidthHeight() const

src/mapserver/qgswmsserver.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,10 @@ class QgsWMSServer
167167
/**Clear all feature selections in the given layers*/
168168
void clearFeatureSelections( const QStringList& layerIds ) const;
169169

170-
void applyOpacities( const QStringList& layerList, QHash<QgsVectorLayer*, QgsFeatureRendererV2*>& vectorRenderers,
170+
void applyOpacities( const QStringList& layerList, QHash<QgsVectorLayer*, QgsFeatureRendererV2*>& vectorRenderers, QHash<QgsVectorLayer*, int> vectorOld,
171171
QHash< QgsRasterLayer*, QgsRasterRenderer* >& rasterRenderers );
172172

173-
void restoreOpacities( QHash<QgsVectorLayer*, QgsFeatureRendererV2*>& vectorRenderers,
173+
void restoreOpacities( QHash<QgsVectorLayer*, QgsFeatureRendererV2*>& vectorRenderers, QHash<QgsVectorLayer*, int> vectorOld,
174174
QHash< QgsRasterLayer*, QgsRasterRenderer* >& rasterRenderers );
175175

176176
void appendFormats( QDomDocument &doc, QDomElement &elem, const QStringList &formats );

0 commit comments

Comments
 (0)