QWT 7.0.1
Loading...
Searching...
No Matches
qwt_plot_curve.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_PLOT_CURVE_H
28#define QWT_PLOT_CURVE_H
29
30#include "qwt_global.h"
31#include "qwt_plot_seriesitem.h"
32
33#include <qstring.h>
34
35class QwtScaleMap;
36class QwtSymbol;
37class QwtCurveFitter;
38template< typename T >
39class QwtSeriesData;
40class QwtText;
41class QPainter;
42class QPolygonF;
43class QPen;
44
74class QWT_EXPORT QwtPlotCurve : public QwtPlotSeriesItem, public QwtSeriesStore< QPointF >
75{
76public:
82 {
86 NoCurve = -1,
87
94
100
107
115
121 UserCurve = 100
122 };
123
129 {
134 Inverted = 0x01,
135
146 Fitted = 0x02
147 };
148
149 Q_DECLARE_FLAGS(CurveAttributes, CurveAttribute)
150
151
159 {
164 LegendNoAttribute = 0x00,
165
170 LegendShowLine = 0x01,
171
175 LegendShowSymbol = 0x02,
176
181 LegendShowBrush = 0x04
182 };
183
184 Q_DECLARE_FLAGS(LegendAttributes, LegendAttribute)
185
186
193 {
199 ClipPolygons = 0x01,
200
207 FilterPoints = 0x02,
208
214 MinimizeMemory = 0x04,
215
223 ImageBuffer = 0x08,
224
247 FilterPointsAggressive = 0x10,
248 };
249
250 Q_DECLARE_FLAGS(PaintAttributes, PaintAttribute)
251
252 explicit QwtPlotCurve(const QString& title = QString());
253 explicit QwtPlotCurve(const QwtText& title);
254
255 virtual ~QwtPlotCurve();
256
257 virtual int rtti() const QWT_OVERRIDE;
258
259 void setPaintAttribute(PaintAttribute, bool on = true);
260 bool testPaintAttribute(PaintAttribute) const;
261
262 void setLegendAttribute(LegendAttribute, bool on = true);
263 bool testLegendAttribute(LegendAttribute) const;
264
265 void setLegendAttributes(LegendAttributes);
266 LegendAttributes legendAttributes() const;
267
268 void setRawSamples(const double* xData, const double* yData, int size);
269 void setRawSamples(const float* xData, const float* yData, int size);
270
271 void setRawSamples(const double* yData, int size);
272 void setRawSamples(const float* yData, int size);
273
274 void setSamples(const double* xData, const double* yData, int size);
275 void setSamples(const float* xData, const float* yData, int size);
276
277 void setSamples(const double* yData, int size);
278 void setSamples(const float* yData, int size);
279
280 void setSamples(const QVector< double >& yData);
281 void setSamples(const QVector< float >& yData);
282
283 void setSamples(const QVector< double >& xData, const QVector< double >& yData);
284 void setSamples(const QVector< float >& xData, const QVector< float >& yData);
285 void setSamples(QVector< double >&& xData, QVector< double >&& yData);
286 void setSamples(QVector< float >&& xData, QVector< float >&& yData);
287
288 void setSamples(QVector< QPointF >&&);
289 void setSamples(const QVector< QPointF >&);
290 void setSamples(QwtSeriesData< QPointF >*);
291
292 virtual int closestPoint(const QPointF& pos, double* dist = NULL) const;
293
294 double minXValue() const;
295 double maxXValue() const;
296 double minYValue() const;
297 double maxYValue() const;
298
299 void setCurveAttribute(CurveAttribute, bool on = true);
300 bool testCurveAttribute(CurveAttribute) const;
301
302 void setPen(const QColor&, qreal width = 0.0, Qt::PenStyle = Qt::SolidLine);
303 void setPen(const QPen&);
304 const QPen& pen() const;
305
306 void setBrush(const QBrush&);
307 const QBrush& brush() const;
308
309 void setBaseline(double);
310 double baseline() const;
311
312 void setStyle(CurveStyle style);
313 CurveStyle style() const;
314
315 void setSymbol(QwtSymbol*);
316 const QwtSymbol* symbol() const;
317
318 void setCurveFitter(QwtCurveFitter*);
319 QwtCurveFitter* curveFitter() const;
320
321 virtual void drawSeries(QPainter*,
322 const QwtScaleMap& xMap,
323 const QwtScaleMap& yMap,
324 const QRectF& canvasRect,
325 int from,
326 int to) const QWT_OVERRIDE;
327
328 virtual QwtGraphic legendIcon(int index, const QSizeF&) const QWT_OVERRIDE;
329
330protected:
331 void init();
332
333 virtual void drawCurve(QPainter*,
334 int style,
335 const QwtScaleMap& xMap,
336 const QwtScaleMap& yMap,
337 const QRectF& canvasRect,
338 int from,
339 int to) const;
340
341 virtual void drawSymbols(QPainter*,
342 const QwtSymbol&,
343 const QwtScaleMap& xMap,
344 const QwtScaleMap& yMap,
345 const QRectF& canvasRect,
346 int from,
347 int to) const;
348
349 virtual void
350 drawLines(QPainter*, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRectF& canvasRect, int from, int to) const;
351
352 virtual void
353 drawSticks(QPainter*, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRectF& canvasRect, int from, int to) const;
354
355 virtual void
356 drawDots(QPainter*, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRectF& canvasRect, int from, int to) const;
357
358 virtual void
359 drawSteps(QPainter*, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRectF& canvasRect, int from, int to) const;
360
361 virtual void fillCurve(QPainter*, const QwtScaleMap&, const QwtScaleMap&, const QRectF& canvasRect, QPolygonF&) const;
362
363 void closePolyline(QPainter*, const QwtScaleMap&, const QwtScaleMap&, QPolygonF&) const;
364
365private:
366 class PrivateData;
367 PrivateData* m_data;
368};
369
371inline double QwtPlotCurve::minXValue() const
372{
373 return boundingRect().left();
374}
375
377inline double QwtPlotCurve::maxXValue() const
378{
379 return boundingRect().right();
380}
381
383inline double QwtPlotCurve::minYValue() const
384{
385 return boundingRect().top();
386}
387
389inline double QwtPlotCurve::maxYValue() const
390{
391 return boundingRect().bottom();
392}
393
394Q_DECLARE_OPERATORS_FOR_FLAGS(QwtPlotCurve::PaintAttributes)
395Q_DECLARE_OPERATORS_FOR_FLAGS(QwtPlotCurve::LegendAttributes)
396Q_DECLARE_OPERATORS_FOR_FLAGS(QwtPlotCurve::CurveAttributes)
397
398#endif
Definition qwt_clipper.h:40
Abstract base class for a curve fitter.
Definition qwt_curve_fitter.h:39
A paint device for scalable graphics.
Definition qwt_graphic.h:93
A plot item, that represents a series of points.
Definition qwt_plot_curve.h:75
CurveStyle
Curve styles.
Definition qwt_plot_curve.h:82
@ Steps
Connect the points with a step function.
Definition qwt_plot_curve.h:106
@ Sticks
Draw vertical or horizontal sticks ( depending on the orientation() ) from a baseline which is define...
Definition qwt_plot_curve.h:99
@ Lines
Connect the points with straight lines.
Definition qwt_plot_curve.h:93
@ Dots
Draw dots at the locations of the data points.
Definition qwt_plot_curve.h:114
CurveAttribute
Attribute for drawing the curve.
Definition qwt_plot_curve.h:129
double maxXValue() const
boundingRect().right()
Definition qwt_plot_curve.h:377
LegendAttribute
Attributes how to represent the curve on the legend.
Definition qwt_plot_curve.h:159
double minYValue() const
boundingRect().top()
Definition qwt_plot_curve.h:383
PaintAttribute
Attributes to modify the drawing algorithm.
Definition qwt_plot_curve.h:193
double maxYValue() const
boundingRect().bottom()
Definition qwt_plot_curve.h:389
virtual int rtti() const
Return rtti for the specific class represented.
Definition qwt_plot_item.cpp:153
Base class for plot items representing a series of samples.
Definition qwt_plot_seriesitem.h:43
virtual QRectF boundingRect() const QWT_OVERRIDE
Definition qwt_plot_seriesitem.cpp:114
A scale map.
Definition qwt_scale_map.h:44
Abstract interface for iterating over samples.
Definition qwt_series_data.h:67
Class storing a QwtSeriesData object.
Definition qwt_series_store.h:96
A class for drawing symbols.
Definition qwt_symbol.h:49
A class representing a text.
Definition qwt_text.h:69