Small code cleanups

This commit is contained in:
Martin Dobias 2016-09-02 09:41:35 +08:00
parent 8d832d8aca
commit 80f022878f
4 changed files with 35 additions and 18 deletions

View File

@ -9,7 +9,21 @@ class QgsRasterBlockFeedback : QgsFeedback
%TypeHeaderCode %TypeHeaderCode
#include <qgsrasterinterface.h> #include <qgsrasterinterface.h>
%End %End
// TODO: extend with preview functionality??
public:
//! construct a new raster block feedback object
QgsRasterBlockFeedback( QObject* parent = nullptr );
//! whether the raster provider should return only data that are already available
//! without waiting for full result
bool preview_only;
//! whether our painter is drawing to a temporary image used just by this layer
bool render_partial_output;
//! may be emitted by raster data provider to indicate that some partial data are available
//! and a new preview image may be produced
virtual void onNewData();
}; };

View File

@ -37,6 +37,7 @@
class CORE_EXPORT QgsRasterBlockFeedback : public QgsFeedback class CORE_EXPORT QgsRasterBlockFeedback : public QgsFeedback
{ {
public: public:
//! construct a new raster block feedback object
QgsRasterBlockFeedback( QObject* parent = nullptr ) : QgsFeedback( parent ), preview_only( false ), render_partial_output( false ) {} QgsRasterBlockFeedback( QObject* parent = nullptr ) : QgsFeedback( parent ), preview_only( false ), render_partial_output( false ) {}
//! whether the raster provider should return only data that are already available //! whether the raster provider should return only data that are already available

View File

@ -29,7 +29,7 @@ QgsRasterLayerRenderer::QgsRasterLayerRenderer( QgsRasterLayer* layer, QgsRender
, mRasterViewPort( nullptr ) , mRasterViewPort( nullptr )
, mPipe( nullptr ) , mPipe( nullptr )
, mContext( rendererContext ) , mContext( rendererContext )
, mFeedback( new MyFeedback( this ) ) , mFeedback( new Feedback( this ) )
{ {
mPainter = rendererContext.painter(); mPainter = rendererContext.painter();
const QgsMapToPixel& theQgsMapToPixel = rendererContext.mapToPixel(); const QgsMapToPixel& theQgsMapToPixel = rendererContext.mapToPixel();
@ -227,14 +227,14 @@ QgsFeedback* QgsRasterLayerRenderer::feedback() const
return mFeedback; return mFeedback;
} }
MyFeedback::MyFeedback( QgsRasterLayerRenderer *r ) QgsRasterLayerRenderer::Feedback::Feedback( QgsRasterLayerRenderer *r )
: mR( r ) : mR( r )
, mMinimalPreviewInterval( 250 ) , mMinimalPreviewInterval( 250 )
{ {
render_partial_output = r->mContext.testFlag( QgsRenderContext::RenderPartialOutput ); render_partial_output = r->mContext.testFlag( QgsRenderContext::RenderPartialOutput );
} }
void MyFeedback::onNewData() void QgsRasterLayerRenderer::Feedback::onNewData()
{ {
qDebug( "\nGOT NEW DATA!\n" ); qDebug( "\nGOT NEW DATA!\n" );

View File

@ -31,18 +31,6 @@ class QgsRasterLayerRenderer;
#include "qgsrasterinterface.h" #include "qgsrasterinterface.h"
class MyFeedback : public QgsRasterBlockFeedback
{
public:
explicit MyFeedback( QgsRasterLayerRenderer* r );
virtual void onNewData() override;
private:
QgsRasterLayerRenderer* mR;
int mMinimalPreviewInterval; //!< in miliseconds
QTime mLastPreview;
};
/** \ingroup core /** \ingroup core
* Implementation of threaded rendering for raster layers. * Implementation of threaded rendering for raster layers.
@ -69,8 +57,22 @@ class QgsRasterLayerRenderer : public QgsMapLayerRenderer
QgsRasterPipe* mPipe; QgsRasterPipe* mPipe;
QgsRenderContext& mContext; QgsRenderContext& mContext;
MyFeedback* mFeedback; //! Specific feedback class to provide preview of raster layer rendering.
friend class MyFeedback; class Feedback : public QgsRasterBlockFeedback
{
public:
explicit Feedback( QgsRasterLayerRenderer* r );
//! when notified of new data in data provider it launches a preview draw of the raster
virtual void onNewData() override;
private:
QgsRasterLayerRenderer* mR; //!< parent renderer instance
int mMinimalPreviewInterval; //!< in miliseconds
QTime mLastPreview; //!< when last preview has been generated
};
//! feedback class for cancellation and preview generation
Feedback* mFeedback;
}; };