QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgstessellatedpolygongeometry.h
Go to the documentation of this file.
1/***************************************************************************
2 qgstessellatedpolygongeometry.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 QGSTESSELLATEDPOLYGONGEOMETRY_H
17#define QGSTESSELLATEDPOLYGONGEOMETRY_H
18
19#include "qgsfeatureid.h"
20
21#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
22#include <Qt3DRender/QGeometry>
23#else
24#include <Qt3DCore/QGeometry>
25#endif
26
28class QgsPolygon;
29class QgsPointXY;
30
31#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
32namespace Qt3DRender
33{
34 class QBuffer;
35}
36#else
37namespace Qt3DCore
38{
39 class QBuffer;
40}
41#endif
42
43#define SIP_NO_FILE
44
56#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
57class QgsTessellatedPolygonGeometry : public Qt3DRender::QGeometry
58#else
59class QgsTessellatedPolygonGeometry : public Qt3DCore::QGeometry
60#endif
61{
62 Q_OBJECT
63 public:
65 QgsTessellatedPolygonGeometry( bool _withNormals = true, bool invertNormals = false, bool addBackFaces = false, bool addTextureCoords = false, QNode *parent = nullptr );
66
68 bool invertNormals() const { return mInvertNormals; }
70 void setInvertNormals( bool invert ) { mInvertNormals = invert; }
71
76 bool addBackFaces() const { return mAddBackFaces; }
77
82 void setAddBackFaces( bool add ) { mAddBackFaces = add; }
83
88 void setAddTextureCoords( bool add ) { mAddTextureCoords = add; }
89
91 void setPolygons( const QList<QgsPolygon *> &polygons, const QList<QgsFeatureId> &featureIds, const QgsPointXY &origin, float extrusionHeight, const QList<float> &extrusionHeightPerPolygon = QList<float>() );
92
98 void setData( const QByteArray &vertexBufferData, int vertexCount, const QVector<QgsFeatureId> &triangleIndexFids, const QVector<uint> &triangleIndexStartingIndices );
99
104 QgsFeatureId triangleIndexToFeatureId( uint triangleIndex ) const;
105
106 friend class Qgs3DSceneExporter;
107 private:
108
109#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
110 Qt3DRender::QAttribute *mPositionAttribute = nullptr;
111 Qt3DRender::QAttribute *mNormalAttribute = nullptr;
112 Qt3DRender::QAttribute *mTextureCoordsAttribute = nullptr;
113 Qt3DRender::QBuffer *mVertexBuffer = nullptr;
114#else
115 Qt3DCore::QAttribute *mPositionAttribute = nullptr;
116 Qt3DCore::QAttribute *mNormalAttribute = nullptr;
117 Qt3DCore::QAttribute *mTextureCoordsAttribute = nullptr;
118 Qt3DCore::QBuffer *mVertexBuffer = nullptr;
119#endif
120
121 QVector<QgsFeatureId> mTriangleIndexFids;
122 QVector<uint> mTriangleIndexStartingIndices;
123
124 bool mWithNormals = true;
125 bool mInvertNormals = false;
126 bool mAddBackFaces = false;
127 bool mAddTextureCoords = false;
128};
129
130#endif // QGSTESSELLATEDPOLYGONGEOMETRY_H
Entity that handles the exporting of 3D scene.
A class to represent a 2D point.
Definition: qgspointxy.h:59
Polygon geometry type.
Definition: qgspolygon.h:34
void setPolygons(const QList< QgsPolygon * > &polygons, const QList< QgsFeatureId > &featureIds, const QgsPointXY &origin, float extrusionHeight, const QList< float > &extrusionHeightPerPolygon=QList< float >())
Initializes vertex buffer from given polygons. Takes ownership of passed polygon geometries.
void setInvertNormals(bool invert)
Sets whether the normals of triangles will be inverted (useful for fixing clockwise / counter-clockwi...
QgsFeatureId triangleIndexToFeatureId(uint triangleIndex) const
Returns ID of the feature to which given triangle index belongs (used for picking).
QgsTessellatedPolygonGeometry(bool _withNormals=true, bool invertNormals=false, bool addBackFaces=false, bool addTextureCoords=false, QNode *parent=nullptr)
Constructor.
bool addBackFaces() const
Returns whether also triangles facing the other side will be created.
void setData(const QByteArray &vertexBufferData, int vertexCount, const QVector< QgsFeatureId > &triangleIndexFids, const QVector< uint > &triangleIndexStartingIndices)
Initializes vertex buffer (and other members) from data that were already tessellated.
void setAddBackFaces(bool add)
Sets whether also triangles facing the other side will be created.
void setAddTextureCoords(bool add)
Sets whether the texture coordinates will be generated.
bool invertNormals() const
Returns whether the normals of triangles will be inverted (useful for fixing clockwise / counter-cloc...
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
Definition: qgsfeatureid.h:28