Skip to content

Commit ee06512

Browse files
committedMar 24, 2012
Fix initialisation of transparency list
1 parent a1eca86 commit ee06512

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed
 

‎src/app/qgsrasterlayerproperties.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -282,13 +282,21 @@ QgsRasterLayerProperties::~QgsRasterLayerProperties()
282282
void QgsRasterLayerProperties::populateTransparencyTable()
283283
{
284284
QgsDebugMsg( "entering." );
285+
if ( !mRasterLayer )
286+
{
287+
return;
288+
}
289+
QgsRasterRenderer* renderer = mRasterLayer->renderer();
290+
if ( !renderer )
291+
{
292+
return;
293+
}
294+
const QgsRasterTransparency* rasterTransparency = renderer->rasterTransparency();
285295

286296
//Clear existing color transparency list
287297
//NOTE: May want to just tableTransparency->clearContents() and fill back in after checking to be sure list and table are the same size
288298
QString myNumberFormatter;
289-
if ( /*rbtnThreeBand->isChecked() && */
290-
QgsRasterLayer::PalettedColor != mRasterLayer->drawingStyle() &&
291-
QgsRasterLayer::PalettedMultiBandColor != mRasterLayer->drawingStyle() )
299+
if ( mRasterLayer->bandCount() == 3 )
292300
{
293301
for ( int myTableRunner = tableTransparency->rowCount() - 1; myTableRunner >= 0; myTableRunner-- )
294302
{
@@ -302,8 +310,9 @@ void QgsRasterLayerProperties::populateTransparencyTable()
302310
tableTransparency->setHorizontalHeaderItem( 2, new QTableWidgetItem( tr( "Blue" ) ) );
303311
tableTransparency->setHorizontalHeaderItem( 3, new QTableWidgetItem( tr( "Percent Transparent" ) ) );
304312

313+
305314
//populate three band transparency list
306-
QList<QgsRasterTransparency::TransparentThreeValuePixel> myTransparentThreeValuePixelList = mRasterLayer->rasterTransparency()->transparentThreeValuePixelList();
315+
QList<QgsRasterTransparency::TransparentThreeValuePixel> myTransparentThreeValuePixelList = rasterTransparency->transparentThreeValuePixelList();
307316
for ( int myListRunner = 0; myListRunner < myTransparentThreeValuePixelList.count(); myListRunner++ )
308317
{
309318
tableTransparency->insertRow( myListRunner );
@@ -318,7 +327,7 @@ void QgsRasterLayerProperties::populateTransparencyTable()
318327
tableTransparency->setItem( myListRunner, 3, myPercentTransparentItem );
319328
}
320329
}
321-
else
330+
else if ( mRasterLayer->bandCount() == 1 )
322331
{
323332
//Clear existing single band or palette values transparency list
324333
for ( int myTableRunner = tableTransparency->rowCount() - 1; myTableRunner >= 0; myTableRunner-- )
@@ -342,7 +351,7 @@ void QgsRasterLayerProperties::populateTransparencyTable()
342351
tableTransparency->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Percent Transparent" ) ) );
343352

344353
//populate gray transparency list
345-
QList<QgsRasterTransparency::TransparentSingleValuePixel> myTransparentSingleValuePixelList = mRasterLayer->rasterTransparency()->transparentSingleValuePixelList();
354+
QList<QgsRasterTransparency::TransparentSingleValuePixel> myTransparentSingleValuePixelList = rasterTransparency->transparentSingleValuePixelList();
346355
for ( int myListRunner = 0; myListRunner < myTransparentSingleValuePixelList.count(); myListRunner++ )
347356
{
348357
tableTransparency->insertRow( myListRunner );

‎src/core/raster/qgsrasterlayer.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2304,6 +2304,8 @@ void QgsRasterLayer::setDataProvider( QString const & provider,
23042304
}
23052305

23062306

2307+
2308+
23072309
QgsDebugMsg( "Instantiated the data provider plugin"
23082310
+ QString( " with layer list of " ) + layers.join( ", " )
23092311
+ " and style list of " + styles.join( ", " )
@@ -2346,6 +2348,13 @@ void QgsRasterLayer::setDataProvider( QString const & provider,
23462348
// upper case the first letter of the layer name
23472349
QgsDebugMsg( "mLayerName: " + name() );
23482350

2351+
mValidNoDataValue = mDataProvider->isNoDataValueValid();
2352+
if ( mValidNoDataValue )
2353+
{
2354+
mRasterTransparency.initializeTransparentPixelList( mNoDataValue, mNoDataValue, mNoDataValue );
2355+
mRasterTransparency.initializeTransparentPixelList( mNoDataValue );
2356+
}
2357+
23492358
// set up the raster drawing style
23502359
setDrawingStyle( MultiBandColor ); //sensible default
23512360

@@ -2518,13 +2527,6 @@ void QgsRasterLayer::setDataProvider( QString const & provider,
25182527
// TODO move to provider
25192528
mLastModified = lastModified( mDataSource );
25202529

2521-
mValidNoDataValue = mDataProvider->isNoDataValueValid();
2522-
if ( mValidNoDataValue )
2523-
{
2524-
mRasterTransparency.initializeTransparentPixelList( mNoDataValue, mNoDataValue, mNoDataValue );
2525-
mRasterTransparency.initializeTransparentPixelList( mNoDataValue );
2526-
}
2527-
25282530
// Connect provider signals
25292531
connect(
25302532
mDataProvider, SIGNAL( progress( int, double, QString ) ),

0 commit comments

Comments
 (0)
Please sign in to comment.