@@ -1298,9 +1298,9 @@ void QgsRasterLayerProperties::pixelSelected( const QgsPoint& canvasPoint )
1298
1298
mRasterLayer ->identify ( mMapCanvas ->mapRenderer ()->mapToLayerCoordinates ( mRasterLayer , canvasPoint ), myPixelMap );
1299
1299
1300
1300
QList<int > bands = renderer->usesBands ();
1301
- tableTransparency->insertRow ( tableTransparency->rowCount () );
1302
- setTransparencyCell ( tableTransparency->rowCount () - 1 , tableTransparency->columnCount () - 1 , 100 );
1301
+ delete renderer;
1303
1302
1303
+ QList<double > values;
1304
1304
for ( int i = 0 ; i < bands.size (); ++i )
1305
1305
{
1306
1306
QMap< int , QString >::const_iterator pixelResult = myPixelMap.find ( bands.at ( i ) );
@@ -1309,20 +1309,31 @@ void QgsRasterLayerProperties::pixelSelected( const QgsPoint& canvasPoint )
1309
1309
QString value = pixelResult.value ();
1310
1310
if ( value != tr ( " out of extent" ) )
1311
1311
{
1312
- setTransparencyCell ( tableTransparency->rowCount () - 1 , i, value.toDouble () );
1312
+ QgsDebugMsg ( QString ( " Is it %1 of band %2 nodata?" ).arg ( value ).arg ( bands.at ( i ) ) );
1313
+ if ( value == tr ( " null (no data)" ) || // Very bad! TODO: improve identify
1314
+ mRasterLayer ->dataProvider ()->isNoDataValue ( bands.at ( i ), value.toDouble () ) )
1315
+ {
1316
+ return ; // Dont add nodata, transparent anyway
1317
+ }
1318
+ values.append ( value.toDouble () );
1313
1319
}
1314
1320
}
1315
1321
}
1316
1322
if ( bands.size () == 1 )
1317
1323
{
1318
1324
// Set 'to'
1319
- setTransparencyCell ( tableTransparency-> rowCount () - 1 , 1 , transparencyCellValue ( tableTransparency-> rowCount () - 1 , 0 ) );
1325
+ values. insert ( 1 , values. value ( 0 ) );
1320
1326
}
1327
+ tableTransparency->insertRow ( tableTransparency->rowCount () );
1328
+ for ( int i = 0 ; i < values.size (); i++ )
1329
+ {
1330
+ setTransparencyCell ( tableTransparency->rowCount () - 1 , i, values.value ( i ) );
1331
+ }
1332
+ setTransparencyCell ( tableTransparency->rowCount () - 1 , tableTransparency->columnCount () - 1 , 100 );
1321
1333
}
1322
1334
1323
1335
tableTransparency->resizeColumnsToContents ();
1324
1336
tableTransparency->resizeRowsToContents ();
1325
- delete renderer;
1326
1337
}
1327
1338
1328
1339
void QgsRasterLayerProperties::sliderTransparency_valueChanged ( int theValue )
0 commit comments