QgsMultiBandColorRendererWidget::QgsMultiBandColorRendererWidget( QgsRasterLayer *layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mDisableMinMaxWidgetRefresh( false ) { setupUi( this ); connect( mRedMinLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mRedMinLineEdit_textChanged ); connect( mRedMaxLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mRedMaxLineEdit_textChanged ); connect( mGreenMinLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mGreenMinLineEdit_textChanged ); connect( mGreenMaxLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mGreenMaxLineEdit_textChanged ); connect( mBlueMinLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mBlueMinLineEdit_textChanged ); connect( mBlueMaxLineEdit, &QLineEdit::textChanged, this, &QgsMultiBandColorRendererWidget::mBlueMaxLineEdit_textChanged ); createValidators(); if ( mRasterLayer ) { QgsRasterDataProvider *provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); mMinMaxWidget->setMapCanvas( mCanvas ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::widgetChanged, this, &QgsMultiBandColorRendererWidget::widgetChanged ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::load, this, &QgsMultiBandColorRendererWidget::loadMinMax ); connect( mRedBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsMultiBandColorRendererWidget::onBandChanged ); connect( mGreenBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsMultiBandColorRendererWidget::onBandChanged ); connect( mBlueBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsMultiBandColorRendererWidget::onBandChanged ); mRedBandComboBox->setShowNotSetOption( true ); mGreenBandComboBox->setShowNotSetOption( true ); mBlueBandComboBox->setShowNotSetOption( true ); mRedBandComboBox->setLayer( mRasterLayer ); mGreenBandComboBox->setLayer( mRasterLayer ); mBlueBandComboBox->setLayer( mRasterLayer ); //contrast enhancement algorithms mContrastEnhancementAlgorithmComboBox->addItem( tr( "No enhancement" ), QgsContrastEnhancement::NoEnhancement ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch to MinMax" ), QgsContrastEnhancement::StretchToMinimumMaximum ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch and clip to MinMax" ), QgsContrastEnhancement::StretchAndClipToMinimumMaximum ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Clip to MinMax" ), QgsContrastEnhancement::ClipToMinimumMaximum ); setFromRenderer( mRasterLayer->renderer() ); onBandChanged( 0 ); // reset mMinMaxWidget bands connect( mContrastEnhancementAlgorithmComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsRasterRendererWidget::widgetChanged ); } }
QgsMultiBandColorRendererWidget::QgsMultiBandColorRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mMinMaxWidget( nullptr ) { setupUi( this ); createValidators(); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); layout()->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, SIGNAL( load( int, double, double, int ) ), this, SLOT( loadMinMax( int, double, double, int ) ) ); connect( mRedBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); connect( mGreenBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); connect( mBlueBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); //fill available bands into combo boxes mRedBandComboBox->addItem( tr( "Not set" ), -1 ); mGreenBandComboBox->addItem( tr( "Not set" ), -1 ); mBlueBandComboBox->addItem( tr( "Not set" ), -1 ); //contrast enhancement algorithms mContrastEnhancementAlgorithmComboBox->addItem( tr( "No enhancement" ), 0 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch to MinMax" ), 1 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch and clip to MinMax" ), 2 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Clip to MinMax" ), 3 ); int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { QString bandName = displayBandName( i ); mRedBandComboBox->addItem( bandName, i ); mGreenBandComboBox->addItem( bandName, i ); mBlueBandComboBox->addItem( bandName, i ); } setFromRenderer( mRasterLayer->renderer() ); onBandChanged( 0 ); // reset mMinMaxWidget bands connect( mRedMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mRedMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mGreenMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mGreenMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mBlueMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mBlueMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); } }
QgsMultiBandColorRendererWidget::QgsMultiBandColorRendererWidget( QgsRasterLayer* layer ): QgsRasterRendererWidget( layer ) { setupUi( this ); createValidators(); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } //fill available bands into combo boxes mRedBandComboBox->addItem( tr( "Not set" ), -1 ); mGreenBandComboBox->addItem( tr( "Not set" ), -1 ); mBlueBandComboBox->addItem( tr( "Not set" ), -1 ); //contrast enhancement algorithms mContrastEnhancementAlgorithmComboBox->addItem( tr( "No enhancement" ), 0 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch to MinMax" ), 1 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch and clip to MinMax" ), 2 ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Clip to MinMax" ), 3 ); int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { QString bandName = displayBandName( i ); mRedBandComboBox->addItem( bandName, i ); mGreenBandComboBox->addItem( bandName, i ); mBlueBandComboBox->addItem( bandName, i ); } setFromRenderer( mRasterLayer->renderer() ); } }
QgsMultiBandColorRendererWidget::QgsMultiBandColorRendererWidget( QgsRasterLayer* layer, const QgsRectangle &extent ) : QgsRasterRendererWidget( layer, extent ) , mMinMaxWidget( nullptr ) , mDisableMinMaxWidgetRefresh( false ) { setupUi( this ); createValidators(); if ( mRasterLayer ) { QgsRasterDataProvider* provider = mRasterLayer->dataProvider(); if ( !provider ) { return; } mMinMaxWidget = new QgsRasterMinMaxWidget( layer, this ); mMinMaxWidget->setExtent( extent ); mMinMaxWidget->setMapCanvas( mCanvas ); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins( 0, 0, 0, 0 ); mMinMaxContainerWidget->setLayout( layout ); layout->addWidget( mMinMaxWidget ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::widgetChanged, this, &QgsMultiBandColorRendererWidget::widgetChanged ); connect( mMinMaxWidget, &QgsRasterMinMaxWidget::load, this, &QgsMultiBandColorRendererWidget::loadMinMax ); connect( mRedBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); connect( mGreenBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); connect( mBlueBandComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onBandChanged( int ) ) ); //fill available bands into combo boxes mRedBandComboBox->addItem( tr( "Not set" ), -1 ); mGreenBandComboBox->addItem( tr( "Not set" ), -1 ); mBlueBandComboBox->addItem( tr( "Not set" ), -1 ); //contrast enhancement algorithms mContrastEnhancementAlgorithmComboBox->addItem( tr( "No enhancement" ), QgsContrastEnhancement::NoEnhancement ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch to MinMax" ), QgsContrastEnhancement::StretchToMinimumMaximum ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Stretch and clip to MinMax" ), QgsContrastEnhancement::StretchAndClipToMinimumMaximum ); mContrastEnhancementAlgorithmComboBox->addItem( tr( "Clip to MinMax" ), QgsContrastEnhancement::ClipToMinimumMaximum ); int nBands = provider->bandCount(); for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1 { QString bandName = displayBandName( i ); mRedBandComboBox->addItem( bandName, i ); mGreenBandComboBox->addItem( bandName, i ); mBlueBandComboBox->addItem( bandName, i ); } setFromRenderer( mRasterLayer->renderer() ); onBandChanged( 0 ); // reset mMinMaxWidget bands connect( mContrastEnhancementAlgorithmComboBox, SIGNAL( currentIndexChanged( int ) ), this, SIGNAL( widgetChanged() ) ); connect( mRedMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mRedMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mGreenMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mGreenMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mBlueMaxLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); connect( mBlueMinLineEdit, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) ); } }