Files
vimix/RenderSource.h
Bruno Herbelin ddccc5ff6b Strengthen implementation of Clone and Render sources
Change of vocabulary, UI display of playtime
2022-01-16 15:27:22 +01:00

58 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 {}
bool playable () const override { return true; }
guint64 playtime () const override { return runtime_; }
bool 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 const char* rendering_provenance_label[2];
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_;
RenderSourceProvenance provenance_;
};
#endif // RENDERSOURCE_H