Skip to content

Commit b740a89

Browse files
JamesShaeffernirvn
authored andcommittedOct 13, 2017
Updated the transparency widget to fix bug #16649 (#5358)
1 parent 873b4b0 commit b740a89

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
 

‎src/gui/raster/qgsrastertransparencywidget.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ QgsRasterTransparencyWidget::QgsRasterTransparencyWidget( QgsRasterLayer *layer,
5353

5454
connect( mOpacityWidget, &QgsOpacityWidget::opacityChanged, this, &QgsPanelWidget::widgetChanged );
5555
connect( cboxTransparencyBand, &QgsRasterBandComboBox::bandChanged, this, &QgsPanelWidget::widgetChanged );
56+
connect( mSrcNoDataValueCheckBox, &QCheckBox::stateChanged, this, &QgsPanelWidget::widgetChanged );
57+
connect( leNoDataValue, &QLineEdit::textEdited, this, &QgsPanelWidget::widgetChanged );
5658

5759
mPixelSelectorTool = nullptr;
5860
if ( mMapCanvas )
@@ -103,6 +105,17 @@ void QgsRasterTransparencyWidget::syncToLayer()
103105
mSrcNoDataValueCheckBox->setEnabled( enableSrcNoData );
104106
lblSrcNoDataValue->setEnabled( enableSrcNoData );
105107

108+
QgsRasterRangeList noDataRangeList = mRasterLayer->dataProvider()->userNoDataValues( 1 );
109+
QgsDebugMsg( QString( "noDataRangeList.size = %1" ).arg( noDataRangeList.size() ) );
110+
if ( !noDataRangeList.isEmpty() )
111+
{
112+
leNoDataValue->insert( QgsRasterBlock::printValue( noDataRangeList.value( 0 ).min() ) );
113+
}
114+
else
115+
{
116+
leNoDataValue->insert( QLatin1String( "" ) );
Code has comments. Press enter to view.
117+
}
118+
106119
populateTransparencyTable( mRasterLayer->renderer() );
107120
}
108121

@@ -366,6 +379,25 @@ bool QgsRasterTransparencyWidget::rasterIsMultiBandColor()
366379

367380
void QgsRasterTransparencyWidget::apply()
368381
{
382+
//set NoDataValue
383+
QgsRasterRangeList myNoDataRangeList;
Code has comments. Press enter to view.
384+
if ( "" != leNoDataValue->text() )
Code has comments. Press enter to view.
385+
{
386+
bool myDoubleOk = false;
387+
double myNoDataValue = leNoDataValue->text().toDouble( &myDoubleOk );
388+
if ( myDoubleOk )
389+
{
390+
QgsRasterRange myNoDataRange( myNoDataValue, myNoDataValue );
391+
myNoDataRangeList << myNoDataRange;
392+
}
393+
}
394+
for ( int bandNo = 1; bandNo <= mRasterLayer->dataProvider()->bandCount(); bandNo++ )
395+
{
396+
mRasterLayer->dataProvider()->setUserNoDataValue( bandNo, myNoDataRangeList );
397+
mRasterLayer->dataProvider()->setUseSourceNoDataValue( bandNo, mSrcNoDataValueCheckBox->isChecked() );
398+
}
399+
400+
//transparency settings
369401
QgsRasterRenderer *rasterRenderer = mRasterLayer->renderer();
370402
if ( rasterRenderer )
371403
{

0 commit comments

Comments
 (0)
Please sign in to comment.