策略抽离

This commit is contained in:
2026-08-02 14:20:27 +08:00
parent 6d000f43b4
commit 2df8959ed6
87 changed files with 2454 additions and 1390 deletions
+7 -23
View File
@@ -38,9 +38,9 @@ void start_render_scheduler(Render_Runtime_Config config) {
Global::instance()->start_render_scheduler(config);
}
Abs_Plot_Private::Abs_Plot_Private(std::unique_ptr<Refresh_Strategy> refresh_strategy)
: strategy(refresh_strategy.get()),
core(std::make_unique<Plot_Core>(std::move(refresh_strategy))) {}
Abs_Plot_Private::Abs_Plot_Private(std::unique_ptr<Frame_Flow> frame_flow)
: flow(frame_flow.get()),
core(std::make_unique<Plot_Core>(std::move(frame_flow))) {}
Abs_Plot_Private::~Abs_Plot_Private() = default;
@@ -71,7 +71,7 @@ Abs_Plot::Abs_Plot(Abs_Plot_Private* private_data)
Abs_Plot::~Abs_Plot() {
if (d) {
set_performance_overlay_update_callback(*d->core, {});
d->core->pause_render();
d->core->deactivate_view();
delete d;
d = nullptr;
}
@@ -101,18 +101,6 @@ void Abs_Plot::remove_renderable(const std::shared_ptr<Renderable>& able) {
d->core->remove_renderable(able);
}
bool Abs_Plot::is_rendering() {
return d->core->is_rendering();
}
void Abs_Plot::start_render() {
d->core->start_render();
}
void Abs_Plot::pause_render() {
d->core->pause_render();
}
QColor Abs_Plot::background_color() {
return to_qcolor(d->core->background_color());
}
@@ -121,10 +109,6 @@ void Abs_Plot::set_background_color(const QColor& color) {
d->core->set_background_color(from_qcolor(color));
}
void Abs_Plot::mark_render_state_dirty() {
d->core->mark_render_state_dirty();
}
void Abs_Plot::paintEvent(QPaintEvent* event) {
d->paint_event(this, event);
}
@@ -182,19 +166,19 @@ bool Abs_Plot_Private::event(Abs_Plot* plot, QEvent* event, bool base_result) {
core->set_viewport_size(Qt_Event_Adapter::to_size(resize_event->size()));
notify_performance_overlay_viewport_changed(*core);
core->dispatch_event(Qt_Event_Adapter::to_resize_event(resize_event));
core->mark_render_state_dirty();
core->notify_model_dirty();
break;
}
case QEvent::Show: {
Event show_event(Event_Type::Show);
core->dispatch_event(show_event);
core->start_render();
core->activate_view();
break;
}
case QEvent::Hide: {
Event hide_event(Event_Type::Hide);
core->dispatch_event(hide_event);
core->pause_render();
core->deactivate_view();
break;
}
case QEvent::Leave: {