Skip to content

Commit

Permalink
More raster project file transformation
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent committed Apr 14, 2012
1 parent cf431b1 commit bbf834a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 11 deletions.
46 changes: 35 additions & 11 deletions src/core/qgsprojectfiletransform.cpp
Expand Up @@ -500,16 +500,7 @@ void QgsProjectFileTransform::transform1800to1900()
rasterRendererElem.setAttribute( "alphaBand", -1 );

//gray band is used for several renderers
int grayBand = -1;
QDomElement grayBandNameElem = rasterPropertiesElem.firstChildElement( "mGrayBandName" );
if ( !grayBandNameElem.isNull() )
{
grayBand = rasterLayer.bandNumber( grayBandNameElem.text() );
if ( grayBand == 0 )
{
grayBand = -1;
}
}
int grayBand = rasterBandNumber( rasterPropertiesElem, "mGrayBandName", &rasterLayer );

//convert renderer specific properties
QString drawingStyle = rasterPropertiesElem.firstChildElement( "mDrawingStyle" ).text();
Expand Down Expand Up @@ -599,7 +590,7 @@ void QgsProjectFileTransform::transform1800to1900()
{
colorRampEntryElem = colorRampEntryList.at( i ).toElement();
QDomElement newPaletteElem = mDom.createElement( "paletteEntry" );
int value = ( int )( colorRampEntryElem.attribute( "value" ).toDouble() );
value = ( int )( colorRampEntryElem.attribute( "value" ).toDouble() );
newPaletteElem.setAttribute( "value", value );
red = colorRampEntryElem.attribute( "red" ).toInt();
green = colorRampEntryElem.attribute( "green" ).toInt();
Expand All @@ -609,6 +600,18 @@ void QgsProjectFileTransform::transform1800to1900()
}
rasterRendererElem.appendChild( newColorPaletteElem );
}
else if ( drawingStyle == "MultiBandColor" )
{
rasterRendererElem.setAttribute( "type", "multibandcolor" );

//red band, green band, blue band
int redBand = rasterBandNumber( rasterPropertiesElem, "mRedBandName", &rasterLayer );
int greenBand = rasterBandNumber( rasterPropertiesElem, "mGreenBandName", &rasterLayer );
int blueBand = rasterBandNumber( rasterPropertiesElem, "mBlueBandName", &rasterLayer );
rasterRendererElem.setAttribute( "redBand", redBand );
rasterRendererElem.setAttribute( "greenBand", greenBand );
rasterRendererElem.setAttribute( "blueBand", blueBand );
}
else //todo: multiband color
{
return;
Expand All @@ -623,6 +626,27 @@ void QgsProjectFileTransform::transform1800to1900()
QgsDebugMsg( mDom.toString() );
}

int QgsProjectFileTransform::rasterBandNumber( const QDomElement& rasterPropertiesElem, const QString bandName,
QgsRasterLayer* rlayer )
{
if ( !rlayer )
{
return -1;
}

int band = -1;
QDomElement rasterBandElem = rasterPropertiesElem.firstChildElement( bandName );
if ( !rasterBandElem.isNull() )
{
band = rlayer->bandNumber( rasterBandElem.text() );
if ( band == 0 )
{
band = -1;
}
}
return band;
}

void QgsProjectFileTransform::transformContrastEnhancement( QDomDocument& doc, const QDomElement& rasterproperties, QDomElement& rendererElem )
{
if ( rasterproperties.isNull() || rendererElem.isNull() )
Expand Down
3 changes: 3 additions & 0 deletions src/core/qgsprojectfiletransform.h
Expand Up @@ -31,6 +31,8 @@
#include <vector>
#include "qgsprojectversion.h"

class QgsRasterLayer;

class QgsProjectFileTransform
{
public:
Expand Down Expand Up @@ -84,6 +86,7 @@ class QgsProjectFileTransform
void transform1800to1900();

//helper functions
int rasterBandNumber( const QDomElement& rasterPropertiesElem, const QString bandName, QgsRasterLayer* rlayer );
void transformContrastEnhancement( QDomDocument& doc, const QDomElement& rasterproperties, QDomElement& rendererElem );
void transformRasterTransparency( QDomDocument& doc, const QDomElement& orig, QDomElement& rendererElem );
};
Expand Down

0 comments on commit bbf834a

Please sign in to comment.