QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
qgsrasterrange.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsrasterrange.h
3  --------------------------------------
4  Date : Oct 9, 2012
5  Copyright : (C) 2012 by Radim Blazek
6  email : radim dot blazek at gmail 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 QGSRASTERRANGE_H
19 #define QGSRASTERRANGE_H
20 
21 #include "qgis_core.h"
22 #include "qgis_sip.h"
23 #include "qgis.h"
24 #include <QList>
25 
26 class QgsRasterRange;
27 
28 typedef QList<QgsRasterRange> QgsRasterRangeList;
29 
35 class CORE_EXPORT QgsRasterRange
36 {
37  public:
38 
41  {
42  IncludeMinAndMax = 0,
46  };
47 
51  QgsRasterRange() = default;
52 
59  QgsRasterRange( double min, double max, BoundsType bounds = IncludeMinAndMax );
60 
65  double min() const { return mMin; }
66 
71  double max() const { return mMax; }
72 
80  BoundsType bounds() const { return mType; }
81 
86  double setMin( double min ) { return mMin = min; }
87 
92  double setMax( double max ) { return mMax = max; }
93 
101  void setBounds( BoundsType type ) { mType = type; }
102 
103  inline bool operator==( const QgsRasterRange &o ) const
104  {
105  return ( ( std::isnan( mMin ) && std::isnan( o.mMin ) ) || qgsDoubleNear( mMin, o.mMin ) )
106  && ( ( std::isnan( mMax ) && std::isnan( o.mMax ) ) || qgsDoubleNear( mMax, o.mMax ) )
107  && mType == o.mType;
108  }
109 
114  bool contains( double value ) const
115  {
116  return ( value > mMin
117  || ( !std::isnan( mMin ) && qgsDoubleNear( value, mMin ) && ( mType == IncludeMinAndMax || mType == IncludeMin ) )
118  || std::isnan( mMin ) )
119  &&
120  ( value < mMax
121  || ( !std::isnan( mMax ) && qgsDoubleNear( value, mMax ) && ( mType == IncludeMinAndMax || mType == IncludeMax ) )
122  || std::isnan( mMax ) );
123  }
124 
131  static bool contains( double value, const QgsRasterRangeList &rangeList )
132  {
133  for ( QgsRasterRange range : rangeList )
134  {
135  if ( range.contains( value ) )
136  {
137  return true;
138  }
139  }
140  return false;
141  }
142 
147  bool overlaps( const QgsRasterRange &other ) const;
148 
153  QString asText() const;
154 
155  private:
156  double mMin = std::numeric_limits<double>::quiet_NaN();
157  double mMax = std::numeric_limits<double>::quiet_NaN();
158  BoundsType mType = IncludeMinAndMax;
159 };
160 
161 #endif
162 
163 
QgsRasterRange::setBounds
void setBounds(BoundsType type)
Sets the bounds type for the range, which specifies whether or not the min and max values themselves ...
Definition: qgsrasterrange.h:101
QgsRasterRange::IncludeMax
@ IncludeMax
Include the max value, but not the min value, e.g. min < value <= max.
Definition: qgsrasterrange.h:43
QgsRasterRange::operator==
bool operator==(const QgsRasterRange &o) const
Definition: qgsrasterrange.h:103
QgsRasterRange::bounds
BoundsType bounds() const
Returns the bounds type for the range, which specifies whether or not the min and max values themselv...
Definition: qgsrasterrange.h:80
QgsRasterRange::IncludeMin
@ IncludeMin
Include the min value, but not the max value, e.g. min <= value < max.
Definition: qgsrasterrange.h:44
qgis.h
QgsRasterRange::setMin
double setMin(double min)
Sets the minimum value for the range.
Definition: qgsrasterrange.h:86
QgsRasterRange::min
double min() const
Returns the minimum value for the range.
Definition: qgsrasterrange.h:65
QgsRasterRange::contains
static bool contains(double value, const QgsRasterRangeList &rangeList)
Tests if a value is within the list of ranges.
Definition: qgsrasterrange.h:131
qgsDoubleNear
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
Definition: qgis.h:315
qgis_sip.h
QgsRasterRangeList
QList< QgsRasterRange > QgsRasterRangeList
Definition: qgsrasterrange.h:26
QgsRasterRange::contains
bool contains(double value) const
Returns true if this range contains the specified value.
Definition: qgsrasterrange.h:114
QgsRasterRange::QgsRasterRange
QgsRasterRange()=default
Default constructor, both min and max value for the range will be set to NaN.
QgsRasterRange::BoundsType
BoundsType
Handling for min and max bounds.
Definition: qgsrasterrange.h:41
QgsRasterRange
Raster values range container.
Definition: qgsrasterrange.h:36
QgsRasterRange::Exclusive
@ Exclusive
Don't include either the min or max value, e.g. min < value < max.
Definition: qgsrasterrange.h:45
QgsRasterRange::max
double max() const
Returns the maximum value for the range.
Definition: qgsrasterrange.h:71
QgsRasterRange::setMax
double setMax(double max)
Sets the maximum value for the range.
Definition: qgsrasterrange.h:92