QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgsxmlutils.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsxmlutils.h
3 ---------------------
4 begin : December 2013
5 copyright : (C) 2013 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15#ifndef QGSXMLUTILS_H
16#define QGSXMLUTILS_H
17
18class QDomDocument;
19
20class QgsRectangle;
21class QgsBox3D;
22
23#include "qgis.h"
24#include "qgis_core.h"
25#include "qgis_sip.h"
26
27#include <QDomElement>
28#include <QMetaEnum>
29#include <QString>
30
31using namespace Qt::StringLiterals;
32
37class CORE_EXPORT QgsXmlUtils
38{
39 public:
40
41 /* reading */
42
49 static Qgis::DistanceUnit readMapUnits( const QDomElement &element );
50
51 static QgsRectangle readRectangle( const QDomElement &element );
52
59 static QgsBox3D readBox3D( const QDomElement &element );
60
61 /* writing */
62
70 static QDomElement writeMapUnits( Qgis::DistanceUnit units, QDomDocument &doc );
71
80 static QDomElement writeBox3D( const QgsBox3D &box, QDomDocument &doc, const QString &elementName = u"extent3D"_s );
81
89 static QDomElement writeRectangle( const QgsRectangle &rect, QDomDocument &doc, const QString &elementName = u"extent"_s );
90
104 static QDomElement writeVariant( const QVariant &value, QDomDocument &doc );
105
109 static QVariant readVariant( const QDomElement &element );
110
120 template<class T> static T readFlagAttribute( const QDomElement &element, const QString &attributeName, T defaultValue ) SIP_SKIP
121 {
122 T value = defaultValue;
123 // Get source categories
124 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
125 const QString sourceCategoriesStr( element.attribute( attributeName, metaEnum.valueToKeys( static_cast<int>( defaultValue ) ) ) );
126 if ( metaEnum.isValid() )
127 {
128 bool ok = false;
129 const int newValue = metaEnum.keysToValue( sourceCategoriesStr.toUtf8().constData(), &ok );
130 if ( ok )
131 value = static_cast<T>( newValue );
132 }
133 return value;
134 }
135};
136
137
138#endif // QGSXMLUTILS_H
DistanceUnit
Units of distance.
Definition qgis.h:5085
A 3-dimensional box composed of x, y, z coordinates.
Definition qgsbox3d.h:45
A rectangle specified with double values.
Assorted helper methods for reading and writing chunks of XML.
Definition qgsxmlutils.h:38
static T readFlagAttribute(const QDomElement &element, const QString &attributeName, T defaultValue)
Read a flag value from an attribute of the element.
static QDomElement writeVariant(const QVariant &value, QDomDocument &doc)
Write a QVariant to a QDomElement.
static QgsBox3D readBox3D(const QDomElement &element)
Decodes a DOM element to a 3D box.
static QVariant readVariant(const QDomElement &element)
Read a QVariant from a QDomElement.
static Qgis::DistanceUnit readMapUnits(const QDomElement &element)
Decodes a distance unit from a DOM element.
static QDomElement writeRectangle(const QgsRectangle &rect, QDomDocument &doc, const QString &elementName=u"extent"_s)
Encodes a rectangle to a DOM element.
static QgsRectangle readRectangle(const QDomElement &element)
static QDomElement writeBox3D(const QgsBox3D &box, QDomDocument &doc, const QString &elementName=u"extent3D"_s)
Encodes a 3D box to a DOM element.
static QDomElement writeMapUnits(Qgis::DistanceUnit units, QDomDocument &doc)
Encodes a distance unit to a DOM element.
#define SIP_SKIP
Definition qgis_sip.h:134