QgsRasterRenderer* QgsSingleBandGrayRenderer::create( const QDomElement& elem, QgsRasterInterface* input ) { if ( elem.isNull() ) { return 0; } int grayBand = elem.attribute( "grayBand", "-1" ).toInt(); QgsSingleBandGrayRenderer* r = new QgsSingleBandGrayRenderer( input, grayBand ); r->readXML( elem ); if ( elem.attribute( "gradient" ) == "WhiteToBlack" ) { r->setGradient( WhiteToBlack ); // BlackToWhite is default } QDomElement contrastEnhancementElem = elem.firstChildElement( "contrastEnhancement" ); if ( !contrastEnhancementElem.isNull() ) { QgsContrastEnhancement* ce = new QgsContrastEnhancement(( QGis::DataType )( input->dataType( grayBand ) ) ); ce->readXML( contrastEnhancementElem ); r->setContrastEnhancement( ce ); } return r; }
QgsRasterRenderer *QgsSingleBandGrayRendererWidget::renderer() { if ( !mRasterLayer ) { return nullptr; } QgsRasterDataProvider *provider = mRasterLayer->dataProvider(); if ( !provider ) { return nullptr; } int band = mGrayBandComboBox->currentBand(); QgsContrastEnhancement *e = new QgsContrastEnhancement( ( Qgis::DataType )( provider->dataType( band ) ) ); e->setMinimumValue( mMinLineEdit->text().toDouble() ); e->setMaximumValue( mMaxLineEdit->text().toDouble() ); e->setContrastEnhancementAlgorithm( ( QgsContrastEnhancement::ContrastEnhancementAlgorithm )( mContrastEnhancementComboBox->currentData().toInt() ) ); QgsSingleBandGrayRenderer *renderer = new QgsSingleBandGrayRenderer( provider, band ); renderer->setContrastEnhancement( e ); renderer->setGradient( ( QgsSingleBandGrayRenderer::Gradient ) mGradientComboBox->currentData().toInt() ); renderer->setMinMaxOrigin( mMinMaxWidget->minMaxOrigin() ); return renderer; }
QgsRasterRenderer* QgsSingleBandGrayRendererWidget::renderer() { if ( !mRasterLayer ) { return 0; } QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return 0; } int band = mGrayBandComboBox->itemData( mGrayBandComboBox->currentIndex() ).toInt(); QgsContrastEnhancement* e = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )( provider->dataType( band ) ) ); e->setMinimumValue( mMinLineEdit->text().toDouble() ); e->setMaximumValue( mMaxLineEdit->text().toDouble() ); e->setContrastEnhancementAlgorithm(( QgsContrastEnhancement::ContrastEnhancementAlgorithm )( mContrastEnhancementComboBox->itemData( mContrastEnhancementComboBox->currentIndex() ).toInt() ) ); QgsSingleBandGrayRenderer* renderer = new QgsSingleBandGrayRenderer( provider, band ); renderer->setContrastEnhancement( e ); return renderer; }
QgsSingleBandGrayRenderer *QgsSingleBandGrayRenderer::clone() const { QgsSingleBandGrayRenderer *renderer = new QgsSingleBandGrayRenderer( nullptr, mGrayBand ); renderer->copyCommonProperties( this ); renderer->setGradient( mGradient ); if ( mContrastEnhancement ) { renderer->setContrastEnhancement( new QgsContrastEnhancement( *mContrastEnhancement ) ); } return renderer; }
QgsSingleBandGrayRenderer* QgsSingleBandGrayRenderer::clone() const { QgsSingleBandGrayRenderer * renderer = new QgsSingleBandGrayRenderer( 0, mGrayBand ); renderer->setOpacity( mOpacity ); renderer->setAlphaBand( mAlphaBand ); renderer->setRasterTransparency( mRasterTransparency ? new QgsRasterTransparency( *mRasterTransparency ) : 0 ); renderer->setGradient( mGradient ); if ( mContrastEnhancement ) { renderer->setContrastEnhancement( new QgsContrastEnhancement( *mContrastEnhancement ) ); } return renderer; }