LCOV - code coverage report
Current view: top level - core/raster - qgsrasterdataprovidertemporalcapabilities.h (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 0 1 0.0 %
Date: 2021-04-10 08:29:14 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :                          qgsrasterdataprovidertemporalcapabilities.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                 :            : #ifndef QGSRASTERDATAPROVIDERTEMPORALCAPABILITIES_H
      19                 :            : #define QGSRASTERDATAPROVIDERTEMPORALCAPABILITIES_H
      20                 :            : 
      21                 :            : #include "qgis_core.h"
      22                 :            : #include "qgis_sip.h"
      23                 :            : #include "qgsrange.h"
      24                 :            : #include "qgsinterval.h"
      25                 :            : #include "qgsdataprovidertemporalcapabilities.h"
      26                 :            : 
      27                 :            : /**
      28                 :            :  * \class QgsRasterDataProviderTemporalCapabilities
      29                 :            :  * \ingroup core
      30                 :            :  * \brief Implementation of data provider temporal properties for QgsRasterDataProviders.
      31                 :            :  *
      32                 :            :  * Data provider temporal capabilities reflect the temporal capabilities of a QgsDataProvider.
      33                 :            :  * Unlike QgsMapLayerTemporalProperties, these settings are not user-configurable,
      34                 :            :  * and should only be set by the QgsDataProvider itself.
      35                 :            :  *
      36                 :            :  * \since QGIS 3.14
      37                 :            :  */
      38                 :          0 : class CORE_EXPORT QgsRasterDataProviderTemporalCapabilities : public QgsDataProviderTemporalCapabilities
      39                 :            : {
      40                 :            :   public:
      41                 :            : 
      42                 :            :     /**
      43                 :            :      * Constructor for QgsRasterDataProviderTemporalProperties.
      44                 :            :      *
      45                 :            :      * The \a enabled argument specifies whether the data provider has temporal capabilities.
      46                 :            :      */
      47                 :            :     QgsRasterDataProviderTemporalCapabilities( bool enabled = false );
      48                 :            : 
      49                 :            :     /**
      50                 :            :      * Method to use when resolving a temporal range to a data provider layer or band.
      51                 :            :      **/
      52                 :            :     enum IntervalHandlingMethod
      53                 :            :     {
      54                 :            :       MatchUsingWholeRange, //!< Use an exact match to the whole temporal range
      55                 :            :       MatchExactUsingStartOfRange, //!< Match the start of the temporal range to a corresponding layer or band, and only use exact matching results
      56                 :            :       MatchExactUsingEndOfRange, //!< Match the end of the temporal range to a corresponding layer or band, and only use exact matching results
      57                 :            :       FindClosestMatchToStartOfRange, //! Match the start of the temporal range to the least previous closest datetime.
      58                 :            :       FindClosestMatchToEndOfRange //! Match the end of the temporal range to the least previous closest datetime.
      59                 :            :     };
      60                 :            :     // TODO -- add other methods
      61                 :            : 
      62                 :            :     /**
      63                 :            :      * Returns the desired method to use when resolving a temporal interval to matching
      64                 :            :      * layers or bands in the data provider.
      65                 :            :      *
      66                 :            :      *\see setIntervalHandlingMethod()
      67                 :            :     **/
      68                 :            :     IntervalHandlingMethod intervalHandlingMethod() const;
      69                 :            : 
      70                 :            :     /**
      71                 :            :      * Sets the desired \a method to use when resolving a temporal interval to matching
      72                 :            :      * layers or bands in the data provider.
      73                 :            :      *
      74                 :            :      *\see intervalHandlingMethod()
      75                 :            :     **/
      76                 :            :     void setIntervalHandlingMethod( IntervalHandlingMethod method );
      77                 :            : 
      78                 :            :     /**
      79                 :            :      * Sets the overall datetime \a range extent from which temporal data is available from the provider.
      80                 :            :      *
      81                 :            :      * \see availableTemporalRange()
      82                 :            :     */
      83                 :            :     void setAvailableTemporalRange( const QgsDateTimeRange &range );
      84                 :            : 
      85                 :            :     /**
      86                 :            :      * Returns the overall datetime range extent from which temporal data is available from the provider.
      87                 :            :      *
      88                 :            :      * \see setAvailableTemporalRange()
      89                 :            :     */
      90                 :            :     const QgsDateTimeRange &availableTemporalRange() const;
      91                 :            : 
      92                 :            :     /**
      93                 :            :      * Sets a list of all valid datetime \a ranges for which temporal data is available from the provider.
      94                 :            :      *
      95                 :            :      * As opposed to setAvailableTemporalRange(), this method is useful when a provider
      96                 :            :      * contains a set of non-contiguous datetime ranges.
      97                 :            :      *
      98                 :            :      * \see allAvailableTemporalRanges()
      99                 :            :      * \see setAvailableTemporalRange()
     100                 :            :      * \since QGIS 3.20
     101                 :            :     */
     102                 :            :     void setAllAvailableTemporalRanges( const QList< QgsDateTimeRange > &ranges );
     103                 :            : 
     104                 :            :     /**
     105                 :            :      * Returns a list of all valid datetime ranges for which temporal data is available from the provider.
     106                 :            :      *
     107                 :            :      * As opposed to availableTemporalRange(), this method is useful when a provider
     108                 :            :      * contains a set of non-contiguous datetime ranges.
     109                 :            :      *
     110                 :            :      * \see setAllAvailableTemporalRanges()
     111                 :            :      * \see availableTemporalRange()
     112                 :            :      * \since QGIS 3.20
     113                 :            :     */
     114                 :            :     QList< QgsDateTimeRange > allAvailableTemporalRanges() const;
     115                 :            : 
     116                 :            :     /**
     117                 :            :      * Sets the available reference datetime \a range. This is to be used for
     118                 :            :      * bi-temporal based data. Where data can have both nominal and reference times.
     119                 :            :      *
     120                 :            :      * \see availableReferenceTemporalRange()
     121                 :            :     */
     122                 :            :     void setAvailableReferenceTemporalRange( const QgsDateTimeRange &range );
     123                 :            : 
     124                 :            :     /**
     125                 :            :      * Returns the available reference datetime range, which indicates the maximum
     126                 :            :      * extent of datetime values available for reference temporal ranges from the provider.
     127                 :            :      *
     128                 :            :      * \see setAvailableReferenceTemporalRange()
     129                 :            :     */
     130                 :            :     const QgsDateTimeRange &availableReferenceTemporalRange() const;
     131                 :            : 
     132                 :            :     /**
     133                 :            :      * Returns the requested temporal range.
     134                 :            :      * Intended to be used by the provider in fetching data.
     135                 :            :     */
     136                 :            :     const QgsDateTimeRange &requestedTemporalRange() const;
     137                 :            : 
     138                 :            :     /**
     139                 :            :      * Returns the default time step interval corresponding to the available
     140                 :            :      * datetime values for the provider.
     141                 :            :      *
     142                 :            :      * \see setDefaultInterval()
     143                 :            :      * \since QGIS 3.20
     144                 :            :      */
     145                 :            :     QgsInterval defaultInterval() const;
     146                 :            : 
     147                 :            :     /**
     148                 :            :      * Sets the default time step \a interval corresponding to the available
     149                 :            :      * datetime values for the provider.
     150                 :            :      *
     151                 :            :      * \see defaultInterval()
     152                 :            :      * \since QGIS 3.20
     153                 :            :      */
     154                 :            :     void setDefaultInterval( const QgsInterval &interval );
     155                 :            : 
     156                 :            :   private:
     157                 :            : 
     158                 :            :     /**
     159                 :            :      * Sets the requested temporal \a range to retrieve when
     160                 :            :      * returning data from the associated data provider.
     161                 :            :      *
     162                 :            :      * \note this is not normally manually set, and is intended for use by
     163                 :            :      * QgsRasterLayerRenderer to automatically set the requested temporal range
     164                 :            :      * on a clone of the data provider during a render job.
     165                 :            :      *
     166                 :            :      * \see requestedTemporalRange()
     167                 :            :     */
     168                 :            :     void setRequestedTemporalRange( const QgsDateTimeRange &range );
     169                 :            : 
     170                 :            :     /**
     171                 :            :      * Represents available data provider datetime range.
     172                 :            :      *
     173                 :            :      * This is for determining the providers lower and upper datetime bounds,
     174                 :            :      * any updates on the mRange should get out the range bound defined
     175                 :            :      * by this member.
     176                 :            :      *
     177                 :            :      */
     178                 :            :     QgsDateTimeRange mAvailableTemporalRange;
     179                 :            : 
     180                 :            :     /**
     181                 :            :      * A list of all valid temporal ranges for the provider. Used when a provider
     182                 :            :      * has a non-contiguous set of available temporal ranges.
     183                 :            :      */
     184                 :            :     QList< QgsDateTimeRange > mAllAvailableTemporalRanges;
     185                 :            : 
     186                 :            :     //! Represents the requested temporal range.
     187                 :            :     QgsDateTimeRange mRequestedRange;
     188                 :            : 
     189                 :            :     /**
     190                 :            :      * Stores the available reference temporal range
     191                 :            :      */
     192                 :            :     QgsDateTimeRange mAvailableReferenceRange;
     193                 :            : 
     194                 :            :     QgsInterval mDefaultInterval;
     195                 :            : 
     196                 :            :     //! Interval handling method
     197                 :            :     IntervalHandlingMethod mIntervalMatchMethod = MatchUsingWholeRange;
     198                 :            : 
     199                 :            :     friend class QgsRasterLayerRenderer;
     200                 :            :     friend class TestQgsRasterDataProviderTemporalCapabilities;
     201                 :            : 
     202                 :            : };
     203                 :            : 
     204                 :            : #endif // QGSRASTERDATAPROVIDERTEMPORALCAPABILITIES_H

Generated by: LCOV version 1.14