]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/view.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / render / view.h
index df623c3a7d88b632e89a397609da0fba3d42d6c7..b8a116a65e3b80435a4aa4cdae39020dffad6252 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef MSP_GL_VIEW_H_
 #define MSP_GL_VIEW_H_
 
-#include <list>
+#include <msp/core/noncopyable.h>
 #include "framebuffer.h"
 
 namespace Msp {
@@ -12,29 +12,38 @@ class Renderable;
 class Renderer;
 
 /**
-Manages the presentation of rendering results on the screen.
+An ultimate render target, which is typically visible to the user of the
+application in some way.
+
+The content renderable's render() function is called with an empty tag.  A
+Sequence can be used to specify other tags and add post-processing.
 */
-class View: public sigc::trackable
+class View: public NonCopyable
 {
 protected:
-       Framebuffer &target;
-       Camera *camera;
-       Renderable *content;
-       Renderer *internal_renderer;
+       Camera *camera = 0;
+       Renderable *content = 0;
+       Renderer *internal_renderer = 0;
 
-       View(Framebuffer &);
+       View() = default;
 public:
+       View(View &&);
        virtual ~View();
 
-       virtual unsigned get_width() const { return target.get_width(); }
-       virtual unsigned get_height() const { return target.get_height(); }
+       virtual unsigned get_width() const { return get_target().get_width(); }
+       virtual unsigned get_height() const { return get_target().get_height(); }
        float get_aspect_ratio() const { return static_cast<float>(get_width())/get_height(); }
 
+       /** Sets the camera to render with.  The camera's aspect ratio is set to
+       match that of the view. */
        void set_camera(Camera *);
+
        void set_content(Renderable *);
 
        virtual void render();
        virtual void render(Renderer &);
+protected:
+       virtual const Framebuffer &get_target() const = 0;
 };
 
 } // namespace GL