Oxygen Engine
Modern C++ 3D Engine using OpenGL
Loading...
Searching...
No Matches
manager.h
1#ifndef OE_GUI_MANAGER_H
2#define OE_GUI_MANAGER_H
3
4#include <memory>
5#include <glm/vec2.hpp>
6#include <functional>
7#include <vector>
8#include <list>
9#include <string>
10#include <map>
11#include <any>
12
13#include "datatypes.h"
14#include "theme.h"
15#include "renderer.h"
16
17namespace oe
18{
19 struct Native;
20}
21
22namespace oe::core
23{
24 class Window;
25 class EventHandler;
26}
27
28struct nk_context;
29
30namespace oe::gui
31{
32 namespace component {
33 class Window;
34 }
35
36 class Component;
37
38 class Manager
39 {
40 public:
45
46 ~Manager();
47
52 (
53 const std::string& name, const std::string& title,
54 const glm::vec2& pos, const glm::vec2& size,
55 const int& options = DEFAULT_WINDOW_FLAGS
56 );
57
61 component::Window* getWindow(const std::string& name);
62
67 {
68 return _theme;
69 }
70
75 {
76 return _renderer;
77 }
78
86
91
95 //void registerEvents(oe::core::EventHandler&);
96
100 void generate();
101
105 template <typename T, typename... Args>
106 T* createComponent(Args&&... args)
107 {
108 std::shared_ptr<T> result = std::make_shared<T>(std::forward<Args>(args)...);
109 _components.push_back(result);
110
111 result->setManager(this);
112
113 return result.get();
114 }
115
119 void render();
120
127
131 glm::ivec2 dimensions = glm::ivec2(0);
132
133 private:
134 inline gui_id_t _generate_new_id()
135 {
136 return ++_last_id;
137 }
138
139 oe::core::Window* _window = nullptr;
140
141 std::shared_ptr<nk_context> _ctx;
142
143 oe::core::EventHandler* _events_bound_event_handler = nullptr;
144
145 Theme _theme;
146 Renderer _renderer;
147
148 gui_id_t _last_id = 0;
149
150 std::vector<component::Window*> _windows;
151
152 std::vector<std::shared_ptr<Component>> _components;
153
154 friend Component;
155
156 friend Native;
157 };
158}
159#endif
Event handler.
Definition event_handler.h:22
Definition window.h:24
Definition component.h:22
Definition manager.h:39
component::Window * createWindow(const std::string &name, const std::string &title, const glm::vec2 &pos, const glm::vec2 &size, const int &options=DEFAULT_WINDOW_FLAGS)
Renderer & getRenderer()
Definition manager.h:74
Theme & getTheme()
Definition manager.h:66
void bindToWindow(oe::core::Window *window)
void handleEvents(oe::core::EventHandler &)
T * createComponent(Args &&... args)
Definition manager.h:106
void applyTheme()
Apply theme settings before generating GUI.
glm::ivec2 dimensions
Definition manager.h:131
component::Window * getWindow(const std::string &name)
Definition renderer.h:28
Definition theme.h:21
Definition window.h:10
Core functionality (windows, event handler, logger, ...)
Definition cursor.h:8
Graphical user interface (panels, buttons, text input, ...)
Definition component.h:13
Oxygen Engine common namespace.
Definition cursor.h:8
Class providing native access to underlying handles.
Definition native.h:20