00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_SPLINE_H
00011 #define QWT_SPLINE_H
00012
00013 #include "qwt_global.h"
00014 #include <qpolygon.h>
00015 #include <qvector.h>
00016
00057 class QWT_EXPORT QwtSpline
00058 {
00059 public:
00061 enum SplineType
00062 {
00063 Natural,
00064 Periodic
00065 };
00066
00067 QwtSpline();
00068 QwtSpline( const QwtSpline & );
00069
00070 ~QwtSpline();
00071
00072 QwtSpline &operator=( const QwtSpline & );
00073
00074 void setSplineType(SplineType);
00075 SplineType splineType() const;
00076
00077 #if QT_VERSION < 0x040000
00078 bool setPoints(const QVector<QPointF>& points);
00079 QVector<QPointF> points() const;
00080 #else
00081 bool setPoints(const QPolygonF& points);
00082 QPolygonF points() const;
00083 #endif
00084
00085 void reset();
00086
00087 bool isValid() const;
00088 double value(double x) const;
00089
00090 const QVector<double> &coefficientsA() const;
00091 const QVector<double> &coefficientsB() const;
00092 const QVector<double> &coefficientsC() const;
00093
00094 protected:
00095 bool buildNaturalSpline(const QPolygonF &);
00096 bool buildPeriodicSpline(const QPolygonF &);
00097
00098 class PrivateData;
00099 PrivateData *d_data;
00100 };
00101
00102 #endif