test_sdk/gui/player/gtl_gui_player_chart_range.cpp

76 lines
2.3 KiB
C++
Raw Permalink Normal View History

#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());
}
}
}
}