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:
00065 enum FitMode
00066 {
00067 Auto,
00068 Spline,
00069 ParametricSpline
00070 };
00071
00072 QwtSplineCurveFitter();
00073 virtual ~QwtSplineCurveFitter();
00074
00075 void setFitMode( FitMode );
00076 FitMode fitMode() const;
00077
00078 void setSpline( const QwtSpline& );
00079 const QwtSpline &spline() const;
00080 QwtSpline &spline();
00081
00082 void setSplineSize( int size );
00083 int splineSize() const;
00084
00085 virtual QPolygonF fitCurve( const QPolygonF & ) const;
00086
00087 private:
00088 QPolygonF fitSpline( const QPolygonF & ) const;
00089 QPolygonF fitParametric( const QPolygonF & ) const;
00090
00091 class PrivateData;
00092 PrivateData *d_data;
00093 };
00094
00112 class QWT_EXPORT QwtWeedingCurveFitter: public QwtCurveFitter
00113 {
00114 public:
00115 QwtWeedingCurveFitter( double tolerance = 1.0 );
00116 virtual ~QwtWeedingCurveFitter();
00117
00118 void setTolerance( double );
00119 double tolerance() const;
00120
00121 virtual QPolygonF fitCurve( const QPolygonF & ) const;
00122
00123 private:
00124 class Line;
00125
00126 class PrivateData;
00127 PrivateData *d_data;
00128 };
00129
00130 #endif