#pragma once #include "render_2D/plot/Plot_Core.h" #include "render_2D/plottable/Performance_Overlay.h" #include "render_2D/renderable/Renderable.h" #include #include namespace adminive { template struct Object_Adapter; } namespace renderive::web { struct Gallery_Feedback_Policy { bool enabled{true}; bool pixel{}; bool presentation{true}; bool manual{}; double manual_fps{60.0}; friend bool operator==(const Gallery_Feedback_Policy&, const Gallery_Feedback_Policy&) = default; }; struct Gallery_Session_Control_Model { Color background_color{7, 17, 31, 255}; bool performance_overlay{}; bool renderable_visible{true}; Renderable_Cache_Mode cache_mode{Renderable_Cache_Mode::Local_Pixel}; std::string object_name{"Gallery_Renderable"}; bool frequency_limit_enabled{true}; double max_render_fps{30.0}; Gallery_Feedback_Policy feedback; }; class Gallery_Session_Control final { public: Gallery_Session_Control(Plot_Core& plot, Renderable& renderable, Gallery_Feedback_Policy& feedback) noexcept : plot_(plot), renderable_(renderable), feedback_(feedback) {} private: [[nodiscard]] Gallery_Session_Control_Model adminive_snapshot() const; void adminive_commit(Gallery_Session_Control_Model model); Plot_Core& plot_; Renderable& renderable_; Gallery_Feedback_Policy& feedback_; template friend struct ::adminive::Object_Adapter; }; } // namespace renderive::web