QGIS API Documentation  3.20.0-Odense (decaadbb31)
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"
22 #include "qgs3dtypes.h"
23 
24 #include <Qt3DRender/QCullFace>
25 
27 
38 {
39  public:
42  ~QgsPolygon3DSymbol() override;
43 
44  QString type() const override { return "polygon"; }
45  QgsAbstract3DSymbol *clone() const override SIP_FACTORY;
46 
47  void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const override;
48  void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) override;
49  QList< QgsWkbTypes::GeometryType > compatibleGeometryTypes() const override;
50 
56  static QgsAbstract3DSymbol *create() SIP_FACTORY;
57 
59  Qgs3DTypes::AltitudeClamping altitudeClamping() const { return mAltClamping; }
61  void setAltitudeClamping( Qgs3DTypes::AltitudeClamping altClamping ) { mAltClamping = altClamping; }
62 
64  Qgs3DTypes::AltitudeBinding altitudeBinding() const { return mAltBinding; }
66  void setAltitudeBinding( Qgs3DTypes::AltitudeBinding altBinding ) { mAltBinding = altBinding; }
67 
69  float height() const { return mHeight; }
71  void setHeight( float height ) { mHeight = height; }
72 
74  float extrusionHeight() const { return mExtrusionHeight; }
76  void setExtrusionHeight( float extrusionHeight ) { mExtrusionHeight = extrusionHeight; }
77 
79  QgsAbstractMaterialSettings *material() const;
80 
86  void setMaterial( QgsAbstractMaterialSettings *material SIP_TRANSFER );
87 
89  Qgs3DTypes::CullingMode cullingMode() const { return mCullingMode; }
91  void setCullingMode( Qgs3DTypes::CullingMode mode ) { mCullingMode = mode; }
92 
94  bool invertNormals() const { return mInvertNormals; }
96  void setInvertNormals( bool invert ) { mInvertNormals = invert; }
97 
102  bool addBackFaces() const { return mAddBackFaces; }
103 
108  void setAddBackFaces( bool add ) { mAddBackFaces = add; }
109 
114  bool edgesEnabled() const { return mEdgesEnabled; }
115 
120  void setEdgesEnabled( bool enabled ) { mEdgesEnabled = enabled; }
121 
126  float edgeWidth() const { return mEdgeWidth; }
127 
132  void setEdgeWidth( float width ) { mEdgeWidth = width; }
133 
138  QColor edgeColor() const { return mEdgeColor; }
139 
144  void setEdgeColor( const QColor &color ) { mEdgeColor = color; }
145 
150  void setRenderedFacade( int side ) { mRenderedFacade = side; }
151 
156  int renderedFacade() const { return mRenderedFacade; }
157 
163  bool exportGeometries( Qgs3DSceneExporter *exporter, Qt3DCore::QEntity *entity, const QString &objectNamePrefix ) const override SIP_SKIP;
164 
165  private:
170 
171  float mHeight = 0.0f;
172  float mExtrusionHeight = 0.0f;
173  std::unique_ptr< QgsAbstractMaterialSettings > mMaterial;
175  bool mInvertNormals = false;
176  bool mAddBackFaces = false;
177  int mRenderedFacade = 3;
178 
179  bool mEdgesEnabled = false;
180  float mEdgeWidth = 1.f;
181  QColor mEdgeColor = Qt::black;
182 };
183 
184 
185 #endif // QGSPOLYGON3DSYMBOL_H
Entity that handles the exporting of 3D scene.
AltitudeClamping
how to handle altitude of vector features
Definition: qgs3dtypes.h:35
@ AltClampRelative
Z_final = z_terrain + z_geometry.
Definition: qgs3dtypes.h:37
AltitudeBinding
how to handle clamping of vertices of individual features
Definition: qgs3dtypes.h:43
@ AltBindCentroid
Clamp just centroid of feature.
Definition: qgs3dtypes.h:45
CullingMode
Triangle culling mode.
Definition: qgs3dtypes.h:50
@ NoCulling
Will render both front and back faces of triangles.
Definition: qgs3dtypes.h:51
virtual bool exportGeometries(Qgs3DSceneExporter *exporter, Qt3DCore::QEntity *entity, const QString &objectNamePrefix) const
Exports the geometries contained within the hierarchy of entity.
virtual QgsAbstract3DSymbol * clone() const =0
Returns a new instance of the symbol with the same settings.
void setHeight(float height)
Sets height (altitude) of the symbol (in map units)
void setCullingMode(Qgs3DTypes::CullingMode mode)
Sets front/back culling mode.
void setAddBackFaces(bool add)
Sets whether also triangles facing the other side will be created.
QString type() const override
void setExtrusionHeight(float extrusionHeight)
Sets extrusion height (in map units)
void setAltitudeBinding(Qgs3DTypes::AltitudeBinding altBinding)
Sets method that determines how altitude is bound to individual vertices.
bool invertNormals() const
Returns whether the normals of triangles will be inverted (useful for fixing clockwise / counter-cloc...
void setRenderedFacade(int side)
Sets which facade of the buildings is rendered (0 for None, 1 for Walls, 2 for Roofs,...
void setAltitudeClamping(Qgs3DTypes::AltitudeClamping altClamping)
Sets method that determines altitude (whether to clamp to feature to terrain)
float extrusionHeight() const
Returns extrusion height (in map units)
~QgsPolygon3DSymbol() override
Qgs3DTypes::CullingMode cullingMode() const
Returns front/back culling mode.
QColor edgeColor() const
Returns edge lines color.
Qgs3DTypes::AltitudeBinding altitudeBinding() const
Returns method that determines how altitude is bound to individual vertices.
void setEdgeWidth(float width)
Sets width of edge lines (in pixels)
void setEdgeColor(const QColor &color)
Sets edge lines color.
int renderedFacade() const
Returns which facade of the buildings is rendered (0 for None, 1 for Walls, 2 for Roofs,...
void setInvertNormals(bool invert)
Sets whether the normals of triangles will be inverted (useful for fixing clockwise / counter-clockwi...
bool addBackFaces() const
Returns whether also triangles facing the other side will be created.
bool edgesEnabled() const
Returns whether edge highlighting is enabled.
void setEdgesEnabled(bool enabled)
Sets whether edge highlighting is enabled.
float height() const
Returns height (altitude) of the symbol (in map units)
float edgeWidth() const
Returns width of edge lines (in pixels)
The class is used as a container of context for various read/write operations on other objects.
Handles storage of information regarding WKB types and their properties.
Definition: qgswkbtypes.h:42
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_FACTORY
Definition: qgis_sip.h:76
#define SIP_NODEFAULTCTORS
Definition: qgis_sip.h:101