mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-11 10:31:16 +00:00
69 lines
1.5 KiB
C++
69 lines
1.5 KiB
C++
#include "miniwin.h"
|
|
|
|
#include "miniwin_d3d.h"
|
|
#include "miniwin_d3drm.h"
|
|
#include "miniwin_ddraw.h"
|
|
|
|
#include <SDL3/SDL.h>
|
|
#include <SDL3/SDL_log.h>
|
|
|
|
bool IsEqualGUID(const GUID& a, const GUID& b)
|
|
{
|
|
return a.m_data1 == b.m_data1 && a.m_data2 == b.m_data2 && a.m_data3 == b.m_data3 && a.m_data4 == b.m_data4;
|
|
}
|
|
|
|
HRESULT IUnknown::QueryInterface(const GUID& riid, void** ppvObject)
|
|
{
|
|
if (!ppvObject) {
|
|
return DDERR_INVALIDPARAMS;
|
|
}
|
|
|
|
if (IsEqualGUID(riid, IID_IDirectDraw2)) {
|
|
*ppvObject = new IDirectDraw2();
|
|
return S_OK;
|
|
}
|
|
|
|
if (IsEqualGUID(riid, IID_IDirectDrawSurface3)) {
|
|
*ppvObject = new IDirectDrawSurface3();
|
|
return S_OK;
|
|
}
|
|
|
|
if (IsEqualGUID(riid, IID_IDirect3D2)) {
|
|
*ppvObject = new IDirect3D2();
|
|
return S_OK;
|
|
}
|
|
|
|
if (IsEqualGUID(riid, IID_IDirect3DRM2)) {
|
|
*ppvObject = new IDirect3DRM2();
|
|
return S_OK;
|
|
}
|
|
|
|
if (IsEqualGUID(riid, IID_IDirect3DRMWinDevice)) {
|
|
*ppvObject = new IDirect3DRMWinDevice();
|
|
return S_OK;
|
|
}
|
|
|
|
if (IsEqualGUID(riid, IID_IDirect3DRMMesh) ||
|
|
IsEqualGUID(riid, IID_IDirect3DRMMeshBuilder)) { // Work around bug in GroupImpl::Bounds()
|
|
*ppvObject = new IDirect3DRMMesh();
|
|
return S_OK;
|
|
}
|
|
|
|
if (IsEqualGUID(riid, IID_IDirect3DRMTexture2)) {
|
|
*ppvObject = new IDirect3DRMTexture2();
|
|
return S_OK;
|
|
}
|
|
|
|
return DDERR_INVALIDPARAMS;
|
|
}
|
|
|
|
void OutputDebugString(const char* lpOutputString)
|
|
{
|
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%s", lpOutputString);
|
|
}
|
|
|
|
VOID WINAPI Sleep(DWORD dwMilliseconds)
|
|
{
|
|
SDL_Delay(dwMilliseconds);
|
|
}
|