Skip to content

Commit

Permalink
[needs-docs][composer] Remove Render/Cache modes from composer maps
Browse files Browse the repository at this point in the history
Make maps invalidate cache whenever layer order changes. Cache mode
is now identical to Render mode, so  all mode switching has been
removed from composer maps. This should greatly simplify the learning
curve and usability of composer maps.
  • Loading branch information
nyalldawson committed May 8, 2017
1 parent c5566e7 commit 29c87de
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 176 deletions.
5 changes: 3 additions & 2 deletions doc/api_break.dox
Expand Up @@ -640,8 +640,9 @@ and setAtlasScalingMode() instead.
- setMapCanvas() was removed. This is no longer required to draw map annotations, which are instead retrieved from the composition's
associated project's annotationManager()
- setDrawCanvasItems() and drawCanvasItems() were renamed to setDrawAnnotations() and drawAnnotations()
- setCacheUpdated(), updateCachedImage() and cache() were removed. Use invalidateCache() instead.
- The Rectangle mode enum was removed. Use the reworked Cache mode instead.
- setCacheUpdated(), updateCachedImage(), renderModeUpdateCachedImage() and cache() were removed. Use invalidateCache() instead.
- The PreviewMode mode enums were removed. These are no longer used.
- previewMode() and setPreviewMode() were removed. These are no longer required.


QgsComposerMapGrid {#qgis_api_break_3_0_QgsComposerMapGrid}
Expand Down
18 changes: 0 additions & 18 deletions python/core/composer/qgscomposermap.sip
Expand Up @@ -36,12 +36,6 @@ Return correct graphics item type.
:rtype: int
%End

enum PreviewMode
{
Cache,
Render,
};

enum AtlasScalingMode
{
Fixed,
Expand Down Expand Up @@ -203,12 +197,6 @@ Atlas preview extents are only temporary, and are regenerated whenever the atlas
.. versionadded:: 3.0
%End

PreviewMode previewMode() const;
%Docstring
:rtype: PreviewMode
%End
void setPreviewMode( PreviewMode m );

bool keepLayerSet() const;
%Docstring
Getter for flag that determines if a stored layer set should be used
Expand Down Expand Up @@ -575,12 +563,6 @@ Is emitted when the map has been prepared for atlas rendering, just before actua
%Docstring
Forces a deferred update of the cached map image on next paint.
.. versionadded:: 3.0
%End

void renderModeUpdateCachedImage();
%Docstring
Updates the cached map image if the map is set to Render mode
.. seealso:: updateCachedImage
%End

void updateBoundingRect();
Expand Down
53 changes: 0 additions & 53 deletions src/app/composer/qgscomposermapwidget.cpp
Expand Up @@ -60,8 +60,6 @@ QgsComposerMapWidget::QgsComposerMapWidget( QgsComposerMap *composerMap )
mYMaxLineEdit->setValidator( new QDoubleValidator( mYMaxLineEdit ) );

blockAllSignals( true );
mPreviewModeComboBox->insertItem( 0, tr( "Cache" ) );
mPreviewModeComboBox->insertItem( 1, tr( "Render" ) );

mCrsSelector->setOptionVisible( QgsProjectionSelectionWidget::CrsNotSet, true );
mCrsSelector->setNotSetText( tr( "Use project CRS" ) );
Expand Down Expand Up @@ -430,35 +428,6 @@ void QgsComposerMapWidget::on_mAtlasPredefinedScaleRadio_toggled( bool checked )
}
}

void QgsComposerMapWidget::on_mPreviewModeComboBox_activated( int i )
{
Q_UNUSED( i );

if ( !mComposerMap )
{
return;
}

if ( mComposerMap->isDrawing() )
{
return;
}

QString comboText = mPreviewModeComboBox->currentText();
if ( comboText == tr( "Render" ) )
{
mComposerMap->setPreviewMode( QgsComposerMap::Render );
mUpdatePreviewButton->setEnabled( true );
}
else
{
mComposerMap->setPreviewMode( QgsComposerMap::Cache );
mUpdatePreviewButton->setEnabled( true );
}

mComposerMap->invalidateCache();
}

void QgsComposerMapWidget::on_mScaleLineEdit_editingFinished()
{
if ( !mComposerMap )
Expand Down Expand Up @@ -582,12 +551,8 @@ void QgsComposerMapWidget::on_mYMaxLineEdit_editingFinished()
void QgsComposerMapWidget::setGuiElementValues()
{
mScaleLineEdit->blockSignals( true );
mPreviewModeComboBox->blockSignals( true );

updateGuiElements();

mScaleLineEdit->blockSignals( false );
mPreviewModeComboBox->blockSignals( false );
}

void QgsComposerMapWidget::updateGuiElements()
Expand Down Expand Up @@ -621,24 +586,6 @@ void QgsComposerMapWidget::updateGuiElements()
mScaleLineEdit->setText( QString::number( mComposerMap->scale(), 'f', 10 ) );
}

//preview mode
QgsComposerMap::PreviewMode previewMode = mComposerMap->previewMode();
int index = -1;
if ( previewMode == QgsComposerMap::Render )
{
index = mPreviewModeComboBox->findText( tr( "Render" ) );
mUpdatePreviewButton->setEnabled( true );
}
else
{
index = mPreviewModeComboBox->findText( tr( "Cache" ) );
mUpdatePreviewButton->setEnabled( true );
}
if ( index != -1 )
{
mPreviewModeComboBox->setCurrentIndex( index );
}

//composer map extent
QgsRectangle composerMapExtent = *( mComposerMap->currentMapExtent() );
mXMinLineEdit->setText( QString::number( composerMapExtent.xMinimum(), 'f', 3 ) );
Expand Down
1 change: 0 additions & 1 deletion src/app/composer/qgscomposermapwidget.h
Expand Up @@ -37,7 +37,6 @@ class QgsComposerMapWidget: public QgsComposerItemBaseWidget, private Ui::QgsCom
virtual ~QgsComposerMapWidget();

public slots:
void on_mPreviewModeComboBox_activated( int i );
void on_mScaleLineEdit_editingFinished();
void on_mSetToMapCanvasExtentButton_clicked();
void on_mViewExtentInCanvasButton_clicked();
Expand Down
50 changes: 9 additions & 41 deletions src/core/composer/qgscomposermap.cpp
Expand Up @@ -20,6 +20,7 @@
#include "qgscomposermapoverview.h"
#include "qgscomposition.h"
#include "qgscomposerutils.h"
#include "qgslayertree.h"
#include "qgslogger.h"
#include "qgsmaprenderercustompainterjob.h"
#include "qgsmaplayerlistutils.h"
Expand Down Expand Up @@ -491,14 +492,6 @@ bool QgsComposerMap::shouldDrawPart( PartType part ) const
return true; // for Layer
}

void QgsComposerMap::renderModeUpdateCachedImage()
{
if ( mPreviewMode == Render )
{
invalidateCache();
}
}

QList<QgsMapLayer *> QgsComposerMap::layersToRender( const QgsExpressionContext *context ) const
{
QgsExpressionContext scopedContext = createExpressionContext();
Expand Down Expand Up @@ -899,12 +892,6 @@ void QgsComposerMap::setNewScale( double scaleDenominator, bool forceUpdate )
emit extentChanged();
}

void QgsComposerMap::setPreviewMode( PreviewMode m )
{
mPreviewMode = m;
emit itemChanged();
}

void QgsComposerMap::setOffset( double xOffset, double yOffset )
{
mXOffset = xOffset;
Expand Down Expand Up @@ -1140,8 +1127,14 @@ void QgsComposerMap::connectUpdateSlot()
connect( project, static_cast < void ( QgsProject::* )( const QList<QgsMapLayer *>& layers ) > ( &QgsProject::layersWillBeRemoved ),
this, &QgsComposerMap::layersAboutToBeRemoved );
// redraws the map AFTER layers are removed
connect( project, &QgsProject::layersRemoved, this, &QgsComposerMap::renderModeUpdateCachedImage );
connect( project, &QgsProject::legendLayersAdded, this, &QgsComposerMap::renderModeUpdateCachedImage );
connect( project->layerTreeRoot(), &QgsLayerTree::layerOrderChanged, this, [ = ]
{
if ( layers().isEmpty() )
{
//using project layers, and layer order has changed
invalidateCache();
}
} );

connect( project, &QgsProject::crsChanged, this, [ = ]
{
Expand All @@ -1166,20 +1159,6 @@ bool QgsComposerMap::writeXml( QDomElement &elem, QDomDocument &doc ) const
QDomElement composerMapElem = doc.createElement( QStringLiteral( "ComposerMap" ) );
composerMapElem.setAttribute( QStringLiteral( "id" ), mId );

//previewMode
if ( mPreviewMode == Cache )
{
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Cache" ) );
}
else if ( mPreviewMode == Render )
{
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Render" ) );
}
else //rectangle
{
composerMapElem.setAttribute( QStringLiteral( "previewMode" ), QStringLiteral( "Rectangle" ) );
}

if ( mKeepLayerSet )
{
composerMapElem.setAttribute( QStringLiteral( "keepLayerSet" ), QStringLiteral( "true" ) );
Expand Down Expand Up @@ -1299,17 +1278,6 @@ bool QgsComposerMap::readXml( const QDomElement &itemElem, const QDomDocument &d
updateToolTip();
}

//previewMode
QString previewMode = itemElem.attribute( QStringLiteral( "previewMode" ) );
if ( previewMode == QLatin1String( "Render" ) )
{
mPreviewMode = Render;
}
else
{
mPreviewMode = Cache;
}

//extent
QDomNodeList extentNodeList = itemElem.elementsByTagName( QStringLiteral( "Extent" ) );
if ( !extentNodeList.isEmpty() )
Expand Down
18 changes: 0 additions & 18 deletions src/core/composer/qgscomposermap.h
Expand Up @@ -64,13 +64,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
//! Return correct graphics item type.
virtual int type() const override { return ComposerMap; }

//! \brief Preview style
enum PreviewMode
{
Cache = 0, // Use raster cache
Render, // Render the map
};

/** Scaling modes used for the serial rendering (atlas)
*/
enum AtlasScalingMode
Expand Down Expand Up @@ -205,9 +198,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
*/
void setCrs( const QgsCoordinateReferenceSystem &crs );

PreviewMode previewMode() const {return mPreviewMode;}
void setPreviewMode( PreviewMode m );

/**
* Getter for flag that determines if a stored layer set should be used
* or the current layer set of the QGIS map canvas. This is just a GUI flag,
Expand Down Expand Up @@ -478,11 +468,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
*/
void invalidateCache();

/** Updates the cached map image if the map is set to Render mode
* \see updateCachedImage
*/
void renderModeUpdateCachedImage();

//! Updates the bounding rect of this item. Call this function before doing any changes related to annotation out of the map rectangle
void updateBoundingRect();

Expand Down Expand Up @@ -528,9 +513,6 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
//! True if cached map image must be recreated
bool mCacheInvalidated = true;

//! \brief Preview style
PreviewMode mPreviewMode = QgsComposerMap::Cache;

//! \brief Number of layers when cache was created
int mNumCachedLayers;

Expand Down

0 comments on commit 29c87de

Please sign in to comment.