策略抽离
This commit is contained in:
+7
-23
@@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user