QgsPalettedRasterRenderer *QgsPalettedRasterRenderer::clone() const { QgsPalettedRasterRenderer *renderer = new QgsPalettedRasterRenderer( nullptr, mBand, mClassData ); if ( mSourceColorRamp ) renderer->setSourceColorRamp( mSourceColorRamp->clone() ); renderer->copyCommonProperties( this ); return renderer; }
QgsRasterRenderer *QgsPalettedRendererWidget::renderer() { QgsPalettedRasterRenderer::ClassData classes = mModel->classData(); int bandNumber = mBandComboBox->currentBand(); QgsPalettedRasterRenderer *r = new QgsPalettedRasterRenderer( mRasterLayer->dataProvider(), bandNumber, classes ); if ( !btnColorRamp->isNull() ) { r->setSourceColorRamp( btnColorRamp->colorRamp() ); } return r; }
QgsRasterRenderer *QgsPalettedRasterRenderer::create( const QDomElement &elem, QgsRasterInterface *input ) { if ( elem.isNull() ) { return nullptr; } int bandNumber = elem.attribute( QStringLiteral( "band" ), QStringLiteral( "-1" ) ).toInt(); ClassData classData; QDomElement paletteElem = elem.firstChildElement( QStringLiteral( "colorPalette" ) ); if ( !paletteElem.isNull() ) { QDomNodeList paletteEntries = paletteElem.elementsByTagName( QStringLiteral( "paletteEntry" ) ); QDomElement entryElem; int value; for ( int i = 0; i < paletteEntries.size(); ++i ) { QColor color; QString label; entryElem = paletteEntries.at( i ).toElement(); value = static_cast<int>( entryElem.attribute( QStringLiteral( "value" ), QStringLiteral( "0" ) ).toDouble() ); QgsDebugMsgLevel( entryElem.attribute( "color", "#000000" ), 4 ); color = QColor( entryElem.attribute( QStringLiteral( "color" ), QStringLiteral( "#000000" ) ) ); color.setAlpha( entryElem.attribute( QStringLiteral( "alpha" ), QStringLiteral( "255" ) ).toInt() ); label = entryElem.attribute( QStringLiteral( "label" ) ); classData << Class( value, color, label ); } } QgsPalettedRasterRenderer *r = new QgsPalettedRasterRenderer( input, bandNumber, classData ); r->readXml( elem ); // try to load color ramp (optional) QDomElement sourceColorRampElem = elem.firstChildElement( QStringLiteral( "colorramp" ) ); if ( !sourceColorRampElem.isNull() && sourceColorRampElem.attribute( QStringLiteral( "name" ) ) == QLatin1String( "[source]" ) ) { r->setSourceColorRamp( QgsSymbolLayerUtils::loadColorRamp( sourceColorRampElem ) ); } return r; }