]> git.tdb.fi Git - libs/gl.git/commitdiff
Move PipelinePass inside Pipeline and make the data members private
authorMikko Rasa <tdb@tdb.fi>
Mon, 20 Aug 2012 12:39:26 +0000 (15:39 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 20 Aug 2012 12:43:46 +0000 (15:43 +0300)
It's really simple and specific to Pipeline, so it doesn't make much
sense to have it as a separate class.  Encapsulation is necessary for
some future plans, and also more consistent with other public interfaces.

source/pipeline.cpp
source/pipeline.h
source/pipelinepass.cpp [deleted file]
source/pipelinepass.h [deleted file]

index 8757ea92e87e54a6a0e1b0dc33afe1c7f5b006e3..ce15597080618114fc719e1e332732f20809cb76 100644 (file)
@@ -58,19 +58,19 @@ void Pipeline::set_camera(const Camera *c)
        camera = c;
 }
 
-PipelinePass &Pipeline::add_pass(const Tag &tag)
+Pipeline::Pass &Pipeline::add_pass(const Tag &tag)
 {
-       PipelinePass &pass = insert_unique(passes, tag, PipelinePass())->second;
+       Pass &pass = insert_unique(passes, tag, Pass())->second;
        pass_order.push_back(tag);
        return pass;
 }
 
-PipelinePass &Pipeline::get_pass(const Tag &tag)
+Pipeline::Pass &Pipeline::get_pass(const Tag &tag)
 {
        return get_item(passes, tag);
 }
 
-const PipelinePass &Pipeline::get_pass(const Tag &tag) const
+const Pipeline::Pass &Pipeline::get_pass(const Tag &tag) const
 {
        return get_item(passes, tag);
 }
@@ -121,11 +121,11 @@ void Pipeline::add_postprocessor(PostProcessor &pp)
 
 void Pipeline::render(Renderer &renderer, const Tag &tag) const
 {
-       const PipelinePass &pass = get_pass(tag);
+       const Pass &pass = get_pass(tag);
 
-       Bind bind_depth_test(pass.depth_test);
-       Bind bind_blend(pass.blend);
-       Bind bind_lighting(pass.lighting);
+       Bind bind_depth_test(pass.get_depth_test());
+       Bind bind_blend(pass.get_blend());
+       Bind bind_lighting(pass.get_lighting());
 
        for(vector<Slot>::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
                if(i->passes.empty() || i->passes.count(tag))
@@ -204,6 +204,28 @@ void Pipeline::create_fbos()
 }
 
 
+Pipeline::Pass::Pass():
+       lighting(0),
+       depth_test(0),
+       blend(0)
+{ }
+
+void Pipeline::Pass::set_lighting(const Lighting *l)
+{
+       lighting = l;
+}
+
+void Pipeline::Pass::set_depth_test(const DepthTest *d)
+{
+       depth_test = d;
+}
+
+void Pipeline::Pass::set_blend(const Blend *b)
+{
+       blend = b;
+}
+
+
 Pipeline::Slot::Slot(const Renderable *r):
        renderable(r)
 { }
index 85179b7d5abfb4c4263c39176b53d6fd26a0a7a5..011a96bba5e37d6ca1bd056bfe1cede1c047cb03 100644 (file)
@@ -3,20 +3,41 @@
 
 #include <map>
 #include <set>
-#include "pipelinepass.h"
 #include "renderable.h"
 
 namespace Msp {
 namespace GL {
 
+class Blend;
 class Camera;
+class DepthTest;
 class Framebuffer;
+class Lighting;
 class PostProcessor;
 class Renderbuffer;
 class Texture2D;
 
 class Pipeline: public Renderable
 {
+public:
+       class Pass
+       {
+       private:
+               const Lighting *lighting;
+               const DepthTest *depth_test;
+               const Blend *blend;
+
+       public:
+               Pass();
+
+               void set_lighting(const Lighting *);
+               void set_depth_test(const DepthTest *);
+               void set_blend(const Blend *);
+               const Lighting *get_lighting() const { return lighting; }
+               const DepthTest *get_depth_test() const { return depth_test; }
+               const Blend *get_blend() const { return blend; }
+       };
+
 private:
        struct Slot
        {
@@ -26,7 +47,7 @@ private:
                Slot(const Renderable *);
        };
 
-       typedef std::map<Tag, PipelinePass> PassMap;
+       typedef std::map<Tag, Pass> PassMap;
 
        PassMap passes;
        std::vector<Tag> pass_order;
@@ -52,9 +73,9 @@ public:
        void set_multisample(unsigned);
        void set_camera(const Camera *);
 
-       PipelinePass &add_pass(const Tag &tag);
-       PipelinePass &get_pass(const Tag &tag);
-       const PipelinePass &get_pass(const Tag &tag) const;
+       Pass &add_pass(const Tag &tag);
+       Pass &get_pass(const Tag &tag);
+       const Pass &get_pass(const Tag &tag) const;
 
        void add_renderable(const Renderable &);
        void add_renderable_for_pass(const Renderable &, const Tag &);
diff --git a/source/pipelinepass.cpp b/source/pipelinepass.cpp
deleted file mode 100644 (file)
index 2b0b439..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "pipelinepass.h"
-
-namespace Msp {
-namespace GL {
-
-PipelinePass::PipelinePass():
-       lighting(0),
-       depth_test(0),
-       blend(0)
-{ }
-
-} // namespace GL
-} // namespace Msp
diff --git a/source/pipelinepass.h b/source/pipelinepass.h
deleted file mode 100644 (file)
index e996de0..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef MSP_GL_PIPELINEPASS_H_
-#define MSP_GL_PIPELINEPASS_H_
-
-namespace Msp {
-namespace GL {
-
-class Blend;
-class DepthTest;
-class Lighting;
-
-struct PipelinePass
-{
-       const Lighting *lighting;
-       const DepthTest *depth_test;
-       const Blend *blend;
-
-       PipelinePass();
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif