00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_DIMAP_H
00011 #define QWT_DIMAP_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_math.h"
00015
00046 class QWT_EXPORT QwtDiMap
00047 {
00048 public:
00049 QwtDiMap();
00050 QwtDiMap(int i1, int i2, double d1, double d2, bool lg = FALSE);
00051 ~QwtDiMap();
00052
00053 bool contains(double x) const;
00054 bool contains(int x) const;
00055
00056 void setIntRange(int i1, int i2);
00057 void setDblRange(double d1, double d2, bool lg = FALSE);
00058
00059 int transform(double x) const;
00060 double invTransform(int i) const;
00061
00062 int limTransform(double x) const;
00063 double xTransform(double x) const;
00064
00065 inline double d1() const;
00066 inline double d2() const;
00067 inline int i1() const;
00068 inline int i2() const;
00069 inline bool logarithmic() const;
00070
00071 QT_STATIC_CONST double LogMin;
00072 QT_STATIC_CONST double LogMax;
00073
00074 private:
00075 void newFactor();
00076
00077 double d_x1, d_x2;
00078 int d_y1, d_y2;
00079 double d_cnv;
00080 bool d_log;
00081 };
00082
00086 inline double QwtDiMap::d1() const
00087 {
00088 return d_x1;
00089 }
00090
00094 inline double QwtDiMap::d2() const
00095 {
00096 return d_x2;
00097 }
00098
00102 inline int QwtDiMap::i1() const
00103 {
00104 return d_y1;
00105 }
00106
00110 inline int QwtDiMap::i2() const
00111 {
00112 return d_y2;
00113 }
00114
00118 inline bool QwtDiMap::logarithmic() const
00119 {
00120 return d_log;
00121 }
00122
00136 inline int QwtDiMap::transform(double x) const
00137 {
00138 if (d_log)
00139 return d_y1 + qRound((log(x) - d_x1) * d_cnv);
00140 else
00141 return d_y1 + qRound((x - d_x1) * d_cnv);
00142 }
00143
00144 #endif