source: flair-src/trunk/tools/FlairGCS/src/Scope.h @ 10

Last change on this file since 10 was 10, checked in by Sanahuja Guillaume, 5 years ago

lic

File size: 1.7 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5#ifndef SCOPE_H_INCLUDED
6#define SCOPE_H_INCLUDED
7
8#include <qwt_plot.h>
9#include <QPen>
10
11class ScrollBar;
12class QwtPlotCurve;
13class QwtPlotItem;
14class QMouseEvent;
15
16class Scope: public QwtPlot {
17    Q_OBJECT
18
19    public:
20        Scope(QString title,float ymin, float ymax,float view_size_s=20,unsigned int refresh_rate_ms=40,unsigned int history_size=20000);
21        ~Scope();
22        int addCurve(QPen pen,QString legend);
23        void resetXView(void);
24        void resetYView(void);
25
26    protected:
27        struct Curve {
28            QwtPlotCurve* plot;
29            double* data_x;
30            double* data_y;
31            unsigned int index;
32            unsigned int min_index;
33            unsigned int max_index;
34        };
35        QList<Curve*> curves;
36        float elapsed_time_s;
37
38        void updateCurve(Curve* curve);
39        bool eventFilter(QObject *, QEvent *);
40
41    private:
42        float ymin,ymax;
43        float view_size_s,orig_view_size_s;
44        unsigned int history_size;
45        ScrollBar* scrollbar;
46        bool scrolling;
47        float min_scroll,max_scroll;
48
49        void alignScales(void);
50        void showCurve(QwtPlotItem *item, bool on);
51        void computeMinIndex(Curve* curve,float displayed_min_time);
52        void computeMaxIndex(Curve* curve,float displayed_max_time);
53        void changeViewSize(float new_view_size_s);
54
55    private slots:
56        void legendChecked(const QVariant &itemInfo, bool on );
57        void scrollBarMoved(Qt::Orientation o, float min, float max);
58};
59
60
61#endif // SCOPE_H_INCLUDED
Note: See TracBrowser for help on using the repository browser.