QWT 7.0.1
Loading...
Searching...
No Matches
qwt_point_data.h
1/******************************************************************************
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 * Modified by ChenZongYan in 2024 <czy.t@163.com>
10 * Summary of major modifications (see ChangeLog.md for full history):
11 * 1. CMake build system & C++11 throughout.
12 * 2. Core panner/ zoomer refactored:
13 * - QwtPanner → QwtCachePanner (pixmap-cache version)
14 * - New real-time QwtPlotPanner derived from QwtPicker.
15 * 3. Zoomer supports multi-axis.
16 * 4. Parasite-plot framework:
17 * - QwtFigure, QwtPlotParasiteLayout, QwtPlotTransparentCanvas,
18 * - QwtPlotScaleEventDispatcher, built-in pan/zoom on axis.
19 * 5. New picker: QwtPlotSeriesDataPicker (works with date axis).
20 * 6. Raster & color-map extensions:
21 * - QwtGridRasterData (2-D table + interpolation)
22 * - QwtLinearColorMap::stopColors(), stopPos() API rename.
23 * 7. Bar-chart: expose pen/brush control.
24 * 8. Amalgamated build: single QwtPlot.h / QwtPlot.cpp pair in src-amalgamate.
25 *****************************************************************************/
26
27#ifndef QWT_POINT_DATA_H
28#define QWT_POINT_DATA_H
29
30#include "qwt_global.h"
31#include "qwt_series_data.h"
32
33#include <cstring>
34
38template< typename T >
40{
41public:
44 QwtPointArrayData(const T* x, const T* y, size_t size);
45
46 virtual size_t size() const QWT_OVERRIDE;
47 virtual QPointF sample(size_t index) const QWT_OVERRIDE;
48
49 const QVector< T >& xData() const;
50 const QVector< T >& yData() const;
51
52private:
53 QVector< T > m_x;
54 QVector< T > m_y;
55};
56
60template< typename T >
62{
63public:
64 QwtCPointerData(const T* x, const T* y, size_t size);
65
66 virtual size_t size() const QWT_OVERRIDE;
67 virtual QPointF sample(size_t index) const QWT_OVERRIDE;
68
69 const T* xData() const;
70 const T* yData() const;
71
72private:
73 const T* m_x;
74 const T* m_y;
75 size_t m_size;
76};
77
84template< typename T >
86{
87public:
89 QwtValuePointData(const T* y, size_t size);
90
91 virtual size_t size() const QWT_OVERRIDE;
92 virtual QPointF sample(size_t index) const QWT_OVERRIDE;
93
94 const QVector< T >& yData() const;
95
96private:
97 QVector< T > m_y;
98};
99
106template< typename T >
108{
109public:
110 QwtCPointerValueData(const T* y, size_t size);
111
112 virtual size_t size() const QWT_OVERRIDE;
113 virtual QPointF sample(size_t index) const QWT_OVERRIDE;
114
115 const T* yData() const;
116
117private:
118 const T* m_y;
119 size_t m_size;
120};
121
176{
177public:
178 QwtSyntheticPointData(size_t size, const QwtInterval& = QwtInterval());
179
180 void setSize(size_t size);
181 virtual size_t size() const QWT_OVERRIDE;
182
183 void setInterval(const QwtInterval&);
184 QwtInterval interval() const;
185
186 virtual QRectF boundingRect() const QWT_OVERRIDE;
187 virtual QPointF sample(size_t index) const QWT_OVERRIDE;
188
195 virtual double y(double x) const = 0;
196 virtual double x(size_t index) const;
197
198 virtual void setRectOfInterest(const QRectF&) QWT_OVERRIDE;
199 QRectF rectOfInterest() const;
200
201private:
202 size_t m_size;
203 QwtInterval m_interval;
204 QRectF m_rectOfInterest;
205 QwtInterval m_intervalOfInterest;
206};
207
216template< typename T >
218{
219}
220
229template< typename T >
231{
232 m_x = std::move(x);
233 m_y = std::move(y);
234}
235
244template< typename T >
245QwtPointArrayData< T >::QwtPointArrayData(const T* x, const T* y, size_t size)
246{
247 m_x.resize(size);
248 std::memcpy(m_x.data(), x, size * sizeof(T));
249
250 m_y.resize(size);
251 std::memcpy(m_y.data(), y, size * sizeof(T));
252}
253
255template< typename T >
257{
258 return qMin(m_x.size(), m_y.size());
259}
260
267template< typename T >
268QPointF QwtPointArrayData< T >::sample(size_t index) const
269{
270 return QPointF(m_x[ int(index) ], m_y[ int(index) ]);
271}
272
274template< typename T >
276{
277 return m_x;
278}
279
281template< typename T >
283{
284 return m_y;
285}
286
294template< typename T >
298
306template< typename T >
308{
309 m_y.resize(size);
310 std::memcpy(m_y.data(), y, size * sizeof(T));
311}
312
314template< typename T >
316{
317 return m_y.size();
318}
319
326template< typename T >
327QPointF QwtValuePointData< T >::sample(size_t index) const
328{
329 return QPointF(index, m_y[ int(index) ]);
330}
331
333template< typename T >
335{
336 return m_y;
337}
338
353template< typename T >
354QwtCPointerData< T >::QwtCPointerData(const T* x, const T* y, size_t size) : m_x(x), m_y(y), m_size(size)
355{
356}
357
359template< typename T >
361{
362 return m_size;
363}
364
371template< typename T >
372QPointF QwtCPointerData< T >::sample(size_t index) const
373{
374 return QPointF(m_x[ int(index) ], m_y[ int(index) ]);
375}
376
378template< typename T >
380{
381 return m_x;
382}
383
385template< typename T >
387{
388 return m_y;
389}
390
404template< typename T >
405QwtCPointerValueData< T >::QwtCPointerValueData(const T* y, size_t size) : m_y(y), m_size(size)
406{
407}
408
410template< typename T >
412{
413 return m_size;
414}
415
422template< typename T >
423QPointF QwtCPointerValueData< T >::sample(size_t index) const
424{
425 return QPointF(index, m_y[ int(index) ]);
426}
427
429template< typename T >
431{
432 return m_y;
433}
434
435#endif
Definition qwt_clipper.h:40
virtual QPointF sample(size_t index) const QWT_OVERRIDE
Definition qwt_series_data.h:241
virtual size_t size() const QWT_OVERRIDE
Definition qwt_series_data.h:235
Data class containing two pointers to memory blocks of T.
Definition qwt_point_data.h:62
const T * xData() const
Definition qwt_point_data.h:379
const T * yData() const
Definition qwt_point_data.h:386
virtual size_t size() const QWT_OVERRIDE
Definition qwt_point_data.h:360
virtual QPointF sample(size_t index) const QWT_OVERRIDE
Return the sample at position i.
Definition qwt_point_data.h:372
QwtCPointerData(const T *x, const T *y, size_t size)
Constructor.
Definition qwt_point_data.h:354
Data class containing a pointer to memory of y coordinates.
Definition qwt_point_data.h:108
virtual QPointF sample(size_t index) const QWT_OVERRIDE
Return the sample at position i.
Definition qwt_point_data.h:423
virtual size_t size() const QWT_OVERRIDE
Definition qwt_point_data.h:411
QwtCPointerValueData(const T *y, size_t size)
Constructor.
Definition qwt_point_data.h:405
const T * yData() const
Definition qwt_point_data.h:430
A class representing an interval.
Definition qwt_interval.h:40
Interface for iterating over two QVector<T> objects.
Definition qwt_point_data.h:40
const QVector< T > & xData() const
Definition qwt_point_data.h:275
const QVector< T > & yData() const
Definition qwt_point_data.h:282
virtual QPointF sample(size_t index) const QWT_OVERRIDE
Return the sample at position i.
Definition qwt_point_data.h:268
virtual size_t size() const QWT_OVERRIDE
Definition qwt_point_data.h:256
QwtPointArrayData(const QVector< T > &x, const QVector< T > &y)
Constructor.
Definition qwt_point_data.h:217
Interface for iterating over an array of points.
Definition qwt_series_data.h:248
virtual QRectF boundingRect() const QWT_OVERRIDE
Calculate the bounding rectangle.
Definition qwt_series_data.cpp:327
virtual void setRectOfInterest(const QRectF &rect)
Set a the "rect of interest".
Definition qwt_series_data.h:149
Synthetic point data.
Definition qwt_point_data.h:176
virtual double y(double x) const =0
Calculate a y value for a x value.
Interface for iterating over a QVector<T>.
Definition qwt_point_data.h:86
virtual QPointF sample(size_t index) const QWT_OVERRIDE
Return the sample at position i.
Definition qwt_point_data.h:327
QwtValuePointData(const QVector< T > &y)
Constructor.
Definition qwt_point_data.h:295
const QVector< T > & yData() const
Definition qwt_point_data.h:334
virtual size_t size() const QWT_OVERRIDE
Definition qwt_point_data.h:315