Skip to content

Commit 5ece689

Browse files
committed
[FEATURE] Implement raster pseudocolor updated extent auto classification
1 parent 181f84b commit 5ece689

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

src/core/raster/qgsrasterlayer.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,8 +1057,30 @@ void QgsRasterLayer::refreshRendererIfNeeded( QgsRasterRenderer* rasterRenderer,
10571057
SAMPLE_SIZE, min, max );
10581058
sbpcr->setClassificationMin( min );
10591059
sbpcr->setClassificationMax( max );
1060+
1061+
if ( sbpcr->shader() )
1062+
{
1063+
QgsColorRampShader* colorRampShader = dynamic_cast<QgsColorRampShader*>( sbpcr->shader()->rasterShaderFunction() );
1064+
if ( colorRampShader )
1065+
{
1066+
colorRampShader->classifyColorRamp( sbpcr->band(), theExtent, rasterRenderer->input() );
1067+
}
1068+
}
1069+
1070+
QgsSingleBandPseudoColorRenderer* r = dynamic_cast<QgsSingleBandPseudoColorRenderer*>( renderer() );
10601071
dynamic_cast<QgsSingleBandPseudoColorRenderer*>( renderer() )->setClassificationMin( min );
10611072
dynamic_cast<QgsSingleBandPseudoColorRenderer*>( renderer() )->setClassificationMax( max );
1073+
1074+
if ( r->shader() )
1075+
{
1076+
QgsColorRampShader* colorRampShader = dynamic_cast<QgsColorRampShader*>( r->shader()->rasterShaderFunction() );
1077+
if ( colorRampShader )
1078+
{
1079+
colorRampShader->classifyColorRamp( sbpcr->band(), theExtent, rasterRenderer->input() );
1080+
}
1081+
}
1082+
1083+
emit repaintRequested();
10621084
emit styleChanged();
10631085
emit rendererChanged();
10641086
return;

src/gui/raster/qgssinglebandpseudocolorrendererwidget.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,8 @@ QgsSingleBandPseudoColorRendererWidget::QgsSingleBandPseudoColorRendererWidget(
8686
mMinMaxContainerWidget->setLayout( layout );
8787
layout->addWidget( mMinMaxWidget );
8888

89-
connect( mMinMaxWidget, &QgsRasterMinMaxWidget::widgetChanged,
90-
this, &QgsSingleBandPseudoColorRendererWidget::widgetChanged );
91-
92-
connect( mMinMaxWidget, &QgsRasterMinMaxWidget::load,
93-
this, &QgsSingleBandPseudoColorRendererWidget::loadMinMax );
89+
connect( mMinMaxWidget, &QgsRasterMinMaxWidget::widgetChanged, this, &QgsSingleBandPseudoColorRendererWidget::widgetChanged );
90+
connect( mMinMaxWidget, &QgsRasterMinMaxWidget::load, this, &QgsSingleBandPseudoColorRendererWidget::loadMinMax );
9491

9592
//fill available bands into combo box
9693
int nBands = provider->bandCount();
@@ -775,6 +772,7 @@ void QgsSingleBandPseudoColorRendererWidget::loadMinMax( int theBandNo, double t
775772
mMaxLineEdit->setText( QString::number( theMax ) );
776773
}
777774
mDisableMinMaxWidgetRefresh = false;
775+
classify();
778776
}
779777

780778
void QgsSingleBandPseudoColorRendererWidget::setLineEditValue( QLineEdit * theLineEdit, double theValue )

0 commit comments

Comments
 (0)