@@ -816,7 +816,8 @@ void QgsRasterLayer::draw( QPainter * theQPainter,
816816 }
817817 else
818818 {
819- QgsSingleBandGrayRenderer r ( mDataProvider , bandNumber ( mGrayBandName ), mResampler );
819+ int grayBand = bandNumber ( mGrayBandName );
820+ QgsSingleBandGrayRenderer r ( mDataProvider , grayBand, mResampler );
820821 r.setOpacity ( mTransparencyLevel / 255.0 );
821822 r.setRasterTransparency ( &mRasterTransparency );
822823 if ( mTransparencyBandName != TRSTRING_NOT_SET )
@@ -828,6 +829,21 @@ void QgsRasterLayer::draw( QPainter * theQPainter,
828829 }
829830 }
830831 r.setInvertColor ( mInvertColor );
832+ if ( QgsContrastEnhancement::NoEnhancement != contrastEnhancementAlgorithm () && !mUserDefinedGrayMinimumMaximum && mStandardDeviations > 0 )
833+ {
834+ mGrayMinimumMaximumEstimated = false ;
835+ QgsRasterBandStats myGrayBandStats = bandStatistics ( grayBand );
836+ setMaximumValue ( grayBand, myGrayBandStats.mean + ( mStandardDeviations * myGrayBandStats.stdDev ) );
837+ setMinimumValue ( grayBand, myGrayBandStats.mean - ( mStandardDeviations * myGrayBandStats.stdDev ) );
838+ r.setContrastEnhancement ( contrastEnhancement ( grayBand ) );
839+ }
840+ else if ( QgsContrastEnhancement::NoEnhancement != contrastEnhancementAlgorithm () && !mUserDefinedGrayMinimumMaximum )
841+ {
842+ mGrayMinimumMaximumEstimated = true ;
843+ setMaximumValue ( grayBand, mDataProvider ->maximumValue ( grayBand ) );
844+ setMinimumValue ( grayBand, mDataProvider ->minimumValue ( grayBand ) );
845+ r.setContrastEnhancement ( contrastEnhancement ( grayBand ) );
846+ }
831847 r.draw ( theQPainter, theRasterViewPort, theQgsMapToPixel );
832848
833849#if 0
0 commit comments