Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsmaplayersty.h 3 : : -------------------------------------- 4 : : Date : September 2019 5 : : Copyright : (C) 2018 by Denis Rouzaud 6 : : Email : denis@opengis.ch 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 QGSMAPLAYERSTYLE_H 17 : : #define QGSMAPLAYERSTYLE_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgis_sip.h" 21 : : 22 : : #include <QByteArray> 23 : : #include <QMap> 24 : : #include <QStringList> 25 : : #include <QObject> 26 : : 27 : : 28 : : class QDomElement; 29 : : class QgsMapLayer; 30 : : 31 : : /** 32 : : * \ingroup core 33 : : * \brief Stores style information (renderer, opacity, labeling, diagrams etc.) applicable to a map layer. 34 : : * 35 : : * Stored data are considered as opaque: 36 : : * 37 : : * - it is not possible to access them directly or modify them 38 : : * - it is only possible to read or write layer's current style. 39 : : * 40 : : * \since QGIS 2.8 41 : : */ 42 : 231 : class CORE_EXPORT QgsMapLayerStyle 43 : : { 44 : : public: 45 : : //! construct invalid style 46 : 83 : QgsMapLayerStyle() = default; 47 : : 48 : : //! construct style from QML definition (XML) 49 : : explicit QgsMapLayerStyle( const QString &xmlData ); 50 : : 51 : : //! Tell whether the style is valid (i.e. there is something stored in it) 52 : : bool isValid() const; 53 : : 54 : : //! Remove any stored style data (will get invalid) 55 : : void clear(); 56 : : 57 : : //! Returns XML content of the style 58 : : QString xmlData() const; 59 : : 60 : : //! Store layer's active style information in the instance 61 : : void readFromLayer( QgsMapLayer *layer ); 62 : : //! Apply stored layer's style information to the layer 63 : : void writeToLayer( QgsMapLayer *layer ) const; 64 : : 65 : : //! Read style configuration (for project file reading) 66 : : void readXml( const QDomElement &styleElement ); 67 : : //! Write style configuration (for project file writing) 68 : : void writeXml( QDomElement &styleElement ) const; 69 : : 70 : : private: 71 : : QString mXmlData; 72 : : }; 73 : : 74 : : 75 : : /** 76 : : * \ingroup core 77 : : * \brief Restore overridden layer style on destruction. 78 : : * 79 : : * \since QGIS 3.2 80 : : */ 81 : : class CORE_EXPORT QgsMapLayerStyleOverride 82 : : { 83 : : public: 84 : : 85 : : /** 86 : : * Construct a style override object associated with a map layer. 87 : : * The overridden style will be restored upon object destruction. 88 : : */ 89 : 0 : QgsMapLayerStyleOverride( QgsMapLayer *layer ) 90 : 0 : : mLayer( layer ) 91 : : { 92 : 0 : } 93 : : 94 : : ~QgsMapLayerStyleOverride(); 95 : : 96 : : /** 97 : : * Temporarily apply a different style to the layer. The argument 98 : : * can be either a style name or a full QML style definition. 99 : : */ 100 : : void setOverrideStyle( const QString &style ); 101 : : 102 : : private: 103 : : 104 : : QgsMapLayer *mLayer = nullptr; 105 : 0 : bool mStyleOverridden = false; 106 : : }; 107 : : #endif // QGSMAPLAYERSTYLE_H