147 QDomElement propsElem = pft->
dom().firstChildElement( QStringLiteral(
"qgis" ) ).toElement().firstChildElement( QStringLiteral(
"properties" ) );
148 if ( !propsElem.isNull() )
150 const QDomNodeList srsNodes = propsElem.elementsByTagName( QStringLiteral(
"SpatialRefSys" ) );
152 QDomElement projElem;
153 if ( srsNodes.count() > 0 )
155 srsElem = srsNodes.at( 0 ).toElement();
156 const QDomNodeList projNodes = srsElem.elementsByTagName( QStringLiteral(
"ProjectionsEnabled" ) );
157 if ( projNodes.count() == 0 )
159 projElem = pft->
dom().createElement( QStringLiteral(
"ProjectionsEnabled" ) );
160 projElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"int" ) );
161 const QDomText projText = pft->
dom().createTextNode( QStringLiteral(
"0" ) );
162 projElem.appendChild( projText );
163 srsElem.appendChild( projElem );
168 srsElem = pft->
dom().createElement( QStringLiteral(
"SpatialRefSys" ) );
169 projElem = pft->
dom().createElement( QStringLiteral(
"ProjectionsEnabled" ) );
170 projElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"int" ) );
171 const QDomText projText = pft->
dom().createTextNode( QStringLiteral(
"0" ) );
172 projElem.appendChild( projText );
173 srsElem.appendChild( projElem );
174 propsElem.appendChild( srsElem );
180 const QDomNodeList canvasNodes = pft->
dom().elementsByTagName( QStringLiteral(
"mapcanvas" ) );
181 if ( canvasNodes.count() > 0 )
183 const QDomElement canvasElem = canvasNodes.at( 0 ).toElement();
184 const QDomNodeList canvasSrsNodes = canvasElem.elementsByTagName( QStringLiteral(
"spatialrefsys" ) );
185 if ( canvasSrsNodes.count() > 0 )
187 const QDomElement canvasSrsElem = canvasSrsNodes.at( 0 ).toElement();
192 const QDomNodeList proj4Nodes = canvasSrsElem.elementsByTagName( QStringLiteral(
"proj4" ) );
193 if ( proj4Nodes.count() > 0 )
195 const QDomElement proj4Node = proj4Nodes.at( 0 ).toElement();
196 proj = proj4Node.text();
198 const QDomNodeList authidNodes = canvasSrsElem.elementsByTagName( QStringLiteral(
"authid" ) );
199 if ( authidNodes.count() > 0 )
201 const QDomElement authidNode = authidNodes.at( 0 ).toElement();
202 authid = authidNode.text();
204 const QDomNodeList srsidNodes = canvasSrsElem.elementsByTagName( QStringLiteral(
"srsid" ) );
205 if ( srsidNodes.count() > 0 )
207 const QDomElement srsidNode = srsidNodes.at( 0 ).toElement();
208 srsid = srsidNode.text();
212 const QDomNodeList oldProjectProj4Nodes = srsElem.elementsByTagName( QStringLiteral(
"ProjectCRSProj4String" ) );
213 for (
int i = oldProjectProj4Nodes.count(); i >= 0; --i )
215 srsElem.removeChild( oldProjectProj4Nodes.at( i ) );
217 const QDomNodeList oldProjectCrsNodes = srsElem.elementsByTagName( QStringLiteral(
"ProjectCrs" ) );
218 for (
int i = oldProjectCrsNodes.count(); i >= 0; --i )
220 srsElem.removeChild( oldProjectCrsNodes.at( i ) );
222 const QDomNodeList oldProjectCrsIdNodes = srsElem.elementsByTagName( QStringLiteral(
"ProjectCRSID" ) );
223 for (
int i = oldProjectCrsIdNodes.count(); i >= 0; --i )
225 srsElem.removeChild( oldProjectCrsIdNodes.at( i ) );
227 const QDomNodeList projectionsEnabledNodes = srsElem.elementsByTagName( QStringLiteral(
"ProjectionsEnabled" ) );
228 for (
int i = projectionsEnabledNodes.count(); i >= 0; --i )
230 srsElem.removeChild( projectionsEnabledNodes.at( i ) );
233 QDomElement proj4Elem = pft->
dom().createElement( QStringLiteral(
"ProjectCRSProj4String" ) );
234 proj4Elem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"QString" ) );
235 const QDomText proj4Text = pft->
dom().createTextNode( proj );
236 proj4Elem.appendChild( proj4Text );
237 QDomElement projectCrsElem = pft->
dom().createElement( QStringLiteral(
"ProjectCrs" ) );
238 projectCrsElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"QString" ) );
239 const QDomText projectCrsText = pft->
dom().createTextNode( authid );
240 projectCrsElem.appendChild( projectCrsText );
241 QDomElement projectCrsIdElem = pft->
dom().createElement( QStringLiteral(
"ProjectCRSID" ) );
242 projectCrsIdElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"int" ) );
243 const QDomText srsidText = pft->
dom().createTextNode( srsid );
244 projectCrsIdElem.appendChild( srsidText );
245 QDomElement projectionsEnabledElem = pft->
dom().createElement( QStringLiteral(
"ProjectionsEnabled" ) );
246 projectionsEnabledElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"int" ) );
247 const QDomText projectionsEnabledText = pft->
dom().createTextNode( QStringLiteral(
"1" ) );
248 projectionsEnabledElem.appendChild( projectionsEnabledText );
249 srsElem.appendChild( proj4Elem );
250 srsElem.appendChild( projectCrsElem );
251 srsElem.appendChild( projectCrsIdElem );
252 srsElem.appendChild( projectionsEnabledElem );
254 const QDomNodeList srsNodes = propsElem.elementsByTagName( QStringLiteral(
"SpatialRefSys" ) );
255 for (
int i = srsNodes.count(); i >= 0; --i )
257 propsElem.removeChild( srsNodes.at( i ) );
259 propsElem.appendChild( srsElem );
265 const QDomNodeList mapLayers = pft->
dom().elementsByTagName( QStringLiteral(
"maplayer" ) );
267 for (
int mapLayerIndex = 0; mapLayerIndex < mapLayers.count(); ++mapLayerIndex )
269 QDomElement layerElem = mapLayers.at( mapLayerIndex ).toElement();
272 QDomElement fieldConfigurationElement = pft->
dom().createElement( QStringLiteral(
"fieldConfiguration" ) );
273 layerElem.appendChild( fieldConfigurationElement );
275 const QDomNodeList editTypeNodes = layerElem.namedItem( QStringLiteral(
"edittypes" ) ).childNodes();
276 QDomElement constraintExpressionsElem = pft->
dom().createElement( QStringLiteral(
"constraintExpressions" ) );
277 layerElem.appendChild( constraintExpressionsElem );
279 for (
int i = 0; i < editTypeNodes.size(); ++i )
281 const QDomNode editTypeNode = editTypeNodes.at( i );
282 const QDomElement editTypeElement = editTypeNode.toElement();
284 QDomElement fieldElement = pft->
dom().createElement( QStringLiteral(
"field" ) );
285 fieldConfigurationElement.appendChild( fieldElement );
287 const QString name = editTypeElement.attribute( QStringLiteral(
"name" ) );
288 fieldElement.setAttribute( QStringLiteral(
"name" ), name );
289 QDomElement constraintExpressionElem = pft->
dom().createElement( QStringLiteral(
"constraint" ) );
290 constraintExpressionElem.setAttribute( QStringLiteral(
"field" ), name );
291 constraintExpressionsElem.appendChild( constraintExpressionElem );
293 QDomElement editWidgetElement = pft->
dom().createElement( QStringLiteral(
"editWidget" ) );
294 fieldElement.appendChild( editWidgetElement );
296 const QString ewv2Type = editTypeElement.attribute( QStringLiteral(
"widgetv2type" ) );
297 editWidgetElement.setAttribute( QStringLiteral(
"type" ), ewv2Type );
299 const QDomElement ewv2CfgElem = editTypeElement.namedItem( QStringLiteral(
"widgetv2config" ) ).toElement();
301 if ( !ewv2CfgElem.isNull() )
303 QDomElement editWidgetConfigElement = pft->
dom().createElement( QStringLiteral(
"config" ) );
304 editWidgetElement.appendChild( editWidgetConfigElement );
306 QVariantMap editWidgetConfiguration;
308 const QDomNamedNodeMap configAttrs = ewv2CfgElem.attributes();
309 for (
int configIndex = 0; configIndex < configAttrs.count(); ++configIndex )
311 const QDomAttr configAttr = configAttrs.item( configIndex ).toAttr();
312 if ( configAttr.name() == QLatin1String(
"fieldEditable" ) )
314 editWidgetConfigElement.setAttribute( QStringLiteral(
"fieldEditable" ), configAttr.value() );
316 else if ( configAttr.name() == QLatin1String(
"labelOnTop" ) )
318 editWidgetConfigElement.setAttribute( QStringLiteral(
"labelOnTop" ), configAttr.value() );
320 else if ( configAttr.name() == QLatin1String(
"notNull" ) )
322 editWidgetConfigElement.setAttribute( QStringLiteral(
"notNull" ), configAttr.value() );
324 else if ( configAttr.name() == QLatin1String(
"constraint" ) )
326 constraintExpressionElem.setAttribute( QStringLiteral(
"exp" ), configAttr.value() );
328 else if ( configAttr.name() == QLatin1String(
"constraintDescription" ) )
330 constraintExpressionElem.setAttribute( QStringLiteral(
"desc" ), configAttr.value() );
334 editWidgetConfiguration.insert( configAttr.name(), configAttr.value() );
338 if ( ewv2Type == QLatin1String(
"ValueMap" ) )
340 const QDomNodeList configElements = ewv2CfgElem.childNodes();
342 for (
int configIndex = 0; configIndex < configElements.count(); ++configIndex )
344 const QDomElement configElem = configElements.at( configIndex ).toElement();
345 map.insert( configElem.attribute( QStringLiteral(
"key" ) ), configElem.attribute( QStringLiteral(
"value" ) ) );
347 editWidgetConfiguration.insert( QStringLiteral(
"map" ), map );
349 else if ( ewv2Type == QLatin1String(
"Photo" ) )
351 editWidgetElement.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"ExternalResource" ) );
353 editWidgetConfiguration.insert( QStringLiteral(
"DocumentViewer" ), 1 );
354 editWidgetConfiguration.insert( QStringLiteral(
"DocumentViewerHeight" ), editWidgetConfiguration.value( QStringLiteral(
"Height" ) ) );
355 editWidgetConfiguration.insert( QStringLiteral(
"DocumentViewerWidth" ), editWidgetConfiguration.value( QStringLiteral(
"Width" ) ) );
356 editWidgetConfiguration.insert( QStringLiteral(
"RelativeStorage" ), 1 );
358 else if ( ewv2Type == QLatin1String(
"FileName" ) )
360 editWidgetElement.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"ExternalResource" ) );
362 editWidgetConfiguration.insert( QStringLiteral(
"RelativeStorage" ), 1 );
364 else if ( ewv2Type == QLatin1String(
"WebView" ) )
366 editWidgetElement.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"ExternalResource" ) );
368 editWidgetConfiguration.insert( QStringLiteral(
"DocumentViewerHeight" ), editWidgetConfiguration.value( QStringLiteral(
"Height" ) ) );
369 editWidgetConfiguration.insert( QStringLiteral(
"DocumentViewerWidth" ), editWidgetConfiguration.value( QStringLiteral(
"Width" ) ) );
370 editWidgetConfiguration.insert( QStringLiteral(
"RelativeStorage" ), 1 );
384 const QDomNode noDataNode = rasterPropertiesElem.namedItem( QStringLiteral(
"mNoDataValue" ) );
385 const QDomElement noDataElement = noDataNode.toElement();
386 if ( !noDataElement.text().isEmpty() )
389 QDomElement noDataElem = doc.createElement( QStringLiteral(
"noData" ) );
391 QDomElement noDataRangeList = doc.createElement( QStringLiteral(
"noDataRangeList" ) );
392 noDataRangeList.setAttribute( QStringLiteral(
"bandNo" ), 1 );
394 QDomElement noDataRange = doc.createElement( QStringLiteral(
"noDataRange" ) );
395 noDataRange.setAttribute( QStringLiteral(
"min" ), noDataElement.text() );
396 noDataRange.setAttribute( QStringLiteral(
"max" ), noDataElement.text() );
397 noDataRangeList.appendChild( noDataRange );
399 noDataElem.appendChild( noDataRangeList );
401 parentNode.appendChild( noDataElem );
404 QDomElement rasterRendererElem = doc.createElement( QStringLiteral(
"rasterrenderer" ) );
408 rasterRendererElem.setAttribute( QStringLiteral(
"invertColor" ), QStringLiteral(
"0" ) );
409 const QDomElement invertColorElem = rasterPropertiesElem.firstChildElement( QStringLiteral(
"mInvertColor" ) );
410 if ( !invertColorElem.isNull() )
412 if ( invertColorElem.text() == QLatin1String(
"true" ) )
414 rasterRendererElem.setAttribute( QStringLiteral(
"invertColor" ), QStringLiteral(
"1" ) );
419 rasterRendererElem.setAttribute( QStringLiteral(
"opacity" ), QStringLiteral(
"1" ) );
420 const QDomElement transparencyElem = parentNode.firstChildElement( QStringLiteral(
"transparencyLevelInt" ) );
421 if ( !transparencyElem.isNull() )
423 const double transparency = transparencyElem.text().toInt();
424 rasterRendererElem.setAttribute( QStringLiteral(
"opacity" ), QString::number( transparency / 255.0 ) );
428 rasterRendererElem.setAttribute( QStringLiteral(
"alphaBand" ), -1 );
431 const int grayBand =
rasterBandNumber( rasterPropertiesElem, QStringLiteral(
"mGrayBandName" ), rlayer );
434 QString drawingStyle = rasterPropertiesElem.firstChildElement( QStringLiteral(
"mDrawingStyle" ) ).text();
441 if ( drawingStyle == QLatin1String(
"PalettedColor" ) )
443 const QDomElement customColorRampElem = rasterPropertiesElem.firstChildElement( QStringLiteral(
"customColorRamp" ) );
444 const QDomNodeList colorRampEntryList = customColorRampElem.elementsByTagName( QStringLiteral(
"colorRampEntry" ) );
446 for (
int i = 0; i < colorRampEntryList.size(); ++i )
448 const QDomElement colorRampEntryElem = colorRampEntryList.at( i ).toElement();
449 const QString strValue = colorRampEntryElem.attribute( QStringLiteral(
"value" ) );
450 const double value = strValue.toDouble();
451 if ( value < 0 || value > 10000 || !
qgsDoubleNear( value,
static_cast< int >( value ) ) )
453 QgsDebugMsgLevel( QStringLiteral(
"forcing SingleBandPseudoColor value = %1" ).arg( value ), 2 );
454 drawingStyle = QStringLiteral(
"SingleBandPseudoColor" );
460 if ( drawingStyle == QLatin1String(
"SingleBandGray" ) )
462 rasterRendererElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"singlebandgray" ) );
463 rasterRendererElem.setAttribute( QStringLiteral(
"grayBand" ), grayBand );
466 else if ( drawingStyle == QLatin1String(
"SingleBandPseudoColor" ) )
468 rasterRendererElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"singlebandpseudocolor" ) );
469 rasterRendererElem.setAttribute( QStringLiteral(
"band" ), grayBand );
470 QDomElement newRasterShaderElem = doc.createElement( QStringLiteral(
"rastershader" ) );
471 QDomElement newColorRampShaderElem = doc.createElement( QStringLiteral(
"colorrampshader" ) );
472 newRasterShaderElem.appendChild( newColorRampShaderElem );
473 rasterRendererElem.appendChild( newRasterShaderElem );
476 const QString colorShadingAlgorithm = rasterPropertiesElem.firstChildElement( QStringLiteral(
"mColorShadingAlgorithm" ) ).text();
477 if ( colorShadingAlgorithm == QLatin1String(
"PseudoColorShader" ) || colorShadingAlgorithm == QLatin1String(
"FreakOutShader" ) )
479 newColorRampShaderElem.setAttribute( QStringLiteral(
"colorRampType" ), QStringLiteral(
"INTERPOLATED" ) );
485 const double breakSize = ( maxValue - minValue ) / 3;
487 QStringList colorList;
488 if ( colorShadingAlgorithm == QLatin1String(
"FreakOutShader" ) )
490 colorList << QStringLiteral(
"#ff00ff" ) << QStringLiteral(
"#00ffff" ) << QStringLiteral(
"#ff0000" ) << QStringLiteral(
"#00ff00" );
494 colorList << QStringLiteral(
"#0000ff" ) << QStringLiteral(
"#00ffff" ) << QStringLiteral(
"#ffff00" ) << QStringLiteral(
"#ff0000" );
496 QStringList::const_iterator colorIt = colorList.constBegin();
497 double boundValue = minValue;
498 for ( ; colorIt != colorList.constEnd(); ++colorIt )
500 QDomElement newItemElem = doc.createElement( QStringLiteral(
"item" ) );
501 newItemElem.setAttribute( QStringLiteral(
"value" ), QString::number( boundValue ) );
502 newItemElem.setAttribute( QStringLiteral(
"label" ), QString::number( boundValue ) );
503 newItemElem.setAttribute( QStringLiteral(
"color" ), *colorIt );
504 newColorRampShaderElem.appendChild( newItemElem );
505 boundValue += breakSize;
508 else if ( colorShadingAlgorithm == QLatin1String(
"ColorRampShader" ) )
510 const QDomElement customColorRampElem = rasterPropertiesElem.firstChildElement( QStringLiteral(
"customColorRamp" ) );
511 const QString type = customColorRampElem.firstChildElement( QStringLiteral(
"colorRampType" ) ).text();
512 newColorRampShaderElem.setAttribute( QStringLiteral(
"colorRampType" ), type );
513 const QDomNodeList colorNodeList = customColorRampElem.elementsByTagName( QStringLiteral(
"colorRampEntry" ) );
515 QString value, label;
517 int red, green, blue;
518 QDomElement currentItemElem;
519 for (
int i = 0; i < colorNodeList.size(); ++i )
521 currentItemElem = colorNodeList.at( i ).toElement();
522 value = currentItemElem.attribute( QStringLiteral(
"value" ) );
523 label = currentItemElem.attribute( QStringLiteral(
"label" ) );
524 red = currentItemElem.attribute( QStringLiteral(
"red" ) ).toInt();
525 green = currentItemElem.attribute( QStringLiteral(
"green" ) ).toInt();
526 blue = currentItemElem.attribute( QStringLiteral(
"blue" ) ).toInt();
527 newColor = QColor( red, green, blue );
528 QDomElement newItemElem = doc.createElement( QStringLiteral(
"item" ) );
529 newItemElem.setAttribute( QStringLiteral(
"value" ), value );
530 newItemElem.setAttribute( QStringLiteral(
"label" ), label );
531 newItemElem.setAttribute( QStringLiteral(
"color" ), newColor.name() );
532 newColorRampShaderElem.appendChild( newItemElem );
536 else if ( drawingStyle == QLatin1String(
"PalettedColor" ) )
538 rasterRendererElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"paletted" ) );
539 rasterRendererElem.setAttribute( QStringLiteral(
"band" ), grayBand );
540 const QDomElement customColorRampElem = rasterPropertiesElem.firstChildElement( QStringLiteral(
"customColorRamp" ) );
541 const QDomNodeList colorRampEntryList = customColorRampElem.elementsByTagName( QStringLiteral(
"colorRampEntry" ) );
542 QDomElement newColorPaletteElem = doc.createElement( QStringLiteral(
"colorPalette" ) );
548 QDomElement colorRampEntryElem;
549 for (
int i = 0; i < colorRampEntryList.size(); ++i )
551 colorRampEntryElem = colorRampEntryList.at( i ).toElement();
552 QDomElement newPaletteElem = doc.createElement( QStringLiteral(
"paletteEntry" ) );
553 value =
static_cast< int >( colorRampEntryElem.attribute( QStringLiteral(
"value" ) ).toDouble() );
554 newPaletteElem.setAttribute( QStringLiteral(
"value" ), value );
555 red = colorRampEntryElem.attribute( QStringLiteral(
"red" ) ).toInt();
556 green = colorRampEntryElem.attribute( QStringLiteral(
"green" ) ).toInt();
557 blue = colorRampEntryElem.attribute( QStringLiteral(
"blue" ) ).toInt();
558 newPaletteElem.setAttribute( QStringLiteral(
"color" ), QColor( red, green, blue ).name() );
559 const QString label = colorRampEntryElem.attribute( QStringLiteral(
"label" ) );
560 if ( !label.isEmpty() )
562 newPaletteElem.setAttribute( QStringLiteral(
"label" ), label );
564 newColorPaletteElem.appendChild( newPaletteElem );
566 rasterRendererElem.appendChild( newColorPaletteElem );
568 else if ( drawingStyle == QLatin1String(
"MultiBandColor" ) )
570 rasterRendererElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"multibandcolor" ) );
573 const int redBand =
rasterBandNumber( rasterPropertiesElem, QStringLiteral(
"mRedBandName" ), rlayer );
574 const int greenBand =
rasterBandNumber( rasterPropertiesElem, QStringLiteral(
"mGreenBandName" ), rlayer );
575 const int blueBand =
rasterBandNumber( rasterPropertiesElem, QStringLiteral(
"mBlueBandName" ), rlayer );
576 rasterRendererElem.setAttribute( QStringLiteral(
"redBand" ), redBand );
577 rasterRendererElem.setAttribute( QStringLiteral(
"greenBand" ), greenBand );
578 rasterRendererElem.setAttribute( QStringLiteral(
"blueBand" ), blueBand );
588 if ( !parentNode.isNull() )
590 parentNode.replaceChild( rasterRendererElem, rasterPropertiesElem );
627 if ( rasterproperties.isNull() || rendererElem.isNull() )
632 double minimumValue = 0;
633 double maximumValue = 0;
634 const QDomElement contrastMinMaxElem = rasterproperties.firstChildElement( QStringLiteral(
"contrastEnhancementMinMaxValues" ) );
635 if ( contrastMinMaxElem.isNull() )
640 const QDomElement contrastEnhancementAlgorithmElem = rasterproperties.firstChildElement( QStringLiteral(
"mContrastEnhancementAlgorithm" ) );
641 if ( contrastEnhancementAlgorithmElem.isNull() )
647 int algorithmEnum = 0;
648 const QString algorithmString = contrastEnhancementAlgorithmElem.text();
649 if ( algorithmString == QLatin1String(
"StretchToMinimumMaximum" ) )
653 else if ( algorithmString == QLatin1String(
"StretchAndClipToMinimumMaximum" ) )
657 else if ( algorithmString == QLatin1String(
"ClipToMinimumMaximum" ) )
661 else if ( algorithmString == QLatin1String(
"UserDefinedEnhancement" ) )
666 const QDomNodeList minMaxEntryList = contrastMinMaxElem.elementsByTagName( QStringLiteral(
"minMaxEntry" ) );
667 QStringList enhancementNameList;
668 if ( minMaxEntryList.size() == 1 )
670 enhancementNameList << QStringLiteral(
"contrastEnhancement" );
672 if ( minMaxEntryList.size() == 3 )
674 enhancementNameList << QStringLiteral(
"redContrastEnhancement" ) << QStringLiteral(
"greenContrastEnhancement" ) << QStringLiteral(
"blueContrastEnhancement" );
676 if ( minMaxEntryList.size() > enhancementNameList.size() )
681 QDomElement minMaxEntryElem;
682 for (
int i = 0; i < minMaxEntryList.size(); ++i )
684 minMaxEntryElem = minMaxEntryList.at( i ).toElement();
685 const QDomElement minElem = minMaxEntryElem.firstChildElement( QStringLiteral(
"min" ) );
686 if ( minElem.isNull() )
690 minimumValue = minElem.text().toDouble();
692 const QDomElement maxElem = minMaxEntryElem.firstChildElement( QStringLiteral(
"max" ) );
693 if ( maxElem.isNull() )
697 maximumValue = maxElem.text().toDouble();
699 QDomElement newContrastEnhancementElem = doc.createElement( enhancementNameList.at( i ) );
700 QDomElement newMinValElem = doc.createElement( QStringLiteral(
"minValue" ) );
701 const QDomText minText = doc.createTextNode( QString::number( minimumValue ) );
702 newMinValElem.appendChild( minText );
703 newContrastEnhancementElem.appendChild( newMinValElem );
704 QDomElement newMaxValElem = doc.createElement( QStringLiteral(
"maxValue" ) );
705 const QDomText maxText = doc.createTextNode( QString::number( maximumValue ) );
706 newMaxValElem.appendChild( maxText );
707 newContrastEnhancementElem.appendChild( newMaxValElem );
709 QDomElement newAlgorithmElem = doc.createElement( QStringLiteral(
"algorithm" ) );
710 const QDomText newAlgorithmText = doc.createTextNode( QString::number( algorithmEnum ) );
711 newAlgorithmElem.appendChild( newAlgorithmText );
712 newContrastEnhancementElem.appendChild( newAlgorithmElem );
714 rendererElem.appendChild( newContrastEnhancementElem );