策略抽离
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
#include "Performance_Overlay_p.h"
|
||||
#include "../architecture/Plot_Render_Context.h"
|
||||
#include "../plot/Plot_Core_Access.h"
|
||||
#include <cstdlib>
|
||||
#include <filesystem>
|
||||
#include <iomanip>
|
||||
@@ -257,7 +259,7 @@ Performance_Overlay_Private* Performance_Overlay::d() {
|
||||
return private_data.get();
|
||||
}
|
||||
static std::shared_ptr<Performance_Overlay> attach_performance_overlay_impl(Plot_Core& plot, const Performance_Overlay_Options* options) {
|
||||
auto ctx = plot.render_context();
|
||||
auto ctx = Plot_Core_Context_Access::render_context(plot);
|
||||
if (!ctx)
|
||||
return {};
|
||||
auto shower = performance_overlay_owner(ctx);
|
||||
@@ -280,10 +282,10 @@ std::shared_ptr<Performance_Overlay> attach_performance_overlay(Plot_Core& plot,
|
||||
return attach_performance_overlay_impl(plot, &options);
|
||||
}
|
||||
std::shared_ptr<Performance_Overlay> performance_overlay(Plot_Core& plot) {
|
||||
return performance_overlay_owner(plot.render_context());
|
||||
return performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
}
|
||||
void detach_performance_overlay(Plot_Core& plot) {
|
||||
auto ctx = plot.render_context();
|
||||
auto ctx = Plot_Core_Context_Access::render_context(plot);
|
||||
if (!ctx)
|
||||
return;
|
||||
auto shower = performance_overlay_owner(ctx);
|
||||
@@ -292,12 +294,12 @@ void detach_performance_overlay(Plot_Core& plot) {
|
||||
shower->set_enabled(false);
|
||||
}
|
||||
bool performance_overlay_enabled(const Plot_Core& plot) {
|
||||
auto shower = performance_overlay_owner(plot.render_context());
|
||||
auto shower = performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
return shower && shower->enabled();
|
||||
}
|
||||
void set_performance_overlay_enabled(Plot_Core& plot, bool enabled) {
|
||||
if (!enabled) {
|
||||
auto shower = performance_overlay_owner(plot.render_context());
|
||||
auto shower = performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
if (shower)
|
||||
shower->set_enabled(false);
|
||||
return;
|
||||
@@ -305,17 +307,18 @@ void set_performance_overlay_enabled(Plot_Core& plot, bool enabled) {
|
||||
auto shower = attach_performance_overlay(plot);
|
||||
if (shower) {
|
||||
shower->set_enabled(true);
|
||||
shower->set_viewport(plot.viewport_size(), plot.render_context() ? plot.render_context()->viewport_version.load(std::memory_order_acquire) : 0);
|
||||
auto ctx = Plot_Core_Context_Access::render_context(plot);
|
||||
shower->set_viewport(plot.viewport_size(), ctx ? ctx->viewport_version.load(std::memory_order_acquire) : 0);
|
||||
}
|
||||
}
|
||||
std::shared_ptr<const Performance_Display_Snapshot> performance_overlay_snapshot(const Plot_Core& plot) {
|
||||
auto shower = performance_overlay_owner(plot.render_context());
|
||||
auto shower = performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
if (!shower || !shower->enabled())
|
||||
return {};
|
||||
return shower->display_snapshot();
|
||||
}
|
||||
void set_performance_overlay_update_callback(Plot_Core& plot, std::function<void()> callback) {
|
||||
auto ctx = plot.render_context();
|
||||
auto ctx = Plot_Core_Context_Access::render_context(plot);
|
||||
if (!ctx)
|
||||
return;
|
||||
{
|
||||
@@ -327,26 +330,26 @@ void set_performance_overlay_update_callback(Plot_Core& plot, std::function<void
|
||||
shower->set_update_callback(performance_update_callback(ctx));
|
||||
}
|
||||
void notify_performance_overlay_viewport_changed(Plot_Core& plot) {
|
||||
auto shower = performance_overlay_owner(plot.render_context());
|
||||
auto shower = performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
if (!shower || !shower->enabled())
|
||||
return;
|
||||
auto ctx = plot.render_context();
|
||||
auto ctx = Plot_Core_Context_Access::render_context(plot);
|
||||
shower->set_viewport(plot.viewport_size(), ctx ? ctx->viewport_version.load(std::memory_order_acquire) : 0);
|
||||
}
|
||||
bool performance_overlay_handle_wheel(Plot_Core& plot, PointF position, double angle_delta_y, double pixel_delta_y) {
|
||||
auto shower = performance_overlay_owner(plot.render_context());
|
||||
auto shower = performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
return shower && shower->enabled() && shower->handle_wheel(position, angle_delta_y, pixel_delta_y);
|
||||
}
|
||||
bool performance_overlay_handle_pointer_press(Plot_Core& plot, PointF position) {
|
||||
auto shower = performance_overlay_owner(plot.render_context());
|
||||
auto shower = performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
return shower && shower->enabled() && shower->handle_pointer_press(position);
|
||||
}
|
||||
bool performance_overlay_handle_pointer_move(Plot_Core& plot, PointF position) {
|
||||
auto shower = performance_overlay_owner(plot.render_context());
|
||||
auto shower = performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
return shower && shower->enabled() && shower->handle_pointer_move(position);
|
||||
}
|
||||
bool performance_overlay_handle_pointer_release(Plot_Core& plot, PointF position) {
|
||||
auto shower = performance_overlay_owner(plot.render_context());
|
||||
auto shower = performance_overlay_owner(Plot_Core_Context_Access::render_context(plot));
|
||||
return shower && shower->enabled() && shower->handle_pointer_release(position);
|
||||
}
|
||||
void Performance_Overlay::set_enabled(bool enabled) {
|
||||
|
||||
Reference in New Issue
Block a user