#pragma once #include "Core2/export.h" #include #include #include #include #include #include namespace renderive { struct Abs_Plot_Private; class Latency_Eager_Plot; class Explicit_Plot; class LIB_DECL Abs_Plot : public QWidget { Q_OBJECT public: virtual void init(); [[nodiscard]] QColor background_color() const; [[nodiscard]] Plot_Core* core() const; [[nodiscard]] std::shared_ptr root_renderable() const; [[nodiscard]] std::shared_ptr create_renderable_node( const std::shared_ptr& parent, const QString& object_name = {}) const; void set_background_color(const QColor& color); void remove_renderable(const std::shared_ptr& renderable); ~Abs_Plot() override; protected: explicit Abs_Plot(Abs_Plot_Private* private_data); void start_render_timer(); void stop_render_timer(); void update_render_interval(); bool event(QEvent* event) final; void paintEvent(QPaintEvent* event) final; Abs_Plot_Private* d{}; }; } // namespace renderive