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