Files
Renderive/YSGraphic_Core/plottable/Waterfall.cpp
T
2026-07-24 10:54:44 +08:00

89 lines
3.5 KiB
C++

#include "Waterfall_p.h"
namespace YSG {
using WaterFall_Binding = Renderable_Binding<Waterfall, Waterfall_Private, Waterfall_Render_State, Waterfall_Input_Data>;
Waterfall::Waterfall() {
WaterFall_Binding::init(this, "WaterFall");
}
Waterfall_Private* Waterfall::d() {
return WaterFall_Binding::d(this);
}
Render_Data* Waterfall::create_render_data() {
return WaterFall_Binding::create_render_data();
}
Render_State* Waterfall::create_render_state() {
return WaterFall_Binding::create_render_state();
}
Input_Data* Waterfall::create_input_data() {
return WaterFall_Binding::create_input_data();
}
Frequent_Axis* Waterfall::frequent_axis(SRC src) {
return d()->state_value(&Waterfall_Render_State::frequent_axis, src);
}
void Waterfall::set_frequent_axis(Frequent_Axis* value) {
d()->set_state_value(&Waterfall_Render_State::frequent_axis, value);
}
Time_Axis* Waterfall::time_axis(SRC src) {
return d()->state_value(&Waterfall_Render_State::time_axis, src);
}
void Waterfall::set_time_axis(Time_Axis* value) {
d()->set_state_value(&Waterfall_Render_State::time_axis, value);
}
Range Waterfall::frequent_range(SRC src) {
return d()->state_value(&Waterfall_Render_State::frequent_range, src);
}
void Waterfall::set_frequent_range(Range value) {
d()->set_state_value(&Waterfall_Render_State::frequent_range, std::move(value));
}
Range Waterfall::power_range(SRC src) {
return d()->state_value(&Waterfall_Render_State::power_range, src);
}
void Waterfall::set_power_range(Range value) {
d()->set_state_value(&Waterfall_Render_State::power_range, std::move(value));
}
int Waterfall::frequent_point_size(SRC src) {
return d()->state_value(&Waterfall_Render_State::frequent_point_size, src);
}
void Waterfall::set_frequent_point_size(int value) {
d()->set_state_value(&Waterfall_Render_State::frequent_point_size, value);
}
bool Waterfall::visible_range_only(SRC src) {
return d()->state_value(&Waterfall_Render_State::visible_range_only, src);
}
void Waterfall::set_visible_range_only(bool value) {
d()->set_state_value(&Waterfall_Render_State::visible_range_only, value);
}
Image_Interpolation_Mode Waterfall::interpolation_mode(SRC src) {
return d()->state_value(&Waterfall_Render_State::interpolation_mode, src);
}
void Waterfall::set_interpolation_mode(Image_Interpolation_Mode value) {
d()->set_state_value(&Waterfall_Render_State::interpolation_mode, value);
}
void Waterfall::give_data(int tick, const QVector<double>& data) {
if (!ok())
return;
Render_Input_Lease<Waterfall_Private, Waterfall_Input_Data> input(d());
input->mDataList.push_back({tick, data});
}
Waterfall::Builder::Builder(Frequent_Axis* frequent_axis, Time_Axis* time_axis) {
ASSERT(frequent_axis->mPlot != nullptr, "Afterglow build error! frequent_axis->mPlot == nullptr");
ASSERT(frequent_axis->mPlot == time_axis->mPlot, "Afterglow build error! frequent_axis->mPlot != time_axis->mPlot");
plot = frequent_axis->mPlot;
this->frequent_axis = frequent_axis;
this->time_axis = time_axis;
}
Waterfall* Waterfall::Builder::build() {
auto ret = new Waterfall();
ret->init(plot, layerName);
Waterfall_Private* pd = ret->d();
Waterfall_Render_State* sc = reinterpret_cast<Waterfall_Render_State*>(pd->state(State_Edit));
PROP_R(FrequentAxis*, frequent_axis)
PROP_R(TimeAxis*, time_axis)
PROP_R(Range, frequent_range)
PROP_R(Range, power_range)
PROP_R(int, frequent_point_size)
PROP_R(bool, visible_range_only)
PROP_R(Image_Interpolation_Mode, interpolation_mode)
return ret;
}
} // namespace YSG