-
Notifications
You must be signed in to change notification settings - Fork 0
/
Pipeline.h
63 lines (50 loc) · 1.58 KB
/
Pipeline.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef EFTDEM_PIPELINE_H
#define EFTDEM_PIPELINE_H
#include "IPipeline.h"
#include "IPipelineComponent.h"
#include "ICloudReader.h"
#include "ICloudSorter.h"
#include "ICloudRasterizer.h"
#include "IHeightMapFiller.h"
#include "IHeightMapWriter.h"
#include "GLHandler.h"
/**
* Supports one of each type of IPipelineComponent which will be executed sequentially as:
* 1) ICloudReader
* 2) ICloudSorter
* 3) ICloudRasterizer
* 4) IHeightMapFiller
* 5) IHeightMapWriter
*/
class Pipeline : public IPipeline {
friend class ConfigProvider;
private:
ICloudReader *reader{};
ICloudSorter *sorter{};
ICloudRasterizer *rasterizer{};
IHeightMapFiller *filler{};
IHeightMapWriter *writer{};
GLHandler *glHandler{};
public:
explicit Pipeline(GLHandler *glHandler);
explicit Pipeline(const std::string& shaderDirectory);
~Pipeline() override;
bool isOperable();
void attachElements(ICloudReader *, ICloudSorter *, ICloudRasterizer *, IHeightMapFiller *, IHeightMapWriter *);
heightMap * execute() override;
heightMap * executeAfterReader(rawPointCloud *pointCloud) override;
GLHandler * getGLHandler() override;
ICloudReader * getCloudReader() override;
ICloudSorter * getCloudSorter() override;
IHeightMapWriter * getHeightMapWriter() override;
enum exitCodes {
EXIT_INVALID_COMMAND_LINE_ARGUMENTS = 101,
EXIT_INVALID_FUNCTION_PARAMETERS,
EXIT_IO_ERROR,
EXIT_OPENGL_ERROR,
EXIT_DEPENDENCY_ERROR,
EXIT_INVALID_CONFIGURATION,
EXIT_NOT_YET_IMPLEMENTED
};
};
#endif //EFTDEM_PIPELINE_H