QgsRasterRenderer *QgsSingleBandGrayRenderer::create( const QDomElement &elem, QgsRasterInterface *input ) { if ( elem.isNull() ) { return nullptr; } int grayBand = elem.attribute( QStringLiteral( "grayBand" ), QStringLiteral( "-1" ) ).toInt(); QgsSingleBandGrayRenderer *r = new QgsSingleBandGrayRenderer( input, grayBand ); r->readXml( elem ); if ( elem.attribute( QStringLiteral( "gradient" ) ) == QLatin1String( "WhiteToBlack" ) ) { r->setGradient( WhiteToBlack ); // BlackToWhite is default } QDomElement contrastEnhancementElem = elem.firstChildElement( QStringLiteral( "contrastEnhancement" ) ); if ( !contrastEnhancementElem.isNull() ) { QgsContrastEnhancement *ce = new QgsContrastEnhancement( ( Qgis::DataType )( input->dataType( grayBand ) ) ); ce->readXml( contrastEnhancementElem ); r->setContrastEnhancement( ce ); } 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; }