QGIS API Documentation  3.8.0-Zanzibar (11aff65)
qgspolygon3dsymbol.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgspolygon3dsymbol.h
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 #ifndef QGSPOLYGON3DSYMBOL_H
17 #define QGSPOLYGON3DSYMBOL_H
18 
19 #include "qgis_3d.h"
20 
21 #include "qgsabstract3dsymbol.h"
23 #include "qgs3dtypes.h"
24 
25 #include <Qt3DRender/QCullFace>
26 
36 class _3D_EXPORT QgsPolygon3DSymbol : public QgsAbstract3DSymbol
37 {
38  public:
40  QgsPolygon3DSymbol() = default;
41 
42  QString type() const override { return "polygon"; }
43  QgsAbstract3DSymbol *clone() const override SIP_FACTORY;
44 
45  void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const override;
46  void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) override;
47 
49  Qgs3DTypes::AltitudeClamping altitudeClamping() const { return mAltClamping; }
51  void setAltitudeClamping( Qgs3DTypes::AltitudeClamping altClamping ) { mAltClamping = altClamping; }
52 
54  Qgs3DTypes::AltitudeBinding altitudeBinding() const { return mAltBinding; }
56  void setAltitudeBinding( Qgs3DTypes::AltitudeBinding altBinding ) { mAltBinding = altBinding; }
57 
59  float height() const { return mHeight; }
61  void setHeight( float height ) { mHeight = height; }
62 
64  float extrusionHeight() const { return mExtrusionHeight; }
66  void setExtrusionHeight( float extrusionHeight ) { mExtrusionHeight = extrusionHeight; }
67 
69  QgsPhongMaterialSettings material() const { return mMaterial; }
71  void setMaterial( const QgsPhongMaterialSettings &material ) { mMaterial = material; }
72 
74  Qgs3DTypes::CullingMode cullingMode() const { return mCullingMode; }
76  void setCullingMode( Qgs3DTypes::CullingMode mode ) { mCullingMode = mode; }
77 
79  bool invertNormals() const { return mInvertNormals; }
81  void setInvertNormals( bool invert ) { mInvertNormals = invert; }
82 
87  bool addBackFaces() const { return mAddBackFaces; }
88 
93  void setAddBackFaces( bool add ) { mAddBackFaces = add; }
94 
99  bool edgesEnabled() const { return mEdgesEnabled; }
100 
105  void setEdgesEnabled( bool enabled ) { mEdgesEnabled = enabled; }
106 
111  float edgeWidth() const { return mEdgeWidth; }
112 
117  void setEdgeWidth( float width ) { mEdgeWidth = width; }
118 
123  QColor edgeColor() const { return mEdgeColor; }
124 
129  void setEdgeColor( const QColor &color ) { mEdgeColor = color; }
130 
131  private:
136 
137  float mHeight = 0.0f;
138  float mExtrusionHeight = 0.0f;
139  QgsPhongMaterialSettings mMaterial;
141  bool mInvertNormals = false;
142  bool mAddBackFaces = false;
143 
144  bool mEdgesEnabled = false;
145  float mEdgeWidth = 1.f;
146  QColor mEdgeColor = Qt::black;
147 };
148 
149 
150 #endif // QGSPOLYGON3DSYMBOL_H
void setEdgesEnabled(bool enabled)
Sets whether edge highlighting is enabled.
AltitudeClamping
how to handle altitude of vector features
Definition: qgs3dtypes.h:34
float height() const
Returns height (altitude) of the symbol (in map units)
The class is used as a container of context for various read/write operations on other objects...
Qgs3DTypes::AltitudeBinding altitudeBinding() const
Returns method that determines how altitude is bound to individual vertices.
bool addBackFaces() const
Returns whether also triangles facing the other side will be created.
virtual QgsAbstract3DSymbol * clone() const =0
Returns a new instance of the symbol with the same settings.
3 3D symbol that draws polygon geometries as planar polygons, optionally extruded (with added walls)...
CullingMode
Triangle culling mode.
Definition: qgs3dtypes.h:49
void setHeight(float height)
Sets height (altitude) of the symbol (in map units)
3 Basic shading material used for rendering based on the Phong shading model with three color compone...
QgsPhongMaterialSettings material() const
Returns material used for shading of the symbol.
virtual void writeXml(QDomElement &elem, const QgsReadWriteContext &context) const =0
Writes symbol configuration to the given DOM element.
3 Abstract base class for 3D symbols that are used by VectorLayer3DRenderer objects.
void setAltitudeBinding(Qgs3DTypes::AltitudeBinding altBinding)
Sets method that determines how altitude is bound to individual vertices.
void setAddBackFaces(bool add)
Sets whether also triangles facing the other side will be created.
QColor edgeColor() const
Returns edge lines color.
Will render both front and back faces of triangles.
Definition: qgs3dtypes.h:51
void setCullingMode(Qgs3DTypes::CullingMode mode)
Sets front/back culling mode.
void setEdgeColor(const QColor &color)
Sets edge lines color.
#define SIP_FACTORY
Definition: qgis_sip.h:69
bool invertNormals() const
Returns whether the normals of triangles will be inverted (useful for fixing clockwise / counter-cloc...
Qgs3DTypes::CullingMode cullingMode() const
Returns front/back culling mode.
AltitudeBinding
how to handle clamping of vertices of individual features
Definition: qgs3dtypes.h:42
void setMaterial(const QgsPhongMaterialSettings &material)
Sets material used for shading of the symbol.
bool edgesEnabled() const
Returns whether edge highlighting is enabled.
QString type() const override
Returns identifier of symbol type. Each 3D symbol implementation should return a different type...
void setInvertNormals(bool invert)
Sets whether the normals of triangles will be inverted (useful for fixing clockwise / counter-clockwi...
float edgeWidth() const
Returns width of edge lines (in pixels)
void setEdgeWidth(float width)
Sets width of edge lines (in pixels)
virtual void readXml(const QDomElement &elem, const QgsReadWriteContext &context)=0
Reads symbol configuration from the given DOM element.
void setAltitudeClamping(Qgs3DTypes::AltitudeClamping altClamping)
Sets method that determines altitude (whether to clamp to feature to terrain)
void setExtrusionHeight(float extrusionHeight)
Sets extrusion height (in map units)
Z_final = z_terrain + z_geometry.
Definition: qgs3dtypes.h:37
Clamp just centroid of feature.
Definition: qgs3dtypes.h:45
float extrusionHeight() const
Returns extrusion height (in map units)
Qgs3DTypes::AltitudeClamping altitudeClamping() const
Returns method that determines altitude (whether to clamp to feature to terrain)