Initial
This commit is contained in:
63
ddraw/DEVENUM.CPP
Normal file
63
ddraw/DEVENUM.CPP
Normal file
@@ -0,0 +1,63 @@
|
||||
#include <ddraw/devenum.hpp>
|
||||
|
||||
DeviceEnumerator::DeviceEnumerator(void)
|
||||
{
|
||||
}
|
||||
|
||||
DeviceEnumerator::DeviceEnumerator(const DeviceEnumerator &someDeviceEnumerator)
|
||||
{ // private implementation
|
||||
*this=someDeviceEnumerator;
|
||||
}
|
||||
|
||||
DeviceEnumerator::~DeviceEnumerator()
|
||||
{
|
||||
}
|
||||
|
||||
DeviceEnumerator &DeviceEnumerator::operator=(const DeviceEnumerator &/*someDeviceEnumerator*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
Block<DeviceDescription> &DeviceEnumerator::enumeratedDevices(void)
|
||||
{
|
||||
return mEnumeratedDevices;
|
||||
}
|
||||
|
||||
HRESULT WINAPI DeviceEnumerator::enumDeviceCallback(LPGUID lpGUID,LPSTR lpszDeviceDesc,LPSTR lpszDeviceName,LPD3DDEVICEDESC lpd3dHWDeviceDesc,LPD3DDEVICEDESC lpd3dSWDeviceDesc,LPVOID lpUserArg)
|
||||
{
|
||||
DeviceEnumerator &deviceEnumerator=(*(DeviceEnumerator*)lpUserArg);
|
||||
DeviceDescription deviceDescription;
|
||||
|
||||
deviceDescription.guid(*lpGUID);
|
||||
deviceDescription.deviceName(lpszDeviceName);
|
||||
deviceDescription.deviceDescription(lpszDeviceDesc);
|
||||
deviceDescription.hwDeviceDescription(*lpd3dHWDeviceDesc);
|
||||
deviceDescription.swDeviceDescription(*lpd3dSWDeviceDesc);
|
||||
deviceEnumerator.mEnumeratedDevices.insert(&deviceDescription);
|
||||
DeviceDescription &currDeviceDescription=deviceEnumerator.mEnumeratedDevices[deviceEnumerator.mEnumeratedDevices.size()-1];
|
||||
deviceEnumerator.enumDevice(currDeviceDescription);
|
||||
if(currDeviceDescription.selected())return D3DENUMRET_CANCEL;
|
||||
return D3DENUMRET_OK;
|
||||
}
|
||||
|
||||
// virtuals
|
||||
void DeviceEnumerator::enumDevice(DeviceDescription &deviceDescription)
|
||||
{
|
||||
const D3DDEVICEDESC &swhwDeviceDescription=deviceDescription.isHardware()?deviceDescription.hwDeviceDescription():deviceDescription.swDeviceDescription();
|
||||
|
||||
if(deviceDescription.isHardware())
|
||||
{
|
||||
deviceDescription.selected(TRUE);
|
||||
return;
|
||||
}
|
||||
if(!(swhwDeviceDescription.dwDeviceRenderBitDepth&PreferredDeviceBitDepth))return;
|
||||
if(D3DCOLOR_MONO==swhwDeviceDescription.dcmColorModel)
|
||||
{
|
||||
if(!(swhwDeviceDescription.dpcTriCaps.dwShadeCaps&D3DPSHADECAPS_COLORGOURAUDMONO))return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!(swhwDeviceDescription.dpcTriCaps.dwShadeCaps&D3DPSHADECAPS_COLORGOURAUDRGB))return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
Reference in New Issue
Block a user