Computer Assisted Medical Intervention Tool Kit  version 5.2
 
Loading...
Searching...
No Matches
MMLMonitorDisplayFactory.h
Go to the documentation of this file.
1/*****************************************************************************
2 * $CAMITK_LICENCE_BEGIN$
3 *
4 * CamiTK - Computer Assisted Medical Intervention ToolKit
5 * (c) 2001-2024 Univ. Grenoble Alpes, CNRS, Grenoble INP - UGA, TIMC, 38000 Grenoble, France
6 *
7 * Visit http://camitk.imag.fr for more information
8 *
9 * This file is part of CamiTK.
10 *
11 * CamiTK is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * CamiTK is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22 *
23 * $CAMITK_LICENCE_END$
24 ****************************************************************************/
25
26#ifndef MMLMonitorDisplayFactory_H
27#define MMLMonitorDisplayFactory_H
28
29#include <map>
30#include <vector>
31#include <string>
32
33// Monitor includes
34#include "Monitor.h"
35#include "MMLComponentAPI.h"
36
38class MMLComponent;
48
49public:
50
52 static MMLMonitorDisplayFactory* getInstance();
53
63 template<typename C>
64 bool registerClass(std::string id, Monitor::type type) {
65 if (mapObjectCreator.find(id) != mapObjectCreator.end()) {
66 return false;
67 }
68 else {
69 mapObjectCreator.insert(std::pair<std::string, CreateMonitorDisplayFunctionPointer>(id, &createTheMonitorDisplay<C>));
70 displaysByType[type].push_back(id);
71 return true;
72 }
73 }
74
82 template<typename C>
83 bool registerClass(std::string id) {
84 if (mapObjectCreator.find(id) != mapObjectCreator.end()) {
85 return false;
86 }
87 else {
88 mapObjectCreator.insert(std::pair<std::string, CreateMonitorDisplayFunctionPointer>(id, &createTheMonitorDisplay<C>));
89 for (unsigned int i = 0; i < Monitor::typeCount; i++) {
90 displaysByType[i].push_back(id);
91 }
92
93 return true;
94 }
95 }
96
98 bool isRegistered(std::string id);
99
101 MMLMonitorDisplay* createMonitorDisplay(std::string id, Monitor* monitor, MMLComponent* manager);
102
104 unsigned int getNumberOfDisplaysByType(Monitor::type type);
105
107 std::string getDisplayByType(Monitor::type type, const unsigned int i);
108
109private:
110
111 MMLMonitorDisplayFactory() = default;
112
113 using CreateMonitorDisplayFunctionPointer = MMLMonitorDisplay * (*)(Monitor* monitor, MMLComponent* manager);
114
116 std::map<std::string, CreateMonitorDisplayFunctionPointer> mapObjectCreator;
117
122 template<typename C>
123 static MMLMonitorDisplay* createTheMonitorDisplay(Monitor* monitor, MMLComponent* manager) {
124 return new C(monitor, manager);
125 }
126
128 std::vector<std::string> displaysByType[Monitor::typeCount];
129
131 static MMLMonitorDisplayFactory* instance;
132};
133
134
135#endif // MMLMonitorDisplayFactory_H
#define MMLCOMPONENT_API
Definition MMLComponentAPI.h:54
This class manage an MML monitoring document ".mml".
Definition MMLComponent.h:48
A Factory for creating MMLMonitorDiplay.
Definition MMLMonitorDisplayFactory.h:47
bool registerClass(std::string id)
Register a class into the map for classes wich can display every types of monitors.
Definition MMLMonitorDisplayFactory.h:83
bool registerClass(std::string id, Monitor::type type)
Register a class into the map A registered class can be created using createMonitorDisplay().
Definition MMLMonitorDisplayFactory.h:64
Generic class for MML Monitor 3D/Graphical representation.
Definition MMLMonitorDisplay.h:45
A monitor calculate and store followed data (ex:calculation between current position and references) ...
Definition Monitor.h:49
type
type of the values stored (please update typeCount and doc if you update the enum) SCALAR: the monito...
Definition Monitor.h:60
static const unsigned int typeCount
number of possible types (siez of the previous enum). Please always update if the enum is updated.
Definition Monitor.h:67