@@ -500,16 +500,7 @@ void QgsProjectFileTransform::transform1800to1900()
500
500
rasterRendererElem.setAttribute ( " alphaBand" , -1 );
501
501
502
502
// gray band is used for several renderers
503
- int grayBand = -1 ;
504
- QDomElement grayBandNameElem = rasterPropertiesElem.firstChildElement ( " mGrayBandName" );
505
- if ( !grayBandNameElem.isNull () )
506
- {
507
- grayBand = rasterLayer.bandNumber ( grayBandNameElem.text () );
508
- if ( grayBand == 0 )
509
- {
510
- grayBand = -1 ;
511
- }
512
- }
503
+ int grayBand = rasterBandNumber ( rasterPropertiesElem, " mGrayBandName" , &rasterLayer );
513
504
514
505
// convert renderer specific properties
515
506
QString drawingStyle = rasterPropertiesElem.firstChildElement ( " mDrawingStyle" ).text ();
@@ -599,7 +590,7 @@ void QgsProjectFileTransform::transform1800to1900()
599
590
{
600
591
colorRampEntryElem = colorRampEntryList.at ( i ).toElement ();
601
592
QDomElement newPaletteElem = mDom .createElement ( " paletteEntry" );
602
- int value = ( int )( colorRampEntryElem.attribute ( " value" ).toDouble () );
593
+ value = ( int )( colorRampEntryElem.attribute ( " value" ).toDouble () );
603
594
newPaletteElem.setAttribute ( " value" , value );
604
595
red = colorRampEntryElem.attribute ( " red" ).toInt ();
605
596
green = colorRampEntryElem.attribute ( " green" ).toInt ();
@@ -609,6 +600,18 @@ void QgsProjectFileTransform::transform1800to1900()
609
600
}
610
601
rasterRendererElem.appendChild ( newColorPaletteElem );
611
602
}
603
+ else if ( drawingStyle == " MultiBandColor" )
604
+ {
605
+ rasterRendererElem.setAttribute ( " type" , " multibandcolor" );
606
+
607
+ // red band, green band, blue band
608
+ int redBand = rasterBandNumber ( rasterPropertiesElem, " mRedBandName" , &rasterLayer );
609
+ int greenBand = rasterBandNumber ( rasterPropertiesElem, " mGreenBandName" , &rasterLayer );
610
+ int blueBand = rasterBandNumber ( rasterPropertiesElem, " mBlueBandName" , &rasterLayer );
611
+ rasterRendererElem.setAttribute ( " redBand" , redBand );
612
+ rasterRendererElem.setAttribute ( " greenBand" , greenBand );
613
+ rasterRendererElem.setAttribute ( " blueBand" , blueBand );
614
+ }
612
615
else // todo: multiband color
613
616
{
614
617
return ;
@@ -623,6 +626,27 @@ void QgsProjectFileTransform::transform1800to1900()
623
626
QgsDebugMsg ( mDom .toString () );
624
627
}
625
628
629
+ int QgsProjectFileTransform::rasterBandNumber ( const QDomElement& rasterPropertiesElem, const QString bandName,
630
+ QgsRasterLayer* rlayer )
631
+ {
632
+ if ( !rlayer )
633
+ {
634
+ return -1 ;
635
+ }
636
+
637
+ int band = -1 ;
638
+ QDomElement rasterBandElem = rasterPropertiesElem.firstChildElement ( bandName );
639
+ if ( !rasterBandElem.isNull () )
640
+ {
641
+ band = rlayer->bandNumber ( rasterBandElem.text () );
642
+ if ( band == 0 )
643
+ {
644
+ band = -1 ;
645
+ }
646
+ }
647
+ return band;
648
+ }
649
+
626
650
void QgsProjectFileTransform::transformContrastEnhancement ( QDomDocument& doc, const QDomElement& rasterproperties, QDomElement& rendererElem )
627
651
{
628
652
if ( rasterproperties.isNull () || rendererElem.isNull () )
0 commit comments