1616 ***************************************************************************/
1717
1818#include " qgssinglebandgrayrendererwidget.h"
19+ #include " qgssinglebandgrayrenderer.h"
1920#include " qgsrasterlayer.h"
2021
2122QgsSingleBandGrayRendererWidget::QgsSingleBandGrayRendererWidget ( QgsRasterLayer* layer ): QgsRasterRendererWidget( layer )
@@ -42,6 +43,20 @@ QgsSingleBandGrayRendererWidget::QgsSingleBandGrayRendererWidget( QgsRasterLayer
4243 mContrastEnhancementComboBox ->addItem ( tr ( " Stretch to MinMax" ), 1 );
4344 mContrastEnhancementComboBox ->addItem ( tr ( " Stretch and clip to MinMax" ), 2 );
4445 mContrastEnhancementComboBox ->addItem ( tr ( " Clip to MinMax" ), 3 );
46+
47+ QgsSingleBandGrayRenderer* r = dynamic_cast <QgsSingleBandGrayRenderer*>( layer->renderer () );
48+ if ( r )
49+ {
50+ // band
51+ mGrayBandComboBox ->setCurrentIndex ( mGrayBandComboBox ->findData ( r->grayBand () ) );
52+ const QgsContrastEnhancement* ce = r->contrastEnhancement ();
53+ // minmax
54+ mMinLineEdit ->setText ( QString::number ( ce->minimumValue () ) );
55+ mMaxLineEdit ->setText ( QString::number ( ce->maximumValue () ) );
56+ // contrast enhancement algorithm
57+ mContrastEnhancementComboBox ->setCurrentIndex (
58+ mContrastEnhancementComboBox ->findData (( int )( ce->contrastEnhancementAlgorithm () ) ) );
59+ }
4560 }
4661}
4762
@@ -51,5 +66,26 @@ QgsSingleBandGrayRendererWidget::~QgsSingleBandGrayRendererWidget()
5166
5267QgsRasterRenderer* QgsSingleBandGrayRendererWidget::renderer ()
5368{
54- return 0 ; // soon...
69+ if ( !mRasterLayer )
70+ {
71+ return 0 ;
72+ }
73+ QgsRasterDataProvider* provider = mRasterLayer ->dataProvider ();
74+ if ( !provider )
75+ {
76+ return 0 ;
77+ }
78+ int band = mGrayBandComboBox ->itemData ( mGrayBandComboBox ->currentIndex () ).toInt ();
79+
80+ QgsContrastEnhancement* e = new QgsContrastEnhancement (( QgsContrastEnhancement::QgsRasterDataType )(
81+ provider->dataType ( band ) ) );
82+ e->setMinimumValue ( mMinLineEdit ->text ().toInt () );
83+ e->setMaximumValue ( mMaxLineEdit ->text ().toInt () );
84+ e->setContrastEnhancementAlgorithm (( QgsContrastEnhancement::ContrastEnhancementAlgorithm )( mContrastEnhancementComboBox ->itemData (
85+ mContrastEnhancementComboBox ->currentIndex () ).toInt () ) );
86+
87+
88+ QgsSingleBandGrayRenderer* renderer = new QgsSingleBandGrayRenderer ( provider, band );
89+ renderer->setContrastEnhancement ( e );
90+ return renderer;
5591}
0 commit comments