mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-17 00:04:02 -04:00
80 lines
2.5 KiB
C++
80 lines
2.5 KiB
C++
/***************************************************************************
|
|
qgsrasterlayerrenderer.h
|
|
--------------------------------------
|
|
Date : December 2013
|
|
Copyright : (C) 2013 by Martin Dobias
|
|
Email : wonder dot sk at gmail dot com
|
|
***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef QGSRASTERLAYERRENDERER_H
|
|
#define QGSRASTERLAYERRENDERER_H
|
|
|
|
#include "qgsmaplayerrenderer.h"
|
|
|
|
class QPainter;
|
|
|
|
class QgsMapToPixel;
|
|
class QgsRasterBlockFeedback;
|
|
class QgsRasterLayer;
|
|
class QgsRasterPipe;
|
|
struct QgsRasterViewPort;
|
|
class QgsRenderContext;
|
|
|
|
class QgsRasterLayerRenderer;
|
|
|
|
#include "qgsrasterinterface.h"
|
|
|
|
|
|
/** \ingroup core
|
|
* Implementation of threaded rendering for raster layers.
|
|
*
|
|
* @note added in 2.4
|
|
* @note not available in Python bindings
|
|
*/
|
|
class QgsRasterLayerRenderer : public QgsMapLayerRenderer
|
|
{
|
|
public:
|
|
QgsRasterLayerRenderer( QgsRasterLayer* layer, QgsRenderContext& rendererContext );
|
|
~QgsRasterLayerRenderer();
|
|
|
|
virtual bool render() override;
|
|
|
|
virtual QgsFeedback* feedback() const override;
|
|
|
|
protected:
|
|
|
|
QPainter* mPainter;
|
|
const QgsMapToPixel* mMapToPixel;
|
|
QgsRasterViewPort* mRasterViewPort;
|
|
|
|
QgsRasterPipe* mPipe;
|
|
QgsRenderContext& mContext;
|
|
|
|
//! Specific feedback class to provide preview of raster layer rendering.
|
|
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;
|
|
};
|
|
|
|
|
|
#endif // QGSRASTERLAYERRENDERER_H
|