Skip to content

Commit 24b0a64

Browse files
committed
[composer] Better method of hiding atlas coverage layer (fix #9506)
1 parent 7e34bd9 commit 24b0a64

File tree

4 files changed

+38
-50
lines changed

4 files changed

+38
-50
lines changed

src/core/composer/qgsatlascomposition.cpp

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -270,19 +270,6 @@ bool QgsAtlasComposition::beginRender()
270270
return false;
271271
}
272272

273-
mRestoreLayer = false;
274-
QStringList& layerSet = mComposition->mapRenderer()->layerSet();
275-
if ( mHideCoverage )
276-
{
277-
// look for the layer in the renderer's set
278-
int removeAt = layerSet.indexOf( mCoverageLayer->id() );
279-
if ( removeAt != -1 )
280-
{
281-
mRestoreLayer = true;
282-
layerSet.removeAt( removeAt );
283-
}
284-
}
285-
286273
// special columns for expressions
287274
QgsExpression::setSpecialColumn( "$numpages", QVariant( mComposition->numPages() ) );
288275
QgsExpression::setSpecialColumn( "$numfeatures", QVariant(( int )mFeatureIds.size() ) );
@@ -305,14 +292,6 @@ void QgsAtlasComposition::endRender()
305292
( *lit )->setExpressionContext( 0, 0 );
306293
}
307294

308-
// restore the coverage visibility
309-
if ( mRestoreLayer )
310-
{
311-
QStringList& layerSet = mComposition->mapRenderer()->layerSet();
312-
313-
layerSet.push_back( mCoverageLayer->id() );
314-
}
315-
316295
updateAtlasMaps();
317296
}
318297

@@ -669,25 +648,6 @@ void QgsAtlasComposition::setHideCoverage( bool hide )
669648
if ( mComposition->atlasMode() == QgsComposition::PreviewAtlas )
670649
{
671650
//an atlas preview is enabled, so reflect changes in coverage layer visibility immediately
672-
QStringList& layerSet = mComposition->mapRenderer()->layerSet();
673-
if ( hide )
674-
{
675-
// look for the layer in the renderer's set
676-
int removeAt = layerSet.indexOf( mCoverageLayer->id() );
677-
if ( removeAt != -1 )
678-
{
679-
mRestoreLayer = true;
680-
layerSet.removeAt( removeAt );
681-
}
682-
}
683-
else
684-
{
685-
if ( mRestoreLayer )
686-
{
687-
layerSet.push_back( mCoverageLayer->id() );
688-
mRestoreLayer = false;
689-
}
690-
}
691651
updateAtlasMaps();
692652
mComposition->update();
693653
}

src/core/composer/qgsatlascomposition.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ class CORE_EXPORT QgsAtlasComposition : public QObject
193193
QVector<QgsFeatureId> mFeatureIds;
194194

195195
QgsFeature mCurrentFeature;
196-
bool mRestoreLayer;
196+
197197
std::auto_ptr<QgsExpression> mFilenameExpr;
198198

199199
// bounding box of the current feature transformed into map crs

src/core/composer/qgscomposermap.cpp

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,9 @@ void QgsComposerMap::draw( QPainter *painter, const QgsRectangle& extent, const
184184
if ( mMapRenderer->labelingEngine() )
185185
theMapRenderer.setLabelingEngine( mMapRenderer->labelingEngine()->clone() );
186186

187-
//use stored layer set or read current set from main canvas
188-
if ( mKeepLayerSet )
189-
{
190-
theMapRenderer.setLayerSet( mLayerSet );
191-
}
192-
else
193-
{
194-
theMapRenderer.setLayerSet( mMapRenderer->layerSet() );
195-
}
187+
//set layers to render
188+
theMapRenderer.setLayerSet( layersToRender() );
189+
196190
theMapRenderer.setDestinationCrs( mMapRenderer->destinationCrs() );
197191
theMapRenderer.setProjectionsEnabled( mMapRenderer->hasCrsTransformEnabled() );
198192

@@ -470,6 +464,37 @@ void QgsComposerMap::setCacheUpdated( bool u )
470464
mCacheUpdated = u;
471465
}
472466

467+
QStringList QgsComposerMap::layersToRender()
468+
{
469+
//use stored layer set or read current set from main canvas
470+
QStringList renderLayerSet;
471+
if ( mKeepLayerSet )
472+
{
473+
renderLayerSet = mLayerSet;
474+
}
475+
else
476+
{
477+
renderLayerSet = mMapRenderer->layerSet();
478+
}
479+
480+
//remove atlas coverage layer if required
481+
//TODO - move setting for hiding coverage layer to map item properties
482+
if ( mComposition->atlasMode() != QgsComposition::AtlasOff )
483+
{
484+
if ( mComposition->atlasComposition().hideCoverage() )
485+
{
486+
//hiding coverage layer
487+
int removeAt = renderLayerSet.indexOf( mComposition->atlasComposition().coverageLayer()->id() );
488+
if ( removeAt != -1 )
489+
{
490+
renderLayerSet.removeAt( removeAt );
491+
}
492+
}
493+
}
494+
495+
return renderLayerSet;
496+
}
497+
473498
double QgsComposerMap::scale() const
474499
{
475500
QgsScaleCalculator calculator;

src/core/composer/qgscomposermap.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,9 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
596596
/**Margin size for atlas driven extents (percentage of feature size)*/
597597
double mAtlasMargin;
598598

599+
/**Returns a list of the layers to render for this map item*/
600+
QStringList layersToRender();
601+
599602
/**Draws the map grid*/
600603
void drawGrid( QPainter* p );
601604
void drawGridFrame( QPainter* p, const QList< QPair< double, QLineF > >& hLines, const QList< QPair< double, QLineF > >& vLines );

0 commit comments

Comments
 (0)