MAGE  v0.171.0
Matthias Advanced Game Engine
mage::rendering::DisplayConfigurator::Impl Class Reference

Public Member Functions

 Impl (DXGI_FORMAT pixel_format=DXGI_FORMAT_R8G8B8A8_UNORM)
 
 Impl (ComPtr< DXGIAdapter > adapter, ComPtr< DXGIOutput > output, DXGI_FORMAT pixel_format=DXGI_FORMAT_R8G8B8A8_UNORM)
 
 Impl (const Impl &configurator)=delete
 
 Impl (Impl &&configurator) noexcept
 
 ~Impl ()
 
Imploperator= (const Impl &configurator)=delete
 
Imploperator= (Impl &&configurator)=delete
 
HRESULT Configure () const
 
const DisplayConfigurationGetDisplayConfiguration () const noexcept
 

Private Member Functions

void InitializeAdapterAndOutput ()
 
void InitializeDisplayModes ()
 
INT_PTR DisplayDialogProc (HWND dialog, UINT message, [[maybe_unused]] WPARAM wParam, [[maybe_unused]] LPARAM lParam)
 

Static Private Member Functions

static INT_PTR CALLBACK DisplayDialogProcDelegate (HWND dialog, UINT message, WPARAM wParam, LPARAM lParam)
 

Private Attributes

DXGI_FORMAT m_pixel_format
 
ComPtr< DXGIAdapterm_adapter
 
ComPtr< DXGIOutputm_output
 
UniquePtr< DisplayConfigurationm_display_configuration
 
UniquePtr< VariableScriptm_script
 
std::vector< DXGI_MODE_DESC > m_display_modes
 

Static Private Attributes

static constexpr const_wzstring s_display_settings_fname = L"./DisplaySettings.var"
 
static constexpr const_zstring s_display_variable_aa = "anti-aliasing"
 
static constexpr const_zstring s_display_variable_refresh_rate = "refresh"
 
static constexpr const_zstring s_display_variable_resolution = "resolution"
 
static constexpr const_zstring s_display_variable_vsync = "vsync"
 
static constexpr const_zstring s_display_variable_windowed = "windowed"
 

Detailed Description

A class of display configurators.

Constructor & Destructor Documentation

◆ Impl() [1/4]

mage::rendering::DisplayConfigurator::Impl::Impl ( DXGI_FORMAT  pixel_format = DXGI_FORMAT_R8G8B8A8_UNORM)
explicit

Constructs a display configurator.

Parameters
[in]pixel_formatThe pixel format.

◆ Impl() [2/4]

mage::rendering::DisplayConfigurator::Impl::Impl ( ComPtr< DXGIAdapter adapter,
ComPtr< DXGIOutput output,
DXGI_FORMAT  pixel_format = DXGI_FORMAT_R8G8B8A8_UNORM 
)
explicit

Constructs a display configurator.

Parameters
[in]adapterA pointer to the adapter.
[in]outputA pointer to the output.
[in]pixel_formatThe pixel format.

◆ Impl() [3/4]

mage::rendering::DisplayConfigurator::Impl::Impl ( const Impl configurator)
delete

Constructs a display configurator from the given display configurator.

Parameters
[in]configuratorA reference to a display configurator to copy.

◆ Impl() [4/4]

mage::rendering::DisplayConfigurator::Impl::Impl ( Impl &&  configurator)
defaultnoexcept

Constructs a display configurator by moving the given display configurator.

Parameters
[in]configuratorA reference to a display configurator to move.

◆ ~Impl()

mage::rendering::DisplayConfigurator::Impl::~Impl ( )
default

Destructs this display configurator.

Member Function Documentation

◆ Configure()

HRESULT mage::rendering::DisplayConfigurator::Impl::Configure ( ) const

Configurs the display by enumerating the available display modes and options associated with the adapter output of the physical adapter with the most dedicated video memory.

Returns
A success/error value.

◆ DisplayDialogProc()

INT_PTR mage::rendering::DisplayConfigurator::Impl::DisplayDialogProc ( HWND  dialog,
UINT  message,
[[maybe_unused] ] WPARAM  wParam,
[[maybe_unused] ] LPARAM  lParam 
)
private

Engine-defined callback function used with the CreateDialog for display configuration.

Parameters
[in]dialogA handle to the dialog box.
[in]messageThe message.
[in]wParamAdditional message-specific information.
[in]lParamAdditional message-specific information.
Returns
true if message is processed. false otherwise.

◆ DisplayDialogProcDelegate()

INT_PTR CALLBACK mage::rendering::DisplayConfigurator::Impl::DisplayDialogProcDelegate ( HWND  dialog,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
staticprivate

Engine-defined callback function used with the CreateDialog for display configuration.

Parameters
[in]dialogA handle to the dialog box.
[in]messageThe message.
[in]wParamAdditional message-specific information.
[in]lParamAdditional message-specific information.
Returns
true if message is processed. false otherwise.

◆ GetDisplayConfiguration()

const DisplayConfiguration* mage::rendering::DisplayConfigurator::Impl::GetDisplayConfiguration ( ) const
noexcept

Returns the display configuration of this display configurator.

Returns
A pointer to the display configuration of this display configurator.

◆ InitializeAdapterAndOutput()

void mage::rendering::DisplayConfigurator::Impl::InitializeAdapterAndOutput ( )
private

Initializes the adapter and the output this display configurator.

Exceptions
ExceptionFailed to initialize the adapter and the output of this display configurator.

◆ InitializeDisplayModes()

void mage::rendering::DisplayConfigurator::Impl::InitializeDisplayModes ( )
private

Initializes the display modes of this display configurator.

Exceptions
ExceptionFailed to initialize the display modes of this display configurator.

◆ operator=() [1/2]

Impl& mage::rendering::DisplayConfigurator::Impl::operator= ( const Impl configurator)
delete

Copies the given display configurator to this display configurator.

Parameters
[in]configuratorA reference to a display configurator to copy.
Returns
A reference to the copy of the given display configurator (i.e. this display configurator).

◆ operator=() [2/2]

Impl& mage::rendering::DisplayConfigurator::Impl::operator= ( Impl &&  configurator)
delete

Moves the given display configurator to this display configurator.

Parameters
[in]configuratorA reference to a display configurator to move.
Returns
A reference to the moved display configurator (i.e. this display configurator).

Member Data Documentation

◆ m_adapter

ComPtr< DXGIAdapter > mage::rendering::DisplayConfigurator::Impl::m_adapter
private

A pointer to the adapter (e.g. video card) of this display configurator.

◆ m_display_configuration

UniquePtr< DisplayConfiguration > mage::rendering::DisplayConfigurator::Impl::m_display_configuration
private

A pointer to the display configuration of this display configurator.

◆ m_display_modes

std::vector< DXGI_MODE_DESC > mage::rendering::DisplayConfigurator::Impl::m_display_modes
private

The enumerated display modes of this display configurator.

◆ m_output

ComPtr< DXGIOutput > mage::rendering::DisplayConfigurator::Impl::m_output
private

A pointer to the output (e.g. screen monitor) of this display configurator.

◆ m_pixel_format

DXGI_FORMAT mage::rendering::DisplayConfigurator::Impl::m_pixel_format
private

The supported pixel format of this display configurator.

◆ m_script

UniquePtr< VariableScript > mage::rendering::DisplayConfigurator::Impl::m_script
private

A pointer to the script which stores the display configuration of this display configurator.

◆ s_display_settings_fname

constexpr const_wzstring mage::rendering::DisplayConfigurator::Impl::s_display_settings_fname = L"./DisplaySettings.var"
staticprivate

◆ s_display_variable_aa

constexpr const_zstring mage::rendering::DisplayConfigurator::Impl::s_display_variable_aa = "anti-aliasing"
staticprivate

◆ s_display_variable_refresh_rate

constexpr const_zstring mage::rendering::DisplayConfigurator::Impl::s_display_variable_refresh_rate = "refresh"
staticprivate

◆ s_display_variable_resolution

constexpr const_zstring mage::rendering::DisplayConfigurator::Impl::s_display_variable_resolution = "resolution"
staticprivate

◆ s_display_variable_vsync

constexpr const_zstring mage::rendering::DisplayConfigurator::Impl::s_display_variable_vsync = "vsync"
staticprivate

◆ s_display_variable_windowed

constexpr const_zstring mage::rendering::DisplayConfigurator::Impl::s_display_variable_windowed = "windowed"
staticprivate