galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
Window.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_CORE_WINDOW_HPP_
9#define GALAXY_CORE_WINDOW_HPP_
10
11#include <entt/signal/fwd.hpp>
12#include <glad/glad.h>
13#include <GLFW/glfw3.h>
14
15#include "galaxy/core/WindowSettings.hpp"
17#include "galaxy/input/Cursor.hpp"
20
21namespace galaxy
22{
23 namespace core
24 {
28 class Window final
29 {
30 public:
38 Window(const WindowSettings& settings);
39
43 ~Window();
44
50 [[nodiscard]]
51 bool is_open() const;
52
58 void close();
59
63 void destroy();
64
68 void poll_events();
69
76 void resize(const int width, const int height);
77
83 void request_attention();
84
88 void focus() const;
89
93 void maximize();
94
98 void restore();
99
103 void minimize() const;
104
108 void fullscreen();
109
115 void set_title(const std::string& title);
116
122 void append_title(const std::string& append);
123
129 void set_icon(const std::string& icon);
130
136 void set_icon(std::span<std::uint8_t> buffer);
137
143 void set_dispatcher(entt::dispatcher* dispatcher);
144
150 [[nodiscard]]
151 bool is_focused() const;
152
153 [[nodiscard]]
154 int window_width() const;
155 [[nodiscard]]
156 int window_height() const;
157 [[nodiscard]]
158 int frame_width() const;
159 [[nodiscard]]
160 int frame_height() const;
161 [[nodiscard]]
162 float aspect_ratio() const;
163
171 template<meta::is_input_device Device>
172 [[nodiscard]]
173 Device& get_input();
174
180 [[nodiscard]]
181 const meta::vector<std::string>& get_drop_paths() const;
182
188 [[nodiscard]]
189 glm::ivec2 get_framebuffer_size();
190
196 [[nodiscard]]
197 glm::vec2 get_content_scale();
198
204 [[nodiscard]]
205 float get_content_scale_max();
206
212 [[nodiscard]]
213 GLFWwindow* handle();
214
215 private:
219 Window() = delete;
220
224 Window(const Window&) = delete;
225
229 Window(Window&&) = delete;
230
234 Window& operator=(const Window&) = delete;
235
239 Window& operator=(Window&&) = delete;
240
241 private:
245 std::string m_title;
246
251
256
261
266
271
275 GLFWwindow* m_window;
276
280 entt::dispatcher* m_dispatcher;
281
285 GLFWallocator m_glfw_allocator;
286
290 input::Keyboard m_keyboard;
291
295 input::Mouse m_mouse;
296
300 input::Cursor m_cursor;
301
305 input::Clipboard m_clipboard;
306
310 meta::vector<std::string> m_drop_paths;
311 };
312
313 template<meta::is_input_device Device>
314 inline Device& Window::get_input()
315 {
316 if constexpr (std::is_same<Device, input::Keyboard>::value)
317 {
318 return m_keyboard;
319 }
320 else if constexpr (std::is_same<Device, input::Mouse>::value)
321 {
322 return m_mouse;
323 }
324 else if constexpr (std::is_same<Device, input::Cursor>::value)
325 {
326 return m_cursor;
327 }
328 else if constexpr (std::is_same<Device, input::Clipboard>::value)
329 {
330 return m_clipboard;
331 }
332 }
333 } // namespace core
334} // namespace galaxy
335
336#endif
Handles events, input & display.
Definition Window.hpp:29
input::Keyboard m_keyboard
Keyboard assigned to window.
Definition Window.hpp:290
void set_title(const std::string &title)
Set window title.
Definition Window.cpp:500
std::string m_title
Window title.
Definition Window.hpp:245
void destroy()
Destroys Window and related context and data.
Definition Window.cpp:584
int m_window_height
Height of window (or fullscreen).
Definition Window.hpp:255
meta::vector< std::string > m_drop_paths
Cache of last dropped paths.
Definition Window.hpp:310
Device & get_input()
Get a window input device.
Definition Window.hpp:314
void poll_events()
Poll for events.
Definition Window.cpp:603
input::Clipboard m_clipboard
Clipboard access.
Definition Window.hpp:305
input::Cursor m_cursor
Mouse cursor.
Definition Window.hpp:300
void append_title(const std::string &append)
Append to window title.
Definition Window.cpp:505
int window_height() const
Definition Window.cpp:662
void minimize() const
Minimize window.
Definition Window.cpp:638
Window()=delete
Constructor.
void close()
Closes the current window.
Definition Window.cpp:579
int frame_width() const
Definition Window.cpp:667
glm::vec2 get_content_scale()
Get window content scale.
Definition Window.cpp:695
float get_content_scale_max()
Get max window content scale.
Definition Window.cpp:703
Window & operator=(const Window &)=delete
Copy assignment operator.
~Window()
Destructor.
Definition Window.cpp:493
float m_aspect_ratio
Window aspect ratio.
Definition Window.hpp:270
bool is_focused() const
Check if windows is in focus.
Definition Window.cpp:652
glm::ivec2 get_framebuffer_size()
Get framebuffer size taking into account DPI.
Definition Window.cpp:687
float aspect_ratio() const
Definition Window.cpp:677
int frame_height() const
Definition Window.cpp:672
Window & operator=(Window &&)=delete
Move assignment operator.
bool is_open() const
Checks if window is currently open or not.
Definition Window.cpp:574
void request_attention()
Notify's user of an event without interrupting.
Definition Window.cpp:616
entt::dispatcher * m_dispatcher
Currently active event dispatcher.
Definition Window.hpp:280
void focus() const
Force window into focus.
Definition Window.cpp:621
void set_icon(const std::string &icon)
Set window icon.
Definition Window.cpp:511
int window_width() const
Definition Window.cpp:657
GLFWwindow * m_window
GLFW window data.
Definition Window.hpp:275
input::Mouse m_mouse
Mouse assigned to window.
Definition Window.hpp:295
Window(Window &&)=delete
Move constructor.
int m_frame_height
The virtual or final framebuffer height.
Definition Window.hpp:265
void restore()
Restore window.
Definition Window.cpp:632
int m_frame_width
The virtual or final framebuffer width.
Definition Window.hpp:260
void resize(const int width, const int height)
Resizes window.
Definition Window.cpp:608
int m_window_width
Width of window (or fullscreen).
Definition Window.hpp:250
void set_dispatcher(entt::dispatcher *dispatcher)
Set current event dispatcher to use.
Definition Window.cpp:569
void maximize()
Maximize window.
Definition Window.cpp:626
GLFWwindow * handle()
Retrieve pointer to GLFWwindow object.
Definition Window.cpp:709
const meta::vector< std::string > & get_drop_paths() const
Get a list of paths dropped on window.
Definition Window.cpp:682
Window(const Window &)=delete
Copy constructor.
GLFWallocator m_glfw_allocator
Custom GLFW window allocator.
Definition Window.hpp:285
void fullscreen()
Set window into borderless fullscreen mode.
Definition Window.cpp:643
Animated.cpp galaxy.
Definition Animated.cpp:16
Holds window related settings.