00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_WINDOWIMPL_HPP
00026 #define SFML_WINDOWIMPL_HPP
00027
00029
00031 #include <SFML/Config.hpp>
00032 #include <SFML/System/Clock.hpp>
00033 #include <SFML/Utilities/NonCopyable.hpp>
00034 #include <SFML/Window/VideoMode.hpp>
00035 #include <set>
00036 #include <string>
00037
00038 class sfEvent;
00039 class sfWindowListener;
00040
00041
00042 namespace sf_private
00043 {
00047 class sfWindowImpl : sfNonCopyable
00048 {
00049 public :
00050
00059 static sfWindowImpl* New(sfVideoMode Mode, const std::string& Title, bool Fullscreen);
00060
00067 static sfWindowImpl* New(void* Handle);
00068
00069 public :
00070
00075 virtual ~sfWindowImpl();
00076
00083 void AddListener(sfWindowListener* Listener);
00084
00091 void RemoveListener(sfWindowListener* Listener);
00092
00099 unsigned int GetWidth() const;
00100
00107 unsigned int GetHeight() const;
00108
00113 void SetCurrent() const;
00114
00121 float Display();
00122
00127 virtual void ProcessEvents() = 0;
00128
00133 virtual void SwapBuffers() = 0;
00134
00141 virtual void UseVerticalSync(bool Enabled) = 0;
00142
00143 protected :
00144
00151 void SendEvent(const sfEvent& Event);
00152
00154
00156 unsigned int myWidth;
00157 unsigned int myHeight;
00158
00159 private :
00160
00165 virtual void MakeCurrent() const = 0;
00166
00168
00170 static const sfWindowImpl* ourCurrent;
00171
00173
00175 std::set<sfWindowListener*> myListeners;
00176 sfClock myClock;
00177 };
00178
00179 }
00180
00181 #endif // SFML_WINDOWIMPL_HPP