QWT API (中文) 7.3.0
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
qwt_plot_data_access.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
10#ifndef QWT_PLOT_DATA_ACCESS_H
11#define QWT_PLOT_DATA_ACCESS_H
12
13#include "qwt_global.h"
14#include "qwt_series_store.h"
15
16#include <qpoint.h>
17#include <qrect.h>
18#include <qvector.h>
19
20class QPainterPath;
21class QwtPlotItem;
23class QwtPoint3D;
24class QwtOHLCSample;
25class QwtSetSample;
27class QwtBoxSample;
28
54class QWT_EXPORT QwtPlotDataAccess
55{
56public:
57 // ---- QPointF data (QwtPlotCurve, QwtPlotBarChart) ----
58
59 // Extract XY samples as QVector<QPointF>
60 static QVector< QPointF > xySamples(const QwtPlotItem* item);
61
62 // Extract XY samples into separate x and y vectors
63 static void xySamples(const QwtPlotItem* item, QVector< double >& x, QVector< double >& y);
64
65 // Set XY samples from QVector<QPointF>
66 static bool setXYSamples(QwtPlotItem* item, const QVector< QPointF >& data);
67
68 // Set XY samples from separate x and y vectors
69 static bool setXYSamples(QwtPlotItem* item, const QVector< double >& x, const QVector< double >& y);
70
71 // ---- QwtIntervalSample data (QwtPlotIntervalCurve, QwtPlotHistogram) ----
72
73 // Extract interval samples
74 static QVector< QwtIntervalSample > intervalSamples(const QwtPlotItem* item);
75
76 // Set interval samples
77 static bool setIntervalSamples(QwtPlotItem* item, const QVector< QwtIntervalSample >& data);
78
79 // ---- QwtPoint3D data (QwtPlotSpectroCurve) ----
80
81 // Extract 3D point samples
82 static QVector< QwtPoint3D > xyzSamples(const QwtPlotItem* item);
83
84 // Set 3D point samples
85 static bool setXyzSamples(QwtPlotItem* item, const QVector< QwtPoint3D >& data);
86
87 // ---- QwtOHLCSample data (QwtPlotTradingCurve) ----
88
89 // Extract OHLC samples
90 static QVector< QwtOHLCSample > ohlcSamples(const QwtPlotItem* item);
91
92 // Set OHLC samples
93 static bool setOhlcSamples(QwtPlotItem* item, const QVector< QwtOHLCSample >& data);
94
95 // ---- QwtSetSample data (QwtPlotMultiBarChart) ----
96
97 // Extract set samples
98 static QVector< QwtSetSample > setSamples(const QwtPlotItem* item);
99
100 // Set set samples
101 static bool setSetSamples(QwtPlotItem* item, const QVector< QwtSetSample >& data);
102
103 // ---- QwtVectorFieldSample data (QwtPlotVectorField) ----
104
105 // Extract vector field samples
106 static QVector< QwtVectorFieldSample > vectorFieldSamples(const QwtPlotItem* item);
107
108 // Set vector field samples
109 static bool setVectorFieldSamples(QwtPlotItem* item, const QVector< QwtVectorFieldSample >& data);
110
111 // ---- QwtBoxSample data (QwtPlotBoxChart) ----
112
113 // Extract box samples
114 static QVector< QwtBoxSample > boxSamples(const QwtPlotItem* item);
115
116 // Set box samples
117 static bool setBoxSamples(QwtPlotItem* item, const QVector< QwtBoxSample >& data);
118
119 // ---- Generic template: extract from QwtSeriesStore<T> ----
120
121 // Extract all samples from a QwtSeriesStore
122 template< typename T >
123 static QVector< T > samples(const QwtSeriesStore< T >* store);
124
125 // Extract a range of samples from a QwtSeriesStore
126 template< typename T >
127 static QVector< T > samples(const QwtSeriesStore< T >* store, int from, int to);
128
129 // ---- Range-based extraction ----
130
131 // Extract XY samples within a rectangular range
132 static QVector< QPointF > xySamplesInRange(const QwtPlotItem* item, const QRectF& range);
133
134 // Extract XY samples within a path range
135 static QVector< QPointF > xySamplesInRange(const QwtPlotItem* item, const QPainterPath& range);
136
137 // ---- Range-based removal ----
138
139 // Remove XY samples within a rectangular range, return count removed
140 static int removeSamplesInRange(QwtPlotItem* item, const QRectF& range);
141
142 // Remove XY samples within a path range, return count removed
143 static int removeSamplesInRange(QwtPlotItem* item, const QPainterPath& range);
144};
145
146// Template implementations
147
148template< typename T >
149QVector< T > QwtPlotDataAccess::samples(const QwtSeriesStore< T >* store)
150{
151 QVector< T > result;
152 if (!store)
153 return result;
154
155 const size_t size = store->dataSize();
156 result.reserve(static_cast< int >(size));
157 for (size_t i = 0; i < size; ++i)
158 result.append(store->sample(i));
159
160 return result;
161}
162
163template< typename T >
164QVector< T > QwtPlotDataAccess::samples(const QwtSeriesStore< T >* store, int from, int to)
165{
166 QVector< T > result;
167 if (!store || from < 0)
168 return result;
169
170 const int size = static_cast< int >(store->dataSize());
171 if (to < 0 || to >= size)
172 to = size - 1;
173
174 for (int i = from; i <= to; ++i)
175 result.append(store->sample(static_cast< size_t >(i)));
176
177 return result;
178}
179
180#endif // QWT_PLOT_DATA_ACCESS_H
Sample for box-and-whisker plot (boxplot) visualization
Definition qwt_samples.h:363
A sample of the types (x1-x2, y) or (x, y1-y2)
Definition qwt_samples.h:74
Open-High-Low-Close sample used in financial charts
Definition qwt_samples.h:210
Utility class for reading and writing sample data from QwtPlotItem instances
Definition qwt_plot_data_access.h:55
Base class for items on the plot canvas
Definition qwt_plot_item.h:85
QwtPoint3D class defines a 3D point in double coordinates
Definition qwt_point_3d.h:40
Class storing a QwtSeriesData object
Definition qwt_series_store.h:91
virtual size_t dataSize() const override
Definition qwt_series_store.h:167
A sample of the types (x1...xn, y) or (x, y1..yn)
Definition qwt_samples.h:139
Sample used in vector fields
Definition qwt_samples.h:291