@@ -445,41 +445,58 @@ void QgsRasterLayerProperties::populateTransparencyTable( QgsRasterRenderer* ren
445
445
tableTransparency->setColumnCount ( 0 );
446
446
tableTransparency->setRowCount ( 0 );
447
447
448
- QList< int > bandList = renderer->usesBands ();
449
- tableTransparency->setColumnCount ( bandList. size () + 1 );
450
- for ( int i = 0 ; i < bandList. size (); ++i )
448
+ int nBands = renderer->usesBands (). size ();
449
+ tableTransparency->setColumnCount ( nBands + 1 );
450
+ if ( nBands == 3 )
451
451
{
452
- tableTransparency->setHorizontalHeaderItem ( i, new QTableWidgetItem ( QString::number ( bandList.at ( i ) ) ) );
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
458
+ {
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" ) ) );
453
471
}
454
- tableTransparency->setHorizontalHeaderItem ( bandList.size (), new QTableWidgetItem ( tr ( " Percent Transparent" ) ) );
455
472
456
473
const QgsRasterTransparency* rasterTransparency = renderer->rasterTransparency ();
457
474
if ( !rasterTransparency )
458
475
{
459
476
return ;
460
477
}
461
478
462
- if ( bandList. count () == 1 )
479
+ if ( nBands == 1 )
463
480
{
464
481
QList<QgsRasterTransparency::TransparentSingleValuePixel> pixelList = rasterTransparency->transparentSingleValuePixelList ();
465
482
for ( int i = 0 ; i < pixelList.size (); ++i )
466
483
{
467
484
tableTransparency->insertRow ( i );
468
- QTableWidgetItem* grayItem = new QTableWidgetItem ( QString::number ( pixelList[i].pixelValue ) );
485
+ QTableWidgetItem* grayItem = new QTableWidgetItem ( QString::number ( pixelList[i].pixelValue , ' f ' ) );
469
486
QTableWidgetItem* percentItem = new QTableWidgetItem ( QString::number ( pixelList[i].percentTransparent ) );
470
487
tableTransparency->setItem ( i, 0 , grayItem );
471
488
tableTransparency->setItem ( i, 1 , percentItem );
472
489
}
473
490
}
474
- else if ( bandList. count () == 3 )
491
+ else if ( nBands == 3 )
475
492
{
476
493
QList<QgsRasterTransparency::TransparentThreeValuePixel> pixelList = rasterTransparency->transparentThreeValuePixelList ();
477
494
for ( int i = 0 ; i < pixelList.size (); ++i )
478
495
{
479
496
tableTransparency->insertRow ( i );
480
- QTableWidgetItem* redItem = new QTableWidgetItem ( QString::number ( pixelList[i].red ) );
481
- QTableWidgetItem* greenItem = new QTableWidgetItem ( QString::number ( pixelList[i].green ) );
482
- 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 ' ) );
483
500
QTableWidgetItem* transparentItem = new QTableWidgetItem ( QString::number ( pixelList[i].percentTransparent ) );
484
501
485
502
tableTransparency->setItem ( i, 0 , redItem );
@@ -1117,10 +1134,12 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
1117
1134
int nBands = r->usesBands ().size ();
1118
1135
delete r;
1119
1136
1137
+ tableTransparency->clear ();
1138
+ tableTransparency->setRowCount ( 0 );
1139
+ tableTransparency->setColumnCount ( nBands + 1 );
1140
+
1120
1141
if ( nBands == 3 )
1121
1142
{
1122
- tableTransparency->clear ();
1123
- tableTransparency->setColumnCount ( 4 );
1124
1143
tableTransparency->setHorizontalHeaderItem ( 0 , new QTableWidgetItem ( tr ( " Red" ) ) );
1125
1144
tableTransparency->setHorizontalHeaderItem ( 1 , new QTableWidgetItem ( tr ( " Green" ) ) );
1126
1145
tableTransparency->setHorizontalHeaderItem ( 2 , new QTableWidgetItem ( tr ( " Blue" ) ) );
@@ -1131,13 +1150,11 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
1131
1150
tableTransparency->setItem ( 0 , 0 , new QTableWidgetItem ( QString::number ( mRasterLayer ->noDataValue (), ' f' ) ) );
1132
1151
tableTransparency->setItem ( 0 , 1 , new QTableWidgetItem ( QString::number ( mRasterLayer ->noDataValue (), ' f' ) ) );
1133
1152
tableTransparency->setItem ( 0 , 2 , new QTableWidgetItem ( QString::number ( mRasterLayer ->noDataValue (), ' f' ) ) );
1134
- tableTransparency->setItem ( 0 , 3 , new QTableWidgetItem ( " 100.0 " ) );
1153
+ tableTransparency->setItem ( 0 , 3 , new QTableWidgetItem ( " 100" ) );
1135
1154
}
1136
1155
}
1137
1156
else // 1 band
1138
1157
{
1139
- tableTransparency->clear ();
1140
- tableTransparency->setColumnCount ( 2 );
1141
1158
if ( QgsRasterLayer::PalettedColor != mRasterLayer ->drawingStyle () &&
1142
1159
QgsRasterLayer::PalettedSingleBandGray != mRasterLayer ->drawingStyle () &&
1143
1160
QgsRasterLayer::PalettedSingleBandPseudoColor != mRasterLayer ->drawingStyle () &&
@@ -1155,9 +1172,12 @@ void QgsRasterLayerProperties::on_pbnDefaultValues_clicked()
1155
1172
{
1156
1173
tableTransparency->insertRow ( tableTransparency->rowCount () );
1157
1174
tableTransparency->setItem ( 0 , 0 , new QTableWidgetItem ( QString::number ( mRasterLayer ->noDataValue (), ' f' ) ) );
1158
- tableTransparency->setItem ( 0 , 1 , new QTableWidgetItem ( " 100.0 " ) );
1175
+ tableTransparency->setItem ( 0 , 1 , new QTableWidgetItem ( " 100" ) );
1159
1176
}
1160
1177
}
1178
+
1179
+ tableTransparency->resizeColumnsToContents ();
1180
+ tableTransparency->resizeRowsToContents ();
1161
1181
}
1162
1182
1163
1183
void QgsRasterLayerProperties::on_pbnExportTransparentPixelValues_clicked ()
0 commit comments