#pragma once

#include "Plot.h"

#include <memory>

class QTimer;
class QPainter;

namespace renderive {

class Qt_Presentation_Sink;

struct Abs_Plot_Private {
    explicit Abs_Plot_Private(bool continuous_rendering);
    ~Abs_Plot_Private();

    void attach_widget(Abs_Plot* plot);
    void paint_event(Abs_Plot* plot);
    void draw_performance_overlay(Abs_Plot* plot, QPainter& painter);

    std::unique_ptr<Scene2D> scene;
    std::shared_ptr<Qt_Presentation_Sink> presentation_sink;
    QTimer* timer{};
    bool continuous{};
};

} // namespace renderive
