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;
- };