File: recorder_view.h

package info (click to toggle)
spice-gtk 0.42-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 4,792 kB
  • sloc: ansic: 57,963; python: 3,961; cpp: 902; makefile: 545; xml: 159; sh: 134
file content (117 lines) | stat: -rw-r--r-- 3,899 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#ifndef RECORDER_VIEW_H
#define RECORDER_VIEW_H
// *****************************************************************************
// recorder_view.h                                              Recorder project
// *****************************************************************************
//
// File description:
//
//     View source that feeds from the flight recorder
//
//
//
//
//
//
//
//
// *****************************************************************************
// This software is licensed under the GNU General Public License v3+
// (C) 2017-2019, Christophe de Dinechin <christophe@dinechin.org>
// *****************************************************************************
// This file is part of Recorder
//
// Recorder is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Recorder is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Recorder, in a file named COPYING.
// If not, see <https://www.gnu.org/licenses/>.
// *****************************************************************************

#include "recorder.h"

#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QLogValueAxis>
#include <QtCharts/QScatterSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QXYSeries>
#include <QtCore/QElapsedTimer>
#include <QtCore/QObject>
#include <QtCore/QTimer>
#include <QtWidgets/QLabel>

QT_CHARTS_USE_NAMESPACE

class RecorderView : public QChartView
// ----------------------------------------------------------------------------
//   View for recorder data
// ----------------------------------------------------------------------------
{
    Q_OBJECT
public:
    explicit RecorderView(const char *filename,
                          recorder_chans_p &chans,
                          const char *pattern,
                          QWidget *parent = 0);
    ~RecorderView();
    void setup();
    void updateSetup();

public slots:
    void updateSeries();
    void sceneChanged();

public:
    void keyPressEvent(QKeyEvent *event) override;

public:
    static double            maxDuration;
    static unsigned          maxWidth;
    static double            averagingRatio;
    static bool              showNormal;
    static bool              showTiming;
    static bool              showMinMax;
    static bool              showAverage;
    static QString           saveBaseName;

private:
    typedef enum { NONE, NORMAL, MINIMUM, MAXIMUM, AVERAGE, TIMING } series_et;
    const char *             filename;
    const char *             pattern;
    recorder_chans_p         &chans;
    bool                     sourceChanged;

    typedef QVector<QPointF> Points;
    QVector<Points>          data;
    QVector<QLineSeries *>   seriesList;
    QVector<recorder_chan_p> chanList;
    QVector<ringidx_t>       readerIndex;
    QVector<series_et>       seriesType;

    QChart *                 chart;
    QValueAxis *             xAxis;
    QValueAxis *             yAxis;
    QValueAxis *             tAxis;
    QTimer                   dataUpdater;

    bool                     viewHasNormal;
    bool                     viewHasTiming;
    bool                     viewHasMinMax;
    bool                     viewHasAverage;

    static Points            minimum(const Points &);
    static Points            maximum(const Points &);
    static Points            average(const Points &);
    static Points            timing(const Points &);
};

#endif // RECORDER_VIEW_H