Skip to content

Commit a0a0e04

Browse files
committed
Merge branch 'raster_fixes'
2 parents 87bdff9 + f84d965 commit a0a0e04

File tree

3 files changed

+93
-62
lines changed

3 files changed

+93
-62
lines changed

src/app/qgsrasterlayerproperties.cpp

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -244,29 +244,25 @@ QgsRasterLayerProperties::QgsRasterLayerProperties( QgsMapLayer* lyr, QgsMapCanv
244244
cboxTransparencyBand->addItem( tr( "None" ), -1 );
245245
int nBands = provider->bandCount();
246246
QString bandName;
247-
248-
if ( nBands == 1 )
249-
{
250-
/* Color interpretation name only makes sense for 1-band rasters */
251-
bandName = provider->colorInterpretationName( 1 );
252-
if ( bandName == "Undefined" )
253-
bandName = provider->generateBandName( 1 );
254-
cboxTransparencyBand->addItem( bandName, 1 );
255-
}
256-
else if ( nBands > 1 )
247+
for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1
257248
{
258-
for ( int i = 1; i <= nBands; ++i ) //band numbering seem to start at 1
249+
bandName = provider->generateBandName( i );
250+
251+
QString colorInterp = provider->colorInterpretationName( i );
252+
if ( colorInterp != "Undefined" )
259253
{
260-
bandName = provider->generateBandName( i );
261-
cboxTransparencyBand->addItem( bandName, i );
254+
bandName.append( QString( " (%1)" ).arg( colorInterp ) );
262255
}
256+
cboxTransparencyBand->addItem( bandName, i );
263257
}
258+
264259
if ( renderer )
265260
{
266261
cboxTransparencyBand->setCurrentIndex( cboxTransparencyBand->findData( renderer->alphaBand() ) );
267262
}
268263
}
269264

265+
270266
//insert renderer widgets into registry
271267
QgsRasterRendererRegistry::instance()->insertWidgetFunction( "paletted", QgsPalettedRendererWidget::create );
272268
QgsRasterRendererRegistry::instance()->insertWidgetFunction( "multibandcolor", QgsMultiBandColorRendererWidget::create );
@@ -449,41 +445,58 @@ void QgsRasterLayerProperties::populateTransparencyTable( QgsRasterRenderer* ren
449445
tableTransparency->setColumnCount( 0 );
450446
tableTransparency->setRowCount( 0 );
451447

452-
QList<int> bandList = renderer->usesBands();
453-
tableTransparency->setColumnCount( bandList.size() + 1 );
454-
for ( int i = 0; i < bandList.size(); ++i )
448+
int nBands = renderer->usesBands().size();
449+
tableTransparency->setColumnCount( nBands + 1 );
450+
if ( nBands == 3 )
451+
{
452+
tableTransparency->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Red" ) ) );
453+
tableTransparency->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Green" ) ) );
454+
tableTransparency->setHorizontalHeaderItem( 2, new QTableWidgetItem( tr( "Blue" ) ) );
455+
tableTransparency->setHorizontalHeaderItem( 3, new QTableWidgetItem( tr( "Percent Transparent" ) ) );
456+
}
457+
else //1 band
455458
{
456-
tableTransparency->setHorizontalHeaderItem( i, new QTableWidgetItem( QString::number( bandList.at( i ) ) ) );
459+
if ( QgsRasterLayer::PalettedColor != mRasterLayer->drawingStyle() &&
460+
QgsRasterLayer::PalettedSingleBandGray != mRasterLayer->drawingStyle() &&
461+
QgsRasterLayer::PalettedSingleBandPseudoColor != mRasterLayer->drawingStyle() &&
462+
QgsRasterLayer::PalettedMultiBandColor != mRasterLayer->drawingStyle() )
463+
{
464+
tableTransparency->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Gray" ) ) );
465+
}
466+
else
467+
{
468+
tableTransparency->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Indexed Value" ) ) );
469+
}
470+
tableTransparency->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Percent Transparent" ) ) );
457471
}
458-
tableTransparency->setHorizontalHeaderItem( bandList.size(), new QTableWidgetItem( tr( "Percent Transparent" ) ) );
459472

460473
const QgsRasterTransparency* rasterTransparency = renderer->rasterTransparency();
461474
if ( !rasterTransparency )
462475
{
463476
return;
464477
}
465478

466-
if ( bandList.count() == 1 )
479+
if ( nBands == 1 )
467480
{
468481
QList<QgsRasterTransparency::TransparentSingleValuePixel> pixelList = rasterTransparency->transparentSingleValuePixelList();
469482
for ( int i = 0; i < pixelList.size(); ++i )
470483
{
471484
tableTransparency->insertRow( i );
472-
QTableWidgetItem* grayItem = new QTableWidgetItem( QString::number( pixelList[i].pixelValue ) );
485+
QTableWidgetItem* grayItem = new QTableWidgetItem( QString::number( pixelList[i].pixelValue, 'f' ) );
473486
QTableWidgetItem* percentItem = new QTableWidgetItem( QString::number( pixelList[i].percentTransparent ) );
474487
tableTransparency->setItem( i, 0, grayItem );
475488
tableTransparency->setItem( i, 1, percentItem );
476489
}
477490
}
478-
else if ( bandList.count() == 3 )
491+
else if ( nBands == 3 )
479492
{
480493
QList<QgsRasterTransparency::TransparentThreeValuePixel> pixelList = rasterTransparency->transparentThreeValuePixelList();
481494
for ( int i = 0; i < pixelList.size(); ++i )
482495
{
483496
tableTransparency->insertRow( i );
484-
QTableWidgetItem* redItem = new QTableWidgetItem( QString::number( pixelList[i].red ) );
485-
QTableWidgetItem* greenItem = new QTableWidgetItem( QString::number( pixelList[i].green ) );
486-
QTableWidgetItem* blueItem = new QTableWidgetItem( QString::number( pixelList[i].blue ) );
497+
QTableWidgetItem* redItem = new QTableWidgetItem( QString::number( pixelList[i].red, 'f' ) );
498+
QTableWidgetItem* greenItem = new QTableWidgetItem( QString::number( pixelList[i].green, 'f' ) );
499+
QTableWidgetItem* blueItem = new QTableWidgetItem( QString::number( pixelList[i].blue, 'f' ) );
487500
QTableWidgetItem* transparentItem = new QTableWidgetItem( QString::number( pixelList[i].percentTransparent ) );
488501

489502
tableTransparency->setItem( i, 0, redItem );
@@ -1121,10 +1134,12 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
11211134
int nBands = r->usesBands().size();
11221135
delete r;
11231136

1137+
tableTransparency->clear();
1138+
tableTransparency->setRowCount( 0 );
1139+
tableTransparency->setColumnCount( nBands + 1 );
1140+
11241141
if ( nBands == 3 )
11251142
{
1126-
tableTransparency->clear();
1127-
tableTransparency->setColumnCount( 4 );
11281143
tableTransparency->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Red" ) ) );
11291144
tableTransparency->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Green" ) ) );
11301145
tableTransparency->setHorizontalHeaderItem( 2, new QTableWidgetItem( tr( "Blue" ) ) );
@@ -1135,13 +1150,11 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
11351150
tableTransparency->setItem( 0, 0, new QTableWidgetItem( QString::number( mRasterLayer->noDataValue(), 'f' ) ) );
11361151
tableTransparency->setItem( 0, 1, new QTableWidgetItem( QString::number( mRasterLayer->noDataValue(), 'f' ) ) );
11371152
tableTransparency->setItem( 0, 2, new QTableWidgetItem( QString::number( mRasterLayer->noDataValue(), 'f' ) ) );
1138-
tableTransparency->setItem( 0, 3, new QTableWidgetItem( "100.0" ) );
1153+
tableTransparency->setItem( 0, 3, new QTableWidgetItem( "100" ) );
11391154
}
11401155
}
11411156
else //1 band
11421157
{
1143-
tableTransparency->clear();
1144-
tableTransparency->setColumnCount( 2 );
11451158
if ( QgsRasterLayer::PalettedColor != mRasterLayer->drawingStyle() &&
11461159
QgsRasterLayer::PalettedSingleBandGray != mRasterLayer->drawingStyle() &&
11471160
QgsRasterLayer::PalettedSingleBandPseudoColor != mRasterLayer->drawingStyle() &&
@@ -1159,9 +1172,12 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
11591172
{
11601173
tableTransparency->insertRow( tableTransparency->rowCount() );
11611174
tableTransparency->setItem( 0, 0, new QTableWidgetItem( QString::number( mRasterLayer->noDataValue(), 'f' ) ) );
1162-
tableTransparency->setItem( 0, 1, new QTableWidgetItem( "100.0" ) );
1175+
tableTransparency->setItem( 0, 1, new QTableWidgetItem( "100" ) );
11631176
}
11641177
}
1178+
1179+
tableTransparency->resizeColumnsToContents();
1180+
tableTransparency->resizeRowsToContents();
11651181
}
11661182

11671183
void QgsRasterLayerProperties::on_pbnExportTransparentPixelValues_clicked()

src/gui/raster/qgsrasterrendererwidget.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,13 @@ QString QgsRasterRendererWidget::displayBandName( int band ) const
3434
return name;
3535
}
3636

37-
/* Color interpretation name only makes sense for 1-band rasters */
38-
if ( provider->bandCount() <= 1 )
39-
{
40-
name = provider->colorInterpretationName( band );
41-
if ( name != "Undefined" )
42-
return name;
43-
}
44-
4537
name = provider->generateBandName( band );
4638

39+
QString colorInterp = provider->colorInterpretationName( band );
40+
if ( colorInterp != "Undefined" )
41+
{
42+
name.append( QString( " (%1)" ).arg( colorInterp ) );
43+
}
4744
return name;
4845
}
4946

0 commit comments

Comments
 (0)