abstractpipeline.h 1.6 KB
Newer Older
1
2
3
4
5
#ifndef ABSTRACTPIPELINE_H__
#define ABSTRACTPIPELINE_H__

#include "tgt/logmanager.h"
#include "core/datastructures/datacontainer.h"
6
#include "core/pipeline/abstractprocessor.h"
schultezub's avatar
schultezub committed
7
#include "core/properties/propertycollection.h"
8
9
10
11
12
13
14
15
16

#include <vector>

namespace TUMVis {

    /**
     * Abstract base class for TUMVis Pipelines.
     * 
     */
17
    class AbstractPipeline {
18
19
20
21
    public:
        /**
         * Creates a AbstractPipeline.
         */
22
        AbstractPipeline();
23
24
25
26
27
28
29
30

        /**
         * Virtual Destructor
         **/
        virtual ~AbstractPipeline();


        /**
31
32
33
         * Initializes the OpenGL context of the pipeline and its processors.
         * 
         * \note    When overwriting this method, make sure to call the base class version first.
34
         */
35
        virtual void init();
36
37

        /**
38
39
40
         * Execute this pipeline.
         **/
        virtual void execute() = 0;
41

schultezub's avatar
schultezub committed
42
43
44
45
46
47
        /**
         * Returns the PropertyCollection of this processor.
         * \return _properties
         */
        PropertyCollection& getPropertyCollection();

48
49
50
    protected:
        DataContainer _data;                                ///< DataContainer containing local working set of data for this Pipeline

51
        std::vector<AbstractProcessor*> _processors;        ///< List of all processors of this pipeline
schultezub's avatar
   
schultezub committed
52
        PropertyCollection _properties;                     ///< PropertyCollection of this pipeline, put in here all properties you want to be publicly accessible
53
54
55
56
57
58
59
60

        static const std::string loggerCat_;
    };

}


#endif // ABSTRACTPIPELINE_H__