00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef QWT_DATA_H
00013 #define QWT_DATA_H 1
00014
00015 #include "qwt_global.h"
00016 #include "qwt_array.h"
00017 #include "qwt_double_rect.h"
00018
00019
00020 #if defined(QWT_TEMPLATEDLL)
00021 template class QWT_EXPORT QwtArray<double>;
00022 #endif
00023
00024
00039 class QWT_EXPORT QwtData
00040 {
00041 public:
00042 QwtData();
00043 virtual ~QwtData();
00047 virtual QwtData *copy() const = 0;
00048
00052 virtual size_t size() const = 0;
00058 virtual double x(size_t i) const = 0;
00064 virtual double y(size_t i) const = 0;
00065
00066 virtual QwtDoubleRect boundingRect() const;
00067
00068 protected:
00072 QwtData &operator=(const QwtData &);
00073 };
00074
00078 class QWT_EXPORT QwtDoublePointData: public QwtData
00079 {
00080 public:
00086 QwtDoublePointData(const QwtArray<QwtDoublePoint> &);
00087 QwtDoublePointData &operator=(const QwtDoublePointData &);
00088 virtual QwtData *copy() const;
00089
00090 virtual size_t size() const;
00091 virtual double x(size_t i) const;
00092 virtual double y(size_t i) const;
00093
00094 const QwtArray<QwtDoublePoint> data() const;
00095
00096 private:
00097 QwtArray<QwtDoublePoint> d_data;
00098 };
00099
00104 class QWT_EXPORT QwtArrayData: public QwtData
00105 {
00106 public:
00107 QwtArrayData(const QwtArray<double> &x, const QwtArray<double> &y);
00108 QwtArrayData(const double *x, const double *y, size_t size);
00109 QwtArrayData &operator=(const QwtArrayData &);
00110 virtual QwtData *copy() const;
00111
00112 virtual size_t size() const;
00113 virtual double x(size_t i) const;
00114 virtual double y(size_t i) const;
00115
00116 const QwtArray<double> &xData() const;
00117 const QwtArray<double> &yData() const;
00118
00119 virtual QwtDoubleRect boundingRect() const;
00120
00121 private:
00122 QwtArray<double> d_x;
00123 QwtArray<double> d_y;
00124 };
00125
00129 class QWT_EXPORT QwtCPointerData: public QwtData
00130 {
00131 public:
00140 QwtCPointerData(const double *x, const double *y, size_t size);
00141 QwtCPointerData &operator=(const QwtCPointerData &);
00142 virtual QwtData *copy() const;
00143
00144 virtual size_t size() const;
00145 virtual double x(size_t i) const;
00146 virtual double y(size_t i) const;
00147
00148 const double *xData() const;
00149 const double *yData() const;
00150
00151 virtual QwtDoubleRect boundingRect() const;
00152
00153 private:
00154 const double *d_x;
00155 const double *d_y;
00156 size_t d_size;
00157 };
00158
00159 #endif // !QWT_DATA