QGIS API Documentation 3.30.0-'s-Hertogenbosch (f186b8efe0)
qgselevationmap.h
Go to the documentation of this file.
1/***************************************************************************
2 qgselevationmap.h
3 --------------------------------------
4 Date : August 2022
5 Copyright : (C) 2022 by Martin Dobias
6 Email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSELEVATIONMAP_H
17#define QGSELEVATIONMAP_H
18
19#include "qgis.h"
20#include "qgis_sip.h"
21
22#include <QImage>
23#include <memory>
24
25class QgsRasterBlock;
26
42class CORE_EXPORT QgsElevationMap
43{
44 public:
45
47 QgsElevationMap() = default;
48
50 explicit QgsElevationMap( const QSize &size );
51
59 explicit QgsElevationMap( const QImage &image );
60
62 QgsElevationMap( const QgsElevationMap &other );
63
79 void applyEyeDomeLighting( QImage &image, int distance, float strength, float rendererScale ) const;
80
99 void applyHillshading( QImage &image, bool multiDirectional, double altitude, double azimuth, double zFactor, double cellSizeX, double cellSizeY ) const;
100
102 QImage rawElevationImage() const { return mElevationImage; }
103
105 QPainter *painter() const;
106
116 void combine( const QgsElevationMap &otherElevationMap, Qgis::ElevationMapCombineMethod method );
117
122 void fillWithRasterBlock( QgsRasterBlock *block, int top, int left, double zScale = 1.0, double offset = 0.0 ) SIP_SKIP;
123
129 bool isValid() const;
130
132 static QRgb encodeElevation( float z );
134 static float decodeElevation( QRgb colorRaw );
135
137 static std::unique_ptr<QgsElevationMap> fromRasterBlock( QgsRasterBlock *block ) SIP_SKIP;
138
140 inline bool isNoData( QRgb colorRaw ) const {return colorRaw == 0;}
141
143 inline float noDataValue() const {return decodeElevation( 0 );}
144
145 QgsElevationMap &operator=( const QgsElevationMap &other );
146
147 private:
148
149 mutable QImage mElevationImage;
150 mutable std::unique_ptr<QPainter> mPainter;
151};
152
153#endif // QGSELEVATIONMAP_H
ElevationMapCombineMethod
Methods used to select the elevation when two elevation maps are combined.
Definition: qgis.h:2963
Stores digital elevation model in a raster image which may get updated as a part of map layer renderi...
QgsElevationMap()=default
Default constructor.
float noDataValue() const
Returns the no data value for the elevation map.
QImage rawElevationImage() const
Returns raw elevation image with elevations encoded as color values.
Raster data container.
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:74
#define SIP_SKIP
Definition: qgis_sip.h:126