#pragma once #include "Resource.h" #include struct IOutputDevice; struct IDisplayAdapter; struct IDisplayMode; struct __declspec(novtable) IDeviceEnumerator { virtual ~IDeviceEnumerator() {} virtual bool get_HasEnumerated() const = 0; virtual const std::vector& get_DeviceAdapters() const = 0; virtual bool TryEnumerate(uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; virtual IDisplayAdapter* FindBestAdapter(bool argAllowToEnumerate = false, uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; virtual IOutputDevice* FindBestOutput(bool argAllowToEnumerate = false, uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; virtual IDisplayMode* FindBestDisplayMode(bool argAllowToEnumerate = false, uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; virtual void Verbose() = 0; }; struct IDXGIAdapter; struct __declspec(novtable) IDisplayAdapter { virtual ~IDisplayAdapter() {} virtual size_t get_DedicatedSystemMemory() const = 0; virtual size_t get_DedicatedVideoMemory() const = 0; virtual size_t get_SharedSystemMemory() const = 0; virtual const std::vector& get_DeviceOutputs() const = 0; virtual bool get_HasEnumerated() const = 0; virtual IDXGIAdapter* get_Adapter() const = 0; virtual string16 get_Name() const = 0; virtual bool TryEnumerate(uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; virtual IOutputDevice* FindBestOutput(bool argAllowToEnumerate = false, uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; virtual IDisplayMode* FindBestDisplayMode(bool argAllowToEnumerate = false, uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; }; struct __declspec(novtable) IOutputDevice { virtual ~IOutputDevice() {} virtual bool get_IsAttachedToDesktop() const = 0; virtual HMONITOR get_MonitorHandle() const = 0; virtual RECT get_DesktopCoordinates() const = 0; virtual const std::vector& get_DisplayModes() const = 0; virtual bool get_HasEnumerated() const = 0; virtual bool TryEnumerate(uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; virtual IDisplayMode* FindBestDisplayMode(bool argAllowToEnumerate = false, uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown) = 0; virtual string16 get_Name() const = 0; }; struct __declspec(novtable) IDisplayMode { virtual ~IDisplayMode() {} virtual uint32 get_Width() const = 0; virtual uint32 get_Height() const = 0; virtual uint32 get_RefreshRate() const = 0; virtual DataFormat::Enumeration get_Format() const = 0; };