2016-06-01 22:24:24 +10:00
|
|
|
/**
|
|
|
|
* @brief A renderer for generating live hillshade models.
|
|
|
|
* @note added in QGIS 2.16
|
|
|
|
*/
|
|
|
|
|
2016-05-25 11:09:25 +10:00
|
|
|
class QgsHillshadeRenderer : QgsRasterRenderer
|
|
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
|
|
#include "qgshillshaderenderer.h"
|
|
|
|
%End
|
|
|
|
public:
|
2016-06-01 22:24:24 +10:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief A renderer for generating live hillshade models.
|
|
|
|
* @param input The input raster interface
|
|
|
|
* @param band The band in the raster to use
|
|
|
|
* @param lightAzimuth The azimuth of the light source
|
|
|
|
* @param lightAltitude The altitude of the light source
|
|
|
|
*/
|
2017-05-01 18:13:15 +02:00
|
|
|
QgsHillshadeRenderer( QgsRasterInterface *input, int band, double lightAzimuth, double lightAngle );
|
2016-05-25 11:09:25 +10:00
|
|
|
|
|
|
|
~QgsHillshadeRenderer();
|
|
|
|
|
2017-05-03 07:45:22 +02:00
|
|
|
virtual QgsHillshadeRenderer *clone() const /Factory/;
|
2016-05-25 11:09:25 +10:00
|
|
|
|
2016-06-01 22:24:24 +10:00
|
|
|
/**
|
|
|
|
* @brief Factory method to create a new renderer
|
|
|
|
* @param elem A DOM element to create the renderer from.
|
|
|
|
* @param input The raster input interface.
|
|
|
|
* @return A new QgsHillshadeRenderer.
|
|
|
|
*/
|
2017-05-01 18:13:15 +02:00
|
|
|
static QgsRasterRenderer *create( const QDomElement &elem, QgsRasterInterface *input ) /Factory/;
|
2016-05-25 11:09:25 +10:00
|
|
|
|
2017-05-03 07:45:22 +02:00
|
|
|
QgsRasterBlock *block( int bandNo, const QgsRectangle &extent, int width, int height, QgsRasterBlockFeedback *feedback = 0 ) /Factory/;
|
2016-05-25 11:09:25 +10:00
|
|
|
|
2017-05-01 18:13:15 +02:00
|
|
|
void writeXml( QDomDocument &doc, QDomElement &parentElem ) const;
|
2016-05-25 11:09:25 +10:00
|
|
|
|
|
|
|
QList<int> usesBands() const;
|
|
|
|
|
|
|
|
/** Returns the band used by the renderer
|
|
|
|
*/
|
|
|
|
int band() const;
|
|
|
|
|
|
|
|
/** Sets the band used by the renderer.
|
|
|
|
* @see band
|
|
|
|
*/
|
|
|
|
void setBand( int bandNo );
|
|
|
|
|
|
|
|
/**
|
2016-06-01 22:24:24 +10:00
|
|
|
* Returns the direction of the light over the raster between 0-360.
|
|
|
|
* @see setAzimuth()
|
2016-05-25 11:09:25 +10:00
|
|
|
*/
|
|
|
|
double azimuth() const;
|
|
|
|
|
2016-06-01 22:24:24 +10:00
|
|
|
/** Returns the angle of the light source over the raster.
|
|
|
|
* @see setAltitude()
|
2016-05-25 11:09:25 +10:00
|
|
|
*/
|
|
|
|
double altitude() const;
|
|
|
|
|
2016-06-01 22:24:24 +10:00
|
|
|
/** Returns the Z scaling factor.
|
|
|
|
* @see setZFactor()
|
2016-05-25 11:09:25 +10:00
|
|
|
*/
|
|
|
|
double zFactor() const;
|
|
|
|
|
2016-06-01 22:24:24 +10:00
|
|
|
/** Returns true if the renderer is using multi-directional hillshading.
|
|
|
|
* @see setMultiDirectional()
|
2016-06-01 13:52:33 +02:00
|
|
|
*/
|
|
|
|
bool multiDirectional() const;
|
|
|
|
|
2016-05-25 11:09:25 +10:00
|
|
|
|
|
|
|
/**
|
2016-06-01 22:24:24 +10:00
|
|
|
* @brief Set the azimuth of the light source.
|
|
|
|
* @param azimuth The azimuth of the light source, between 0 and 360.0
|
|
|
|
* @see azimuth()
|
2016-05-25 11:09:25 +10:00
|
|
|
*/
|
|
|
|
void setAzimuth( double azimuth );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Set the altitude of the light source
|
2016-06-01 22:24:24 +10:00
|
|
|
* @param altitude the altitude
|
|
|
|
* @see altitude()
|
2016-05-25 11:09:25 +10:00
|
|
|
*/
|
|
|
|
void setAltitude( double angle );
|
|
|
|
|
|
|
|
/**
|
2016-06-01 22:24:24 +10:00
|
|
|
* @brief Set the Z scaling factor of the result image.
|
|
|
|
* @param zfactor The z factor
|
|
|
|
* @see zFactor()
|
2016-05-25 11:09:25 +10:00
|
|
|
*/
|
|
|
|
void setZFactor( double zfactor );
|
2016-06-01 13:52:33 +02:00
|
|
|
|
2016-06-01 22:24:24 +10:00
|
|
|
/** Sets whether to render using a multi-directional hillshade algorithm.
|
|
|
|
* @param isMultiDirectional set to true to use multi directional rendering
|
|
|
|
* @see multiDirectional()
|
2016-06-01 13:52:33 +02:00
|
|
|
*/
|
|
|
|
void setMultiDirectional( bool isMultiDirectional );
|
2016-05-25 11:09:25 +10:00
|
|
|
};
|