双缓冲先加上
This commit is contained in:
@@ -457,22 +457,12 @@ public:
|
||||
spectrum_->clear_marker_selection();
|
||||
return "Marker 选择已清除";
|
||||
}
|
||||
if (request.id == "rebind_axes") {
|
||||
spectrum_->set_frequency_axis(spectrum_->frequency_axis());
|
||||
spectrum_->set_power_axis(spectrum_->power_axis());
|
||||
return "Spectrum 的 shared_ptr 轴已回读并重新绑定";
|
||||
}
|
||||
}
|
||||
if (selection_) {
|
||||
if (request.id == "clear_selection") {
|
||||
selection_->clear_selected_regions();
|
||||
return "框选区域已清空";
|
||||
}
|
||||
if (request.id == "rebind_selection_axes") {
|
||||
selection_->set_horizontal_axis(numeric_domain_axis_);
|
||||
selection_->set_vertical_axis(value_axis_);
|
||||
return "Selection Overlay 的两根轴已重新绑定";
|
||||
}
|
||||
}
|
||||
if (waterfall_) {
|
||||
if (request.id == "append_row") {
|
||||
@@ -481,40 +471,22 @@ public:
|
||||
}
|
||||
if (request.id == "append_tick_row") {
|
||||
const int tick = time_axis_->append_time(current_time_of_day());
|
||||
waterfall_->append_row(tick, spectrum_values(waterfall_->frequency_bin_count(),
|
||||
waterfall_->power_range()));
|
||||
waterfall_->append_row(tick, spectrum_values(waterfall_->get<&Waterfall::Properties::frequency_bin_count>(),
|
||||
waterfall_->get<&Waterfall::Properties::power_range>()));
|
||||
return "Waterfall 已通过 int tick 重载追加一行";
|
||||
}
|
||||
if (request.id == "rebind_axes") {
|
||||
last_action_result_ = waterfall_->frequency_axis() && waterfall_->time_axis()
|
||||
? "frequency_axis/time_axis valid"
|
||||
: "axis invalid";
|
||||
return "Waterfall 轴绑定已回读";
|
||||
}
|
||||
}
|
||||
if (afterglow_) {
|
||||
if (request.id == "append_spectrum") {
|
||||
push_afterglow_spectrum();
|
||||
return "Afterglow 频谱已手动追加";
|
||||
}
|
||||
if (request.id == "rebind_axes") {
|
||||
last_action_result_ = afterglow_->frequency_axis() && afterglow_->power_axis()
|
||||
? "frequency_axis/power_axis valid"
|
||||
: "axis invalid";
|
||||
return "Afterglow 轴绑定已回读";
|
||||
}
|
||||
}
|
||||
if (sweep_) {
|
||||
if (request.id == "append_block") {
|
||||
push_sweep_block();
|
||||
return "Sweep_Spectrum 扫频块已手动追加";
|
||||
}
|
||||
if (request.id == "rebind_axes") {
|
||||
last_action_result_ = sweep_->frequency_axis() && sweep_->power_axis()
|
||||
? "frequency_axis/power_axis valid"
|
||||
: "axis invalid";
|
||||
return "Sweep_Spectrum 轴绑定已回读";
|
||||
}
|
||||
}
|
||||
if (trace_) {
|
||||
if (request.id == "append_sample") {
|
||||
@@ -526,12 +498,6 @@ public:
|
||||
trace_->append_sample(tick, std::sin(frame_index_ * 0.12));
|
||||
return "Frequency_Trace 已通过 int tick 重载追加样本";
|
||||
}
|
||||
if (request.id == "read_axes") {
|
||||
last_action_result_ = trace_->time_axis() && trace_->value_axis()
|
||||
? "time_axis/value_axis valid"
|
||||
: "axis invalid";
|
||||
return "Frequency_Trace 轴绑定已回读";
|
||||
}
|
||||
}
|
||||
if (constellation_) {
|
||||
if (request.id == "append_points") {
|
||||
@@ -542,12 +508,6 @@ public:
|
||||
constellation_->fit_square_to_axes();
|
||||
return "Constellation 已按轴拟合正方形";
|
||||
}
|
||||
if (request.id == "read_axes") {
|
||||
last_action_result_ = constellation_->i_axis() && constellation_->q_axis()
|
||||
? "i_axis/q_axis valid"
|
||||
: "axis invalid";
|
||||
return "Constellation 轴绑定已回读";
|
||||
}
|
||||
}
|
||||
recognized = false;
|
||||
return {};
|
||||
@@ -764,7 +724,7 @@ public:
|
||||
telemetry["spectrum"] = {
|
||||
{"selectable_line_markers", spectrum_->selectable_line_marker_count()},
|
||||
{"selected_marker_index", spectrum_->selected_marker_index()},
|
||||
{"configured_frequency_points", spectrum_->frequency_point_size()},
|
||||
{"configured_frequency_points", spectrum_->get<&Spectrum::Properties::frequency_point_size>()},
|
||||
{"input_sample_count", spectrum_->sample_count()},
|
||||
{"rendered_point_count", spectrum_->rendered_point_count()}
|
||||
};
|
||||
@@ -777,7 +737,7 @@ public:
|
||||
telemetry["selection_regions"] = selection_->selected_regions().size();
|
||||
if (waterfall_) {
|
||||
telemetry["waterfall"] = {
|
||||
{"configured_frequency_bins", waterfall_->frequency_bin_count()},
|
||||
{"configured_frequency_bins", waterfall_->get<&Waterfall::Properties::frequency_bin_count>()},
|
||||
{"row_count", waterfall_->row_count()},
|
||||
{"stored_point_count", waterfall_->stored_point_count()},
|
||||
{"rendered_cell_count", waterfall_->rendered_cell_count()},
|
||||
@@ -786,8 +746,8 @@ public:
|
||||
}
|
||||
if (afterglow_) {
|
||||
telemetry["afterglow"] = {
|
||||
{"configured_frequency_points", afterglow_->frequency_point_size()},
|
||||
{"configured_power_points", afterglow_->power_point_size()},
|
||||
{"configured_frequency_points", afterglow_->get<&Afterglow::Properties::frequency_point_size>()},
|
||||
{"configured_power_points", afterglow_->get<&Afterglow::Properties::power_point_size>()},
|
||||
{"history_frame_count", afterglow_->history_count()},
|
||||
{"latest_input_point_count", afterglow_->latest_spectrum_point_count()},
|
||||
{"rendered_cell_count", afterglow_->rendered_cell_count()}
|
||||
@@ -795,8 +755,8 @@ public:
|
||||
}
|
||||
if (sweep_) {
|
||||
telemetry["sweep_spectrum"] = {
|
||||
{"configured_bins_per_block", sweep_->bins_per_block()},
|
||||
{"configured_block_count", sweep_->block_count()},
|
||||
{"configured_bins_per_block", sweep_->get<&Sweep_Spectrum::Properties::bins_per_block>()},
|
||||
{"configured_block_count", sweep_->get<&Sweep_Spectrum::Properties::block_count>()},
|
||||
{"stored_block_count", sweep_->stored_block_count()},
|
||||
{"stored_point_count", sweep_->stored_point_count()},
|
||||
{"rendered_point_count", sweep_->rendered_point_count()}
|
||||
@@ -819,7 +779,7 @@ public:
|
||||
"rendered_point_count", constellation_->point_count() +
|
||||
static_cast<std::size_t>(anchor_count)
|
||||
},
|
||||
{"point_lifetime_ms", constellation_->point_lifetime_ms()}
|
||||
{"point_lifetime_ms", constellation_->get<&Constellation_Diagram::Properties::point_lifetime_ms>()}
|
||||
};
|
||||
}
|
||||
if (case_id_ == "axis_lab") {
|
||||
@@ -1158,102 +1118,94 @@ private:
|
||||
return;
|
||||
}
|
||||
if (case_id_ == "spectrum" || case_id_ == "selection_overlay") {
|
||||
spectrum_ = Spectrum::Builder(data_node_,
|
||||
std::static_pointer_cast<Frequency_Axis>(numeric_domain_axis_),
|
||||
value_axis_)
|
||||
.set_frequency_range({
|
||||
spectrum_ = Spectrum::Builder{}
|
||||
.set<&Spectrum::Properties::frequency_range>(Range{
|
||||
number_value(state_, "frequency_origin"),
|
||||
number_value(state_, "frequency_target")
|
||||
})
|
||||
.set_frequency_point_size(integer_value(state_, "frequency_point_size"))
|
||||
.set_center_frequency(number_value(state_, "center_frequency"))
|
||||
.set_sweep_frequency_range({
|
||||
.set<&Spectrum::Properties::frequency_point_size>(integer_value(state_, "frequency_point_size"))
|
||||
.set<&Spectrum::Properties::center_frequency>(number_value(state_, "center_frequency"))
|
||||
.set<&Spectrum::Properties::sweep_frequency_range>(Range{
|
||||
number_value(state_, "sweep_origin"),
|
||||
number_value(state_, "sweep_target")
|
||||
})
|
||||
.build();
|
||||
.build(data_node_, std::static_pointer_cast<Frequency_Axis>(numeric_domain_axis_), value_axis_);
|
||||
primary_ = spectrum_;
|
||||
if (case_id_ == "selection_overlay") {
|
||||
selection_ = Selection_Rectangle_Overlay::Builder(
|
||||
overlay_node_, numeric_domain_axis_, value_axis_)
|
||||
.build();
|
||||
selection_ = Selection_Rectangle_Overlay::Builder{}.build(overlay_node_, numeric_domain_axis_, value_axis_);
|
||||
primary_ = selection_;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (case_id_ == "waterfall") {
|
||||
waterfall_ = Waterfall::Builder(data_node_,
|
||||
std::static_pointer_cast<Frequency_Axis>(numeric_domain_axis_),
|
||||
time_axis_)
|
||||
.set_frequency_range({
|
||||
waterfall_ = Waterfall::Builder{}
|
||||
.set<&Waterfall::Properties::frequency_range>(Range{
|
||||
number_value(state_, "frequency_origin"),
|
||||
number_value(state_, "frequency_target")
|
||||
})
|
||||
.set_power_range({
|
||||
.set<&Waterfall::Properties::power_range>(Range{
|
||||
number_value(state_, "power_origin"),
|
||||
number_value(state_, "power_target")
|
||||
})
|
||||
.set_frequency_bin_count(integer_value(state_, "frequency_bin_count"))
|
||||
.set_color_map(gallery_color_map(string_value(state_, "color_map")))
|
||||
.build();
|
||||
.set<&Waterfall::Properties::frequency_bin_count>(integer_value(state_, "frequency_bin_count"))
|
||||
.set<&Waterfall::Properties::color_map>(gallery_color_map(string_value(state_, "color_map")))
|
||||
.build(data_node_, std::static_pointer_cast<Frequency_Axis>(numeric_domain_axis_), time_axis_);
|
||||
primary_ = waterfall_;
|
||||
return;
|
||||
}
|
||||
if (case_id_ == "afterglow") {
|
||||
afterglow_ = Afterglow::Builder(data_node_,
|
||||
std::static_pointer_cast<Frequency_Axis>(numeric_domain_axis_),
|
||||
value_axis_)
|
||||
.set_frequency_range({
|
||||
afterglow_ = Afterglow::Builder{}
|
||||
.set<&Afterglow::Properties::frequency_range>(Range{
|
||||
number_value(state_, "frequency_origin"),
|
||||
number_value(state_, "frequency_target")
|
||||
})
|
||||
.set_power_range({
|
||||
.set<&Afterglow::Properties::power_range>(Range{
|
||||
number_value(state_, "power_origin"),
|
||||
number_value(state_, "power_target")
|
||||
})
|
||||
.set_frequency_bin_count(integer_value(state_, "frequency_point_size"))
|
||||
.set_power_bin_count(integer_value(state_, "power_point_size"))
|
||||
.set_color_map(gallery_color_map(string_value(state_, "color_map")))
|
||||
.build();
|
||||
.set<&Afterglow::Properties::frequency_point_size>(integer_value(state_, "frequency_point_size"))
|
||||
.set<&Afterglow::Properties::power_point_size>(integer_value(state_, "power_point_size"))
|
||||
.set<&Afterglow::Properties::color_map>(gallery_color_map(string_value(state_, "color_map")))
|
||||
.build(data_node_, std::static_pointer_cast<Frequency_Axis>(numeric_domain_axis_), value_axis_);
|
||||
primary_ = afterglow_;
|
||||
return;
|
||||
}
|
||||
if (case_id_ == "sweep_spectrum") {
|
||||
sweep_ = Sweep_Spectrum::Builder(data_node_, numeric_domain_axis_, value_axis_)
|
||||
.set_frequency_range({
|
||||
sweep_ = Sweep_Spectrum::Builder{}
|
||||
.set<&Sweep_Spectrum::Properties::frequency_range>(Range{
|
||||
number_value(state_, "frequency_origin"),
|
||||
number_value(state_, "frequency_target")
|
||||
})
|
||||
.set_bins_per_block(integer_value(state_, "bins_per_block"))
|
||||
.set_block_num(integer_value(state_, "block_count"))
|
||||
.build();
|
||||
.set<&Sweep_Spectrum::Properties::bins_per_block>(integer_value(state_, "bins_per_block"))
|
||||
.set<&Sweep_Spectrum::Properties::block_count>(integer_value(state_, "block_count"))
|
||||
.build(data_node_, numeric_domain_axis_, value_axis_);
|
||||
primary_ = sweep_;
|
||||
return;
|
||||
}
|
||||
if (case_id_ == "frequency_trace") {
|
||||
trace_ = Frequency_Trace::Builder(data_node_, time_axis_, value_axis_)
|
||||
.set_pen({
|
||||
trace_ = Frequency_Trace::Builder{}
|
||||
.set<&Frequency_Trace::Properties::pen>(Pen{
|
||||
color_from_hex(string_value(state_, "trace_pen")),
|
||||
number_value(state_, "trace_pen_width"), Line_Style::Solid,
|
||||
Line_Cap::Round, Line_Join::Round
|
||||
})
|
||||
.build();
|
||||
.build(data_node_, time_axis_, value_axis_);
|
||||
primary_ = trace_;
|
||||
return;
|
||||
}
|
||||
if (case_id_ == "constellation") {
|
||||
constellation_ = Constellation_Diagram::Builder(data_node_, numeric_domain_axis_, value_axis_)
|
||||
.set_i_range({
|
||||
constellation_ = Constellation_Diagram::Builder{}
|
||||
.set<&Constellation_Diagram::Properties::i_range>(Range{
|
||||
number_value(state_, "i_origin"),
|
||||
number_value(state_, "i_target")
|
||||
})
|
||||
.set_q_range({
|
||||
.set<&Constellation_Diagram::Properties::q_range>(Range{
|
||||
number_value(state_, "q_origin"),
|
||||
number_value(state_, "q_target")
|
||||
})
|
||||
.set_type(constellation_mode(string_value(state_, "constellation_type")))
|
||||
.set_phase_offset_radians(number_value(state_, "phase_offset"))
|
||||
.build();
|
||||
.set<&Constellation_Diagram::Properties::type>(constellation_mode(string_value(state_, "constellation_type")))
|
||||
.set<&Constellation_Diagram::Properties::phase_offset_radians>(number_value(state_, "phase_offset"))
|
||||
.build(data_node_, numeric_domain_axis_, value_axis_);
|
||||
primary_ = constellation_;
|
||||
}
|
||||
}
|
||||
@@ -1366,103 +1318,101 @@ private:
|
||||
}
|
||||
void apply_specific_state() {
|
||||
if (spectrum_) {
|
||||
spectrum_->set_frequency_point_size(integer_value(state_, "frequency_point_size"));
|
||||
spectrum_->set_frequency_range({
|
||||
spectrum_->set<&Spectrum::Properties::frequency_point_size>(integer_value(state_, "frequency_point_size"));
|
||||
spectrum_->set<&Spectrum::Properties::frequency_range>(Range{
|
||||
number_value(state_, "frequency_origin"),
|
||||
number_value(state_, "frequency_target")
|
||||
});
|
||||
spectrum_->set_center_frequency(number_value(state_, "center_frequency"));
|
||||
spectrum_->set_sweep_frequency_range({
|
||||
spectrum_->set<&Spectrum::Properties::center_frequency>(number_value(state_, "center_frequency"));
|
||||
spectrum_->set<&Spectrum::Properties::sweep_frequency_range>(Range{
|
||||
number_value(state_, "sweep_origin"),
|
||||
number_value(state_, "sweep_target")
|
||||
});
|
||||
spectrum_->set_max_hold_visible(bool_value(state_, "max_hold_visible"));
|
||||
spectrum_->set_min_hold_visible(bool_value(state_, "min_hold_visible"));
|
||||
spectrum_->set_max_marker_visible(bool_value(state_, "max_marker_visible"));
|
||||
spectrum_->set_use_min_marker(bool_value(state_, "use_min_marker"));
|
||||
spectrum_->set_sweep_region_visible(bool_value(state_, "sweep_region_visible"));
|
||||
spectrum_->set_visible_range_only(bool_value(state_, "visible_range_only"));
|
||||
spectrum_->set_interpolation_mode(line_mode(string_value(state_, "line_interpolation")));
|
||||
spectrum_->set_max_brush({color_from_hex(string_value(state_, "max_brush"), 76), Brush_Style::Solid});
|
||||
spectrum_->set_current_brush({color_from_hex(string_value(state_, "current_brush"), 76), Brush_Style::Solid});
|
||||
spectrum_->set_min_brush({color_from_hex(string_value(state_, "min_brush"), 76), Brush_Style::Solid});
|
||||
spectrum_->set_max_pen({color_from_hex(string_value(state_, "max_pen")), 1.2});
|
||||
spectrum_->set_current_pen({
|
||||
spectrum_->set<&Spectrum::Properties::max_hold_visible>(bool_value(state_, "max_hold_visible"));
|
||||
spectrum_->set<&Spectrum::Properties::min_hold_visible>(bool_value(state_, "min_hold_visible"));
|
||||
spectrum_->set<&Spectrum::Properties::max_marker_visible>(bool_value(state_, "max_marker_visible"));
|
||||
spectrum_->set<&Spectrum::Properties::use_min_marker>(bool_value(state_, "use_min_marker"));
|
||||
spectrum_->set<&Spectrum::Properties::sweep_region_visible>(bool_value(state_, "sweep_region_visible"));
|
||||
spectrum_->set<&Spectrum::Properties::visible_range_only>(bool_value(state_, "visible_range_only"));
|
||||
spectrum_->set<&Spectrum::Properties::interpolation_mode>(line_mode(string_value(state_, "line_interpolation")));
|
||||
spectrum_->set<&Spectrum::Properties::max_brush>(Brush{color_from_hex(string_value(state_, "max_brush"), 76), Brush_Style::Solid});
|
||||
spectrum_->set<&Spectrum::Properties::current_brush>(Brush{color_from_hex(string_value(state_, "current_brush"), 76), Brush_Style::Solid});
|
||||
spectrum_->set<&Spectrum::Properties::min_brush>(Brush{color_from_hex(string_value(state_, "min_brush"), 76), Brush_Style::Solid});
|
||||
spectrum_->set<&Spectrum::Properties::max_pen>(Pen{color_from_hex(string_value(state_, "max_pen")), 1.2});
|
||||
spectrum_->set<&Spectrum::Properties::current_pen>(Pen{
|
||||
color_from_hex(string_value(state_, "current_pen")), 2.0,
|
||||
Line_Style::Solid, Line_Cap::Round, Line_Join::Round
|
||||
});
|
||||
spectrum_->set_min_pen({color_from_hex(string_value(state_, "min_pen")), 1.2});
|
||||
spectrum_->set_selected_marker_pen({color_from_hex(string_value(state_, "selected_marker_pen")), 2.0});
|
||||
spectrum_->set_marker_pen({color_from_hex(string_value(state_, "marker_pen")), 1.2});
|
||||
spectrum_->set_middle_frequency_pen({
|
||||
spectrum_->set<&Spectrum::Properties::min_pen>(Pen{color_from_hex(string_value(state_, "min_pen")), 1.2});
|
||||
spectrum_->set<&Spectrum::Properties::selected_marker_pen>(Pen{color_from_hex(string_value(state_, "selected_marker_pen")), 2.0});
|
||||
spectrum_->set<&Spectrum::Properties::marker_pen>(Pen{color_from_hex(string_value(state_, "marker_pen")), 1.2});
|
||||
spectrum_->set<&Spectrum::Properties::middle_frequency_pen>(Pen{
|
||||
color_from_hex(string_value(state_, "middle_frequency_pen")),
|
||||
1.0, Line_Style::Dash
|
||||
});
|
||||
spectrum_->set_sweep_region_brush({
|
||||
spectrum_->set<&Spectrum::Properties::sweep_region_brush>(Brush{
|
||||
color_from_hex(string_value(state_, "sweep_region_brush"), 80),
|
||||
Brush_Style::Solid
|
||||
});
|
||||
spectrum_->set_use_hover_info(bool_value(state_, "hover_enabled"));
|
||||
spectrum_->set_hover_tooltip_font({number_value(state_, "hover_font_size"), 500, false});
|
||||
spectrum_->set_tooltip_text_pen({color_from_hex(string_value(state_, "hover_text_color"))});
|
||||
spectrum_->set_hover_tooltip_background_brush(
|
||||
{color_from_hex(string_value(state_, "hover_background"), 230), Brush_Style::Solid});
|
||||
spectrum_->set<&Spectrum::Properties::tooltip_enabled>(bool_value(state_, "hover_enabled"));
|
||||
spectrum_->set<&Spectrum::Properties::tooltip_font>(Font{number_value(state_, "hover_font_size"), 500, false});
|
||||
spectrum_->set<&Spectrum::Properties::tooltip_text_pen>(Pen{color_from_hex(string_value(state_, "hover_text_color"))});
|
||||
spectrum_->set<&Spectrum::Properties::tooltip_background_brush>(Brush{color_from_hex(string_value(state_, "hover_background"), 230), Brush_Style::Solid});
|
||||
}
|
||||
if (selection_) {
|
||||
selection_->set_label_font({number_value(state_, "selection_font_size"), 500, false});
|
||||
selection_->set_label_pen({color_from_hex(string_value(state_, "selection_label_pen"))});
|
||||
selection_->set_selection_brush({
|
||||
selection_->set<&Selection_Rectangle_Overlay::Properties::label_font>(Font{number_value(state_, "selection_font_size"), 500, false});
|
||||
selection_->set<&Selection_Rectangle_Overlay::Properties::label_pen>(Pen{color_from_hex(string_value(state_, "selection_label_pen"))});
|
||||
selection_->set<&Selection_Rectangle_Overlay::Properties::selection_brush>(Brush{
|
||||
color_from_hex(string_value(state_, "selection_brush"), 70),
|
||||
Brush_Style::Solid
|
||||
});
|
||||
selection_->set_selection_border_pen({
|
||||
selection_->set<&Selection_Rectangle_Overlay::Properties::selection_border_pen>(Pen{
|
||||
color_from_hex(string_value(state_, "selection_border")),
|
||||
1.0, Line_Style::Dash
|
||||
});
|
||||
}
|
||||
if (waterfall_) {
|
||||
waterfall_->set_frequency_range({
|
||||
waterfall_->set<&Waterfall::Properties::frequency_range>(Range{
|
||||
number_value(state_, "frequency_origin"),
|
||||
number_value(state_, "frequency_target")
|
||||
});
|
||||
waterfall_->set_power_range({
|
||||
waterfall_->set<&Waterfall::Properties::power_range>(Range{
|
||||
number_value(state_, "power_origin"),
|
||||
number_value(state_, "power_target")
|
||||
});
|
||||
waterfall_->set_frequency_bin_count(integer_value(state_, "frequency_bin_count"));
|
||||
waterfall_->set_visible_range_only(bool_value(state_, "visible_range_only"));
|
||||
waterfall_->set_interpolation_mode(image_mode(string_value(state_, "image_interpolation")));
|
||||
waterfall_->set_use_hover_info(bool_value(state_, "hover_enabled"));
|
||||
waterfall_->set_hover_tooltip_font({number_value(state_, "hover_font_size"), 500, false});
|
||||
waterfall_->set_tooltip_text_pen({color_from_hex(string_value(state_, "hover_text_color"))});
|
||||
waterfall_->set_hover_tooltip_background_brush(
|
||||
{color_from_hex(string_value(state_, "hover_background"), 230), Brush_Style::Solid});
|
||||
waterfall_->set<&Waterfall::Properties::frequency_bin_count>(integer_value(state_, "frequency_bin_count"));
|
||||
waterfall_->set<&Waterfall::Properties::visible_range_only>(bool_value(state_, "visible_range_only"));
|
||||
waterfall_->set<&Waterfall::Properties::interpolation_mode>(image_mode(string_value(state_, "image_interpolation")));
|
||||
waterfall_->set<&Waterfall::Properties::tooltip_enabled>(bool_value(state_, "hover_enabled"));
|
||||
waterfall_->set<&Waterfall::Properties::tooltip_font>(Font{number_value(state_, "hover_font_size"), 500, false});
|
||||
waterfall_->set<&Waterfall::Properties::tooltip_text_pen>(Pen{color_from_hex(string_value(state_, "hover_text_color"))});
|
||||
waterfall_->set<&Waterfall::Properties::tooltip_background_brush>(Brush{color_from_hex(string_value(state_, "hover_background"), 230), Brush_Style::Solid});
|
||||
}
|
||||
if (afterglow_) {
|
||||
afterglow_->set_frequency_range({
|
||||
afterglow_->set<&Afterglow::Properties::frequency_range>(Range{
|
||||
number_value(state_, "frequency_origin"),
|
||||
number_value(state_, "frequency_target")
|
||||
});
|
||||
afterglow_->set_power_range({
|
||||
afterglow_->set<&Afterglow::Properties::power_range>(Range{
|
||||
number_value(state_, "power_origin"),
|
||||
number_value(state_, "power_target")
|
||||
});
|
||||
afterglow_->set_frequency_point_size(integer_value(state_, "frequency_point_size"));
|
||||
afterglow_->set_power_point_size(integer_value(state_, "power_point_size"));
|
||||
afterglow_->set_interpolate(bool_value(state_, "interpolate_power"));
|
||||
afterglow_->set_attenuation_rate(number_value(state_, "attenuation_rate"));
|
||||
afterglow_->set<&Afterglow::Properties::frequency_point_size>(integer_value(state_, "frequency_point_size"));
|
||||
afterglow_->set<&Afterglow::Properties::power_point_size>(integer_value(state_, "power_point_size"));
|
||||
afterglow_->set<&Afterglow::Properties::interpolate>(bool_value(state_, "interpolate_power"));
|
||||
afterglow_->set<&Afterglow::Properties::attenuation_rate>(number_value(state_, "attenuation_rate"));
|
||||
}
|
||||
if (sweep_) {
|
||||
sweep_->set_frequency_range({
|
||||
sweep_->set<&Sweep_Spectrum::Properties::frequency_range>(Range{
|
||||
number_value(state_, "frequency_origin"),
|
||||
number_value(state_, "frequency_target")
|
||||
});
|
||||
sweep_->set_bins_per_block(integer_value(state_, "bins_per_block"));
|
||||
sweep_->set_block_count(integer_value(state_, "block_count"));
|
||||
sweep_->set_pen({color_from_hex(string_value(state_, "sweep_pen")), 1.8});
|
||||
sweep_->set_cur_frequency_pen({color_from_hex(string_value(state_, "current_frequency_pen")), 2.0});
|
||||
sweep_->set_visible_range_only(bool_value(state_, "visible_range_only"));
|
||||
sweep_->set_interpolation_mode(line_mode(string_value(state_, "line_interpolation")));
|
||||
sweep_->set<&Sweep_Spectrum::Properties::bins_per_block>(integer_value(state_, "bins_per_block"));
|
||||
sweep_->set<&Sweep_Spectrum::Properties::block_count>(integer_value(state_, "block_count"));
|
||||
sweep_->set<&Sweep_Spectrum::Properties::pen>(Pen{color_from_hex(string_value(state_, "sweep_pen")), 1.8});
|
||||
sweep_->set<&Sweep_Spectrum::Properties::current_frequency_pen>(Pen{color_from_hex(string_value(state_, "current_frequency_pen")), 2.0});
|
||||
sweep_->set<&Sweep_Spectrum::Properties::visible_range_only>(bool_value(state_, "visible_range_only"));
|
||||
sweep_->set<&Sweep_Spectrum::Properties::interpolation_mode>(line_mode(string_value(state_, "line_interpolation")));
|
||||
}
|
||||
if (trace_ && value_axis_)
|
||||
value_axis_->set_coord_range({
|
||||
@@ -1470,11 +1420,11 @@ private:
|
||||
number_value(state_, "trace_value_max")
|
||||
});
|
||||
if (constellation_) {
|
||||
constellation_->set_i_range({number_value(state_, "i_origin"), number_value(state_, "i_target")});
|
||||
constellation_->set_q_range({number_value(state_, "q_origin"), number_value(state_, "q_target")});
|
||||
constellation_->set_point_color(color_from_hex(string_value(state_, "point_color")));
|
||||
constellation_->set_anchor_color(color_from_hex(string_value(state_, "anchor_color")));
|
||||
constellation_->set_point_lifetime_ms(integer_value(state_, "point_lifetime_ms"));
|
||||
constellation_->set<&Constellation_Diagram::Properties::i_range>(Range{number_value(state_, "i_origin"), number_value(state_, "i_target")});
|
||||
constellation_->set<&Constellation_Diagram::Properties::q_range>(Range{number_value(state_, "q_origin"), number_value(state_, "q_target")});
|
||||
constellation_->set<&Constellation_Diagram::Properties::point_color>(color_from_hex(string_value(state_, "point_color")));
|
||||
constellation_->set<&Constellation_Diagram::Properties::anchor_color>(color_from_hex(string_value(state_, "anchor_color")));
|
||||
constellation_->set<&Constellation_Diagram::Properties::point_lifetime_ms>(integer_value(state_, "point_lifetime_ms"));
|
||||
if (numeric_domain_axis_)
|
||||
numeric_domain_axis_->set_coord_range({
|
||||
number_value(state_, "i_origin"),
|
||||
@@ -1505,18 +1455,18 @@ private:
|
||||
return values;
|
||||
}
|
||||
void push_spectrum_samples() {
|
||||
spectrum_->update_samples(spectrum_values(spectrum_->frequency_point_size()));
|
||||
spectrum_->update_samples(spectrum_values(spectrum_->get<&Spectrum::Properties::frequency_point_size>()));
|
||||
}
|
||||
void push_waterfall_row() {
|
||||
waterfall_->append_row(current_time_of_day(),
|
||||
spectrum_values(waterfall_->frequency_bin_count(), waterfall_->power_range()));
|
||||
spectrum_values(waterfall_->get<&Waterfall::Properties::frequency_bin_count>(), waterfall_->get<&Waterfall::Properties::power_range>()));
|
||||
}
|
||||
void push_afterglow_spectrum() {
|
||||
afterglow_->append_spectrum(spectrum_values(afterglow_->frequency_point_size(),
|
||||
afterglow_->power_range()));
|
||||
afterglow_->append_spectrum(spectrum_values(afterglow_->get<&Afterglow::Properties::frequency_point_size>(),
|
||||
afterglow_->get<&Afterglow::Properties::power_range>()));
|
||||
}
|
||||
void push_sweep_block() {
|
||||
const int count = sweep_->bins_per_block();
|
||||
const int count = sweep_->get<&Sweep_Spectrum::Properties::bins_per_block>();
|
||||
std::vector<double> block(static_cast<std::size_t>(std::max(count, 1)));
|
||||
for (int index = 0; index < count; ++index) {
|
||||
const double x = static_cast<double>(index) / std::max(1, count - 1);
|
||||
|
||||
Reference in New Issue
Block a user