1 | #ifndef WINDOW_HPP_ |
2 | #define WINDOW_HPP_ |
3 |
|
4 | #include <cstdint> |
5 | #include <SDL2/SDL.h> |
6 | #include "IUpdateable.hpp" |
7 |
|
8 | class Window : public IUpdateable |
9 | { |
10 | public: |
11 | Window(std::string title, uint64_t sdl_window_flags); |
12 | ~Window(); |
13 |
|
14 | // Basic public interface |
15 | bool Update(uint64_t time_since_last_update_us); |
16 | void SetTitle(std::string new_title); |
17 | void SetFullscreen(bool is_fullscreen); |
18 | void SetSize(uint64_t new_width, uint64_t new_height); |
19 | void SetPosition(uint64_t new_x, uint64_t new_y); |
20 | bool HandleEvents(); |
21 |
|
22 | protected: |
23 | // One-time SDL_Init() |
24 | static bool s_sdlInitialized; |
25 | static void _SdlInitialize(); |
26 |
|
27 | // Window object info |
28 | SDL_Window *m_pSdlWindow; |
29 | SDL_Renderer *m_pSdlRenderer; |
30 | SDL_GLContext m_pGlContext; |
31 | std::string m_windowTitle; |
32 | }; |
33 |
|
34 | #endif /* WINDOW_HPP_ */ |
35 |
|