#define MSP_GL_VIEW_H_
#include <list>
-#include <msp/graphics/glcontext.h>
-#include <msp/graphics/window.h>
+#include "framebuffer.h"
namespace Msp {
namespace GL {
class Camera;
-class Framebuffer;
class Renderable;
/**
Manages the presentation of rendering results on the screen.
*/
-class View
+class View: public sigc::trackable
{
-private:
- Graphics::Window &window;
- Graphics::GLContext &context;
+protected:
Framebuffer ⌖
- const Renderable *content;
+ Camera *camera;
+ Renderable *content;
std::list<Camera *> synced_cameras;
+ View(Framebuffer &);
+
public:
- View(Graphics::Window &, Graphics::GLContext &);
+ virtual unsigned get_width() const { return target.get_width(); }
+ virtual unsigned get_height() const { return target.get_height(); }
+ float get_aspect_ratio() const { return static_cast<float>(get_width())/get_height(); }
- Graphics::Window &get_window() { return window; }
- Graphics::GLContext &get_context() { return context; }
- unsigned get_width() const { return window.get_width(); }
- unsigned get_height() const { return window.get_height(); }
+ void set_camera(Camera *);
+ void set_content(Renderable *);
- void set_content(const Renderable *);
+ // Deprecated
+ float get_aspect() const { return get_aspect_ratio(); }
void synchronize_camera_aspect(Camera &);
- void render();
-
-private:
- void window_resized(unsigned, unsigned);
+ virtual void render();
};
} // namespace GL