qwt_double_interval.h

00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  * 
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
00008  *****************************************************************************/
00009 
00010 #ifndef QWT_DOUBLE_INTERVAL_H
00011 #define QWT_DOUBLE_INTERVAL_H
00012 
00013 #include "qwt_global.h"
00014 
00021 class QWT_EXPORT QwtDoubleInterval
00022 {
00023 public:
00024     inline QwtDoubleInterval();
00025     inline QwtDoubleInterval(double minValue, double maxValue);
00026 
00027     inline void setInterval(double minValue, double maxValue);
00028 
00029     QwtDoubleInterval normalized() const;
00030     QwtDoubleInterval inverted() const;
00031     QwtDoubleInterval limited(double minValue, double maxValue) const;
00032 
00033     inline int operator==(const QwtDoubleInterval &) const;
00034     inline int operator!=(const QwtDoubleInterval &) const;
00035 
00036     inline double minValue() const;
00037     inline double maxValue() const;
00038     
00039     inline double width() const;
00040 
00041     inline void setMinValue(double);
00042     inline void setMaxValue(double);
00043 
00044     bool contains(double value) const;
00045 
00046     bool intersects(const QwtDoubleInterval &) const;
00047     QwtDoubleInterval intersect(const QwtDoubleInterval &) const;
00048     QwtDoubleInterval unite(const QwtDoubleInterval &) const;
00049 
00050     inline QwtDoubleInterval operator|(const QwtDoubleInterval &) const;
00051     inline QwtDoubleInterval operator&(const QwtDoubleInterval &) const;
00052 
00053     QwtDoubleInterval &operator|=(const QwtDoubleInterval &);
00054     QwtDoubleInterval &operator&=(const QwtDoubleInterval &);
00055 
00056     QwtDoubleInterval extend(double value) const;
00057     inline QwtDoubleInterval operator|(double) const;
00058     QwtDoubleInterval &operator|=(double);
00059 
00060     inline bool isValid() const;
00061     inline bool isNull() const;
00062     inline void invalidate();
00063 
00064     QwtDoubleInterval symmetrize(double value) const;
00065 
00066 private:
00067     double d_minValue;
00068     double d_maxValue;
00069 };
00070 
00077 inline QwtDoubleInterval::QwtDoubleInterval():
00078     d_minValue(0.0),
00079     d_maxValue(-1.0)
00080 {
00081 }
00082 
00089 inline QwtDoubleInterval::QwtDoubleInterval(double minValue, double maxValue):
00090     d_minValue(minValue),
00091     d_maxValue(maxValue)
00092 {
00093 }
00094 
00101 inline void QwtDoubleInterval::setInterval(double minValue, double maxValue)
00102 {
00103     d_minValue = minValue;
00104     d_maxValue = maxValue;
00105 }
00106 
00112 inline void QwtDoubleInterval::setMinValue(double minValue)
00113 {   
00114     d_minValue = minValue;
00115 }
00116 
00122 inline void QwtDoubleInterval::setMaxValue(double maxValue)
00123 {
00124     d_maxValue = maxValue;
00125 }
00126 
00128 inline double QwtDoubleInterval::minValue() const 
00129 { 
00130     return d_minValue; 
00131 }
00132 
00134 inline double QwtDoubleInterval::maxValue() const 
00135 { 
00136     return d_maxValue; 
00137 }
00138 
00146 inline double QwtDoubleInterval::width() const 
00147 { 
00148     return isValid() ? (d_maxValue - d_minValue) : 0.0; 
00149 }
00150 
00155 inline QwtDoubleInterval QwtDoubleInterval::operator&(
00156     const QwtDoubleInterval &interval ) const
00157 {
00158     return intersect(interval);
00159 }
00160 
00165 inline QwtDoubleInterval QwtDoubleInterval::operator|(
00166     const QwtDoubleInterval &interval) const
00167 {
00168     return unite(interval);
00169 }
00170 
00172 inline int QwtDoubleInterval::operator==(const QwtDoubleInterval &other) const
00173 {
00174     return (d_minValue == other.d_minValue) &&
00175         (d_maxValue == other.d_maxValue);
00176 }
00177 
00179 inline int QwtDoubleInterval::operator!=(const QwtDoubleInterval &other) const
00180 {
00181     return (!(*this == other));
00182 }
00183 
00188 inline QwtDoubleInterval QwtDoubleInterval::operator|(double value) const
00189 {
00190     return extend(value);
00191 }
00192 
00194 inline bool QwtDoubleInterval::isNull() const
00195 {
00196     return d_minValue >= d_maxValue;
00197 }
00198 
00200 inline bool QwtDoubleInterval::isValid() const
00201 {
00202     return d_minValue <= d_maxValue;
00203 }
00204 
00211 inline void QwtDoubleInterval::invalidate()
00212 {
00213     d_minValue = 0.0;
00214     d_maxValue = -1.0;
00215 }
00216 
00217 #endif

Generated on Mon Feb 26 21:22:36 2007 for Qwt User's Guide by  doxygen 1.4.6