76 lines
2.3 KiB
C++
76 lines
2.3 KiB
C++
#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());
|
|
}
|
|
}
|
|
}
|
|
}
|