Skip to content

Commit 6d850ad

Browse files
committedOct 6, 2014
[composer] Remove a bunch of duplicate render calls to map items during atlas previews
1 parent 8a0e1ef commit 6d850ad

File tree

6 files changed

+54
-37
lines changed

6 files changed

+54
-37
lines changed
 

‎src/app/composer/qgscomposer.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -970,6 +970,11 @@ void QgsComposer::on_mActionAtlasPreview_triggered( bool checked )
970970
mActionAtlasNext->setEnabled( checked );
971971
mActionAtlasPrev->setEnabled( checked );
972972

973+
if ( checked )
974+
{
975+
loadAtlasPredefinedScalesFromProject();
976+
}
977+
973978
bool previewEnabled = mComposition->setAtlasMode( checked ? QgsComposition::PreviewAtlas : QgsComposition::AtlasOff );
974979
if ( !previewEnabled )
975980
{
@@ -991,8 +996,6 @@ void QgsComposer::on_mActionAtlasPreview_triggered( bool checked )
991996

992997
if ( checked )
993998
{
994-
loadAtlasPredefinedScalesFromProject();
995-
atlasMap->firstFeature();
996999
emit( atlasPreviewFeatureChanged() );
9971000
}
9981001
else

‎src/app/composer/qgscomposermapwidget.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -351,13 +351,19 @@ void QgsComposerMapWidget::updateMapForAtlas()
351351
return;
352352
}
353353

354-
//update atlas based extent for map
355-
QgsAtlasComposition* atlas = &composition->atlasComposition();
356-
atlas->prepareMap( mComposerMap );
357-
358-
//redraw map
359-
mComposerMap->cache();
360-
mComposerMap->update();
354+
if ( mComposerMap->atlasDriven() )
355+
{
356+
//update atlas based extent for map
357+
QgsAtlasComposition* atlas = &composition->atlasComposition();
358+
//prepareMap causes a redraw
359+
atlas->prepareMap( mComposerMap );
360+
}
361+
else
362+
{
363+
//redraw map
364+
mComposerMap->cache();
365+
mComposerMap->update();
366+
}
361367
}
362368

363369
void QgsComposerMapWidget::on_mAtlasMarginRadio_toggled( bool checked )

‎src/core/composer/qgscomposeritem.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,6 +1032,11 @@ void QgsComposerItem::refreshRotation( const bool updateItem , const bool adjust
10321032
}
10331033
}
10341034

1035+
if ( rotation == mEvaluatedItemRotation )
1036+
{
1037+
return;
1038+
}
1039+
10351040
if ( adjustPosition )
10361041
{
10371042
//adjustPosition set, so shift the position of the item so that rotation occurs around item center
@@ -1297,8 +1302,12 @@ void QgsComposerItem::refreshDataDefinedProperty( const QgsComposerObject::DataD
12971302
property == QgsComposerObject::ItemWidth || property == QgsComposerObject::ItemHeight ||
12981303
property == QgsComposerObject::AllProperties )
12991304
{
1300-
QRectF evaluatedRect = evalItemRect( QRectF( pos().x(), pos().y(), rect().width(), rect().height() ) );
1301-
setSceneRect( evaluatedRect );
1305+
QRectF beforeRect = QRectF( pos().x(), pos().y(), rect().width(), rect().height() );
1306+
QRectF evaluatedRect = evalItemRect( beforeRect );
1307+
if ( evaluatedRect != beforeRect )
1308+
{
1309+
setSceneRect( evaluatedRect );
1310+
}
13021311
}
13031312
if ( property == QgsComposerObject::ItemRotation || property == QgsComposerObject::AllProperties )
13041313
{

‎src/core/composer/qgscomposermap.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -817,15 +817,6 @@ void QgsComposerMap::setNewAtlasFeatureExtent( const QgsRectangle& extent )
817817
emit extentChanged();
818818
}
819819

820-
void QgsComposerMap::toggleAtlasPreview()
821-
{
822-
//atlas preview has been toggled, so update item and extents
823-
mCacheUpdated = false;
824-
updateItem();
825-
emit itemChanged();
826-
emit extentChanged();
827-
}
828-
829820
QgsRectangle* QgsComposerMap::currentMapExtent()
830821
{
831822
//non-const version
@@ -1093,7 +1084,7 @@ void QgsComposerMap::updateItem()
10931084
return;
10941085
}
10951086

1096-
if ( mPreviewMode != QgsComposerMap::Rectangle && !mCacheUpdated )
1087+
if ( mPreviewMode != QgsComposerMap::Rectangle && !mCacheUpdated )
10971088
{
10981089
cache();
10991090
}
@@ -2033,13 +2024,17 @@ void QgsComposerMap::refreshDataDefinedProperty( const QgsComposerObject::DataDe
20332024
property == QgsComposerObject::MapAtlasMargin ||
20342025
property == QgsComposerObject::AllProperties )
20352026
{
2027+
QgsRectangle beforeExtent = *currentMapExtent();
20362028
refreshMapExtents();
20372029
emit itemChanged();
2038-
emit extentChanged();
2030+
if ( *currentMapExtent() != beforeExtent )
2031+
{
2032+
emit extentChanged();
2033+
}
20392034
}
20402035

20412036
//force redraw
2042-
cache();
2037+
mCacheUpdated = false;
20432038

20442039
QgsComposerItem::refreshDataDefinedProperty( property );
20452040
}

‎src/core/composer/qgscomposermap.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,10 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
217217
*/
218218
void setNewAtlasFeatureExtent( const QgsRectangle& extent );
219219

220-
/**Called when atlas preview is toggled, to force map item to update its extent and redraw*/
221-
void toggleAtlasPreview();
220+
/**Called when atlas preview is toggled, to force map item to update its extent and redraw
221+
* @deprecated no longer required
222+
*/
223+
Q_DECL_DEPRECATED void toggleAtlasPreview() {}
222224

223225
/**Returns a pointer to the current map extent, which is either the original user specified
224226
* extent or the temporary atlas-driven feature extent depending on the current atlas state

‎src/core/composer/qgscomposition.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,15 @@ void QgsComposition::updateBounds()
225225
void QgsComposition::refreshItems()
226226
{
227227
emit refreshItemsTriggered();
228+
//force a redraw on all maps
229+
QList<QgsComposerMap*> maps;
230+
composerItems( maps );
231+
QList<QgsComposerMap*>::iterator mapIt = maps.begin();
232+
for ( ; mapIt != maps.end(); ++mapIt )
233+
{
234+
( *mapIt )->cache();
235+
( *mapIt )->update();
236+
}
228237
}
229238

230239
void QgsComposition::setSelectedItem( QgsComposerItem *item )
@@ -295,6 +304,11 @@ QRectF QgsComposition::compositionBounds() const
295304

296305
void QgsComposition::setPaperSize( const double width, const double height )
297306
{
307+
if ( width == mPageWidth && height == mPageHeight )
308+
{
309+
return;
310+
}
311+
298312
//update item positions
299313
QList<QGraphicsItem *> itemList = items();
300314
QList<QGraphicsItem *>::iterator itemIt = itemList.begin();
@@ -2825,18 +2839,6 @@ bool QgsComposition::setAtlasMode( const AtlasMode mode )
28252839
}
28262840
}
28272841

2828-
QList<QgsComposerMap*> maps;
2829-
composerItems( maps );
2830-
for ( QList<QgsComposerMap*>::iterator mit = maps.begin(); mit != maps.end(); ++mit )
2831-
{
2832-
QgsComposerMap* currentMap = ( *mit );
2833-
if ( !currentMap->atlasDriven() )
2834-
{
2835-
continue;
2836-
}
2837-
currentMap->toggleAtlasPreview();
2838-
}
2839-
28402842
update();
28412843
return true;
28422844
}

0 commit comments

Comments
 (0)
Please sign in to comment.