-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsfmlwindowbackend.cpp
More file actions
112 lines (92 loc) · 2.95 KB
/
sfmlwindowbackend.cpp
File metadata and controls
112 lines (92 loc) · 2.95 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <fea/ui/sfmlwindowbackend.hpp>
namespace fea
{
SFMLWindowBackend::SFMLWindowBackend(sf::Window& window) : mWindow(window)
{
}
void SFMLWindowBackend::open(VideoMode mode, const std::string& title, uint32_t style, const ContextSettings& settings)
{
sf::VideoMode vidMode(mode.mWidth, mode.mHeight, mode.mBitDepth);
sf::ContextSettings conSettings(settings.mDepthBits, settings.mStencilBits, settings.mAntialiasingLevel, settings.mMajorVersion, settings.mMinorVersion);
mWindow.create(vidMode, title, style, conSettings);
}
void SFMLWindowBackend::close()
{
mWindow.close();
}
bool SFMLWindowBackend::isOpen() const
{
return mWindow.isOpen();
}
const ContextSettings SFMLWindowBackend::getSettings() const
{
const sf::ContextSettings& settings = mWindow.getSettings();
const fea::ContextSettings toReturn(settings.depthBits, settings.stencilBits, settings.antialiasingLevel, settings.majorVersion, settings.minorVersion);
return toReturn;
}
Vec2I SFMLWindowBackend::getPosition() const
{
sf::Vector2i position = mWindow.getPosition();
return {position.x, position.y};
}
void SFMLWindowBackend::setPosition(int32_t x, int32_t y)
{
mWindow.setPosition({x, y});
}
Vec2I SFMLWindowBackend::getSize() const
{
sf::Vector2u position = mWindow.getSize();
return {(int32_t)position.x, (int32_t)position.y};
}
void SFMLWindowBackend::setSize(int32_t w, int32_t h)
{
mWindow.setSize({(uint32_t)w, (uint32_t)h});
}
void SFMLWindowBackend::setTitle(const std::string& title)
{
mWindow.setTitle({title});
}
void SFMLWindowBackend::setIcon(uint32_t width, uint32_t height, const uint8_t* pixels)
{
mWindow.setIcon(width, height, pixels);
}
void SFMLWindowBackend::setVisible(bool visible)
{
mWindow.setVisible(visible);
}
void SFMLWindowBackend::setVSyncEnabled(bool enabled)
{
mWindow.setVerticalSyncEnabled(enabled);
}
void SFMLWindowBackend::setMouseCursorVisible(bool visible)
{
mWindow.setMouseCursorVisible(visible);
}
void SFMLWindowBackend::setFramerateLimit(uint32_t limit)
{
mWindow.setFramerateLimit(limit);
}
bool SFMLWindowBackend::setRenderingActive(bool active) const
{
return mWindow.setActive(active);
}
void SFMLWindowBackend::swapBuffers()
{
mWindow.display();
}
void SFMLWindowBackend::lockCursor(bool lock)
{
//#ifdef __WIN32__
//HWND hwnd = (HWND)mWindow.getSystemHandle();
//if (lock) {
// RECT rect;
// GetClientRect(hwnd, &rect);
// ClientToScreen(hwnd, (LPPOINT) & rect);
// ClientToScreen(hwnd, (LPPOINT) & rect + 1);
// ClipCursor(&rect);
//} else {
// ClipCursor(NULL);
//}
//#endif
}
}