@@ -57,7 +57,48 @@ void QgsMultiBandColorRenderer::setBlueContrastEnhancement( QgsContrastEnhanceme
57
57
58
58
QgsRasterRenderer* QgsMultiBandColorRenderer::create ( const QDomElement& elem, QgsRasterDataProvider* provider )
59
59
{
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;
61
102
}
62
103
63
104
void QgsMultiBandColorRenderer::draw ( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel )
0 commit comments