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