76 lines
1.6 KiB
C
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
|