#include "stdafx.h" #include "XmlDeviceVisitor.h" #include "IDeviceEnumerator.h" XmlDeviceVisitor::XmlDeviceVisitor(const string16& argOutputFile) : DeviceVisitorBase() , m_OutputFile(argOutputFile) { } XmlDeviceVisitor::~XmlDeviceVisitor() { } void XmlDeviceVisitor::Visit(IDeviceEnumerator& argEnumerator) { m_FileStream.open(m_OutputFile.c_str()); DeviceVisitorBase::Visit(argEnumerator); m_FileStream.close(); } void XmlDeviceVisitor::VisitEnumerator(IDeviceEnumerator& argEnumerator) { m_FileStream << L"" << std::endl; m_FileStream << L"" << std::endl; IDisplayAdapter* bestAdapter = argEnumerator.FindBestAdapter(); if (bestAdapter != NULL) m_FileStream << L"\t" << bestAdapter->get_Name() << L"" << std::endl; IOutputDevice* bestOutput = argEnumerator.FindBestOutput(); if (bestOutput != NULL) m_FileStream << L"\t" << bestOutput->get_Name() << L"" << std::endl; IDisplayMode* bestDisplayMode = argEnumerator.FindBestDisplayMode(); if (bestDisplayMode != NULL) { m_FileStream << L"\t" << std::endl; m_FileStream << L"\t\t" << bestDisplayMode->get_Width() << L"," << bestDisplayMode->get_Height() << L"" << std::endl; m_FileStream << L"\t\t" << bestDisplayMode->get_RefreshRate() << L"" << std::endl; m_FileStream << L"\t\t" << std::to_string16(DataFormat::ToString(bestDisplayMode->get_Format())) << L"" << std::endl; m_FileStream << L"\t" << std::endl; } DeviceVisitorBase::VisitEnumerator(argEnumerator); m_FileStream << L"" << std::endl; } void XmlDeviceVisitor::VisitAdapter(IDisplayAdapter& argAdapter) { m_FileStream << L"\t"<< std::endl; m_FileStream << L"\t\t" << argAdapter.get_DedicatedSystemMemory() << L"" << std::endl; m_FileStream << L"\t\t" << argAdapter.get_DedicatedVideoMemory() << L"" << std::endl; m_FileStream << L"\t\t" << argAdapter.get_SharedSystemMemory() << L"" << std::endl; DeviceVisitorBase::VisitAdapter(argAdapter); m_FileStream << L"\t"<< std::endl; } void XmlDeviceVisitor::VisitOutput(IOutputDevice& argOutput) { m_FileStream << L"\t\t" << std::endl; m_FileStream << L"\t\t\t" << argOutput.get_IsAttachedToDesktop() << L"" << std::endl; m_FileStream << L"\t\t\t" << argOutput.get_DesktopCoordinates().left << L"," << argOutput.get_DesktopCoordinates().top << L"," << argOutput.get_DesktopCoordinates().right << L"," << argOutput.get_DesktopCoordinates().bottom << L"" << std::endl; const std::vector& displayModes = argOutput.get_DisplayModes(); if (!displayModes.empty()) m_FileStream << L"\t\t\t" << std::endl; DeviceVisitorBase::VisitOutput(argOutput); if (!displayModes.empty()) m_FileStream << L"\t\t\t" << std::endl; m_FileStream << L"\t\t"<< std::endl; } void XmlDeviceVisitor::VisitDisplayMode(IDisplayMode& argMode) { m_FileStream << L"\t\t\t\t" << std::endl; m_FileStream << L"\t\t\t\t\t" << argMode.get_Width() << L"," << argMode.get_Height() << L"" << std::endl; m_FileStream << L"\t\t\t\t\t" << argMode.get_RefreshRate() << L"" << std::endl; m_FileStream << L"\t\t\t\t\t" << std::to_string16(DataFormat::ToString(argMode.get_Format())) << L"" << std::endl; m_FileStream << L"\t\t\t\t" << std::endl; DeviceVisitorBase::VisitDisplayMode(argMode); }