25 #include <QDomDocument> 26 #include <QDomElement> 29 : mMinimumValue( minimumValue )
30 , mMaximumValue( maximumValue )
46 bool QgsRasterShader::shade(
double value,
int *returnRedValue,
int *returnGreenValue,
int *returnBlueValue,
int *returnAlpha )
48 if ( mRasterShaderFunction )
50 return mRasterShaderFunction->shade( value, returnRedValue, returnGreenValue, returnBlueValue, returnAlpha );
70 bool QgsRasterShader::shade(
double redValue,
double greenValue,
double blueValue,
double alphaValue,
int *returnRedValue,
int *returnGreenValue,
int *returnBlueValue,
int *returnAlphaValue )
72 if ( mRasterShaderFunction )
74 return mRasterShaderFunction->shade( redValue, greenValue, blueValue, alphaValue, returnRedValue, returnGreenValue, returnBlueValue, returnAlphaValue );
89 if ( mRasterShaderFunction.get() == function )
94 mRasterShaderFunction.reset(
function );
107 mMaximumValue = value;
108 if ( mRasterShaderFunction )
110 mRasterShaderFunction->setMaximumValue( value );
123 mMinimumValue = value;
124 if ( mRasterShaderFunction )
126 mRasterShaderFunction->setMinimumValue( value );
132 if ( parent.isNull() || !mRasterShaderFunction )
137 QDomElement rasterShaderElem = doc.createElement( QStringLiteral(
"rastershader" ) );
139 if ( colorRampShader )
141 QDomElement colorRampShaderElem = doc.createElement( QStringLiteral(
"colorrampshader" ) );
142 colorRampShaderElem.setAttribute( QStringLiteral(
"colorRampType" ), colorRampShader->
colorRampTypeAsQString() );
143 colorRampShaderElem.setAttribute( QStringLiteral(
"classificationMode" ), colorRampShader->
classificationMode() );
144 colorRampShaderElem.setAttribute( QStringLiteral(
"clip" ), colorRampShader->
clip() );
150 colorRampShaderElem.appendChild( colorRampElem );
154 QList<QgsColorRampShader::ColorRampItem> itemList = colorRampShader->
colorRampItemList();
155 QList<QgsColorRampShader::ColorRampItem>::const_iterator itemIt = itemList.constBegin();
156 for ( ; itemIt != itemList.constEnd(); ++itemIt )
158 QDomElement itemElem = doc.createElement( QStringLiteral(
"item" ) );
159 itemElem.setAttribute( QStringLiteral(
"label" ), itemIt->label );
161 itemElem.setAttribute( QStringLiteral(
"color" ), itemIt->color.name() );
162 itemElem.setAttribute( QStringLiteral(
"alpha" ), itemIt->color.alpha() );
163 colorRampShaderElem.appendChild( itemElem );
165 rasterShaderElem.appendChild( colorRampShaderElem );
167 parent.appendChild( rasterShaderElem );
173 QDomElement colorRampShaderElem = elem.firstChildElement( QStringLiteral(
"colorrampshader" ) );
174 if ( !colorRampShaderElem.isNull() )
179 QDomElement sourceColorRampElem = colorRampShaderElem.firstChildElement( QStringLiteral(
"colorramp" ) );
180 if ( !sourceColorRampElem.isNull() && sourceColorRampElem.attribute( QStringLiteral(
"name" ) ) == QLatin1String(
"[source]" ) )
185 colorRampShader->
setColorRampType( colorRampShaderElem.attribute( QStringLiteral(
"colorRampType" ), QStringLiteral(
"INTERPOLATED" ) ) );
186 colorRampShader->
setClassificationMode( static_cast< QgsColorRampShader::ClassificationMode >( colorRampShaderElem.attribute( QStringLiteral(
"classificationMode" ), QStringLiteral(
"1" ) ).toInt() ) );
187 colorRampShader->
setClip( colorRampShaderElem.attribute( QStringLiteral(
"clip" ), QStringLiteral(
"0" ) ) == QLatin1String(
"1" ) );
189 QList<QgsColorRampShader::ColorRampItem> itemList;
190 QDomElement itemElem;
195 QDomNodeList itemNodeList = colorRampShaderElem.elementsByTagName( QStringLiteral(
"item" ) );
196 itemList.reserve( itemNodeList.size() );
197 for (
int i = 0; i < itemNodeList.size(); ++i )
199 itemElem = itemNodeList.at( i ).toElement();
200 itemValue = itemElem.attribute( QStringLiteral(
"value" ) ).toDouble();
201 itemLabel = itemElem.attribute( QStringLiteral(
"label" ) );
202 itemColor.setNamedColor( itemElem.attribute( QStringLiteral(
"color" ) ) );
203 itemColor.setAlpha( itemElem.attribute( QStringLiteral(
"alpha" ), QStringLiteral(
"255" ) ).toInt() );
void setMaximumValue(double)
Set the maximum value.
void setColorRampItemList(const QList< QgsColorRampShader::ColorRampItem > &list)
Set custom colormap.
static QString printValue(double value)
Print double value with all necessary significant digits.
void setMinimumValue(double)
Return the minimum value.
A ramp shader will color a raster pixel based on a list of values ranges in a ramp.
static QDomElement saveColorRamp(const QString &name, QgsColorRamp *ramp, QDomDocument &doc)
Encodes a color ramp's settings to an XML element.
QList< QgsColorRampShader::ColorRampItem > colorRampItemList() const
Get the custom colormap.
void setClip(bool clip)
Sets whether the shader should not render values out of range.
void setColorRampType(QgsColorRampShader::Type colorRampType)
Set the color ramp type.
#define QgsDebugMsgLevel(str, level)
The raster shade function applies a shader to a pixel at render time - typically used to render grays...
void setRasterShaderFunction(QgsRasterShaderFunction *function)
A public method that allows the user to set their own shader function.
static QgsColorRamp * loadColorRamp(QDomElement &element)
Creates a color ramp from the settings encoded in an XML element.
void setSourceColorRamp(QgsColorRamp *colorramp)
Set the source color ramp.
bool shade(double value, int *returnRedValue, int *returnGreenValue, int *returnBlueValue, int *returnAlpha)
generates and new RGBA value based on one input value
QString colorRampTypeAsQString()
Get the color ramp type as a string.
QgsRasterShader(double minimumValue=0.0, double maximumValue=255.0)
void writeXml(QDomDocument &doc, QDomElement &parent) const
Writes shader state to an XML element.
void setClassificationMode(ClassificationMode classificationMode)
Sets classification mode.
bool clip() const
Returns whether the shader will clip values which are out of range.
ClassificationMode classificationMode() const
Returns the classification mode.
QgsColorRamp * sourceColorRamp() const
Get the source color ramp.
void readXml(const QDomElement &elem)
Reads shader state from an XML element.