Files
vimix/View.h
brunoherbelin cc03e7b7cd New Session class to contain the list of sources. Loading and Saving of
session files in XML. Verified deletion of Nodes, Groups and Sources.
2020-05-02 13:26:57 +02:00

83 lines
1.5 KiB
C++

#ifndef VIEW_H
#define VIEW_H
#include <glm/glm.hpp>
#include "Scene.h"
class FrameBuffer;
class Source;
class View
{
public:
typedef enum {RENDERING = 0, MIXING=1, GEOMETRY=2, LAYER=3, INVALID=4 } Mode;
View(Mode m);
inline Mode mode() const { return mode_; }
virtual void update (float dt);
virtual void draw () = 0;
virtual void zoom (float) {}
virtual void drag (glm::vec2, glm::vec2) {}
virtual void grab (glm::vec2, glm::vec2, Source*) {}
virtual void restoreDefaultSettings();
virtual void setCurrentSettingsAsDefault();
Scene scene;
protected:
Mode mode_;
Group *backgound_;
};
class MixingView : public View
{
public:
MixingView();
~MixingView();
void draw () override;
void zoom (float factor) override;
void drag (glm::vec2 from, glm::vec2 to) override;
void grab (glm::vec2 from, glm::vec2 to, Source *s) override;
private:
uint textureMixingQuadratic();
};
class RenderView : public View
{
FrameBuffer *frame_buffer_;
public:
RenderView ();
~RenderView ();
void draw () override;
void setResolution (uint width, uint height);
inline FrameBuffer *frameBuffer () const { return frame_buffer_; }
};
class GeometryView : public View
{
public:
GeometryView();
~GeometryView();
void draw () override;
void zoom (float factor) override;
void drag (glm::vec2 from, glm::vec2 to) override;
void grab (glm::vec2 from, glm::vec2 to, Source *s) override;
private:
};
#endif // VIEW_H