Skip to content

Commit f6a2a5e

Browse files
committed
Clean up QgsRasterBlockFeedback class
1 parent 267f263 commit f6a2a5e

File tree

5 files changed

+54
-29
lines changed

5 files changed

+54
-29
lines changed

python/core/raster/qgsrasterinterface.sip

+18-9
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,28 @@ class QgsRasterBlockFeedback : QgsFeedback
1111
%End
1212

1313
public:
14-
//! construct a new raster block feedback object
14+
//! Construct a new raster block feedback object
1515
QgsRasterBlockFeedback( QObject* parent = nullptr );
1616

17-
//! whether the raster provider should return only data that are already available
18-
//! without waiting for full result
19-
bool preview_only;
20-
21-
//! whether our painter is drawing to a temporary image used just by this layer
22-
bool render_partial_output;
23-
24-
//! may be emitted by raster data provider to indicate that some partial data are available
17+
//! May be emitted by raster data provider to indicate that some partial data are available
2518
//! and a new preview image may be produced
2619
virtual void onNewData();
20+
21+
//! Whether the raster provider should return only data that are already available
22+
//! without waiting for full result. By default this flag is not enabled.
23+
//! @see setPreviewOnly()
24+
bool isPreviewOnly() const;
25+
//! set flag whether the block request is for preview purposes only
26+
//! @see isPreviewOnly()
27+
void setPreviewOnly( bool preview );
28+
29+
//! Whether our painter is drawing to a temporary image used just by this layer
30+
//! @see setRenderPartialOutput()
31+
bool renderPartialOutput() const;
32+
//! Set whether our painter is drawing to a temporary image used just by this layer
33+
//! @see renderPartialOutput()
34+
void setRenderPartialOutput( bool enable );
35+
2736
};
2837

2938

src/core/raster/qgsrasterdrawer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ void QgsRasterDrawer::draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsM
8888
}
8989
}
9090

91-
if ( feedback && feedback->render_partial_output )
91+
if ( feedback && feedback->renderPartialOutput() )
9292
{
9393
// there could have been partial preview written before
9494
// so overwrite anything with the resulting image.

src/core/raster/qgsrasterinterface.h

+26-10
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,35 @@
3737
class CORE_EXPORT QgsRasterBlockFeedback : public QgsFeedback
3838
{
3939
public:
40-
//! construct a new raster block feedback object
41-
QgsRasterBlockFeedback( QObject* parent = nullptr ) : QgsFeedback( parent ), preview_only( false ), render_partial_output( false ) {}
40+
//! Construct a new raster block feedback object
41+
QgsRasterBlockFeedback( QObject* parent = nullptr ) : QgsFeedback( parent ), mPreviewOnly( false ), mRenderPartialOutput( false ) {}
4242

43-
//! whether the raster provider should return only data that are already available
44-
//! without waiting for full result
45-
bool preview_only;
46-
47-
//! whether our painter is drawing to a temporary image used just by this layer
48-
bool render_partial_output;
49-
50-
//! may be emitted by raster data provider to indicate that some partial data are available
43+
//! May be emitted by raster data provider to indicate that some partial data are available
5144
//! and a new preview image may be produced
5245
virtual void onNewData() {}
46+
47+
//! Whether the raster provider should return only data that are already available
48+
//! without waiting for full result. By default this flag is not enabled.
49+
//! @see setPreviewOnly()
50+
bool isPreviewOnly() const { return mPreviewOnly; }
51+
//! set flag whether the block request is for preview purposes only
52+
//! @see isPreviewOnly()
53+
void setPreviewOnly( bool preview ) { mPreviewOnly = preview; }
54+
55+
//! Whether our painter is drawing to a temporary image used just by this layer
56+
//! @see setRenderPartialOutput()
57+
bool renderPartialOutput() const { return mRenderPartialOutput; }
58+
//! Set whether our painter is drawing to a temporary image used just by this layer
59+
//! @see renderPartialOutput()
60+
void setRenderPartialOutput( bool enable ) { mRenderPartialOutput = enable; }
61+
62+
private:
63+
//! Whether the raster provider should return only data that are already available
64+
//! without waiting for full result
65+
bool mPreviewOnly;
66+
67+
//! Whether our painter is drawing to a temporary image used just by this layer
68+
bool mRenderPartialOutput;
5369
};
5470

5571

src/core/raster/qgsrasterlayerrenderer.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -231,14 +231,14 @@ QgsRasterLayerRenderer::Feedback::Feedback( QgsRasterLayerRenderer *r )
231231
: mR( r )
232232
, mMinimalPreviewInterval( 250 )
233233
{
234-
render_partial_output = r->mContext.testFlag( QgsRenderContext::RenderPartialOutput );
234+
setRenderPartialOutput( r->mContext.testFlag( QgsRenderContext::RenderPartialOutput ) );
235235
}
236236

237237
void QgsRasterLayerRenderer::Feedback::onNewData()
238238
{
239239
qDebug( "\nGOT NEW DATA!\n" );
240240

241-
if ( !render_partial_output )
241+
if ( !renderPartialOutput() )
242242
return; // we were not asked for partial renders and we may not have a temporary image for overwriting...
243243

244244
// update only once upon a time
@@ -252,8 +252,8 @@ void QgsRasterLayerRenderer::Feedback::onNewData()
252252
QTime t;
253253
t.start();
254254
QgsRasterBlockFeedback feedback;
255-
feedback.preview_only = true;
256-
feedback.render_partial_output = true;
255+
feedback.setPreviewOnly( true );
256+
feedback.setRenderPartialOutput( true );
257257
QgsRasterIterator iterator( mR->mPipe->last() );
258258
QgsRasterDrawer drawer( &iterator );
259259
drawer.draw( mR->mPainter, mR->mRasterViewPort, mR->mMapToPixel, &feedback );

src/providers/wms/qgswmsprovider.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -780,7 +780,7 @@ QImage *QgsWmsProvider::draw( QgsRectangle const & viewExtent, int pixelWidth, i
780780

781781
// draw other res tiles if preview
782782
QPainter p( image );
783-
if ( feedback && feedback->preview_only && missing.count() > 0 )
783+
if ( feedback && feedback->isPreviewOnly() && missing.count() > 0 )
784784
{
785785
// some tiles are still missing, so let's see if we have any cached tiles
786786
// from lower or higher resolution available to give the user a bit of context
@@ -825,22 +825,22 @@ QImage *QgsWmsProvider::draw( QgsRectangle const & viewExtent, int pixelWidth, i
825825
p.setRenderHint( QPainter::SmoothPixmapTransform, true );
826826
p.drawImage( ti.rect, ti.img );
827827

828-
if ( feedback && feedback->preview_only )
828+
if ( feedback && feedback->isPreviewOnly() )
829829
_drawDebugRect( p, ti.rect, Qt::green );
830830
}
831831
p.end();
832832

833833
int t2 = t.elapsed() - t1;
834834

835-
if ( feedback && feedback->preview_only )
835+
if ( feedback && feedback->isPreviewOnly() )
836836
{
837837
qDebug( "PREVIEW - CACHED: %d / MISSING: %d", tileImages.count(), requests.count() - tileImages.count() );
838838
qDebug( "PREVIEW - TIME: this res %d ms | other res %d ms | TOTAL %d ms", t0 + t2, t1, t0 + t1 + t2 );
839839
}
840840
else if ( !requestsFinal.isEmpty() )
841841
{
842842
// let the feedback object know about the tiles we have already
843-
if ( feedback && feedback->render_partial_output )
843+
if ( feedback && feedback->renderPartialOutput() )
844844
feedback->onNewData();
845845

846846
// order tile requests according to the distance from view center
@@ -3908,7 +3908,7 @@ void QgsWmsTiledImageDownloadHandler::tileReplyFinished()
39083908
}
39093909
else
39103910
{
3911-
if ( !( mFeedback && mFeedback->preview_only ) )
3911+
if ( !( mFeedback && mFeedback->isPreviewOnly() ) )
39123912
{
39133913
// report any errors except for the one we have caused by cancelling the request
39143914
if ( reply->error() != QNetworkReply::OperationCanceledError )

0 commit comments

Comments
 (0)