/*************************************************************************** qgsrasterdrawer.h ------------------- begin : June 2012 copyright : (C) 2012 by Radim Blazek email : radim dot blazek at gmail.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 QGSRASTERDRAWER_H #define QGSRASTERDRAWER_H #include "qgis_core.h" #include "qgis_sip.h" #include <QMap> class QPainter; class QImage; class QgsMapToPixel; class QgsRenderContext; struct QgsRasterViewPort; class QgsRasterBlockFeedback; class QgsRasterIterator; /** * \ingroup core * The drawing pipe for raster layers. */ class CORE_EXPORT QgsRasterDrawer { public: QgsRasterDrawer( QgsRasterIterator *iterator ); /** * Draws raster data. * \param p destination QPainter * \param viewPort viewport to render * \param qgsMapToPixel map to pixel converter * \param feedback optional raster feedback object for cancellation/preview. Added in QGIS 3.0. */ void draw( QPainter *p, QgsRasterViewPort *viewPort, const QgsMapToPixel *qgsMapToPixel, QgsRasterBlockFeedback *feedback = nullptr ); protected: /** * Draws raster part * \param p the painter to draw to * \param viewPort view port to draw to * \param img image to draw * \param topLeftCol Left position relative to left border of viewport * \param topLeftRow Top position relative to top border of viewport * \param mapToPixel map to device coordinate transformation info * \note not available in Python bindings */ void drawImage( QPainter *p, QgsRasterViewPort *viewPort, const QImage &img, int topLeftCol, int topLeftRow, const QgsMapToPixel *mapToPixel = nullptr ) const SIP_SKIP; private: QgsRasterIterator *mIterator = nullptr; }; #endif // QGSRASTERDRAWER_H