改造一些

This commit is contained in:
2026-08-12 00:06:44 +08:00
parent aca480d988
commit abd1b595c7
57 changed files with 883 additions and 732 deletions
+6 -6
View File
@@ -25,7 +25,7 @@ std::vector<double> flatten(const std::deque<std::vector<double>>& blocks) {
}
struct Sweep_Spectrum_Control::Impl {
Impl(Sweep_Spectrum_Control& owner, std::shared_ptr<Axis> frequency, std::shared_ptr<Axis> power)
: frequency_axis(std::move(frequency)), power_axis(std::move(power)), blocks(observe_real_time_data(owner)) {}
: frequency_axis(std::move(frequency)), power_axis(std::move(power)), blocks(owner) {}
std::shared_ptr<Axis> frequency_axis;
std::shared_ptr<Axis> power_axis;
Sweep_Spectrum_History blocks;
@@ -63,14 +63,14 @@ void Sweep_Spectrum_Control::publish() {
const int limit = get<&Sweep_Spectrum_Properties::block_count>();
impl_->blocks.retain_latest(static_cast<std::size_t>(limit));
}
void Sweep_Spectrum_Control::paint(Painter& painter) {
const auto state = render_properties();
const auto blocks = impl_->blocks.snapshot();
void Sweep_Spectrum_Control::paint(Painter& painter, const Render_State_View& view) {
const auto& state = render_properties(view);
const auto& blocks = view.get(impl_->blocks);
const auto values = flatten(blocks);
if(values.size() < 2)
return;
const Axis_Transform x = impl_->frequency_axis->transform();
const Axis_Transform y = impl_->power_axis->transform();
const Axis_Transform x = impl_->frequency_axis->transform(view);
const Axis_Transform y = impl_->power_axis->transform(view);
painter.polyline(curve_points(values, state.frequency_range, x, y, state.visible_range_only, state.interpolation_mode), state.pen);
const double completed = std::min(1.0, static_cast<double>(blocks.size()) / state.block_count.get());
const double frequency = state.frequency_range.origin + state.frequency_range.length() * completed;