QGIS API Documentation  3.2.0-Bonn (bc43194)
qgsline3dsymbol.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsline3dsymbol.cpp
3  --------------------------------------
4  Date : July 2017
5  Copyright : (C) 2017 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 
16 #include "qgsline3dsymbol.h"
17 
19 {
20  return new QgsLine3DSymbol( *this );
21 }
22 
23 void QgsLine3DSymbol::writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const
24 {
25  Q_UNUSED( context );
26 
27  QDomDocument doc = elem.ownerDocument();
28 
29  QDomElement elemDataProperties = doc.createElement( QStringLiteral( "data" ) );
30  elemDataProperties.setAttribute( QStringLiteral( "alt-clamping" ), Qgs3DUtils::altClampingToString( mAltClamping ) );
31  elemDataProperties.setAttribute( QStringLiteral( "alt-binding" ), Qgs3DUtils::altBindingToString( mAltBinding ) );
32  elemDataProperties.setAttribute( QStringLiteral( "height" ), mHeight );
33  elemDataProperties.setAttribute( QStringLiteral( "extrusion-height" ), mExtrusionHeight );
34  elemDataProperties.setAttribute( QStringLiteral( "width" ), mWidth );
35  elem.appendChild( elemDataProperties );
36 
37  QDomElement elemMaterial = doc.createElement( QStringLiteral( "material" ) );
38  mMaterial.writeXml( elemMaterial );
39  elem.appendChild( elemMaterial );
40 }
41 
42 void QgsLine3DSymbol::readXml( const QDomElement &elem, const QgsReadWriteContext &context )
43 {
44  Q_UNUSED( context );
45 
46  QDomElement elemDataProperties = elem.firstChildElement( QStringLiteral( "data" ) );
47  mAltClamping = Qgs3DUtils::altClampingFromString( elemDataProperties.attribute( QStringLiteral( "alt-clamping" ) ) );
48  mAltBinding = Qgs3DUtils::altBindingFromString( elemDataProperties.attribute( QStringLiteral( "alt-binding" ) ) );
49  mHeight = elemDataProperties.attribute( QStringLiteral( "height" ) ).toFloat();
50  mExtrusionHeight = elemDataProperties.attribute( QStringLiteral( "extrusion-height" ) ).toFloat();
51  mWidth = elemDataProperties.attribute( QStringLiteral( "width" ) ).toFloat();
52 
53  QDomElement elemMaterial = elem.firstChildElement( QStringLiteral( "material" ) );
54  mMaterial.readXml( elemMaterial );
55 }
The class is used as a container of context for various read/write operations on other objects...
static AltitudeBinding altBindingFromString(const QString &str)
Converts a string to a value from AltitudeBinding enum.
Definition: qgs3dutils.cpp:77
QgsLine3DSymbol()=default
Constructor for QgsLine3DSymbol.
3 Abstract base class for 3D symbols that are used by VectorLayer3DRenderer objects.
QgsAbstract3DSymbol * clone() const override
Returns a new instance of the symbol with the same settings.
void writeXml(QDomElement &elem, const QgsReadWriteContext &context) const override
Writes symbol configuration to the given DOM element.
void readXml(const QDomElement &elem)
Reads settings from a DOM element.
void readXml(const QDomElement &elem, const QgsReadWriteContext &context) override
Reads symbol configuration from the given DOM element.
static QString altBindingToString(AltitudeBinding altBind)
Converts a value from AltitudeBinding enum to a string.
Definition: qgs3dutils.cpp:66
void writeXml(QDomElement &elem) const
Writes settings to a DOM element.
static AltitudeClamping altClampingFromString(const QString &str)
Converts a string to a value from AltitudeClamping enum.
Definition: qgs3dutils.cpp:55
static QString altClampingToString(AltitudeClamping altClamp)
Converts a value from AltitudeClamping enum to a string.
Definition: qgs3dutils.cpp:43