16
16
***************************************************************************/
17
17
18
18
#include " qgssinglebandgrayrendererwidget.h"
19
+ #include " qgssinglebandgrayrenderer.h"
19
20
#include " qgsrasterlayer.h"
20
21
21
22
QgsSingleBandGrayRendererWidget::QgsSingleBandGrayRendererWidget ( QgsRasterLayer* layer ): QgsRasterRendererWidget( layer )
@@ -42,6 +43,20 @@ QgsSingleBandGrayRendererWidget::QgsSingleBandGrayRendererWidget( QgsRasterLayer
42
43
mContrastEnhancementComboBox ->addItem ( tr ( " Stretch to MinMax" ), 1 );
43
44
mContrastEnhancementComboBox ->addItem ( tr ( " Stretch and clip to MinMax" ), 2 );
44
45
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
+ }
45
60
}
46
61
}
47
62
@@ -51,5 +66,26 @@ QgsSingleBandGrayRendererWidget::~QgsSingleBandGrayRendererWidget()
51
66
52
67
QgsRasterRenderer* QgsSingleBandGrayRendererWidget::renderer ()
53
68
{
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;
55
91
}
0 commit comments