双缓冲先加上
This commit is contained in:
@@ -111,37 +111,36 @@ struct Web_Plot_Session::Impl {
|
||||
.set_sub_tick_length(-4)
|
||||
.set_color(axis_color)
|
||||
.build();
|
||||
spectrum = Spectrum::Builder(data, spectrum_frequency_axis, spectrum_power_axis)
|
||||
.set_frequency_range(initial_frequency)
|
||||
.set_frequency_point_size(768)
|
||||
.set_center_frequency(102'500'000.0)
|
||||
.set_sweep_frequency_range({102'200'000.0, 102'800'000.0})
|
||||
.set_max_marker_visible(true)
|
||||
.set_sweep_region_visible(true)
|
||||
.set_interpolation_mode(Line_Interpolation_Mode::Cubic_Value)
|
||||
.build();
|
||||
spectrum->set_current_pen({
|
||||
spectrum = Spectrum::Builder{}
|
||||
.set<&Spectrum::Properties::frequency_range>(initial_frequency)
|
||||
.set<&Spectrum::Properties::frequency_point_size>(768)
|
||||
.set<&Spectrum::Properties::center_frequency>(102'500'000.0)
|
||||
.set<&Spectrum::Properties::sweep_frequency_range>(Range{102'200'000.0, 102'800'000.0})
|
||||
.set<&Spectrum::Properties::max_marker_visible>(true)
|
||||
.set<&Spectrum::Properties::sweep_region_visible>(true)
|
||||
.set<&Spectrum::Properties::interpolation_mode>(Line_Interpolation_Mode::Cubic_Value)
|
||||
.build(data, spectrum_frequency_axis, spectrum_power_axis);
|
||||
spectrum->set<&Spectrum::Properties::current_pen>(Pen{
|
||||
Color{57, 224, 177, 255}, 2.0, Line_Style::Solid,
|
||||
Line_Cap::Round, Line_Join::Round
|
||||
});
|
||||
spectrum->set_current_brush({Color{31, 174, 145, 32}, Brush_Style::Solid});
|
||||
spectrum->set_max_pen({Color{250, 204, 21, 210}, 1.0});
|
||||
spectrum->set_middle_frequency_pen({
|
||||
spectrum->set<&Spectrum::Properties::current_brush>(Brush{Color{31, 174, 145, 32}, Brush_Style::Solid});
|
||||
spectrum->set<&Spectrum::Properties::max_pen>(Pen{Color{250, 204, 21, 210}, 1.0});
|
||||
spectrum->set<&Spectrum::Properties::middle_frequency_pen>(Pen{
|
||||
Color{56, 189, 248, 220}, 1.0,
|
||||
Line_Style::Dash
|
||||
});
|
||||
waterfall = Waterfall::Builder(data, waterfall_frequency_axis, waterfall_time_axis)
|
||||
.set_frequency_range(initial_frequency)
|
||||
.set_power_range({-120.0, -20.0})
|
||||
.set_frequency_bin_count(768)
|
||||
.set_interpolation_mode(Image_Interpolation_Mode::Bilinear)
|
||||
.set_color_map(radio_color_map())
|
||||
.build();
|
||||
selection = Selection_Rectangle_Overlay::Builder(
|
||||
overlay, spectrum_frequency_axis, spectrum_power_axis)
|
||||
.set_rect_brush({Color{56, 189, 248, 36}, Brush_Style::Solid})
|
||||
.set_border_pen({Color{125, 211, 252, 230}, 1.0, Line_Style::Dash})
|
||||
.build();
|
||||
waterfall = Waterfall::Builder{}
|
||||
.set<&Waterfall::Properties::frequency_range>(initial_frequency)
|
||||
.set<&Waterfall::Properties::power_range>(Range{-120.0, -20.0})
|
||||
.set<&Waterfall::Properties::frequency_bin_count>(768)
|
||||
.set<&Waterfall::Properties::interpolation_mode>(Image_Interpolation_Mode::Bilinear)
|
||||
.set<&Waterfall::Properties::color_map>(radio_color_map())
|
||||
.build(data, waterfall_frequency_axis, waterfall_time_axis);
|
||||
selection = Selection_Rectangle_Overlay::Builder{}
|
||||
.set<&Selection_Rectangle_Overlay::Properties::selection_brush>(Brush{Color{56, 189, 248, 36}, Brush_Style::Solid})
|
||||
.set<&Selection_Rectangle_Overlay::Properties::selection_border_pen>(Pen{Color{125, 211, 252, 230}, 1.0, Line_Style::Dash})
|
||||
.build(overlay, spectrum_frequency_axis, spectrum_power_axis);
|
||||
apply_layout(plot.viewport_size());
|
||||
plot.activate_view();
|
||||
update_model();
|
||||
@@ -219,26 +218,26 @@ struct Web_Plot_Session::Impl {
|
||||
const Range range{center - bandwidth * 0.5, center + bandwidth * 0.5};
|
||||
spectrum_frequency_axis->set_coord_range(range);
|
||||
waterfall_frequency_axis->set_coord_range(range);
|
||||
spectrum->set_frequency_range(range);
|
||||
spectrum->set_center_frequency(center);
|
||||
spectrum->set_sweep_frequency_range({
|
||||
spectrum->set<&Spectrum::Properties::frequency_range>(range);
|
||||
spectrum->set<&Spectrum::Properties::center_frequency>(center);
|
||||
spectrum->set<&Spectrum::Properties::sweep_frequency_range>(Range{
|
||||
center - bandwidth * 0.125,
|
||||
center + bandwidth * 0.125
|
||||
});
|
||||
waterfall->set_frequency_range(range);
|
||||
waterfall->set<&Waterfall::Properties::frequency_range>(range);
|
||||
}
|
||||
void set_bandwidth(double kilohertz) {
|
||||
const double center = spectrum->center_frequency();
|
||||
const double center = spectrum->get<&Spectrum::Properties::center_frequency>();
|
||||
const double bandwidth = kilohertz * 1000.0;
|
||||
const Range range{center - bandwidth * 0.5, center + bandwidth * 0.5};
|
||||
spectrum_frequency_axis->set_coord_range(range);
|
||||
waterfall_frequency_axis->set_coord_range(range);
|
||||
spectrum->set_frequency_range(range);
|
||||
spectrum->set_sweep_frequency_range({
|
||||
spectrum->set<&Spectrum::Properties::frequency_range>(range);
|
||||
spectrum->set<&Spectrum::Properties::sweep_frequency_range>(Range{
|
||||
center - bandwidth * 0.125,
|
||||
center + bandwidth * 0.125
|
||||
});
|
||||
waterfall->set_frequency_range(range);
|
||||
waterfall->set<&Waterfall::Properties::frequency_range>(range);
|
||||
}
|
||||
std::optional<std::string> render_pixels() {
|
||||
if (!plot.view_active())
|
||||
@@ -297,14 +296,14 @@ struct Web_Plot_Session::Impl {
|
||||
plot.notify_model_dirty();
|
||||
}
|
||||
else if constexpr (std::is_same_v<T, Set_Max_Hold>) {
|
||||
spectrum->set_max_hold_visible(value.enabled);
|
||||
spectrum->set<&Spectrum::Properties::max_hold_visible>(value.enabled);
|
||||
}
|
||||
else if constexpr (std::is_same_v<T, Set_Smoothing>) {
|
||||
spectrum->set_interpolation_mode(
|
||||
spectrum->set<&Spectrum::Properties::interpolation_mode>(
|
||||
value.enabled
|
||||
? Line_Interpolation_Mode::Cubic_Value
|
||||
: Line_Interpolation_Mode::Nearest_Sample);
|
||||
waterfall->set_interpolation_mode(
|
||||
waterfall->set<&Waterfall::Properties::interpolation_mode>(
|
||||
value.enabled
|
||||
? Image_Interpolation_Mode::Bilinear
|
||||
: Image_Interpolation_Mode::Nearest);
|
||||
|
||||
Reference in New Issue
Block a user