11 #ifndef QWT_DOUBLE_RECT_H 
   12 #define QWT_DOUBLE_RECT_H 1 
   14 #include "qwt_global.h" 
   15 #include "qwt_array.h" 
   17 #if QT_VERSION >= 0x040000 
   29 typedef QPointF QwtDoublePoint;
 
   37 typedef QSizeF QwtDoubleSize;
 
   45 typedef QRectF QwtDoubleRect;
 
   57 class QWT_EXPORT QwtDoublePoint
 
   61     QwtDoublePoint(
double x, 
double y);
 
   62     QwtDoublePoint(
const QPoint &);
 
   64     QPoint toPoint() 
const;
 
   77     bool operator==(
const QwtDoublePoint &) 
const;
 
   78     bool operator!=(
const QwtDoublePoint &) 
const;
 
   80     const QwtDoublePoint operator-() 
const;
 
   81     const QwtDoublePoint operator+(
const QwtDoublePoint &) 
const;
 
   82     const QwtDoublePoint operator-(
const QwtDoublePoint &) 
const;
 
   83     const QwtDoublePoint operator*(
double) 
const;
 
   84     const QwtDoublePoint operator/(
double) 
const;
 
   86     QwtDoublePoint &operator+=(
const QwtDoublePoint &);
 
   87     QwtDoublePoint &operator-=(
const QwtDoublePoint &);
 
   88     QwtDoublePoint &operator*=(
double);
 
   89     QwtDoublePoint &operator/=(
double);
 
  100 class QWT_EXPORT QwtDoubleSize
 
  104     QwtDoubleSize(
double width, 
double height);
 
  105     QwtDoubleSize(
const QSize &);
 
  108     bool isEmpty() 
const;
 
  109     bool isValid() 
const;
 
  111     double width() 
const;
 
  112     double height() 
const;
 
  113     void setWidth( 
double w );
 
  114     void setHeight( 
double h );
 
  117     QwtDoubleSize expandedTo(
const QwtDoubleSize &) 
const;
 
  118     QwtDoubleSize boundedTo(
const QwtDoubleSize &) 
const;
 
  120     bool operator==(
const QwtDoubleSize &) 
const;
 
  121     bool operator!=(
const QwtDoubleSize &) 
const;
 
  123     const QwtDoubleSize operator+(
const QwtDoubleSize &) 
const;
 
  124     const QwtDoubleSize operator-(
const QwtDoubleSize &) 
const;
 
  125     const QwtDoubleSize operator*(
double) 
const;
 
  126     const QwtDoubleSize operator/(
double) 
const;
 
  128     QwtDoubleSize &operator+=(
const QwtDoubleSize &);
 
  129     QwtDoubleSize &operator-=(
const QwtDoubleSize &);
 
  130     QwtDoubleSize &operator*=(
double c);
 
  131     QwtDoubleSize &operator/=(
double c);
 
  142 class QWT_EXPORT QwtDoubleRect  
 
  146     QwtDoubleRect(
double left, 
double top, 
double width, 
double height);
 
  147     QwtDoubleRect(
const QwtDoublePoint&, 
const QwtDoubleSize &);
 
  149     QwtDoubleRect(
const QRect &);
 
  150     QRect toRect() 
const;
 
  153     bool isEmpty()   
const;
 
  154     bool isValid()   
const;
 
  156     QwtDoubleRect normalized() 
const;
 
  162     double right()  
const;
 
  164     double bottom()  
const;
 
  169     void setLeft(
double);
 
  170     void setRight(
double);
 
  172     void setBottom(
double);
 
  174     QwtDoublePoint center()  
const;
 
  176     void moveLeft(
double x);
 
  177     void moveRight(
double x);
 
  178     void moveTop(
double y );
 
  179     void moveBottom(
double y );
 
  180     void moveTo(
double x, 
double y);
 
  181     void moveTo(
const QwtDoublePoint &);
 
  182     void moveBy(
double dx, 
double dy);
 
  183     void moveCenter(
const QwtDoublePoint &);
 
  184     void moveCenter(
double dx, 
double dy);
 
  186     void setRect(
double x1, 
double x2, 
double width, 
double height);
 
  188     double width()   
const;
 
  189     double height()  
const;
 
  190     QwtDoubleSize size() 
const;
 
  192     void setWidth(
double w );
 
  193     void setHeight(
double h );
 
  194     void setSize(
const QwtDoubleSize &);
 
  196     QwtDoubleRect  operator|(
const QwtDoubleRect &r) 
const;
 
  197     QwtDoubleRect  operator&(
const QwtDoubleRect &r) 
const;
 
  198     QwtDoubleRect &operator|=(
const QwtDoubleRect &r);
 
  199     QwtDoubleRect &operator&=(
const QwtDoubleRect &r);
 
  200     bool operator==( 
const QwtDoubleRect &) 
const;
 
  201     bool operator!=( 
const QwtDoubleRect &) 
const;
 
  203     bool contains(
const QwtDoublePoint &p, 
bool proper = 
false) 
const;
 
  204     bool contains(
double x, 
double y, 
bool proper = 
false) 
const; 
 
  205     bool contains(
const QwtDoubleRect &r, 
bool proper=
false) 
const;
 
  207     QwtDoubleRect unite(
const QwtDoubleRect &) 
const;
 
  208     QwtDoubleRect intersect(
const QwtDoubleRect &) 
const;
 
  209     bool intersects(
const QwtDoubleRect &) 
const;
 
  211     QwtDoublePoint bottomRight() 
const;
 
  212     QwtDoublePoint topRight() 
const;
 
  213     QwtDoublePoint topLeft() 
const;
 
  214     QwtDoublePoint bottomLeft() 
const;
 
  229 inline bool QwtDoublePoint::isNull()
 const 
  231     return d_x == 0.0 && d_y == 0.0; 
 
  235 inline double QwtDoublePoint::x()
 const 
  241 inline double QwtDoublePoint::y()
 const 
  247 inline double &QwtDoublePoint::rx()
 
  253 inline double &QwtDoublePoint::ry()
 
  259 inline void QwtDoublePoint::setX(
double x)
 
  265 inline void QwtDoublePoint::setY(
double y)
 
  274 inline QPoint QwtDoublePoint::toPoint()
 const 
  276     return QPoint(qRound(d_x), qRound(d_y));
 
  283 inline bool QwtDoubleSize::isNull()
 const 
  285     return d_width == 0.0 && d_height == 0.0; 
 
  292 inline bool QwtDoubleSize::isEmpty()
 const 
  294     return d_width <= 0.0 || d_height <= 0.0; 
 
  301 inline bool QwtDoubleSize::isValid()
 const 
  303     return d_width >= 0.0 && d_height >= 0.0; 
 
  307 inline double QwtDoubleSize::width()
 const 
  313 inline double QwtDoubleSize::height()
 const 
  319 inline void QwtDoubleSize::setWidth(
double width)
 
  325 inline void QwtDoubleSize::setHeight(
double height)
 
  337 inline bool QwtDoubleRect::isNull()
 const 
  339     return d_right == d_left && d_bottom == d_top;
 
  349 inline bool QwtDoubleRect::isEmpty()
 const 
  351     return d_left >= d_right || d_top >= d_bottom; 
 
  362 inline bool QwtDoubleRect::isValid()
 const 
  364     return d_left < d_right && d_top < d_bottom; 
 
  368 inline double QwtDoubleRect::x()
 const 
  374 inline double QwtDoubleRect::y()
 const 
  380 inline double QwtDoubleRect::left()
 const 
  386 inline double QwtDoubleRect::right()
 const 
  392 inline double QwtDoubleRect::top()
 const 
  398 inline double QwtDoubleRect::bottom()
 const 
  404 inline void QwtDoubleRect::setX(
double x)
 
  410 inline void QwtDoubleRect::setY(
double y)
 
  416 inline void QwtDoubleRect::setLeft(
double x)
 
  422 inline void QwtDoubleRect::setRight(
double x)
 
  428 inline void QwtDoubleRect::setTop(
double y)
 
  434 inline void QwtDoubleRect::setBottom(
double y)
 
  440 inline double QwtDoubleRect::width()
 const 
  442     return  d_right - d_left; 
 
  446 inline double QwtDoubleRect::height()
 const 
  448     return  d_bottom - d_top; 
 
  452 inline QwtDoubleSize QwtDoubleRect::size()
 const 
  454     return QwtDoubleSize(width(), height());
 
  458 inline void QwtDoubleRect::setWidth(
double w)
 
  460     d_right = d_left + w;
 
  464 inline void QwtDoubleRect::setHeight(
double h)
 
  466     d_bottom = d_top + h;
 
  473 inline void QwtDoubleRect::moveTo(
const QwtDoublePoint &p)
 
  475     moveTo(p.x(), p.y());
 
  478 inline QwtDoublePoint QwtDoubleRect::bottomRight()
 const 
  480     return QwtDoublePoint(bottom(), right());
 
  483 inline QwtDoublePoint QwtDoubleRect::topRight()
 const 
  485     return QwtDoublePoint(top(), right());
 
  488 inline QwtDoublePoint QwtDoubleRect::topLeft()
 const 
  490     return QwtDoublePoint(top(), left());
 
  493 inline QwtDoublePoint QwtDoubleRect::bottomLeft()
 const 
  495     return QwtDoublePoint(bottom(), left());
 
  499 #endif // QT_VERSION < 0x040000 
  501 #endif // QWT_DOUBLE_RECT_H