改造一些
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user