Skip to content

Commit f1a742c

Browse files
committed
Implement readXML for multiband color renderer
1 parent 7a43e45 commit f1a742c

File tree

3 files changed

+63
-1
lines changed

3 files changed

+63
-1
lines changed

src/core/raster/qgscontrastenhancement.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -376,3 +376,22 @@ void QgsContrastEnhancement::writeXML( QDomDocument& doc, QDomElement& parentEle
376376
algorithmElem.appendChild( algorithmText );
377377
parentElem.appendChild( algorithmElem );
378378
}
379+
380+
void QgsContrastEnhancement::readXML( const QDomElement& elem )
381+
{
382+
QDomElement minValueElem = elem.firstChildElement( "minValue" );
383+
if ( !minValueElem.isNull() )
384+
{
385+
mMinimumValue = minValueElem.text().toInt();
386+
}
387+
QDomElement maxValueElem = elem.firstChildElement( "maxValue" );
388+
if ( !maxValueElem.isNull() )
389+
{
390+
mMaximumValue = maxValueElem.text().toInt();
391+
}
392+
QDomElement algorithmElem = elem.firstChildElement( "algorithm" );
393+
if ( !algorithmElem.isNull() )
394+
{
395+
setContrastEnhancementAlgorithm(( ContrastEnhancementAlgorithm )( algorithmElem.text().toInt() ) );
396+
}
397+
}

src/core/raster/qgscontrastenhancement.h

+2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ class CORE_EXPORT QgsContrastEnhancement
123123

124124
void writeXML( QDomDocument& doc, QDomElement& parentElem ) const;
125125

126+
void readXML( const QDomElement& elem );
127+
126128
private:
127129
/** \brief Current contrast enhancement algorithm */
128130
ContrastEnhancementAlgorithm mContrastEnhancementAlgorithm;

src/core/raster/qgsmultibandcolorrenderer.cpp

+42-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,48 @@ void QgsMultiBandColorRenderer::setBlueContrastEnhancement( QgsContrastEnhanceme
5757

5858
QgsRasterRenderer* QgsMultiBandColorRenderer::create( const QDomElement& elem, QgsRasterDataProvider* provider )
5959
{
60-
return 0;
60+
if ( elem.isNull() )
61+
{
62+
return 0;
63+
}
64+
65+
//red band, green band, blue band
66+
int redBand = elem.attribute( "redBand", "-1" ).toInt();
67+
int greenBand = elem.attribute( "greenBand", "-1" ).toInt();
68+
int blueBand = elem.attribute( "blueBand", "-1" ).toInt();
69+
70+
//contrast enhancements
71+
QgsContrastEnhancement* redContrastEnhancement = 0;
72+
QDomElement redContrastElem = elem.firstChildElement( "redContrastEnhancement" );
73+
if ( !redContrastElem.isNull() )
74+
{
75+
redContrastEnhancement = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )(
76+
provider->dataType( redBand ) ) );
77+
redContrastEnhancement->readXML( redContrastElem );
78+
}
79+
80+
QgsContrastEnhancement* greenContrastEnhancement = 0;
81+
QDomElement greenContrastElem = elem.firstChildElement( "greenContrastEnhancement" );
82+
if ( !greenContrastElem.isNull() )
83+
{
84+
greenContrastEnhancement = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )(
85+
provider->dataType( greenBand ) ) );
86+
greenContrastEnhancement->readXML( greenContrastElem );
87+
}
88+
89+
QgsContrastEnhancement* blueContrastEnhancement = 0;
90+
QDomElement blueContrastElem = elem.firstChildElement( "blueContrastEnhancement" );
91+
if ( !blueContrastElem.isNull() )
92+
{
93+
blueContrastEnhancement = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )(
94+
provider->dataType( blueBand ) ) );
95+
blueContrastEnhancement->readXML( blueContrastElem );
96+
}
97+
98+
QgsRasterRenderer* r = new QgsMultiBandColorRenderer( provider, redBand, greenBand, blueBand, redContrastEnhancement,
99+
greenContrastEnhancement, blueContrastEnhancement );
100+
r->readXML( elem );
101+
return r;
61102
}
62103

63104
void QgsMultiBandColorRenderer::draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel )

0 commit comments

Comments
 (0)