]> git.tdb.fi Git - libs/gl.git/blobdiff - source/view.h
Store a Transform in keyframes instead of a Matrix
[libs/gl.git] / source / view.h
index acd5a65cfec98a1753642dfcb75c4393e879ed31..24188de44564f02d6a66e4b6feb7e43a5cf2bbb4 100644 (file)
@@ -2,15 +2,12 @@
 #define MSP_GL_VIEW_H_
 
 #include <list>
-#include <sigc++/trackable.h>
-#include <msp/graphics/glcontext.h>
-#include <msp/graphics/window.h>
+#include "framebuffer.h"
 
 namespace Msp {
 namespace GL {
 
 class Camera;
-class Framebuffer;
 class Renderable;
 
 /**
@@ -18,29 +15,27 @@ Manages the presentation of rendering results on the screen.
 */
 class View: public sigc::trackable
 {
-private:
-       Graphics::Window &window;
-       Graphics::GLContext &context;
+protected:
        Framebuffer &target;
-       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(); }
-       float get_aspect() const { return static_cast<float>(get_width())/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