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