#pragma once #include "Core/architecture/global.h" #include "Core/architecture/Render_Config.h" #include "Core/architecture/Renderable.h" #include #include #include #include #include #include namespace renderive { void LIB_DECL start_render_scheduler(Render_Runtime_Config config = {}); struct Abs_Plot_Private; class Plot_Core; class Performance_Shower; class Latency_Eager_Plot; class Explicit_Plot; class LIB_DECL Abs_Plot : public QWidget { Q_OBJECT public: virtual void init(); QColor background_color(); [[nodiscard]] Plot_Core* core() const; [[nodiscard]] std::shared_ptr get_root_renderable() const; [[nodiscard]] std::shared_ptr create_renderable_node(const std::shared_ptr& parent, const QString& object_name = {}) const; QString object_name; void set_background_color(const QColor& color); void mark_render_state_dirty(); void remove_renderable(const std::shared_ptr& able); virtual void init_renderable_tree(); bool is_rendering(); void start_render(); void pause_render(); ~Abs_Plot() override; protected: explicit Abs_Plot(Abs_Plot_Private* private_data); bool event(QEvent* event) final; void paintEvent(QPaintEvent* event) final; Abs_Plot_Private* d{}; }; } // namespace renderive