UGDK  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
manager.h
Go to the documentation of this file.
1 
2 #ifndef UGDK_DESKTOP_MANAGER_H_
3 #define UGDK_DESKTOP_MANAGER_H_
4 
5 #include <ugdk/desktop.h>
6 #include <ugdk/structure/types.h>
7 
8 #include <map>
9 #include <memory>
10 
11 namespace ugdk {
12 namespace desktop {
13 
14 class Manager {
15  public:
16  virtual ~Manager();
17 
18  virtual bool Initialize() = 0;
19  virtual void Release() = 0;
20 
21  std::weak_ptr<Window> CreateWindow(const WindowSettings& settings);
22  std::weak_ptr<Window> CreateWindow(unsigned long hwnd);
23  // TODO: DestroyWindow
24 
25  void set_primary_window(const std::weak_ptr<Window>& window) {
27  }
28  std::shared_ptr<Window> primary_window() const { return primary_window_.lock(); }
29  std::shared_ptr<Window> window(uint32 index) const;
30 
31  virtual void PresentAll() = 0;
32 
33  protected:
34  Manager() {}
35 
36  virtual std::shared_ptr<Window> DoCreateWindow(const WindowSettings& settings) = 0;
37  virtual std::shared_ptr<Window> DoCreateWindow(unsigned long hwnd) = 0;
38 
39  std::weak_ptr<Window> primary_window_;
40  std::map< uint32, std::shared_ptr<Window> > windows_;
41 
42  private:
43  std::weak_ptr<Window> RegisterAndGetWindow(const std::shared_ptr<Window>& new_window);
44 };
45 
46 } // namespace desktop
47 } // namespace ugdk
48 
49 #endif // UGDK_DESKTOP_MANAGER_H_
virtual void PresentAll()=0
std::map< uint32, std::shared_ptr< Window > > windows_
Definition: manager.h:40
uint32_t uint32
Definition: types.h:14
Definition: windowsettings.h:10
Manager()
Definition: manager.h:34
virtual std::shared_ptr< Window > DoCreateWindow(const WindowSettings &settings)=0
Definition: animation.h:11
std::shared_ptr< Window > window(uint32 index) const
virtual bool Initialize()=0
Definition: manager.h:14
std::weak_ptr< Window > primary_window_
Definition: manager.h:39
virtual void Release()=0
void set_primary_window(const std::weak_ptr< Window > &window)
Definition: manager.h:25
std::weak_ptr< Window > CreateWindow(const WindowSettings &settings)
std::shared_ptr< Window > primary_window() const
Definition: manager.h:28