Qwt User's Guide  6.0.2
qwt_curve_fitter.h
1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2  * Qwt Widget Library
3  * Copyright (C) 1997 Josef Wilgen
4  * Copyright (C) 2002 Uwe Rathmann
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the Qwt License, Version 1.0
8  *****************************************************************************/
9 
10 #ifndef QWT_CURVE_FITTER_H
11 #define QWT_CURVE_FITTER_H
12 
13 #include "qwt_global.h"
14 #include <qpolygon.h>
15 #include <qrect.h>
16 
17 class QwtSpline;
18 
22 class QWT_EXPORT QwtCurveFitter
23 {
24 public:
25  virtual ~QwtCurveFitter();
26 
33  virtual QPolygonF fitCurve( const QPolygonF &polygon ) const = 0;
34 
35 protected:
37 
38 private:
39  QwtCurveFitter( const QwtCurveFitter & );
40  QwtCurveFitter &operator=( const QwtCurveFitter & );
41 };
42 
46 class QWT_EXPORT QwtSplineCurveFitter: public QwtCurveFitter
47 {
48 public:
54  enum FitMode
55  {
62 
65 
67  ParametricSpline
68  };
69 
71  virtual ~QwtSplineCurveFitter();
72 
73  void setFitMode( FitMode );
74  FitMode fitMode() const;
75 
76  void setSpline( const QwtSpline& );
77  const QwtSpline &spline() const;
78  QwtSpline &spline();
79 
80  void setSplineSize( int size );
81  int splineSize() const;
82 
83  virtual QPolygonF fitCurve( const QPolygonF & ) const;
84 
85 private:
86  QPolygonF fitSpline( const QPolygonF & ) const;
87  QPolygonF fitParametric( const QPolygonF & ) const;
88 
89  class PrivateData;
90  PrivateData *d_data;
91 };
92 
110 class QWT_EXPORT QwtWeedingCurveFitter: public QwtCurveFitter
111 {
112 public:
113  QwtWeedingCurveFitter( double tolerance = 1.0 );
114  virtual ~QwtWeedingCurveFitter();
115 
116  void setTolerance( double );
117  double tolerance() const;
118 
119  virtual QPolygonF fitCurve( const QPolygonF & ) const;
120 
121 private:
122  class Line;
123 
124  class PrivateData;
125  PrivateData *d_data;
126 };
127 
128 #endif