您的位置:首页 > 其它

Qwt源码解读之QwtInterval 类

2016-08-09 10:34 344 查看
QwtInterval 类表征一个区间,这个区间由两个double类型的上限值max和下限值min所表示。它可以表示[min, max],[min, max),(min, max]和(min, max) 等4种情况。

代码分析:

[cpp] view
plain copy

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;  

};  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: