Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgs25drenderer.h - Qgs25DRenderer 3 : : --------------------------------- 4 : : 5 : : begin : 14.1.2016 6 : : copyright : (C) 2016 by Matthias Kuhn 7 : : email : matthias@opengis.ch 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : #ifndef QGS25DRENDERER_H 17 : : #define QGS25DRENDERER_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgsrenderer.h" 21 : : 22 : : class QgsOuterGlowEffect; 23 : : 24 : : /** 25 : : * \ingroup core 26 : : * \class Qgs25DRenderer 27 : : */ 28 : 0 : class CORE_EXPORT Qgs25DRenderer : public QgsFeatureRenderer 29 : : { 30 : : public: 31 : : Qgs25DRenderer(); 32 : : 33 : : /** 34 : : * Create a new 2.5D renderer from XML 35 : : * 36 : : * \param element XML information 37 : : * \param context reading context 38 : : */ 39 : : static QgsFeatureRenderer *create( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY; 40 : : QDomElement save( QDomDocument &doc, const QgsReadWriteContext &context ) override; 41 : : 42 : : void startRender( QgsRenderContext &context, const QgsFields &fields ) override; 43 : : void stopRender( QgsRenderContext &context ) override; 44 : : 45 : : QSet<QString> usedAttributes( const QgsRenderContext &context ) const override; 46 : : QgsFeatureRenderer *clone() const override SIP_FACTORY; 47 : : 48 : : QgsSymbol *symbolForFeature( const QgsFeature &feature, QgsRenderContext &context ) const override; 49 : : QgsSymbolList symbols( QgsRenderContext &context ) const override; 50 : : bool accept( QgsStyleEntityVisitorInterface *visitor ) const override; 51 : : 52 : : /** 53 : : * Gets the roof color 54 : : */ 55 : : QColor roofColor() const; 56 : : 57 : : /** 58 : : * Set the roof color 59 : : */ 60 : : void setRoofColor( const QColor &roofColor ); 61 : : 62 : : /** 63 : : * Gets the wall color 64 : : */ 65 : : QColor wallColor() const; 66 : : 67 : : /** 68 : : * Set the wall color 69 : : */ 70 : : void setWallColor( const QColor &wallColor ); 71 : : 72 : : /** 73 : : * Set wall shading enabled 74 : : */ 75 : : void setWallShadingEnabled( bool enabled ); 76 : : 77 : : /** 78 : : * Gets wall shading enabled 79 : : */ 80 : : bool wallShadingEnabled() const; 81 : : 82 : : /** 83 : : * Gets the shadow's color 84 : : */ 85 : : QColor shadowColor() const; 86 : : 87 : : /** 88 : : * Set the shadow's color 89 : : */ 90 : : void setShadowColor( const QColor &shadowColor ); 91 : : 92 : : /** 93 : : * Gets the shadow's spread distance in map units 94 : : */ 95 : : double shadowSpread() const; 96 : : 97 : : /** 98 : : * Set the shadow's spread distance in map units 99 : : */ 100 : : void setShadowSpread( double shadowSpread ); 101 : : 102 : : /** 103 : : * Try to convert from an existing renderer. If it is not of the same type 104 : : * we assume that the internals are not compatible and create a new default 105 : : * 2.5D renderer. 106 : : */ 107 : : static Qgs25DRenderer *convertFromRenderer( QgsFeatureRenderer *renderer ) SIP_FACTORY; 108 : : 109 : : /** 110 : : * Is the shadow enabled 111 : : */ 112 : : bool shadowEnabled() const; 113 : : 114 : : /** 115 : : * Enable or disable the shadow 116 : : */ 117 : : void setShadowEnabled( bool value ); 118 : : 119 : : private: 120 : : 121 : : QgsFillSymbolLayer *roofLayer() const; 122 : : QgsFillSymbolLayer *wallLayer() const; 123 : : QgsOuterGlowEffect *glowEffect() const; 124 : : 125 : : std::unique_ptr<QgsSymbol> mSymbol; 126 : : }; 127 : : 128 : : #endif // QGS25DRENDERER_H