00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_CURVE_FITTER_H
00011 #define QWT_CURVE_FITTER_H
00012
00013 #include "qwt_global.h"
00014 #include <qpolygon.h>
00015 #include <qrect.h>
00016
00017 class QwtSpline;
00018
00022 class QWT_EXPORT QwtCurveFitter
00023 {
00024 public:
00025 virtual ~QwtCurveFitter();
00026
00033 virtual QPolygonF fitCurve(const QPolygonF &polygon) const = 0;
00034
00035 protected:
00036 QwtCurveFitter();
00037
00038 private:
00039 QwtCurveFitter( const QwtCurveFitter & );
00040 QwtCurveFitter &operator=( const QwtCurveFitter & );
00041 };
00042
00046 class QWT_EXPORT QwtSplineCurveFitter: public QwtCurveFitter
00047 {
00048 public:
00049 enum FitMode
00050 {
00051 Auto,
00052 Spline,
00053 ParametricSpline
00054 };
00055
00056 QwtSplineCurveFitter();
00057 virtual ~QwtSplineCurveFitter();
00058
00059 void setFitMode(FitMode);
00060 FitMode fitMode() const;
00061
00062 void setSpline(const QwtSpline&);
00063 const QwtSpline &spline() const;
00064 QwtSpline &spline();
00065
00066 void setSplineSize(int size);
00067 int splineSize() const;
00068
00069 virtual QPolygonF fitCurve(const QPolygonF &) const;
00070
00071 private:
00072 QPolygonF fitSpline(const QPolygonF &) const;
00073 QPolygonF fitParametric(const QPolygonF &) const;
00074
00075 class PrivateData;
00076 PrivateData *d_data;
00077 };
00078
00096 class QWT_EXPORT QwtWeedingCurveFitter: public QwtCurveFitter
00097 {
00098 public:
00099 QwtWeedingCurveFitter(double tolerance = 1.0);
00100 virtual ~QwtWeedingCurveFitter();
00101
00102 void setTolerance(double);
00103 double tolerance() const;
00104
00105 virtual QPolygonF fitCurve(const QPolygonF &) const;
00106
00107 private:
00108 class Line;
00109
00110 class PrivateData;
00111 PrivateData *d_data;
00112 };
00113
00114 #endif