#ifndef SERIES_H #define SERIES_H #include #include "chart/series/xy/series_line.h" #include "core/gtl_analog_data.h" #include "gui_global.h" namespace gtl { namespace gui { class GTL_GUI_EXPORT update_thread: public QThread { public: update_thread(chart::series::xy::line *s); void set_data(std::vector &data); void get_data(std::back_insert_iterator> data); void stop(); private: chart::series::xy::line* _series; std::vector _data; bool _is_updated; QMutex _mutex; bool _is_running; private: void run(); }; class GTL_GUI_EXPORT chart_series : public chart::series::xy::line { Q_OBJECT public: chart_series(gtl::analog_data* ad, chart::axis_horz* axis_x, chart::axis_vert* axis_y); virtual ~chart_series(); void set_updating(bool value); gtl::analog_data* ad(); virtual QString name() const; virtual qreal left() const; virtual qreal right() const; virtual void set_tool_tip(QPoint pos); protected: gtl::analog_data* _ad; update_thread _updater; bool _is_updating; protected: qreal get_y(qreal x); private slots: void update_series(); void set_icolor(); signals: void data_changed(); }; } } #endif // SERIES_H