FLImaging 6.5.8.1
SNAPCustomProcessingManager.h
1#pragma once
2
3#include <map>
4
5namespace FLImaging
6{
7 namespace GUI
8 {
9 class CSNAPParameter;
10
11 typedef std::function<const CResult(Base::CFLBase*)> CSNAPCustomProcedure;
12 typedef std::function<const CResult(CSNAPParameter*, Base::CFLBase*)> CSNAPCustomParameter;
13
14 #define MakeSNAPCustomProcedure [=](Base::CFLBase* pObject) -> const CResult
15 #define MakeSNAPCustomParameter [=](CSNAPParameter* pParameter, Base::CFLBase* pObject) -> const CResult
16
17 class FL_EXPORT CSNAPCustomProcessingManager : public Base::CFLBase
18 {
19 private:
20 CSNAPCustomProcessingManager();
21
22 public:
23 typedef struct sCustomProcessingParameterInfo
24 {
25 sCustomProcessingParameterInfo(const Base::CFLString<wchar_t>& strNodeName, const Base::CFLString<wchar_t>& strParameterName, const Base::CFLString<wchar_t>& strParameterType, CSNAPCustomParameter scparamParameter, const Base::CFLBase* pObject);
26
27 Base::CFLString<wchar_t> strNodeName;
28 Base::CFLString<wchar_t> strParameterName;
29 Base::CFLString<wchar_t> strParameterType;
30 CSNAPCustomParameter scparamParameter;
31
32 const Base::CFLBase* pObject;
33 }
34 SCustomProcessingParameterInfo;
35
36 typedef struct sCustomProcessingProcedureInfo
37 {
38 sCustomProcessingProcedureInfo(const Base::CFLString<wchar_t>& strNodeName, CSNAPCustomProcedure scprocProcedure, const Base::CFLBase* pObject);
39
40 Base::CFLString<wchar_t> strNodeName;
41 CSNAPCustomProcedure scprocProcedure;
42
43 const Base::CFLBase* pObject;
44 }
45 SCustomProcessingProcedureInfo;
46
47 public:
48 virtual ~CSNAPCustomProcessingManager();
49
50 static const CResult AddInputParameter(const Base::CFLString<wchar_t>& strNodeName, const Base::CFLString<wchar_t>& strParameterName, const Base::CFLString<wchar_t>& strParameterType, CSNAPCustomParameter scparamParameter, const Base::CFLBase* pObject);
51 static const CResult AddOutputParameter(const Base::CFLString<wchar_t>& strNodeName, const Base::CFLString<wchar_t>& strParameterName, const Base::CFLString<wchar_t>& strParameterType, CSNAPCustomParameter scparamParameter, const Base::CFLBase* pObject);
52 static const CResult AddProcedure(const Base::CFLString<wchar_t>& strNodeName, CSNAPCustomProcedure scprocProcedure, const Base::CFLBase* pObject);
53
54
55 static const CResult GetInputParameters(const Base::CFLString<wchar_t>& strNodeName, std::vector<SCustomProcessingParameterInfo>& vctResult);
56 static const CResult GetOutputParameters(const Base::CFLString<wchar_t>& strNodeName, std::vector<SCustomProcessingParameterInfo>& vctResult);
57 static const CResult GetProcedures(const Base::CFLString<wchar_t>& strNodeName, std::vector<SCustomProcessingProcedureInfo>& vctResult);
58 static const CResult GetProcedures(const Base::CFLString<wchar_t>& strNodeName, const Base::CFLBase* pObject, std::vector<SCustomProcessingProcedureInfo>& vctResult);
59
60 static const CResult RemoveCustomProcess(const Base::CFLBase* pObject);
61
62 public:
63 DeclareGetClassType();
64
65 protected:
66 static const CResult Update();
67
68 private:
69 static CSNAPCustomProcessingManager* GetInstance();
70
71 std::multimap<uint64_t, SCustomProcessingParameterInfo>& m_mmapCustomInputParameters;
72 std::multimap<uint64_t, SCustomProcessingParameterInfo>& m_mmapCustomOutputParameters;
73 std::multimap<uint64_t, SCustomProcessingProcedureInfo>& m_mmapCustomProcedures;
74 };
75 }
76}