#include "Time_Axis_p.h" #include "../base/Plot.h" namespace YSG { using TimeAxis_Binding = Renderable_Binding; Time_Axis::Time_Axis() { TimeAxis_Binding::init(this, "TimeAxis"); } Time_Axis_Private* Time_Axis::d() { return TimeAxis_Binding::d(this); } Render_Data* Time_Axis::create_render_data() { return TimeAxis_Binding::create_render_data(); } Render_State* Time_Axis::create_render_state() { return TimeAxis_Binding::create_render_state(); } Input_Data* Time_Axis::create_input_data() { return TimeAxis_Binding::create_input_data(); } int Time_Axis::time_point_size(SRC src) { return d()->state_value(&Time_Axis_Render_State::time_point_size, src); } void Time_Axis::set_time_point_size(int value) { d()->set_state_value(&Time_Axis_Render_State::time_point_size, value); } int Time_Axis::tick_pixel_space(SRC src) { return d()->state_value(&Time_Axis_Render_State::tick_pixel_space, src); } void Time_Axis::set_tick_pixel_space(int value) { d()->set_state_value(&Time_Axis_Render_State::tick_pixel_space, value); } QString Time_Axis::time_format(SRC src) { return d()->state_value(&Time_Axis_Render_State::time_format, src); } void Time_Axis::set_time_format(QString value) { d()->set_state_value(&Time_Axis_Render_State::time_format, std::move(value)); } QFont Time_Axis::font(SRC src) { return d()->state_value(&Time_Axis_Render_State::font, src); } void Time_Axis::set_font(QFont value) { d()->set_state_value(&Time_Axis_Render_State::font, std::move(value)); } int Time_Axis::give_data(QTime time) { if (!ok()) return -1; Time_Axis_Private* pd = d(); std::pair ret = pd->mTimeTicker.getNewDataTickInfo(); Render_Input_Lease input(pd); input->mAllTime.push_back(time); if (ret.second) { input->mData.push_front({time, ret.first}); } return ret.first; } QTime Time_Axis::tick_to_time(int tick, SRC src) { auto render_state = d()->state_data(src); int offset = tick - (int)render_state->coord_start; return d()->time_by_offset(offset); } Time_Axis::Builder::Builder(Plot* plot, Qt::Orientation orientation) { this->plot = plot; this->orientation = orientation; } Time_Axis* Time_Axis::Builder::build() { auto ret = new Time_Axis(); set(ret); Time_Axis_Private* pd = ret->d(); Time_Axis_Render_State* sc = reinterpret_cast(pd->state(State_Edit)); PROP_R(int, time_point_size) PROP_R(int, tick_pixel_space) PROP_R(QString, time_format) PROP_R(QFont, font) return ret; } }