29 #ifndef _CEGUIWindowRendererManager_h_
30 #define _CEGUIWindowRendererManager_h_
32 #include "CEGUI/Singleton.h"
33 #include "CEGUI/WindowRenderer.h"
34 #include "CEGUI/Logger.h"
35 #include "CEGUI/Exceptions.h"
36 #include "CEGUI/TplWindowRendererFactory.h"
41 # pragma warning(push)
42 # pragma warning(disable : 4251)
48 class CEGUIEXPORT WindowRendererManager :
49 public Singleton<WindowRendererManager>,
50 public AllocatedObject<WindowRendererManager>
56 WindowRendererManager();
57 ~WindowRendererManager();
62 static WindowRendererManager& getSingleton();
63 static WindowRendererManager* getSingletonPtr();
68 bool isFactoryPresent(
const String& name)
const;
69 WindowRendererFactory* getFactory(
const String& name)
const;
88 static void addFactory();
104 template <
typename T>
105 static void addWindowRendererType();
108 void removeFactory(
const String& name);
124 typedef std::map<String, WindowRendererFactory*, StringFastLessCompare> WR_Registry;
131 static OwnedFactoryList d_ownedFactories;
135 template <
typename T>
142 if (WindowRendererManager::getSingletonPtr())
144 Logger::getSingleton().logEvent(
"Created WindowRendererFactory for '" +
146 "' WindowRenderers.");
150 WindowRendererManager::getSingleton().addFactory(factory);
152 CEGUI_CATCH (Exception&)
154 Logger::getSingleton().logEvent(
"Deleted WindowRendererFactory for "
156 "' WindowRenderers.");
158 CEGUI_DELETE_AO factory;
163 d_ownedFactories.push_back(factory);
167 template <
typename T>
170 WindowRendererManager::addFactory<TplWindowRendererFactory<T> >();
178 #if defined(_MSC_VER)
179 # pragma warning(pop)
182 #endif // _CEGUIWindowRendererManager_h_