Skip to content

Commit bbf834a

Browse files
committedApr 14, 2012
More raster project file transformation
1 parent cf431b1 commit bbf834a

File tree

2 files changed

+38
-11
lines changed

2 files changed

+38
-11
lines changed
 

‎src/core/qgsprojectfiletransform.cpp

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -500,16 +500,7 @@ void QgsProjectFileTransform::transform1800to1900()
500500
rasterRendererElem.setAttribute( "alphaBand", -1 );
501501

502502
//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 );
513504

514505
//convert renderer specific properties
515506
QString drawingStyle = rasterPropertiesElem.firstChildElement( "mDrawingStyle" ).text();
@@ -599,7 +590,7 @@ void QgsProjectFileTransform::transform1800to1900()
599590
{
600591
colorRampEntryElem = colorRampEntryList.at( i ).toElement();
601592
QDomElement newPaletteElem = mDom.createElement( "paletteEntry" );
602-
int value = ( int )( colorRampEntryElem.attribute( "value" ).toDouble() );
593+
value = ( int )( colorRampEntryElem.attribute( "value" ).toDouble() );
603594
newPaletteElem.setAttribute( "value", value );
604595
red = colorRampEntryElem.attribute( "red" ).toInt();
605596
green = colorRampEntryElem.attribute( "green" ).toInt();
@@ -609,6 +600,18 @@ void QgsProjectFileTransform::transform1800to1900()
609600
}
610601
rasterRendererElem.appendChild( newColorPaletteElem );
611602
}
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+
}
612615
else //todo: multiband color
613616
{
614617
return;
@@ -623,6 +626,27 @@ void QgsProjectFileTransform::transform1800to1900()
623626
QgsDebugMsg( mDom.toString() );
624627
}
625628

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+
626650
void QgsProjectFileTransform::transformContrastEnhancement( QDomDocument& doc, const QDomElement& rasterproperties, QDomElement& rendererElem )
627651
{
628652
if ( rasterproperties.isNull() || rendererElem.isNull() )

‎src/core/qgsprojectfiletransform.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
#include <vector>
3232
#include "qgsprojectversion.h"
3333

34+
class QgsRasterLayer;
35+
3436
class QgsProjectFileTransform
3537
{
3638
public:
@@ -84,6 +86,7 @@ class QgsProjectFileTransform
8486
void transform1800to1900();
8587

8688
//helper functions
89+
int rasterBandNumber( const QDomElement& rasterPropertiesElem, const QString bandName, QgsRasterLayer* rlayer );
8790
void transformContrastEnhancement( QDomDocument& doc, const QDomElement& rasterproperties, QDomElement& rendererElem );
8891
void transformRasterTransparency( QDomDocument& doc, const QDomElement& orig, QDomElement& rendererElem );
8992
};

0 commit comments

Comments
 (0)
Please sign in to comment.