58 lines
1.5 KiB
C++
58 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "render_2D/plot/Plot_Core.h"
|
|
#include "render_2D/plottable/Performance_Overlay.h"
|
|
#include "render_2D/renderable/Renderable.h"
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
namespace adminive {
|
|
template <class T>
|
|
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 <class T>
|
|
friend struct ::adminive::Object_Adapter;
|
|
};
|
|
|
|
} // namespace renderive::web
|