qwt_interval.h
Go to the documentation of this file.
1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2  * Qwt Widget Library
3  * Copyright (C) 1997 Josef Wilgen
4  * Copyright (C) 2002 Uwe Rathmann
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the Qwt License, Version 1.0
8  *****************************************************************************/
9 
10 #ifndef QWT_INTERVAL_H
11 #define QWT_INTERVAL_H
12 
13 #include "qwt_global.h"
14 #include <qmetatype.h>
15 
23 {
24 public:
30  {
32  IncludeBorders = 0x00,
33 
35  ExcludeMinimum = 0x01,
36 
38  ExcludeMaximum = 0x02,
39 
41  ExcludeBorders = ExcludeMinimum | ExcludeMaximum
42  };
43 
45  typedef QFlags<BorderFlag> BorderFlags;
46 
47  QwtInterval();
48  QwtInterval( double minValue, double maxValue,
49  BorderFlags = IncludeBorders );
50 
51  void setInterval( double minValue, double maxValue,
52  BorderFlags = IncludeBorders );
53 
54  QwtInterval normalized() const;
55  QwtInterval inverted() const;
56  QwtInterval limited( double lowerBound, double upperBound ) const;
57 
58  bool operator==( const QwtInterval & ) const;
59  bool operator!=( const QwtInterval & ) const;
60 
61  void setBorderFlags( BorderFlags );
62  BorderFlags borderFlags() const;
63 
64  double minValue() const;
65  double maxValue() const;
66 
67  double width() const;
68  long double widthL() const;
69 
70  void setMinValue( double );
71  void setMaxValue( double );
72 
73  bool contains( double value ) const;
74  bool contains( const QwtInterval & ) const;
75 
76  bool intersects( const QwtInterval & ) const;
77  QwtInterval intersect( const QwtInterval & ) const;
78  QwtInterval unite( const QwtInterval & ) const;
79 
80  QwtInterval operator|( const QwtInterval & ) const;
81  QwtInterval operator&( const QwtInterval & ) const;
82 
83  QwtInterval &operator|=( const QwtInterval & );
84  QwtInterval &operator&=( const QwtInterval & );
85 
86  QwtInterval extend( double value ) const;
87  QwtInterval operator|( double ) const;
88  QwtInterval &operator|=( double );
89 
90  bool isValid() const;
91  bool isNull() const;
92  void invalidate();
93 
94  QwtInterval symmetrize( double value ) const;
95 
96 private:
97  double d_minValue;
98  double d_maxValue;
99  BorderFlags d_borderFlags;
100 };
101 
102 Q_DECLARE_TYPEINFO(QwtInterval, Q_MOVABLE_TYPE);
103 
111  d_minValue( 0.0 ),
112  d_maxValue( -1.0 ),
113  d_borderFlags( IncludeBorders )
114 {
115 }
116 
127  double minValue, double maxValue, BorderFlags borderFlags ):
128  d_minValue( minValue ),
129  d_maxValue( maxValue ),
130  d_borderFlags( borderFlags )
131 {
132 }
133 
142  double minValue, double maxValue, BorderFlags borderFlags )
143 {
147 }
148 
156 {
158 }
159 
165 {
166  return d_borderFlags;
167 }
168 
174 inline void QwtInterval::setMinValue( double minValue )
175 {
177 }
178 
184 inline void QwtInterval::setMaxValue( double maxValue )
185 {
187 }
188 
190 inline double QwtInterval::minValue() const
191 {
192  return d_minValue;
193 }
194 
196 inline double QwtInterval::maxValue() const
197 {
198  return d_maxValue;
199 }
200 
208 inline bool QwtInterval::isValid() const
209 {
210  if ( ( d_borderFlags & ExcludeBorders ) == 0 )
211  return d_minValue <= d_maxValue;
212  else
213  return d_minValue < d_maxValue;
214 }
215 
225 inline double QwtInterval::width() const
226 {
227  return isValid() ? ( d_maxValue - d_minValue ) : 0.0;
228 }
229 
239 inline long double QwtInterval::widthL() const
240 {
241  if ( !isValid() )
242  return 0.0;
243 
244  return static_cast<long double>( d_maxValue )
245  - static_cast<long double>( d_minValue );
246 }
247 
257  const QwtInterval &other ) const
258 {
259  return intersect( other );
260 }
261 
271  const QwtInterval &other ) const
272 {
273  return unite( other );
274 }
275 
282 inline bool QwtInterval::operator==( const QwtInterval &other ) const
283 {
284  return ( d_minValue == other.d_minValue ) &&
285  ( d_maxValue == other.d_maxValue ) &&
286  ( d_borderFlags == other.d_borderFlags );
287 }
294 inline bool QwtInterval::operator!=( const QwtInterval &other ) const
295 {
296  return ( !( *this == other ) );
297 }
298 
307 {
308  return extend( value );
309 }
310 
312 inline bool QwtInterval::isNull() const
313 {
314  return isValid() && d_minValue >= d_maxValue;
315 }
316 
324 {
325  d_minValue = 0.0;
326  d_maxValue = -1.0;
327 }
328 
329 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtInterval::BorderFlags )
330 Q_DECLARE_METATYPE( QwtInterval )
331 
332 #ifndef QT_NO_DEBUG_STREAM
333 QWT_EXPORT QDebug operator<<( QDebug, const QwtInterval & );
334 #endif
335 
336 #endif
bool operator!=(const QwtInterval &) const
Compare two intervals.
Definition: qwt_interval.h:294
enum MQTTPropertyCodes value
QFlags< BorderFlag > BorderFlags
Border flags.
Definition: qwt_interval.h:45
constexpr bool operator!=(const optional< T > &lhs, const optional< U > &rhs)
relop
Definition: sol.hpp:5324
bool operator==(fp x, fp y)
Definition: format-inl.h:1167
A class representing an interval.
Definition: qwt_interval.h:22
#define QWT_EXPORT
Definition: qwt_global.h:38
double minValue() const
Definition: qwt_interval.h:190
long double widthL() const
Return the width of an interval as long double.
Definition: qwt_interval.h:239
double maxValue() const
Definition: qwt_interval.h:196
QWT_EXPORT QDebug operator<<(QDebug, const QwtInterval &)
QwtInterval unite(const QwtInterval &) const
Unite 2 intervals.
QwtInterval operator|(const QwtInterval &) const
Definition: qwt_interval.h:270
void setInterval(double minValue, double maxValue, BorderFlags=IncludeBorders)
Definition: qwt_interval.h:141
QwtInterval operator&(const QwtInterval &) const
Intersection of two intervals.
Definition: qwt_interval.h:256
QwtInterval intersect(const QwtInterval &) const
Intersect 2 intervals.
bool isValid() const
Definition: qwt_interval.h:208
bool isNull() const
Definition: qwt_interval.h:312
QwtInterval()
Default Constructor.
Definition: qwt_interval.h:110
BorderFlags d_borderFlags
Definition: qwt_interval.h:99
Q_DECLARE_TYPEINFO(QwtInterval, Q_MOVABLE_TYPE)
void setBorderFlags(BorderFlags)
Definition: qwt_interval.h:155
BorderFlags borderFlags() const
Definition: qwt_interval.h:164
bool operator==(const QwtInterval &) const
Compare two intervals.
Definition: qwt_interval.h:282
double d_maxValue
Definition: qwt_interval.h:98
void setMinValue(double)
Definition: qwt_interval.h:174
void invalidate()
Definition: qwt_interval.h:323
QwtInterval extend(double value) const
Extend the interval.
double d_minValue
Definition: qwt_interval.h:97
Min/Max values are not included in the interval.
Definition: qwt_interval.h:41
double width() const
Return the width of an interval.
Definition: qwt_interval.h:225
void setMaxValue(double)
Definition: qwt_interval.h:184


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:10