-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWindow.c++
More file actions
86 lines (71 loc) · 1.43 KB
/
Window.c++
File metadata and controls
86 lines (71 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
module;
#ifndef CMAKE_IMPORT_STD
# include <memory>
# include <string>
# include <unordered_map>
#endif
#include <SDL3/SDL_init.h>
#include <cassert>
module App:Window;
#ifdef CMAKE_IMPORT_STD
import std;
#endif
import :Events;
namespace Windows {
using namespace std;
struct Window : Events
{
SDL_Window *handle = nullptr;
bool minimizeOnClose = false;
static inline int DEFAULT_WIDTH = 720;
static inline int DEFAULT_HEIGHT = 480;
Window(
string const &title,
SDL_WindowFlags flags = 0,
int width = DEFAULT_WIDTH,
int height = DEFAULT_HEIGHT)
{
handle = SDL_CreateWindow(title.c_str(), width, height, flags);
assert(handle != nullptr);
}
[[nodiscard]]
virtual SDL_AppResult
Iterate() const
{
return SDL_APP_CONTINUE;
}
[[nodiscard]]
SDL_WindowID
GetID() const
{
return SDL_GetWindowID(handle);
}
void
Maximize() const
{
SDL_MaximizeWindow(handle);
}
void
Minimize() const
{
SDL_MinimizeWindow(handle);
}
void
Hide() const
{
SDL_HideWindow(handle);
}
void
Destroy() const
{
SDL_DestroyWindow(handle);
}
template< typename Variant, typename... Args >
requires derived_from< Variant, Window > && is_final_v< Variant >
static pair< Container::iterator, bool >
Create(Args &&...args)
{
return Container::Emplace< Variant >(std::forward< Args >(args)...);
}
};
}