test_sdk/gui/gtl_gui_chart_series.h

76 lines
1.6 KiB
C++

#ifndef SERIES_H
#define SERIES_H
#include <deque>
#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<qreal> &data);
void get_data(std::back_insert_iterator<std::vector<qreal>> data);
void stop();
private:
chart::series::xy::line* _series;
std::vector<qreal> _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