00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#ifndef QWT_DOUBLE_RECT_H
00011
#define QWT_DOUBLE_RECT_H 1
00012
00013
#include <qpoint.h>
00014
#include <qsize.h>
00015
#include <qrect.h>
00016
#include "qwt_global.h"
00017
00022 class QWT_EXPORT QwtDoublePoint
00023 {
00024
public:
00025 QwtDoublePoint();
00026 QwtDoublePoint(
double x,
double y);
00027 QwtDoublePoint(
const QPoint &);
00028
00029
inline bool isNull()
const;
00030
00031
inline double x()
const;
00032
inline double y()
const;
00033
inline void setX(
double x);
00034
inline void setY(
double y);
00035
00036
inline double &rx();
00037
inline double &ry();
00038
00039
bool operator==(
const QwtDoublePoint &)
const;
00040
bool operator!=(
const QwtDoublePoint &)
const;
00041
00042
const QwtDoublePoint operator-()
const;
00043
const QwtDoublePoint operator+(
const QwtDoublePoint &)
const;
00044
const QwtDoublePoint operator-(
const QwtDoublePoint &)
const;
00045
const QwtDoublePoint operator*(
double)
const;
00046
const QwtDoublePoint operator/(
double)
const;
00047
00048 QwtDoublePoint &operator+=(
const QwtDoublePoint &);
00049 QwtDoublePoint &operator-=(
const QwtDoublePoint &);
00050 QwtDoublePoint &operator*=(
double);
00051 QwtDoublePoint &operator/=(
double);
00052
00053
private:
00054
double d_x;
00055
double d_y;
00056 };
00057
00062 class QWT_EXPORT QwtDoubleSize
00063 {
00064
public:
00065 QwtDoubleSize();
00066 QwtDoubleSize(
double width,
double height);
00067 QwtDoubleSize(
const QSize &);
00068
00069
inline bool isNull()
const;
00070
inline bool isEmpty()
const;
00071
inline bool isValid()
const;
00072
00073
inline double width()
const;
00074
inline double height()
const;
00075
inline void setWidth(
double w );
00076
inline void setHeight(
double h );
00077
void transpose();
00078
00079 QwtDoubleSize expandedTo(
const QwtDoubleSize &)
const;
00080 QwtDoubleSize boundedTo(
const QwtDoubleSize &)
const;
00081
00082
inline double &rwidth();
00083
inline double &rheight();
00084
00085
bool operator==(
const QwtDoubleSize &)
const;
00086
bool operator!=(
const QwtDoubleSize &)
const;
00087
00088
const QwtDoubleSize operator-()
const;
00089
const QwtDoubleSize operator+(
const QwtDoubleSize &)
const;
00090
const QwtDoubleSize operator-(
const QwtDoubleSize &)
const;
00091
const QwtDoubleSize operator*(
double)
const;
00092
const QwtDoubleSize operator/(
double)
const;
00093
00094 QwtDoubleSize &operator+=(
const QwtDoubleSize &);
00095 QwtDoubleSize &operator-=(
const QwtDoubleSize &);
00096 QwtDoubleSize &operator*=(
double c);
00097 QwtDoubleSize &operator/=(
double c);
00098
00099
private:
00100
double d_width;
00101
double d_height;
00102 };
00103
00108 class QWT_EXPORT QwtDoubleRect
00109 {
00110
public:
00111 QwtDoubleRect();
00112 QwtDoubleRect(
double x1,
double x2,
double y1,
double y2);
00113 QwtDoubleRect(
double x,
double y,
const QwtDoubleSize &);
00114
00115
inline bool isNull()
const;
00116
inline bool isEmpty()
const;
00117
inline bool isValid()
const;
00118
00119 QwtDoubleRect normalize()
const;
00120
00121
inline double x1()
const;
00122
inline double x2()
const;
00123
inline double y1()
const;
00124
inline double y2()
const;
00125
00126
inline double &rx1();
00127
inline double &rx2();
00128
inline double &ry1();
00129
inline double &ry2();
00130
00131
inline void setX1(
double);
00132
inline void setX2(
double);
00133
inline void setY1(
double);
00134
inline void setY2(
double);
00135
00136 QwtDoublePoint center()
const;
00137
00138
void moveX(
double x);
00139
void moveY(
double y );
00140
void move(
double x,
double y);
00141
void moveBy(
double dx,
double dy);
00142
void moveCenter(
const QwtDoublePoint &);
00143
void moveCenter(
double dx,
double dy);
00144
00145
void setRect(
double x1,
double x2,
double y1,
double y2);
00146
00147
inline double width()
const;
00148
inline double height()
const;
00149
inline QwtDoubleSize size()
const;
00150
00151
inline void setWidth(
double w );
00152
inline void setHeight(
double h );
00153
void setSize(
const QwtDoubleSize &);
00154
00155 QwtDoubleRect operator|(
const QwtDoubleRect &r)
const;
00156 QwtDoubleRect operator&(
const QwtDoubleRect &r)
const;
00157 QwtDoubleRect &operator|=(
const QwtDoubleRect &r);
00158 QwtDoubleRect &operator&=(
const QwtDoubleRect &r);
00159
bool operator==(
const QwtDoubleRect &)
const;
00160
bool operator!=(
const QwtDoubleRect &)
const;
00161
00162
bool contains(
const QwtDoublePoint &p,
bool proper = FALSE)
const;
00163
bool contains(
double x,
double y,
bool proper = FALSE)
const;
00164
bool contains(
const QwtDoubleRect &r,
bool proper=FALSE)
const;
00165
00166 QwtDoubleRect unite(
const QwtDoubleRect &)
const;
00167 QwtDoubleRect intersect(
const QwtDoubleRect &)
const;
00168
bool intersects(
const QwtDoubleRect &)
const;
00169
00170
private:
00171
double d_x1;
00172
double d_x2;
00173
double d_y1;
00174
double d_y2;
00175 };
00176
00181 inline bool QwtDoublePoint::isNull()
const
00182
{
00183
return d_x == 0.0 && d_y == 0.0;
00184 }
00185
00187 inline double QwtDoublePoint::x()
const
00188
{
00189
return d_x;
00190 }
00191
00193 inline double QwtDoublePoint::y()
const
00194
{
00195
return d_y;
00196 }
00197
00199 inline void QwtDoublePoint::setX(
double x)
00200 {
00201 d_x = x;
00202 }
00203
00205 inline void QwtDoublePoint::setY(
double y)
00206 {
00207 d_y = y;
00208 }
00209
00211 inline double &
QwtDoublePoint::rx()
00212 {
00213
return d_x;
00214 }
00215
00217 inline double &
QwtDoublePoint::ry()
00218 {
00219
return d_y;
00220 }
00221
00226 inline bool QwtDoubleSize::isNull()
const
00227
{
00228
return d_width == 0.0 && d_height == 0.0;
00229 }
00230
00235 inline bool QwtDoubleSize::isEmpty()
const
00236
{
00237
return d_width <= 0.0 || d_height <= 0.0;
00238 }
00239
00244 inline bool QwtDoubleSize::isValid()
const
00245
{
00246
return d_width >= 0.0 && d_height >= 0.0;
00247 }
00248
00250 inline double QwtDoubleSize::width()
const
00251
{
00252
return d_width;
00253 }
00254
00256 inline double QwtDoubleSize::height()
const
00257
{
00258
return d_height;
00259 }
00260
00262 inline void QwtDoubleSize::setWidth(
double width)
00263 {
00264 d_width = width;
00265 }
00266
00268 inline void QwtDoubleSize::setHeight(
double height)
00269 {
00270 d_height = height;
00271 }
00272
00274 inline double &
QwtDoubleSize::rwidth()
00275 {
00276
return d_width;
00277 }
00278
00280 inline double &
QwtDoubleSize::rheight()
00281 {
00282
return d_height;
00283 }
00284
00291 inline bool QwtDoubleRect::isNull()
const
00292
{
00293
return d_x2 == d_x1 && d_y2 == d_y1;
00294 }
00295
00302 inline bool QwtDoubleRect::isEmpty()
const
00303
{
00304
return d_x1 >= d_x2 || d_y1 >= d_y2;
00305 }
00306
00313 inline bool QwtDoubleRect::isValid()
const
00314
{
00315
return d_x1 <= d_x2 && d_y1 <= d_y2;
00316 }
00317
00319 inline double QwtDoubleRect::x1()
const
00320
{
00321
return d_x1;
00322 }
00323
00325 inline double QwtDoubleRect::x2()
const
00326
{
00327
return d_x2;
00328 }
00329
00331 inline double QwtDoubleRect::y1()
const
00332
{
00333
return d_y1;
00334 }
00335
00337 inline double QwtDoubleRect::y2()
const
00338
{
00339
return d_y2;
00340 }
00341
00343 inline double &
QwtDoubleRect::rx1()
00344 {
00345
return d_x1;
00346 }
00347
00349 inline double &
QwtDoubleRect::rx2()
00350 {
00351
return d_x2;
00352 }
00353
00355 inline double &
QwtDoubleRect::ry1()
00356 {
00357
return d_y1;
00358 }
00359
00361 inline double &
QwtDoubleRect::ry2()
00362 {
00363
return d_y2;
00364 }
00365
00367 inline void QwtDoubleRect::setX1(
double x1)
00368 {
00369 d_x1 = x1;
00370 }
00371
00373 inline void QwtDoubleRect::setX2(
double x2)
00374 {
00375 d_x2 = x2;
00376 }
00377
00379 inline void QwtDoubleRect::setY1(
double y1)
00380 {
00381 d_y1 = y1;
00382 }
00383
00385 inline void QwtDoubleRect::setY2(
double y2)
00386 {
00387 d_y2 = y2;
00388 }
00389
00391 inline double QwtDoubleRect::width()
const
00392
{
00393
return d_x2 - d_x1;
00394 }
00395
00397 inline double QwtDoubleRect::height()
const
00398
{
00399
return d_y2 - d_y1;
00400 }
00401
00403 inline QwtDoubleSize
QwtDoubleRect::size()
const
00404
{
00405
return QwtDoubleSize(
width(),
height());
00406 }
00407
00409 inline void QwtDoubleRect::setWidth(
double w)
00410 {
00411 d_x2 = d_x1 + w;
00412 }
00413
00415 inline void QwtDoubleRect::setHeight(
double h)
00416 {
00417 d_y2 = d_y1 + h;
00418 }
00419
00420
#endif // QWT_DOUBLE_RECT_H