Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsabstract3dsymbol.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 QGSABSTRACT3DSYMBOL_H 17 : : #define QGSABSTRACT3DSYMBOL_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgis_sip.h" 21 : : 22 : : #include "qgspropertycollection.h" 23 : : 24 : : class QDomElement; 25 : : class QString; 26 : : 27 : : class QgsReadWriteContext; 28 : : class Qgs3DSceneExporter; 29 : : namespace Qt3DCore { class QEntity; } SIP_SKIP 30 : : 31 : : 32 : : /** 33 : : * \ingroup 3d 34 : : * \brief Abstract base class for 3D symbols that are used by VectorLayer3DRenderer objects. 35 : : * 36 : : * 3D symbol objects define appearance of GIS data. 37 : : * 38 : : * \warning This is not considered stable API, and may change in future QGIS releases. It is 39 : : * exposed to the Python bindings as a tech preview only. 40 : : * 41 : : * \note Prior to QGIS 3.16 this was available through the QGIS 3D library. 42 : : * 43 : : * \since QGIS 3.0 44 : : */ 45 : : class CORE_EXPORT QgsAbstract3DSymbol 46 : : { 47 : : public: 48 : 0 : virtual ~QgsAbstract3DSymbol() = default; 49 : : 50 : : //! Returns identifier of symbol type. Each 3D symbol implementation should return a different type. 51 : : virtual QString type() const = 0; 52 : : //! Returns a new instance of the symbol with the same settings 53 : : virtual QgsAbstract3DSymbol *clone() const = 0 SIP_FACTORY; 54 : : 55 : : //! Writes symbol configuration to the given DOM element 56 : : virtual void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const = 0; 57 : : //! Reads symbol configuration from the given DOM element 58 : : virtual void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) = 0; 59 : : 60 : : /** 61 : : * Returns the list of the vector layer geometry types which are compatible with this symbol. 62 : : * 63 : : * \since QGIS 3.16 64 : : */ 65 : : virtual QList< QgsWkbTypes::GeometryType > compatibleGeometryTypes() const; 66 : : 67 : : //! Data definable properties. 68 : : enum Property 69 : : { 70 : : PropertyHeight = 0, //!< Height (altitude) 71 : : PropertyExtrusionHeight, //!< Extrusion height (zero means no extrusion) 72 : : }; 73 : : 74 : : //! Returns the symbol layer property definitions. 75 : : static const QgsPropertiesDefinition &propertyDefinitions(); 76 : : 77 : : //! Returns a reference to the symbol layer's property collection, used for data defined overrides. 78 : : QgsPropertyCollection &dataDefinedProperties() { return mDataDefinedProperties; } 79 : : 80 : : //! Returns a reference to the symbol layer's property collection, used for data defined overrides. 81 : : const QgsPropertyCollection &dataDefinedProperties() const { return mDataDefinedProperties; } SIP_SKIP 82 : : 83 : : //! Sets the symbol layer's property collection, used for data defined overrides. 84 : : void setDataDefinedProperties( const QgsPropertyCollection &collection ) { mDataDefinedProperties = collection; } 85 : : 86 : : /** 87 : : * Exports the geometries contained within the hierarchy of entity. 88 : : * Returns whether any objects were exported 89 : : * If this function is not overloaded we don't try to export anything 90 : : */ 91 : : virtual bool exportGeometries( Qgs3DSceneExporter *exporter, Qt3DCore::QEntity *entity, const QString &objectNamePrefix ) const SIP_SKIP; 92 : : 93 : : protected: 94 : : 95 : : /** 96 : : * Copies base class settings from this object to a \a destination object. 97 : : */ 98 : : void copyBaseSettings( QgsAbstract3DSymbol *destination ) const; 99 : : QgsPropertyCollection mDataDefinedProperties; 100 : : 101 : : private: 102 : : static void initPropertyDefinitions(); 103 : : 104 : : //! Property definitions 105 : : static QgsPropertiesDefinition sPropertyDefinitions; 106 : : }; 107 : : 108 : : 109 : : #endif // QGSABSTRACT3DSYMBOL_H