]> git.tdb.fi Git - libs/gl.git/blobdiff - source/builders/sequencetemplate.h
Use constructor delegation instead of init functions when possible
[libs/gl.git] / source / builders / sequencetemplate.h
index 660a043297bb2f8046c283bf6954ae538d620f09..bf1e8be185e086efc6b3597139f827630e672536 100644 (file)
@@ -8,7 +8,7 @@
 #include "blend.h"
 #include "depthtest.h"
 #include "postprocessor.h"
-#include "predicate.h"
+#include "resources.h"
 #include "stenciltest.h"
 
 namespace Msp {
@@ -70,9 +70,10 @@ public:
                        std::string inline_base_name;
 
                public:
-                       Loader(Step &);
-                       Loader(Step &, Collection &);
+                       Loader(Step &s): Loader(s, 0) { }
+                       Loader(Step &s, Collection &c): Loader(s, &c) { }
                private:
+                       Loader(Step &, Collection *);
                        void init();
 
                public:
@@ -110,6 +111,17 @@ public:
        };
 
 private:
+       class ClearLoader: public DataFile::ObjectLoader<SequenceTemplate>
+       {
+       public:
+               ClearLoader(SequenceTemplate &);
+
+       private:
+               void color(float, float, float, float);
+               void depth(float);
+               void stencil(int);
+       };
+
        typedef TypeRegistry<PostProcLoader::AddPostProc, PostProcLoader &> PostProcessorRegistry;
 
        bool hdr;
@@ -119,6 +131,9 @@ private:
        std::vector<Step> steps;
        std::vector<PostProcessor> postprocessors;
        bool clear_enabled;
+       std::vector<Color> clear_colors;
+       float clear_depth;
+       int clear_stencil;
 
 public:
        SequenceTemplate();
@@ -131,6 +146,9 @@ public:
        const std::vector<Step> &get_steps() const { return steps; }
        const std::vector<PostProcessor> &get_postprocessors() const { return postprocessors; }
        bool is_clear_enabled() const { return clear_enabled; }
+       const std::vector<Color> &get_clear_colors() const { return clear_colors; }
+       float get_clear_depth() const { return clear_depth; }
+       int get_clear_stencil() const { return clear_stencil; }
 
        template<typename T>
        static void register_postprocessor(const std::string &);