QWT API (中文) 7.0.1
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
qwt_series_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_SERIES_DATA_H
28#define QWT_SERIES_DATA_H
29
30#include "qwt_global.h"
31#include "qwt_samples.h"
32#include "qwt_point_3d.h"
33
34#include <qvector.h>
35#include <qrect.h>
36
37class QwtPointPolar;
38
70template< typename T >
72{
73public:
76
78 virtual ~QwtSeriesData();
79
80#ifndef QWT_PYTHON_WRAPPER
81
83 virtual size_t size() const = 0;
84
86 virtual T sample(size_t i) const = 0;
87
89 virtual QRectF boundingRect() const = 0;
90
91#else
92 // Needed for generating the python bindings, but not for using them !
93 virtual size_t size() const
94 {
95 return 0;
96 }
97 virtual T sample(size_t i) const
98 {
99 return T();
100 }
101 virtual QRectF boundingRect() const
102 {
103 return cachedBoundingRect;
104 }
105#endif
106
108 virtual void setRectOfInterest(const QRectF& rect);
109
110protected:
112 mutable QRectF cachedBoundingRect;
113
114private:
115 QwtSeriesData< T >& operator=(const QwtSeriesData< T >&);
116};
117
118template< typename T >
119QwtSeriesData< T >::QwtSeriesData() : cachedBoundingRect(0.0, 0.0, -1.0, -1.0)
120{
121}
122
123template< typename T >
127
128template< typename T >
130{
131}
132
143template< typename T >
145{
146public:
149
153
157
159 const QVector< T > samples() const;
160
162 virtual size_t size() const override;
163
165 virtual T sample(size_t index) const override;
166
167protected:
170};
171
172template< typename T >
176
177template< typename T >
179{
180}
181
182template< typename T >
184{
185 m_samples = std::move(samples);
186}
187
188template< typename T >
190{
191 QwtSeriesData< T >::cachedBoundingRect = QRectF(0.0, 0.0, -1.0, -1.0);
192 m_samples = samples;
193}
194
195template< typename T >
197{
198 QwtSeriesData< T >::cachedBoundingRect = QRectF(0.0, 0.0, -1.0, -1.0);
199 m_samples = std::move(samples);
200}
201
202template< typename T >
204{
205 return m_samples;
206}
207
208template< typename T >
210{
211 return m_samples.size();
212}
213
214template< typename T >
216{
217 return m_samples[ static_cast< int >(i) ];
218}
219
230class QWT_EXPORT QwtPointSeriesData : public QwtArraySeriesData< QPointF >
231{
232public:
235
237 virtual QRectF boundingRect() const override;
238};
239
250class QWT_EXPORT QwtPoint3DSeriesData : public QwtArraySeriesData< QwtPoint3D >
251{
252public:
255
257 virtual QRectF boundingRect() const override;
258};
259
270class QWT_EXPORT QwtIntervalSeriesData : public QwtArraySeriesData< QwtIntervalSample >
271{
272public:
275
277 virtual QRectF boundingRect() const override;
278};
279
290class QWT_EXPORT QwtSetSeriesData : public QwtArraySeriesData< QwtSetSample >
291{
292public:
295
297 virtual QRectF boundingRect() const override;
298};
299
310class QWT_EXPORT QwtVectorFieldData : public QwtArraySeriesData< QwtVectorFieldSample >
311{
312public:
315
317 virtual QRectF boundingRect() const override;
318};
319
332class QWT_EXPORT QwtTradingChartData : public QwtArraySeriesData< QwtOHLCSample >
333{
334public:
337
339 virtual QRectF boundingRect() const override;
340};
341
354class QWT_EXPORT QwtBoxChartData : public QwtArraySeriesData< QwtBoxSample >
355{
356public:
359
361 virtual QRectF boundingRect() const override;
362};
363
376class QWT_EXPORT QwtBoxOutlierChartData : public QwtArraySeriesData< QwtBoxOutlierSample >
377{
378public:
381
383 virtual QRectF boundingRect() const override;
384
386 int totalOutlierCount() const;
387};
388
389QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QPointF >&, size_t from = 0, size_t to = 0);
390
391QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QwtPoint3D >&, size_t from = 0, size_t to = 0);
392
393QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QwtPointPolar >&, size_t from = 0, size_t to = 0);
394
395QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QwtIntervalSample >&, size_t from = 0, size_t to = 0);
396
397QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QwtSetSample >&, size_t from = 0, size_t to = 0);
398
399QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QwtOHLCSample >&, size_t from = 0, size_t to = 0);
400
401QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QwtVectorFieldSample >&, size_t from = 0, size_t to = 0);
402
403QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QwtBoxSample >&, size_t from = 0, size_t to = 0);
404
405QWT_EXPORT QRectF qwtBoundingRect(const QwtSeriesData< QwtBoxOutlierSample >&, size_t from = 0, size_t to = 0);
406
512template< typename T, typename LessThan >
513inline size_t qwtUpperSampleIndex(const QwtSeriesData< T >& series, double value, LessThan lessThan)
514{
515 const size_t count = series.size();
516 if (count == 0) {
517 return count; // 返回 0 作为“未找到”的标记(因为有效索引从 0 开始,count 超出了有效范围)
518 }
519
520 const size_t indexMax = count - 1;
521
522 // 如果 value 大于等于最后一个元素,说明没有元素大于 value,返回 count
523 if (!lessThan(value, series.sample(indexMax))) {
524 return count;
525 }
526
527 size_t indexMin = 0;
528 size_t n = indexMax; // n 表示当前搜索区间的大小
529
530 while (n > 0) {
531 const size_t half = n >> 1;
532 const size_t indexMid = indexMin + half;
533
534 if (lessThan(value, series.sample(indexMid))) {
535 // 目标在左侧区间 [indexMin, indexMid]
536 n = half;
537 } else {
538 // 目标在右侧区间 [indexMid + 1, indexMin + n - 1]
539 indexMin = indexMid + 1;
540 n -= half + 1;
541 }
542 }
543
544 return indexMin;
545}
546
547#endif
Definition qwt_clipper.h:40
数据模板类,组织为 QVector
Definition qwt_series_data.h:145
virtual T sample(size_t index) const override
Definition qwt_series_data.h:215
virtual size_t size() const override
Definition qwt_series_data.h:209
QwtArraySeriesData()
Constructor
Definition qwt_series_data.h:173
void setSamples(const QVector< T > &samples)
Assign an array of samples
Definition qwt_series_data.h:189
QwtArraySeriesData(const QVector< T > &samples)
Constructor
Definition qwt_series_data.h:178
QVector< T > m_samples
Vector of samples
Definition qwt_series_data.h:169
const QVector< T > samples() const
Definition qwt_series_data.h:203
箱线图样本数组迭代接口
Definition qwt_series_data.h:355
箱线图异常值样本数组迭代接口
Definition qwt_series_data.h:377
区间数组迭代接口
Definition qwt_series_data.h:271
3D点数组迭代接口
Definition qwt_series_data.h:251
极坐标点
Definition qwt_point_polar.h:52
点数组迭代接口
Definition qwt_series_data.h:231
遍历样本的抽象接口
Definition qwt_series_data.h:72
virtual void setRectOfInterest(const QRectF &rect)
Set a the "rect of interest"
Definition qwt_series_data.h:129
virtual size_t size() const =0
QwtSeriesData()
Constructor
Definition qwt_series_data.h:119
virtual ~QwtSeriesData()
Destructor
Definition qwt_series_data.h:124
QRectF cachedBoundingRect
Can be used to cache a calculated bounding rectangle
Definition qwt_series_data.h:112
virtual T sample(size_t i) const =0
Return a sample
virtual QRectF boundingRect() const =0
Calculate the bounding rect of all samples
集合样本数组迭代接口
Definition qwt_series_data.h:291
OHLC样本数组迭代接口
Definition qwt_series_data.h:333
向量场样本数组迭代接口
Definition qwt_series_data.h:311