libdisplaydevice master
C++ library to modify display devices.
display_config.h
Go to the documentation of this file.
1
5#pragma once
6
7// local includes
9
10// system includes
11#include <cstddef>
12#include <cstring>
13
14namespace display_device::detail {
20 [[nodiscard]] inline DISPLAYCONFIG_DESKTOP_IMAGE_INFO getDesktopImageInfo(const DISPLAYCONFIG_MODE_INFO &info) {
21 constexpr std::size_t union_offset {offsetof(DISPLAYCONFIG_MODE_INFO, targetMode)};
22 static_assert(sizeof(DISPLAYCONFIG_MODE_INFO) >= union_offset + sizeof(DISPLAYCONFIG_DESKTOP_IMAGE_INFO));
23
24 DISPLAYCONFIG_DESKTOP_IMAGE_INFO desktop_image_info {};
25 std::memcpy(&desktop_image_info, reinterpret_cast<const std::byte *>(&info) + union_offset, sizeof(desktop_image_info));
26
27 return desktop_image_info;
28 }
29
35 inline void setDesktopImageInfo(DISPLAYCONFIG_MODE_INFO &info, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &desktop_image_info) {
36 constexpr std::size_t union_offset {offsetof(DISPLAYCONFIG_MODE_INFO, targetMode)};
37 static_assert(sizeof(DISPLAYCONFIG_MODE_INFO) >= union_offset + sizeof(DISPLAYCONFIG_DESKTOP_IMAGE_INFO));
38
39 std::memcpy(reinterpret_cast<std::byte *>(&info) + union_offset, &desktop_image_info, sizeof(desktop_image_info));
40 }
41} // namespace display_device::detail
void setDesktopImageInfo(DISPLAYCONFIG_MODE_INFO &info, const DISPLAYCONFIG_DESKTOP_IMAGE_INFO &desktop_image_info)
Sets desktop image metadata on a DisplayConfig mode record.
Definition display_config.h:35
DISPLAYCONFIG_DESKTOP_IMAGE_INFO getDesktopImageInfo(const DISPLAYCONFIG_MODE_INFO &info)
Gets desktop image metadata from a DisplayConfig mode record.
Definition display_config.h:20
Declarations for Windows specific types.