QwtInterval 类表征一个区间,这个区间由两个double类型的上限值max和下限值min所表示。它可以表示[min, max],[min, max),(min, max]和(min, max) 等4种情况。
代码分析:
class QWT_EXPORT QwtInterval
{
public:
/*!
Flag indicating if a border is included or excluded
\sa setBorderFlags(), borderFlags()
*/
enum BorderFlag
{
//! Min/Max values are inside the interval
IncludeBorders = 0x00,
//! Min value is not included in the interval
ExcludeMinimum = 0x01,
//! Max value is not included in the interval
ExcludeMaximum = 0x02,
//! Min/Max values are not included in the interval
ExcludeBorders = ExcludeMinimum | ExcludeMaximum
};
//! Border flags
typedef QFlags<BorderFlag> BorderFlags; // 是否包含左右边界的标志变量
QwtInterval();
QwtInterval( double minValue, double maxValue,
BorderFlags = IncludeBorders );
void setInterval( double minValue, double maxValue,
BorderFlags = IncludeBorders );
QwtInterval normalized() const;
QwtInterval inverted() const; // 反转一个区间
QwtInterval limited( double minValue, double maxValue ) const; // 同 setMinValue(minValue) & setMaxValue(maxValue)
bool operator==( const QwtInterval & ) const;
bool operator!=( const QwtInterval & ) const;
void setBorderFlags( BorderFlags );
BorderFlags borderFlags() const;
double minValue() const;
double maxValue() const;
double width() const; // 返回区间的宽度
void setMinValue( double );
void setMaxValue( double );
bool contains( double value ) const;
bool intersects( const QwtInterval & ) const; // 测试两个区间是否有交集!
QwtInterval intersect( const QwtInterval & ) const; // 取两个区间的交集
QwtInterval unite( const QwtInterval & ) const; // 取两个区间的并集
QwtInterval operator|( const QwtInterval & ) const;
QwtInterval operator&( const QwtInterval & ) const;
QwtInterval &operator|=( const QwtInterval & );
QwtInterval &operator&=( const QwtInterval & );
QwtInterval extend( double value ) const; // 扩大一个区间
QwtInterval operator|( double ) const;
QwtInterval &operator|=( double );
bool isValid() const;
bool isNull() const;
void invalidate(); // 使无效(即初始化至初始状态),一个好的命名示例,如果是我们写代码,很可能写成initial();
QwtInterval symmetrize( double value ) const; // 对称化,使value成为该区间的中心点
private:
double d_minValue;
double d_maxValue;
BorderFlags d_borderFlags;
};