#include "gtl_gui_player_chart_range.h" namespace gtl { namespace gui { namespace player { chart_range::chart_range(::chart::series::series* parent) : ::chart::instrument::instrument(parent) , _cnt_clicks(0) { _line0 = new chart_range_line(parent); ::chart::instrument::instrument::add(_line0); connect(_line0, &chart_range_line::signal_moved, this, &chart_range::set_body); connect(_line0, &chart_line::get_nearest_x, this, &chart_range::get_nearest_x); _line1 = new chart_range_line(parent); ::chart::instrument::instrument::add(_line1); connect(_line1, &chart_range_line::signal_moved, this, &chart_range::set_body); connect(_line1, &chart_line::get_nearest_x, this, &chart_range::get_nearest_x); _body = new chart_range_body(parent); ::chart::instrument::instrument::add(_body); set_body(); } void chart_range::set(qreal left, qreal right) { _line0->set_pos(left); _line1->set_pos(right); set_body(); } bool chart_range::is_inside(const QPointF &pos) const { return _body->boundingRect().contains(pos) || _line0->boundingRect().contains(pos) || _line1->boundingRect().contains(pos); } qreal chart_range::left() const { return qMin(_line0->pos(), _line1->pos()); } qreal chart_range::right() const { return qMax(_line0->pos(), _line1->pos()); } void chart_range::add(const QPointF &point) { _cnt_clicks++; if (_cnt_clicks == 2) complete(); } void chart_range::draw(const QPointF &point) { if (_cnt_clicks < 1) _line0->set_pos(point.x()); if (_cnt_clicks < 2) _line1->set_pos(point.x()); set_body(); } void chart_range::set_body() { _body->set_range(_line0->pos(), _line1->pos()); } } } }