test_sdk/gui/gtl_gui_record_chart.h

74 lines
1.7 KiB
C
Raw Normal View History

#ifndef GTL_GUI_RECORD_CHART_H
#define GTL_GUI_RECORD_CHART_H
#include "gtl_gui_chart.h"
#include "hw/gtl_hw_player_file.h"
#include "gui/gui_global.h"
namespace gtl
{
namespace gui
{
class record_chart_cacher : public QThread
{
Q_OBJECT
public:
record_chart_cacher(QObject* parent, std::vector<::chart::series::series*> *series);
~record_chart_cacher();
void start(gtl::hw::player_file* file);
void stop();
void set_series_data(qreal min, qreal max);
gtl::hw::player_file* file();
private:
void run() override;
void clear();
void get_cache_data(int deg, int idx, std::back_insert_iterator<std::vector<qreal>> data) const;
private:
gtl::hw::player_file* _file;
std::vector<QFile*> _cache;
bool _is_running;
std::vector<::chart::series::series*> *_series;
signals:
void progress(qreal);
};
class GTL_GUI_EXPORT record_chart : public chart
{
Q_OBJECT
public:
record_chart(QWidget* parent = NULL);
virtual void set_file(QString path);
private:
virtual chart_series* create_series(gtl::analog_data* ai) override;
virtual void fit_axis(::chart::axis* axis) override;
virtual void resizeEvent(QResizeEvent *event) override;
private:
record_chart_cacher _cacher;
protected:
gtl::hw::player_file* file();
protected:
QAction *_axis_y_mode_action;
private slots:
void set_series_data();
};
}
}
#endif // GTL_GUI_RECORD_CHART_H