QGIS API Documentation  3.25.0-Master (6b426f5f8a)
qgsmaplayerelevationproperties.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaplayerelevationproperties.h
3  ---------------
4  begin : November 2020
5  copyright : (C) 2020 by Nyall Dawson
6  email : nyall dot dawson dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 
19 #ifndef QGSMAPLAYERELEVATIONPROPERTIES_H
20 #define QGSMAPLAYERELEVATIONPROPERTIES_H
21 
22 #include "qgis_core.h"
23 #include "qgis_sip.h"
24 #include "qgsreadwritecontext.h"
25 #include "qgsrange.h"
26 #include "qgspropertycollection.h"
27 
28 #include <QObject>
29 #include <QDomElement>
30 
41 class CORE_EXPORT QgsMapLayerElevationProperties : public QObject
42 {
43 #ifdef SIP_RUN
48 #endif
49 
50  Q_OBJECT
51 
52 #ifdef SIP_RUN
54  if ( qobject_cast<QgsPointCloudLayerElevationProperties *>( sipCpp ) )
55  {
56  sipType = sipType_QgsPointCloudLayerElevationProperties;
57  }
58  else if ( qobject_cast<QgsVectorLayerElevationProperties *>( sipCpp ) )
59  {
60  sipType = sipType_QgsVectorLayerElevationProperties;
61  }
62  else if ( qobject_cast<QgsRasterLayerElevationProperties *>( sipCpp ) )
63  {
64  sipType = sipType_QgsRasterLayerElevationProperties;
65  }
66  else if ( qobject_cast<QgsMeshLayerElevationProperties *>( sipCpp ) )
67  {
68  sipType = sipType_QgsMeshLayerElevationProperties;
69  }
70  else
71  {
72  sipType = 0;
73  }
74  SIP_END
75 #endif
76 
77  public:
78 
83  enum Property
84  {
87  };
88 
92  enum Flag
93  {
94  FlagDontInvalidateCachedRendersWhenRangeChanges = 1
95  };
96  Q_DECLARE_FLAGS( Flags, Flag )
97 
98 
102 
106  virtual bool hasElevation() const;
107 
113  virtual QDomElement writeXml( QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context ) = 0;
114 
120  virtual bool readXml( const QDomElement &element, const QgsReadWriteContext &context ) = 0;
121 
127  virtual void setDefaultsFromLayer( QgsMapLayer *layer );
128 
134  virtual QString htmlSummary() const;
135 
142 
146  virtual bool isVisibleInZRange( const QgsDoubleRange &range ) const;
147 
151  virtual QgsMapLayerElevationProperties::Flags flags() const { return QgsMapLayerElevationProperties::Flags(); }
152 
159  virtual QgsDoubleRange calculateZRange( QgsMapLayer *layer ) const;
160 
170  virtual bool showByDefaultInElevationProfilePlots() const;
171 
180  double zOffset() const { return mZOffset; }
181 
190  void setZOffset( double offset );
191 
203  double zScale() const { return mZScale; }
204 
216  void setZScale( double scale );
217 
223  QgsPropertyCollection &dataDefinedProperties() { return mDataDefinedProperties; }
224 
232  const QgsPropertyCollection &dataDefinedProperties() const SIP_SKIP { return mDataDefinedProperties; }
233 
243  void setDataDefinedProperties( const QgsPropertyCollection &collection );
244 
250  static QgsPropertiesDefinition propertyDefinitions();
251 
252  signals:
253 
259  void changed();
260 
270 
280 
281  protected:
283  double mZScale = 1.0;
285  double mZOffset = 0.0;
286 
289 
292 
299  void writeCommonProperties( QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context );
300 
307  void readCommonProperties( const QDomElement &element, const QgsReadWriteContext &context );
308 
314  void copyCommonProperties( const QgsMapLayerElevationProperties *other );
315 
316  private:
317 
321  static void initPropertyDefinitions();
322 
323 };
324 
325 #endif // QGSMAPLAYERELEVATIONPROPERTIES_H
QgsRange which stores a range of double values.
Definition: qgsrange.h:203
Base class for storage of map layer elevation properties.
QgsPropertyCollection & dataDefinedProperties()
Returns a reference to the object's property collection, used for data defined overrides.
QgsPropertyCollection mDataDefinedProperties
Property collection for data defined elevation settings.
void profileGenerationPropertyChanged()
Emitted when any of the elevation properties which relate solely to generation of elevation profiles ...
virtual QgsMapLayerElevationProperties::Flags flags() const
Returns flags associated to the elevation properties.
const QgsPropertyCollection & dataDefinedProperties() const
Returns a reference to the object's property collection, used for data defined overrides.
virtual QgsMapLayerElevationProperties * clone() const =0
Creates a clone of the properties.
void changed()
Emitted when any of the elevation properties have changed.
double zScale() const
Returns the z scale, which is a scaling factor which should be applied to z values from the layer.
void renderingPropertyChanged()
Emitted when any of the elevation properties which relate solely to presentation of elevation results...
virtual QDomElement writeXml(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context)=0
Writes the properties to a DOM element, to be used later with readXml().
static QgsPropertiesDefinition sPropertyDefinitions
Property definitions.
virtual bool readXml(const QDomElement &element, const QgsReadWriteContext &context)=0
Reads the elevation properties from a DOM element previously written by writeXml().
Flag
Flags attached to the elevation property.
double zOffset() const
Returns the z offset, which is a fixed offset amount which should be added to z values from the layer...
Base class for all map layer types.
Definition: qgsmaplayer.h:73
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
The class is used as a container of context for various read/write operations on other objects.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition: qgis_sip.h:186
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_FACTORY
Definition: qgis_sip.h:76
#define SIP_END
Definition: qgis_sip.h:203
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.