test_sdk/gui/spgr/gtl_gui_spgr_series.h

109 lines
3.2 KiB
C++

#ifndef GTL_GUI_SPGR_SERIES_H
#define GTL_GUI_SPGR_SERIES_H
#include <deque>
#include "chart/series/series.h"
#include "core/gtl_analog_data.h"
#include "math/gtl_math_spec.h"
#include "gui/spgr/gtl_gui_spgr_line.h"
#include "gui/gui_global.h"
namespace gtl {
namespace gui {
namespace spgr {
class GTL_GUI_EXPORT series : public ::chart::series::series
{
Q_OBJECT
public:
series(QWidget* parent, gtl::math::spec* spec, ::chart::axis_horz* axis_x, ::chart::axis_vert* axis_y);
~series();
void set_updating(bool value);
gtl::analog_data* ad();
void autoscale();
void set_pos(QPointF pos);
qreal time();
void set_time(qreal value);
qreal spec_res() const;
qreal spec_time() const;
qreal min();
void set_min(qreal value);
qreal max();
void set_max(qreal value);
bool x_log();
void set_x_log(bool value);
bool time_chart();
void set_time_chart(bool value);
bool freq_chart();
void set_freq_chart(bool value);
line_widget* time_widget();
line_widget* freq_widget();
virtual QString name() const;
virtual void set_tool_tip(QPoint pos);
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
virtual bool get_range_y(qreal x_min, qreal x_max, qreal &y_min, qreal &y_max){return true;}
virtual bool get_ranges(qreal &x_min, qreal &x_max, qreal &y_min, qreal &y_max){return true;}
virtual bool get_tool_tip(QPoint pos, QString &text, QRect &rect){return true;}
protected:
QWidget* _parent;
gtl::analog_data* _ad;
gtl::math::spec* _spec;
bool _is_updating;
qreal _time;
int _size;
qreal _spec_time;
qreal _max;
qreal _min;
int _spec_size;
qreal _spec_res;
bool _x_log;
bool _t_chart;
bool _f_chart;
QPointF _pos;
int _t_idx;
int _f_idx;
line_widget* _t_widget;
line_widget* _f_widget;
std::deque<std::vector<qreal>> _data;
private slots:
void update_series();
void set_icolor();
void handle_spec_changed();
void init();
QColor get_color(qreal value);
signals:
void data_changed();
void time_changed();
void min_changed();
void max_changed();
void x_log_changed();
void time_chart_changed();
void freq_chart_changed();
};
}
} // namespace gui
} // namespace gtl
#endif // GTL_GUI_SPGR_SERIES_H