#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> data) const; private: gtl::hw::player_file* _file; std::vector _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