#include "IDeviceEnumerator.h" class OutputDevice : public IOutputDevice { public: OutputDevice(IDXGIOutput* ar_Output_, ID3D10Device* ar_Device_ = NULL); virtual ~OutputDevice(); virtual bool get_IsAttachedToDesktop() const { return m_OutputDesc.AttachedToDesktop == TRUE; } virtual HMONITOR get_MonitorHandle() const { return m_OutputDesc.Monitor; } virtual RECT get_DesktopCoordinates() const { return m_OutputDesc.DesktopCoordinates; } virtual const std::vector& get_DisplayModes() const { return m_DisplayModes; } virtual bool get_HasEnumerated() const { return m_HasEnumerated; } virtual bool TryEnumerate(uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown); virtual IDisplayMode* FindBestDisplayMode(bool argAllowToEnumerate = false, uint32 argDesiredWidth = 0, uint32 argDesiredHeight = 0, uint32 argDesiredRefreshRate = 0, DataFormat::Enumeration argDesiredFormat = DataFormat::Unknown); virtual string16 get_Name() const { return m_OutputDesc.DeviceName; } private: void GatherDisplayModes(); private: IDXGIOutput* m_Output; ID3D10Device* m_Device; DXGI_OUTPUT_DESC m_OutputDesc; bool m_HasEnumerated; std::vector m_DisplayModes; uint32 m_DesiredWidth; uint32 m_DesiredHeight; uint32 m_DesiredRefreshRate; DataFormat::Enumeration m_DesiredFormat; };