QgsRasterRenderer* QgsSingleBandColorDataRenderer::create( const QDomElement& elem, QgsRasterInterface* input ) { if ( elem.isNull() ) { return nullptr; } int band = elem.attribute( QStringLiteral( "band" ), QStringLiteral( "-1" ) ).toInt(); QgsRasterRenderer* r = new QgsSingleBandColorDataRenderer( input, band ); r->readXml( elem ); return r; }
QgsRasterRenderer *QgsMultiBandColorRenderer::create( const QDomElement &elem, QgsRasterInterface *input ) { if ( elem.isNull() ) { return nullptr; } //red band, green band, blue band int redBand = elem.attribute( QStringLiteral( "redBand" ), QStringLiteral( "-1" ) ).toInt(); int greenBand = elem.attribute( QStringLiteral( "greenBand" ), QStringLiteral( "-1" ) ).toInt(); int blueBand = elem.attribute( QStringLiteral( "blueBand" ), QStringLiteral( "-1" ) ).toInt(); //contrast enhancements QgsContrastEnhancement *redContrastEnhancement = nullptr; QDomElement redContrastElem = elem.firstChildElement( QStringLiteral( "redContrastEnhancement" ) ); if ( !redContrastElem.isNull() ) { redContrastEnhancement = new QgsContrastEnhancement( ( Qgis::DataType )( input->dataType( redBand ) ) ); redContrastEnhancement->readXml( redContrastElem ); } QgsContrastEnhancement *greenContrastEnhancement = nullptr; QDomElement greenContrastElem = elem.firstChildElement( QStringLiteral( "greenContrastEnhancement" ) ); if ( !greenContrastElem.isNull() ) { greenContrastEnhancement = new QgsContrastEnhancement( ( Qgis::DataType )( input->dataType( greenBand ) ) ); greenContrastEnhancement->readXml( greenContrastElem ); } QgsContrastEnhancement *blueContrastEnhancement = nullptr; QDomElement blueContrastElem = elem.firstChildElement( QStringLiteral( "blueContrastEnhancement" ) ); if ( !blueContrastElem.isNull() ) { blueContrastEnhancement = new QgsContrastEnhancement( ( Qgis::DataType )( input->dataType( blueBand ) ) ); blueContrastEnhancement->readXml( blueContrastElem ); } QgsRasterRenderer *r = new QgsMultiBandColorRenderer( input, redBand, greenBand, blueBand, redContrastEnhancement, greenContrastEnhancement, blueContrastEnhancement ); r->readXml( elem ); return r; }