]> git.sesse.net Git - casparcg/blob - SFML-1.6/include/SFML/Window/Context.hpp
fede21cd126b82560eaadc6c8999c72745d37090
[casparcg] / SFML-1.6 / include / SFML / Window / Context.hpp
1 ////////////////////////////////////////////////////////////\r
2 //\r
3 // SFML - Simple and Fast Multimedia Library\r
4 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)\r
5 //\r
6 // This software is provided 'as-is', without any express or implied warranty.\r
7 // In no event will the authors be held liable for any damages arising from the use of this software.\r
8 //\r
9 // Permission is granted to anyone to use this software for any purpose,\r
10 // including commercial applications, and to alter it and redistribute it freely,\r
11 // subject to the following restrictions:\r
12 //\r
13 // 1. The origin of this software must not be misrepresented;\r
14 //    you must not claim that you wrote the original software.\r
15 //    If you use this software in a product, an acknowledgment\r
16 //    in the product documentation would be appreciated but is not required.\r
17 //\r
18 // 2. Altered source versions must be plainly marked as such,\r
19 //    and must not be misrepresented as being the original software.\r
20 //\r
21 // 3. This notice may not be removed or altered from any source distribution.\r
22 //\r
23 ////////////////////////////////////////////////////////////\r
24 \r
25 #ifndef SFML_CONTEXT_HPP\r
26 #define SFML_CONTEXT_HPP\r
27 \r
28 ////////////////////////////////////////////////////////////\r
29 // Headers\r
30 ////////////////////////////////////////////////////////////\r
31 #include <SFML/Config.hpp>\r
32 #include <SFML/System/NonCopyable.hpp>\r
33 \r
34 \r
35 namespace sf\r
36 {\r
37 namespace priv\r
38 {\r
39     class WindowImpl;\r
40 }\r
41 \r
42 ////////////////////////////////////////////////////////////\r
43 /// Class wrapping an OpenGL context.\r
44 /// All SFML windows already have their own context, so\r
45 /// this class is more a helper for specific issues involving\r
46 /// OpenGL and multi-threading.\r
47 /// It's meant to be used internally.\r
48 ////////////////////////////////////////////////////////////\r
49 class SFML_API Context : NonCopyable\r
50 {\r
51 public :\r
52 \r
53     ////////////////////////////////////////////////////////////\r
54     /// Default constructor, create the context\r
55     ///\r
56     ////////////////////////////////////////////////////////////\r
57     Context();\r
58 \r
59     ////////////////////////////////////////////////////////////\r
60     /// Destructor, destroy the context\r
61     ///\r
62     ////////////////////////////////////////////////////////////\r
63     ~Context();\r
64 \r
65     ////////////////////////////////////////////////////////////\r
66     /// Activate or deactivate the context\r
67     ///\r
68     /// \param Active : True to activate the context, false to deactivate it\r
69     ///\r
70     ////////////////////////////////////////////////////////////\r
71     void SetActive(bool Active);\r
72 \r
73     ////////////////////////////////////////////////////////////\r
74     /// Check if there's a context bound to the current thread\r
75     ///\r
76     /// \return True if there's a context bound to the current thread\r
77     ///\r
78     ////////////////////////////////////////////////////////////\r
79     static bool IsContextActive();\r
80 \r
81     ////////////////////////////////////////////////////////////\r
82     /// Get the global context\r
83     ///\r
84     /// \return Reference to the global context\r
85     ///\r
86     ////////////////////////////////////////////////////////////\r
87     static Context& GetGlobal();\r
88 \r
89 private :\r
90 \r
91     ////////////////////////////////////////////////////////////\r
92     // Member data\r
93     ////////////////////////////////////////////////////////////\r
94     priv::WindowImpl* myDummyWindow; ///< Dummy window holding the context\r
95 };\r
96 \r
97 } // namespace sf\r
98 \r
99 \r
100 #endif // SFML_CONTEXT_HPP\r