#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;
}
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);
}