Initial commit
This commit is contained in:
43
Display.cpp
Normal file
43
Display.cpp
Normal file
@ -0,0 +1,43 @@
|
||||
#include "Display.h"
|
||||
#include "Exception.h"
|
||||
|
||||
|
||||
Display::Display()
|
||||
{
|
||||
_devmode.dmSize = sizeof(DEVMODE);
|
||||
|
||||
BOOL success = EnumDisplaySettingsEx(
|
||||
nullptr,
|
||||
ENUM_CURRENT_SETTINGS,
|
||||
&_devmode,
|
||||
0
|
||||
);
|
||||
|
||||
if (!success)
|
||||
throw SystemException(GetLastError());
|
||||
}
|
||||
|
||||
|
||||
void Display::rotate(Rotation rot)
|
||||
{
|
||||
DWORD& orient = _devmode.dmDisplayOrientation;
|
||||
DWORD& width = _devmode.dmPelsWidth;
|
||||
DWORD& height = _devmode.dmPelsHeight;
|
||||
|
||||
if (orient == DMDO_90 || orient == DMDO_270)
|
||||
std::swap(width, height);
|
||||
|
||||
orient = (DWORD)rot;
|
||||
|
||||
if (orient == DMDO_90 || orient == DMDO_270)
|
||||
std::swap(width, height);
|
||||
}
|
||||
|
||||
|
||||
void Display::apply()
|
||||
{
|
||||
LONG res = ChangeDisplaySettingsEx(nullptr, &_devmode, nullptr, CDS_RESET, nullptr);
|
||||
|
||||
if (res != DISP_CHANGE_SUCCESSFUL)
|
||||
throw DisplayException(res);
|
||||
}
|
||||
Reference in New Issue
Block a user