Skip to content

Commit c7d284d

Browse files
committedMar 11, 2012
Completed single band gray widget
1 parent 579ccb3 commit c7d284d

File tree

3 files changed

+48
-2
lines changed

3 files changed

+48
-2
lines changed
 

‎src/core/raster/qgssinglebandgrayrenderer.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,20 @@ QgsSingleBandGrayRenderer::QgsSingleBandGrayRenderer( QgsRasterDataProvider* pro
2727

2828
QgsSingleBandGrayRenderer::~QgsSingleBandGrayRenderer()
2929
{
30+
delete mContrastEnhancement;
3031
}
3132

3233
QgsRasterRenderer* QgsSingleBandGrayRenderer::create( const QDomElement& elem )
3334
{
3435
return 0;
3536
}
3637

38+
void QgsSingleBandGrayRenderer::setContrastEnhancement( QgsContrastEnhancement* ce )
39+
{
40+
delete mContrastEnhancement;
41+
mContrastEnhancement = ce;
42+
}
43+
3744
void QgsSingleBandGrayRenderer::draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel )
3845
{
3946
if ( !p || !mProvider || !viewPort || !theQgsMapToPixel )

‎src/core/raster/qgssinglebandgrayrenderer.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,11 @@ class QgsSingleBandGrayRenderer: public QgsRasterRenderer
3333

3434
virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel );
3535

36+
int grayBand() const { return mGrayBand; }
37+
void setGrayBand( int band ) { mGrayBand = band; }
3638
const QgsContrastEnhancement* contrastEnhancement() const { return mContrastEnhancement; }
37-
void setContrastEnhancement( QgsContrastEnhancement* ce ) { mContrastEnhancement = ce; }
39+
/**Takes ownership*/
40+
void setContrastEnhancement( QgsContrastEnhancement* ce );
3841

3942
private:
4043
int mGrayBand;

‎src/gui/raster/qgssinglebandgrayrendererwidget.cpp

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
***************************************************************************/
1717

1818
#include "qgssinglebandgrayrendererwidget.h"
19+
#include "qgssinglebandgrayrenderer.h"
1920
#include "qgsrasterlayer.h"
2021

2122
QgsSingleBandGrayRendererWidget::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

5267
QgsRasterRenderer* 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

Comments
 (0)
Please sign in to comment.