@@ -244,29 +244,25 @@ QgsRasterLayerProperties::QgsRasterLayerProperties( QgsMapLayer* lyr, QgsMapCanv
244
244
cboxTransparencyBand->addItem ( tr ( " None" ), -1 );
245
245
int nBands = provider->bandCount ();
246
246
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
257
248
{
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" )
259
253
{
260
- bandName = provider->generateBandName ( i );
261
- cboxTransparencyBand->addItem ( bandName, i );
254
+ bandName.append ( QString ( " (%1)" ).arg ( colorInterp ) );
262
255
}
256
+ cboxTransparencyBand->addItem ( bandName, i );
263
257
}
258
+
264
259
if ( renderer )
265
260
{
266
261
cboxTransparencyBand->setCurrentIndex ( cboxTransparencyBand->findData ( renderer->alphaBand () ) );
267
262
}
268
263
}
269
264
265
+
270
266
// insert renderer widgets into registry
271
267
QgsRasterRendererRegistry::instance ()->insertWidgetFunction ( " paletted" , QgsPalettedRendererWidget::create );
272
268
QgsRasterRendererRegistry::instance ()->insertWidgetFunction ( " multibandcolor" , QgsMultiBandColorRendererWidget::create );
@@ -449,41 +445,58 @@ void QgsRasterLayerProperties::populateTransparencyTable( QgsRasterRenderer* ren
449
445
tableTransparency->setColumnCount ( 0 );
450
446
tableTransparency->setRowCount ( 0 );
451
447
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
455
458
{
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" ) ) );
457
471
}
458
- tableTransparency->setHorizontalHeaderItem ( bandList.size (), new QTableWidgetItem ( tr ( " Percent Transparent" ) ) );
459
472
460
473
const QgsRasterTransparency* rasterTransparency = renderer->rasterTransparency ();
461
474
if ( !rasterTransparency )
462
475
{
463
476
return ;
464
477
}
465
478
466
- if ( bandList. count () == 1 )
479
+ if ( nBands == 1 )
467
480
{
468
481
QList<QgsRasterTransparency::TransparentSingleValuePixel> pixelList = rasterTransparency->transparentSingleValuePixelList ();
469
482
for ( int i = 0 ; i < pixelList.size (); ++i )
470
483
{
471
484
tableTransparency->insertRow ( i );
472
- QTableWidgetItem* grayItem = new QTableWidgetItem ( QString::number ( pixelList[i].pixelValue ) );
485
+ QTableWidgetItem* grayItem = new QTableWidgetItem ( QString::number ( pixelList[i].pixelValue , ' f ' ) );
473
486
QTableWidgetItem* percentItem = new QTableWidgetItem ( QString::number ( pixelList[i].percentTransparent ) );
474
487
tableTransparency->setItem ( i, 0 , grayItem );
475
488
tableTransparency->setItem ( i, 1 , percentItem );
476
489
}
477
490
}
478
- else if ( bandList. count () == 3 )
491
+ else if ( nBands == 3 )
479
492
{
480
493
QList<QgsRasterTransparency::TransparentThreeValuePixel> pixelList = rasterTransparency->transparentThreeValuePixelList ();
481
494
for ( int i = 0 ; i < pixelList.size (); ++i )
482
495
{
483
496
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 ' ) );
487
500
QTableWidgetItem* transparentItem = new QTableWidgetItem ( QString::number ( pixelList[i].percentTransparent ) );
488
501
489
502
tableTransparency->setItem ( i, 0 , redItem );
@@ -1121,10 +1134,12 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
1121
1134
int nBands = r->usesBands ().size ();
1122
1135
delete r;
1123
1136
1137
+ tableTransparency->clear ();
1138
+ tableTransparency->setRowCount ( 0 );
1139
+ tableTransparency->setColumnCount ( nBands + 1 );
1140
+
1124
1141
if ( nBands == 3 )
1125
1142
{
1126
- tableTransparency->clear ();
1127
- tableTransparency->setColumnCount ( 4 );
1128
1143
tableTransparency->setHorizontalHeaderItem ( 0 , new QTableWidgetItem ( tr ( " Red" ) ) );
1129
1144
tableTransparency->setHorizontalHeaderItem ( 1 , new QTableWidgetItem ( tr ( " Green" ) ) );
1130
1145
tableTransparency->setHorizontalHeaderItem ( 2 , new QTableWidgetItem ( tr ( " Blue" ) ) );
@@ -1135,13 +1150,11 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
1135
1150
tableTransparency->setItem ( 0 , 0 , new QTableWidgetItem ( QString::number ( mRasterLayer ->noDataValue (), ' f' ) ) );
1136
1151
tableTransparency->setItem ( 0 , 1 , new QTableWidgetItem ( QString::number ( mRasterLayer ->noDataValue (), ' f' ) ) );
1137
1152
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" ) );
1139
1154
}
1140
1155
}
1141
1156
else // 1 band
1142
1157
{
1143
- tableTransparency->clear ();
1144
- tableTransparency->setColumnCount ( 2 );
1145
1158
if ( QgsRasterLayer::PalettedColor != mRasterLayer ->drawingStyle () &&
1146
1159
QgsRasterLayer::PalettedSingleBandGray != mRasterLayer ->drawingStyle () &&
1147
1160
QgsRasterLayer::PalettedSingleBandPseudoColor != mRasterLayer ->drawingStyle () &&
@@ -1159,9 +1172,12 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
1159
1172
{
1160
1173
tableTransparency->insertRow ( tableTransparency->rowCount () );
1161
1174
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" ) );
1163
1176
}
1164
1177
}
1178
+
1179
+ tableTransparency->resizeColumnsToContents ();
1180
+ tableTransparency->resizeRowsToContents ();
1165
1181
}
1166
1182
1167
1183
void QgsRasterLayerProperties::on_pbnExportTransparentPixelValues_clicked ()
0 commit comments