# qwt_curve_fitter.h

    00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
    00002  * Qwt Widget Library
    00003  * Copyright (C) 1997   Josef Wilgen
    00004  * Copyright (C) 2002   Uwe Rathmann
    00005  *
    00006  * This library is free software; you can redistribute it and/or
    00007  * modify it under the terms of the Qwt License, Version 1.0
    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:
    00054     enum FitMode
    00055     {
    00061         Auto,
    00062
    00064         Spline,
    00065
    00067         ParametricSpline
    00068     };
    00069
    00070     QwtSplineCurveFitter();
    00071     virtual ~QwtSplineCurveFitter();
    00072
    00073     void setFitMode( FitMode );
    00074     FitMode fitMode() const;
    00075
    00076     void setSpline( const QwtSpline& );
    00077     const QwtSpline &spline() const;
    00078     QwtSpline &spline();
    00079
    00080     void setSplineSize( int size );
    00081     int splineSize() const;
    00082
    00083     virtual QPolygonF fitCurve( const QPolygonF & ) const;
    00084
    00085 private:
    00086     QPolygonF fitSpline( const QPolygonF & ) const;
    00087     QPolygonF fitParametric( const QPolygonF & ) const;
    00088
    00089     class PrivateData;
    00090     PrivateData *d_data;
    00091 };
    00092
    00110 class QWT_EXPORT QwtWeedingCurveFitter: public QwtCurveFitter
    00111 {
    00112 public:
    00113     QwtWeedingCurveFitter( double tolerance = 1.0 );
    00114     virtual ~QwtWeedingCurveFitter();
    00115
    00116     void setTolerance( double );
    00117     double tolerance() const;
    00118
    00119     virtual QPolygonF fitCurve( const QPolygonF & ) const;
    00120
    00121 private:
    00122     class Line;
    00123
    00124     class PrivateData;
    00125     PrivateData *d_data;
    00126 };
    00127
    00128 #endif