21 #include <QCoreApplication> 22 #include <QDomDocument> 23 #include <QDomElement> 64 if ( !input )
return false;
73 for (
int i = 1; i <= input->
bandCount(); i++ )
104 if ( rasterRendererElem.isNull() )
109 rasterRendererElem.setAttribute( QStringLiteral(
"type" ),
mType );
110 rasterRendererElem.setAttribute( QStringLiteral(
"opacity" ), QString::number(
mOpacity ) );
111 rasterRendererElem.setAttribute( QStringLiteral(
"alphaBand" ),
mAlphaBand );
118 QDomElement minMaxOriginElem = doc.createElement( QStringLiteral(
"minMaxOrigin" ) );
120 rasterRendererElem.appendChild( minMaxOriginElem );
125 if ( rendererElem.isNull() )
130 mType = rendererElem.attribute( QStringLiteral(
"type" ) );
131 mOpacity = rendererElem.attribute( QStringLiteral(
"opacity" ), QStringLiteral(
"1.0" ) ).toDouble();
132 mAlphaBand = rendererElem.attribute( QStringLiteral(
"alphaBand" ), QStringLiteral(
"-1" ) ).toInt();
134 QDomElement rasterTransparencyElem = rendererElem.firstChildElement( QStringLiteral(
"rasterTransparency" ) );
135 if ( !rasterTransparencyElem.isNull() )
142 QDomElement minMaxOriginElem = rendererElem.firstChildElement( QStringLiteral(
"minMaxOrigin" ) );
143 if ( !minMaxOriginElem.isNull() )
157 if ( copyMinMaxOrigin )
163 QDomElement rasterSymbolizerElem = doc.createElement( QStringLiteral(
"sld:RasterSymbolizer" ) );
164 element.appendChild( rasterSymbolizerElem );
169 QDomElement opacityElem = doc.createElement( QStringLiteral(
"sld:Opacity" ) );
170 opacityElem.appendChild( doc.createTextNode( QString::number(
opacity() ) ) );
171 rasterSymbolizerElem.appendChild( opacityElem );
virtual int bandCount() const =0
Gets number of bands.
bool isEmpty() const
True if there are no entries in the pixel lists except the nodata value.
virtual void toSld(QDomDocument &doc, QDomElement &element, const QgsStringMap &props=QgsStringMap()) const
Used from subclasses to create SLD Rule elements following SLD v1.0 specs.
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the renderer...
double opacity() const
Returns the opacity for the renderer, where opacity is a value between 0 (totally transparent) and 1...
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
static bool typeIsNumeric(Qgis::DataType type)
Returns true if data type is numeric.
virtual QgsRasterInterface * input() const
Current input.
QgsRasterRenderer(QgsRasterInterface *input=nullptr, const QString &type=QString())
Constructor for QgsRasterRenderer.
DataType
Raster data types.
QgsRasterMinMaxOrigin mMinMaxOrigin
Origin of min/max values.
const QgsRasterMinMaxOrigin & minMaxOrigin() const
Returns const reference to origin of min/max values.
virtual Qgis::DataType dataType(int bandNo) const =0
Returns data type for the band specified by number.
An interface for classes which can visit style entity (e.g.
QMap< QString, QString > QgsStringMap
const QgsRasterTransparency * rasterTransparency() const
QgsRasterTransparency * mRasterTransparency
Raster transparency per color or value. Overwrites global alpha value.
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32_Premultiplied.
static const QRgb NODATA_COLOR
bool setInput(QgsRasterInterface *input) override
Set input.
#define QgsDebugMsgLevel(str, level)
void _writeXml(QDomDocument &doc, QDomElement &rasterRendererElem) const
Write upper class info into rasterrenderer element (called by writeXml method of subclasses) ...
void copyCommonProperties(const QgsRasterRenderer *other, bool copyMinMaxOrigin=true)
Copies common properties like opacity / transparency data from other renderer.
void readXml(const QDomElement &elem)
Deserialize object.
bool usesTransparency() const
Unknown or unspecified type.
void readXml(const QDomElement &elem)
Reads the transparency information from an XML document.
int mAlphaBand
Read alpha value from band.
void setAlphaBand(int band)
void readXml(const QDomElement &rendererElem) override
Sets base class members from xml. Usually called from create() methods of subclasses.
int bandCount() const override
Gets number of bands.
Qgis::DataType dataType(int bandNo) const override
Returns data type for the band specified by number.
Base class for processing filters like renderers, reprojector, resampler etc.
void setMinMaxOrigin(const QgsRasterMinMaxOrigin &origin)
Sets origin of min/max values.
~QgsRasterRenderer() override
void writeXml(QDomDocument &doc, QDomElement &parentElem) const
Writes the transparency information to an XML document.
double mOpacity
Global alpha value (0-1)
Defines the list of pixel values to be considered as transparent or semi transparent when rendering r...
void setOpacity(double opacity)
Sets the opacity for the renderer, where opacity is a value between 0 (totally transparent) and 1...
QgsRasterInterface * mInput
void setRasterTransparency(QgsRasterTransparency *t)
Raster renderer pipe that applies colors to a raster.
void writeXml(QDomDocument &doc, QDomElement &parentElem) const
Serialize object.