mirror of
https://github.com/qgis/QGIS.git
synced 2025-11-09 00:17:27 -05: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
|
.. versionadded:: 3.0
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void fullExtentCalculated();
|
void fullExtentCalculated();
|
||||||
|
|||||||
@ -42,7 +42,7 @@ void QgsDataProvider::setListening( bool isListening )
|
|||||||
Q_UNUSED( 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 );
|
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.
|
* 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
|
* \note not available in Python bindings
|
||||||
*/
|
*/
|
||||||
virtual bool renderInPreview( double lastRenderingTimeMS, double maxRenderingTimeMS ); // SIP_SKIP
|
virtual bool renderInPreview( QgsDataProvider::PreviewContext context ); // SIP_SKIP
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
|
|||||||
@ -2273,9 +2273,12 @@ void QgsMapCanvas::startPreviewJob( int number )
|
|||||||
// truncate preview layers to fast layers
|
// truncate preview layers to fast layers
|
||||||
const QList<QgsMapLayer *> layers = jobSettings.layers();
|
const QList<QgsMapLayer *> layers = jobSettings.layers();
|
||||||
QList< QgsMapLayer * > previewLayers;
|
QList< QgsMapLayer * > previewLayers;
|
||||||
|
QgsDataProvider::PreviewContext context;
|
||||||
|
context.maxRenderingTimeMs = MAXIMUM_LAYER_PREVIEW_TIME_MS;
|
||||||
for ( QgsMapLayer *layer : layers )
|
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 );
|
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;
|
continue;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user