adb08219803825195f615ae92971ecb5cef8cb8d
[supertux.git] / src / unison / include / unison / video / Renderers.hpp
1 //          Copyright Timothy Goya 2007.
2 // Distributed under the Boost Software License, Version 1.0.
3 //    (See accompanying file LICENSE_1_0.txt or copy at
4 //          http://www.boost.org/LICENSE_1_0.txt)
5
6 #ifndef UNISON_VIDEO_RENDERERS_HPP
7 #define UNISON_VIDEO_RENDERERS_HPP
8
9 #include <string>
10 #include <vector>
11
12 namespace Unison
13 {
14    namespace Video
15    {
16       namespace Backend
17       {
18          class Renderer;
19       }
20       /// Manages renderers
21       class Renderers
22       {
23          public:
24             /// Initialize and retrieve singleton
25             static Renderers &get();
26
27             /// Set the backend renderer to use
28             /// \param[in] name The name of a renderer backend (can be "auto")
29             void set_renderer(const std::string &name);
30
31             /// Get the current backend renderer
32             /// \return The current backend renderer
33             Backend::Renderer &get_renderer();
34
35             /// Add a backend renderer
36             /// \param[in] renderer The backend renderer to add
37             void add_renderer(Backend::Renderer *renderer);
38          private:
39             /// The auto renderer backend
40             Backend::Renderer *auto_renderer;
41
42             /// The current renderer backend
43             Backend::Renderer *renderer;
44
45             /// The known backend renderers
46             std::vector<Backend::Renderer *> renderers;
47
48             /// Default constructor
49             Renderers();
50
51             /// Destructor
52             ~Renderers();
53       };
54    }
55 }
56
57 #endif