Files
vimix/src/RenderSource.h
Bruno Herbelin 6735e5eaaa New Reload source function
Generalize the reload of stream source to all types of sources. Enable OSC command to reload source.
2023-11-14 11:12:21 +01:00

60 lines
1.4 KiB
C++

#ifndef RENDERSOURCE_H
#define RENDERSOURCE_H
#include "Source.h"
class RenderSource : public Source
{
public:
RenderSource(uint64_t id = 0);
~RenderSource();
// implementation of source API
void update (float dt) override;
bool playing () const override { return !paused_; }
void play (bool) override;
void replay () override;
void reload () override;
bool playable () const override { return true; }
guint64 playtime () const override { return runtime_; }
Failure failed () const override;
uint texture() const override;
void accept (Visitor& v) override;
inline Session *session () const { return session_; }
inline void setSession (Session *se) { session_ = se; }
glm::vec3 resolution() const;
typedef enum {
RENDER_TEXTURE = 0,
RENDER_EXCLUSIVE
} RenderSourceProvenance;
static std::vector< std::tuple<int, int, std::string> > ProvenanceMethod;
void setRenderingProvenance(RenderSourceProvenance m) { provenance_ = m; }
RenderSourceProvenance renderingProvenance() const { return provenance_; }
glm::ivec2 icon() const override;
std::string info() const override;
protected:
void init() override;
Session *session_;
uint64_t runtime_;
FrameBuffer *rendered_output_;
Surface *rendered_surface_;
// control
bool paused_;
bool reset_;
RenderSourceProvenance provenance_;
};
#endif // RENDERSOURCE_H