mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
More flexible API for preview job determination
This commit is contained in:
parent
16a1bd7948
commit
01e8ed85e3
@ -380,6 +380,7 @@ Current time stamp of data source
|
||||
.. versionadded:: 3.0
|
||||
%End
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
void fullExtentCalculated();
|
||||
|
@ -42,7 +42,7 @@ void QgsDataProvider::setListening( bool isListening )
|
||||
Q_UNUSED( isListening );
|
||||
}
|
||||
|
||||
bool QgsDataProvider::renderInPreview( double lastRenderingTimeMS, double maxRenderingTimeMS )
|
||||
bool QgsDataProvider::renderInPreview( QgsDataProvider::PreviewContext context )
|
||||
{
|
||||
return lastRenderingTimeMS <= maxRenderingTimeMS;
|
||||
return context.lastRenderingTimeMs <= context.maxRenderingTimeMs;
|
||||
}
|
||||
|
@ -461,6 +461,23 @@ class CORE_EXPORT QgsDataProvider : public QObject
|
||||
*/
|
||||
virtual void setListening( bool isListening );
|
||||
|
||||
#ifndef SIP_RUN
|
||||
|
||||
/**
|
||||
* Stores settings related to the context in which a preview job runs.
|
||||
* \note Not available in Python bindings
|
||||
* \since QGIS 3.0
|
||||
*/
|
||||
struct PreviewContext
|
||||
{
|
||||
//! Previous rendering time for the layer, in ms
|
||||
double lastRenderingTimeMs = -1;
|
||||
|
||||
//! Default maximum allowable render time, in ms
|
||||
double maxRenderingTimeMs = MAXIMUM_LAYER_PREVIEW_TIME_MS;
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Returns whether the layer must be rendered in preview jobs.
|
||||
*
|
||||
@ -474,7 +491,7 @@ class CORE_EXPORT QgsDataProvider : public QObject
|
||||
*
|
||||
* \note not available in Python bindings
|
||||
*/
|
||||
virtual bool renderInPreview( double lastRenderingTimeMS, double maxRenderingTimeMS ); // SIP_SKIP
|
||||
virtual bool renderInPreview( QgsDataProvider::PreviewContext context ); // SIP_SKIP
|
||||
|
||||
signals:
|
||||
|
||||
|
@ -2273,9 +2273,12 @@ void QgsMapCanvas::startPreviewJob( int number )
|
||||
// truncate preview layers to fast layers
|
||||
const QList<QgsMapLayer *> layers = jobSettings.layers();
|
||||
QList< QgsMapLayer * > previewLayers;
|
||||
QgsDataProvider::PreviewContext context;
|
||||
context.maxRenderingTimeMs = MAXIMUM_LAYER_PREVIEW_TIME_MS;
|
||||
for ( QgsMapLayer *layer : layers )
|
||||
{
|
||||
if ( !layer->dataProvider()->renderInPreview( mLastLayerRenderTime.value( layer->id() ), MAXIMUM_LAYER_PREVIEW_TIME_MS ) )
|
||||
context.lastRenderingTimeMs = mLastLayerRenderTime.value( layer->id() );
|
||||
if ( !layer->dataProvider()->renderInPreview( context ) )
|
||||
{
|
||||
QgsDebugMsgLevel( QString( "Layer %1 not rendered because it does not match the renderInPreview criterion %2" ).arg( layer->id() ).arg( mLastLayerRenderTime.value( layer->id() ) ), 3 );
|
||||
continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user