+#ifndef MSP_GL_VIEW_H_
+#define MSP_GL_VIEW_H_
+
+#include <list>
+#include "framebuffer.h"
+
+namespace Msp {
+namespace GL {
+
+class Camera;
+class Renderable;
+class Renderer;
+
+/**
+Manages the presentation of rendering results on the screen.
+*/
+class View: public sigc::trackable
+{
+protected:
+ Framebuffer ⌖
+ Camera *camera;
+ Renderable *content;
+ Renderer *internal_renderer;
+
+ View(Framebuffer &);
+public:
+ virtual ~View();
+
+ 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(); }
+
+ void set_camera(Camera *);
+ void set_content(Renderable *);
+
+ virtual void render();
+ virtual void render(Renderer &);
+};
+
+} // namespace GL
+} // namespace Msp
+
+#endif