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 "qwt_double_rect.h"
00015 
00016 #if QT_VERSION >= 0x040000
00017 #include <QPolygonF>
00018 #else
00019 #include "qwt_array.h"
00020 #endif
00021 
00022 
00023 
00024 #if defined(QWT_TEMPLATEDLL)
00025 
00026 #if QT_VERSION < 0x040000
00027 #ifndef QWTARRAY_TEMPLATE_QWTDOUBLEPOINT // by mjo3
00028 #define QWTARRAY_TEMPLATE_QWTDOUBLEPOINT
00029 template class QWT_EXPORT QwtArray<QwtDoublePoint>;
00030 #endif //end of QWTARRAY_TEMPLATE_QWTDOUBLEPOINT
00031 #endif
00032 
00033 #endif
00034 
00035 
00036 
00077 class QWT_EXPORT QwtSpline
00078 {
00079 public:
00080     enum SplineType
00081     {
00082         Natural,
00083         Periodic
00084     };
00085 
00086     QwtSpline();
00087     QwtSpline( const QwtSpline & );
00088 
00089     ~QwtSpline();
00090 
00091     QwtSpline &operator=( const QwtSpline & );
00092 
00093     void setSplineType(SplineType);
00094     SplineType splineType() const;
00095 
00096 #if QT_VERSION < 0x040000
00097     bool setPoints(const QwtArray<QwtDoublePoint>& points);
00098     QwtArray<QwtDoublePoint> points() const;
00099 #else
00100     bool setPoints(const QPolygonF& points);
00101     QPolygonF points() const;
00102 #endif
00103 
00104     void reset();
00105 
00106     bool isValid() const;
00107     double value(double x) const;
00108 
00109 protected:
00110 
00111 #if QT_VERSION < 0x040000
00112     bool buildNaturalSpline(
00113         const QwtArray<QwtDoublePoint> &);
00114     bool buildPeriodicSpline(
00115         const QwtArray<QwtDoublePoint> &);
00116 #else
00117     bool buildNaturalSpline(const QPolygonF &);
00118     bool buildPeriodicSpline(const QPolygonF &);
00119 #endif
00120 
00121     class PrivateData;
00122     PrivateData *d_data;
00123 };
00124 
00125 #endif