QGIS API Documentation 4.1.0-Master (60fea48833c)
Loading...
Searching...
No Matches
qgsrasterrenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsrasterrenderer.h
3 -------------------
4 begin : December 2011
5 copyright : (C) 2011 by Marco Hugentobler
6 email : marco at sourcepole dot ch
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSRASTERRENDERER_H
19#define QGSRASTERRENDERER_H
20
21#include "qgis_core.h"
22#include "qgis_sip.h"
23#include "qgsrasterinterface.h"
25#include "qgsrectangle.h"
26
27#include <QPair>
28
29class QDomElement;
30
31class QPainter;
36
41class CORE_EXPORT QgsRasterRenderer : public QgsRasterInterface
42{
43 Q_DECLARE_TR_FUNCTIONS( QgsRasterRenderer ) // cppcheck-suppress duplInheritedMember
44
45 public:
46 static const QRgb NODATA_COLOR;
47
51 QgsRasterRenderer( QgsRasterInterface *input = nullptr, const QString &type = QString() );
52 ~QgsRasterRenderer() override;
53
57 const QgsRasterRenderer &operator=( const QgsRasterRenderer & ) = delete;
58
59 QgsRasterRenderer *clone() const override = 0 SIP_FACTORY;
60
61 int bandCount() const override;
62
63 Qgis::DataType dataType( int bandNo ) const override;
64
68 virtual QString type() const { return mType; }
69
75 virtual Qgis::RasterRendererFlags flags() const;
76
83 virtual bool canCreateRasterAttributeTable() const;
84
85 bool setInput( QgsRasterInterface *input ) override;
86
99 virtual int inputBand() const;
100
113 virtual bool setInputBand( int band );
114
115 QgsRasterBlock *block( int bandNo, const QgsRectangle &extent, int width, int height, QgsRasterBlockFeedback *feedback = nullptr ) override = 0 SIP_FACTORY;
116
117 bool usesTransparency() const;
118
124 void setOpacity( double opacity ) { mOpacity = opacity; }
125
131 double opacity() const { return mOpacity; }
132
143 QColor nodataColor() const { return mNodataColor; }
144
154 void setNodataColor( const QColor &color ) { mNodataColor = color; }
155
156 void setRasterTransparency( QgsRasterTransparency *t SIP_TRANSFER );
158
159 void setAlphaBand( int band ) { mAlphaBand = band; }
160 int alphaBand() const { return mAlphaBand; }
161
167 virtual QList< QPair< QString, QColor > > legendSymbologyItems() const;
168
179 virtual QList<QgsLayerTreeModelLegendNode *> createLegendNodes( QgsLayerTreeLayer *nodeLayer ) SIP_FACTORY;
180
182 void readXml( const QDomElement &rendererElem ) override;
183
188 void copyCommonProperties( const QgsRasterRenderer *other, bool copyMinMaxOrigin = true );
189
195 virtual QList<int> usesBands() const { return QList<int>(); }
196
199
201 void setMinMaxOrigin( const QgsRasterMinMaxOrigin &origin ) { mMinMaxOrigin = origin; }
202
207 Q_DECL_DEPRECATED virtual void toSld( QDomDocument &doc, QDomElement &element, const QVariantMap &props = QVariantMap() ) const SIP_DEPRECATED;
208
213 virtual bool toSld( QDomDocument &doc, QDomElement &element, QgsSldExportContext &context ) const;
214
224 virtual bool accept( QgsStyleEntityVisitorInterface *visitor ) const;
225
232 bool needsRefresh( const QgsRectangle &extent ) const SIP_SKIP;
233
242 virtual bool refresh( const QgsRectangle &extent, const QList<double> &min, const QList<double> &max, bool forceRefresh = false ) SIP_SKIP;
243
244 protected:
246 void _writeXml( QDomDocument &doc, QDomElement &rasterRendererElem ) const;
247
248 QString mType;
249
251 double mOpacity = 1.0;
254
259 int mAlphaBand = -1;
260
263
272 QRgb renderColorForNodataPixel() const;
273
276
277 private:
278 QColor mNodataColor;
279
280#ifdef SIP_RUN
283#endif
284};
285
286#endif // QGSRASTERRENDERER_H
QFlags< RasterRendererFlag > RasterRendererFlags
Flags which control behavior of raster renderers.
Definition qgis.h:1591
DataType
Raster data types.
Definition qgis.h:393
Layer tree node points to a map layer.
An abstract interface for legend items returned from QgsMapLayerLegend implementation.
Feedback object tailored for raster block reading.
Raster data container.
Base class for processing filters like renderers, reprojector, resampler etc.
virtual Qgis::DataType dataType(int bandNo) const =0
Returns data type for the band specified by number.
QgsRasterInterface(QgsRasterInterface *input=nullptr)
virtual int bandCount() const =0
Gets number of bands.
virtual void readXml(const QDomElement &filterElem)
Sets base class members from xml. Usually called from create() methods of subclasses.
virtual QgsRectangle extent() const
Gets the extent of the interface.
virtual QgsRasterInterface * input() const
Current input.
virtual bool setInput(QgsRasterInterface *input)
Set input.
Describes the origin of minimum and maximum values in a raster.
Raster renderer pipe that applies colors to a raster.
QColor nodataColor() const
Returns the color to use for shading nodata pixels.
QgsRasterRenderer(QgsRasterInterface *input=nullptr, const QString &type=QString())
Constructor for QgsRasterRenderer.
virtual QString type() const
Returns a unique string representation of the renderer type.
double mOpacity
Global alpha value (0-1).
void setMinMaxOrigin(const QgsRasterMinMaxOrigin &origin)
Sets origin of min/max values.
int mAlphaBand
Read alpha value from band.
QgsRectangle mLastRectangleUsedByRefreshContrastEnhancementIfNeeded
To save computations and possible infinite cycle of notifications.
QRgb renderColorForNodataPixel() const
Returns the color for the renderer to use to represent nodata pixels.
const QgsRasterTransparency * rasterTransparency() const
std::unique_ptr< QgsRasterTransparency > mRasterTransparency
Raster transparency per color or value. Overwrites global alpha value.
const QgsRasterMinMaxOrigin & minMaxOrigin() const
Returns const reference to origin of min/max values.
double opacity() const
Returns the opacity for the renderer, where opacity is a value between 0 (totally transparent) and 1....
QgsRasterBlock * block(int bandNo, const QgsRectangle &extent, int width, int height, QgsRasterBlockFeedback *feedback=nullptr) override=0
Read block of data using given extent and size.
virtual QList< int > usesBands() const
Returns a list of band numbers used by the renderer.
void setAlphaBand(int band)
void setOpacity(double opacity)
Sets the opacity for the renderer, where opacity is a value between 0 (totally transparent) and 1....
QgsRasterMinMaxOrigin mMinMaxOrigin
Origin of min/max values.
QgsRasterRenderer(const QgsRasterRenderer &)=delete
QgsRasterRenderer cannot be copied. Use clone() instead.
bool usesTransparency() const
static const QRgb NODATA_COLOR
void setNodataColor(const QColor &color)
Sets the color to use for shading nodata pixels.
const QgsRasterRenderer & operator=(const QgsRasterRenderer &)=delete
QgsRasterRenderer cannot be copied. Use clone() instead.
QgsRasterRenderer * clone() const override=0
Clone itself, create deep copy.
Defines the list of pixel values to be considered as transparent or semi transparent when rendering r...
A rectangle specified with double values.
Holds SLD export options and other information related to SLD export of a QGIS layer style.
An interface for classes which can visit style entity (e.g.
#define SIP_DEPRECATED
Definition qgis_sip.h:113
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_FACTORY
Definition qgis_sip.h:83