Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsmaplayertemporalproperties.h 3 : : --------------- 4 : : begin : February 2020 5 : : copyright : (C) 2020 by Samweli Mwakisambwe 6 : : email : samweli at kartoza 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 QGSMAPLAYERTEMPORALPROPERTIES_H 20 : : #define QGSMAPLAYERTEMPORALPROPERTIES_H 21 : : 22 : : #include "qgis_core.h" 23 : : #include "qgis_sip.h" 24 : : #include "qgstemporalproperty.h" 25 : : #include "qgsreadwritecontext.h" 26 : : #include "qgsrange.h" 27 : : 28 : : #include <QDomElement> 29 : : 30 : : class QgsDataProviderTemporalCapabilities; 31 : : 32 : : /** 33 : : * \class QgsMapLayerTemporalProperties 34 : : * \ingroup core 35 : : * \brief Base class for storage of map layer temporal properties. 36 : : * 37 : : * QgsMapLayerTemporalProperties exposes user-configurable settings for controlling 38 : : * how an individual QgsMapLayer behaves in a temporal context, e.g. while animating a map object. 39 : : * 40 : : * \since QGIS 3.14 41 : : */ 42 : 0 : class CORE_EXPORT QgsMapLayerTemporalProperties : public QgsTemporalProperty 43 : : { 44 : : #ifdef SIP_RUN 45 : : #include "qgsrasterlayertemporalproperties.h" 46 : : #include "qgsmeshlayertemporalproperties.h" 47 : : #include "qgsvectorlayertemporalproperties.h" 48 : : #endif 49 : : 50 : : Q_OBJECT 51 : : 52 : : #ifdef SIP_RUN 53 : : SIP_CONVERT_TO_SUBCLASS_CODE 54 : : if ( qobject_cast<QgsRasterLayerTemporalProperties *>( sipCpp ) ) 55 : : { 56 : : sipType = sipType_QgsRasterLayerTemporalProperties; 57 : : } 58 : : else if ( qobject_cast<QgsMeshLayerTemporalProperties *>( sipCpp ) ) 59 : : { 60 : : sipType = sipType_QgsMeshLayerTemporalProperties; 61 : : } 62 : : else if ( qobject_cast<QgsVectorLayerTemporalProperties *>( sipCpp ) ) 63 : : { 64 : : sipType = sipType_QgsVectorLayerTemporalProperties; 65 : : } 66 : : else 67 : : { 68 : : sipType = 0; 69 : : } 70 : : SIP_END 71 : : #endif 72 : : 73 : : public: 74 : : 75 : : /** 76 : : * Constructor for QgsMapLayerTemporalProperties, with the specified \a parent object. 77 : : * 78 : : * The \a enabled argument specifies whether the temporal properties are initially enabled or not (see isActive()). 79 : : */ 80 : : QgsMapLayerTemporalProperties( QObject *parent SIP_TRANSFERTHIS, bool enabled = false ); 81 : : 82 : : /** 83 : : * Writes the properties to a DOM \a element, to be used later with readXml(). 84 : : * 85 : : * \see readXml() 86 : : */ 87 : : virtual QDomElement writeXml( QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context ) = 0; 88 : : 89 : : /** 90 : : * Reads temporal properties from a DOM \a element previously written by writeXml(). 91 : : * 92 : : * \see writeXml() 93 : : */ 94 : : virtual bool readXml( const QDomElement &element, const QgsReadWriteContext &context ) = 0; 95 : : 96 : : /** 97 : : * Returns TRUE if the layer should be visible and rendered for the specified time \a range. 98 : : */ 99 : : virtual bool isVisibleInTemporalRange( const QgsDateTimeRange &range ) const; 100 : : 101 : : /** 102 : : * Sets the layers temporal settings to appropriate defaults based on 103 : : * a provider's temporal \a capabilities. 104 : : */ 105 : : virtual void setDefaultsFromDataProviderTemporalCapabilities( const QgsDataProviderTemporalCapabilities *capabilities ) = 0; 106 : : 107 : : #ifndef SIP_RUN 108 : : // sip gets confused with this, refuses to compile 109 : : 110 : : /** 111 : : * Attempts to calculate the overall temporal extent for the specified \a layer, using 112 : : * the settings defined by the temporal properties object. 113 : : * 114 : : * May return an infinite range if the extent could not be calculated. 115 : : * 116 : : * \note Not available in Python bindings 117 : : */ 118 : : virtual QgsDateTimeRange calculateTemporalExtent( QgsMapLayer *layer ) const; 119 : : #endif 120 : : 121 : : /** 122 : : * Attempts to calculate the overall list of all temporal extents which are contained in the specified \a layer, using 123 : : * the settings defined by the temporal properties object. 124 : : * 125 : : * May return an empty list if the ranges could not be calculated. 126 : : * 127 : : * \since QGIS 3.20 128 : : */ 129 : : virtual QList< QgsDateTimeRange > allTemporalRanges( QgsMapLayer *layer ) const; 130 : : 131 : : }; 132 : : 133 : : #endif // QGSMAPLAYERTEMPORALPROPERTIES_H