Files
Renderive/YSGraphic_Core/Axis/Time_Axis.cpp
T
2026-07-23 18:11:07 +08:00

76 lines
2.6 KiB
C++

#include "Time_Axis_p.h"
#include "../base/Plot.h"
namespace YSG {
using TimeAxis_Binding = Renderable_Binding<Time_Axis, Time_Axis_Private, Time_Axis_Render_State, Time_Axis_Input_Data>;
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<int, bool> ret = pd->mTimeTicker.getNewDataTickInfo();
Render_Input_Lease<Time_Axis_Private, Time_Axis_Input_Data> 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<Time_Axis_Render_State*>(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;
}
}