Skip to content

Commit 267c1e2

Browse files
committed
Improvements to single band gray renderer widget
1 parent c7d284d commit 267c1e2

File tree

4 files changed

+58
-9
lines changed

4 files changed

+58
-9
lines changed

src/core/raster/qgsrasterlayer.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -646,20 +646,21 @@ void QgsRasterLayer::setRendererForDrawingStyle( const DrawingStyle & theDrawin
646646
{
647647
int grayBand = bandNumber( mGrayBandName );
648648
renderer = new QgsSingleBandGrayRenderer( mDataProvider, grayBand );
649+
QgsContrastEnhancement* ce = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )(
650+
mDataProvider->dataType( grayBand ) ) );
651+
ce->setContrastEnhancementAlgorithm( contrastEnhancementAlgorithm() );
649652
if ( QgsContrastEnhancement::NoEnhancement != contrastEnhancementAlgorithm() && !mUserDefinedGrayMinimumMaximum && mStandardDeviations > 0 )
650653
{
651-
mGrayMinimumMaximumEstimated = false;
652654
QgsRasterBandStats myGrayBandStats = bandStatistics( grayBand );
653-
setMaximumValue( grayBand, myGrayBandStats.mean + ( mStandardDeviations * myGrayBandStats.stdDev ) );
654-
setMinimumValue( grayBand, myGrayBandStats.mean - ( mStandardDeviations * myGrayBandStats.stdDev ) );
655+
ce->setMinimumValue( myGrayBandStats.mean - ( mStandardDeviations * myGrayBandStats.stdDev ) );
656+
ce->setMaximumValue( myGrayBandStats.mean + ( mStandardDeviations * myGrayBandStats.stdDev ) );
655657
}
656658
else if ( QgsContrastEnhancement::NoEnhancement != contrastEnhancementAlgorithm() && !mUserDefinedGrayMinimumMaximum )
657659
{
658-
mGrayMinimumMaximumEstimated = true;
659-
setMaximumValue( grayBand, mDataProvider->maximumValue( grayBand ) );
660-
setMinimumValue( grayBand, mDataProvider->minimumValue( grayBand ) );
660+
ce->setMinimumValue( mDataProvider->minimumValue( grayBand ) );
661+
ce->setMaximumValue( mDataProvider->maximumValue( grayBand ) );
661662
}
662-
(( QgsSingleBandGrayRenderer* )renderer )->setContrastEnhancement( contrastEnhancement( grayBand ) );
663+
(( QgsSingleBandGrayRenderer* )renderer )->setContrastEnhancement( ce );
663664
break;
664665
}
665666
case SingleBandPseudoColor:

src/gui/raster/qgssinglebandgrayrendererwidget.cpp

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ QgsRasterRenderer* QgsSingleBandGrayRendererWidget::renderer()
7979

8080
QgsContrastEnhancement* e = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )(
8181
provider->dataType( band ) ) );
82-
e->setMinimumValue( mMinLineEdit->text().toInt() );
83-
e->setMaximumValue( mMaxLineEdit->text().toInt() );
82+
e->setMinimumValue( mMinLineEdit->text().toDouble() );
83+
e->setMaximumValue( mMaxLineEdit->text().toDouble() );
8484
e->setContrastEnhancementAlgorithm(( QgsContrastEnhancement::ContrastEnhancementAlgorithm )( mContrastEnhancementComboBox->itemData(
8585
mContrastEnhancementComboBox->currentIndex() ).toInt() ) );
8686

@@ -89,3 +89,45 @@ QgsRasterRenderer* QgsSingleBandGrayRendererWidget::renderer()
8989
renderer->setContrastEnhancement( e );
9090
return renderer;
9191
}
92+
93+
void QgsSingleBandGrayRendererWidget::on_mLoadPushButton_clicked()
94+
{
95+
if ( !mRasterLayer )
96+
{
97+
return;
98+
}
99+
QgsRasterDataProvider* provider = mRasterLayer->dataProvider();
100+
if ( !provider )
101+
{
102+
return;
103+
}
104+
105+
int band = mGrayBandComboBox->itemData( mGrayBandComboBox->currentIndex() ).toInt();
106+
double minVal = 0;
107+
double maxVal = 0;
108+
if ( mEstimateRadioButton->isChecked() )
109+
{
110+
minVal = provider->minimumValue( band );
111+
maxVal = provider->maximumValue( band );
112+
}
113+
else if ( mActualRadioButton->isChecked() )
114+
{
115+
QgsRasterBandStats rasterBandStats = mRasterLayer->bandStatistics( band );
116+
minVal = rasterBandStats.minimumValue;
117+
maxVal = rasterBandStats.maximumValue;
118+
}
119+
else if ( mCurrentExtentRadioButton->isChecked() )
120+
{
121+
double minMax[2];
122+
mRasterLayer->computeMinimumMaximumFromLastExtent( band, minMax );
123+
minVal = minMax[0];
124+
maxVal = minMax[1];
125+
}
126+
else
127+
{
128+
return;
129+
}
130+
131+
mMinLineEdit->setText( QString::number( minVal ) );
132+
mMaxLineEdit->setText( QString::number( maxVal ) );
133+
}

src/gui/raster/qgssinglebandgrayrendererwidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ class QgsSingleBandGrayRendererWidget: public QgsRasterRendererWidget, private U
3131
static QgsRasterRendererWidget* create( QgsRasterLayer* layer ) { return new QgsSingleBandGrayRendererWidget( layer ); }
3232

3333
QgsRasterRenderer* renderer();
34+
35+
private slots:
36+
void on_mLoadPushButton_clicked();
3437
};
3538

3639
#endif // QGSSINGLEBANDGRAYRENDERERWIDGET_H

src/ui/qgssinglebandgrayrendererwidgetbase.ui

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@
7373
<property name="text">
7474
<string>Estimate (faster)</string>
7575
</property>
76+
<property name="checked">
77+
<bool>true</bool>
78+
</property>
7679
</widget>
7780
</item>
7881
<item row="0" column="1" colspan="2">

0 commit comments

Comments
 (0)