You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.6 KiB
73 lines
1.6 KiB
#pragma once |
|
|
|
namespace dvl { |
|
|
|
#define DEVILUTION_MINIWIN_COM |
|
|
|
#ifndef DEVILUTION_ENGINE |
|
#pragma push_macro("DECLARE_INTERFACE_") |
|
#pragma push_macro("STDMETHOD") |
|
#pragma push_macro("STDMETHOD_") |
|
#pragma push_macro("THIS_") |
|
#pragma push_macro("THIS") |
|
#pragma push_macro("PURE") |
|
#pragma push_macro("REFIID") |
|
#undef DECLARE_INTERFACE_ |
|
#undef STDMETHOD |
|
#undef STDMETHOD_ |
|
#undef THIS_ |
|
#undef THIS |
|
#undef PURE |
|
#undef REFIID |
|
#endif |
|
|
|
// |
|
// COM |
|
// |
|
#define DECLARE_INTERFACE_(name, base) struct name : public base |
|
#define THIS_ |
|
#define THIS |
|
#define PURE = 0 |
|
|
|
#define STDMETHOD(name) STDMETHOD_(HRESULT, name) |
|
#define STDMETHOD_(type, name) virtual WINAPI type name |
|
|
|
typedef void *DVL_REFIID; |
|
#define REFIID DVL_REFIID |
|
|
|
struct IUnknown { |
|
// clang-format off |
|
STDMETHOD_(ULONG, Release)(THIS) PURE; |
|
// clang-format on |
|
}; |
|
|
|
template<class T, class U, class V> constexpr HRESULT DVL_MAKE_HRESULT(T&& sev, U&& fac, V&& code) |
|
{ |
|
return (((uint32_t)(sev) << 31) | ((uint32_t)(fac) << 16) | ((uint32_t)(code))); |
|
} |
|
|
|
|
|
#include "miniwin/com/ddraw.inc" |
|
#include "miniwin/com/dsound.inc" |
|
|
|
#ifndef DEVILUTION_ENGINE |
|
#pragma pop_macro("DECLARE_INTERFACE_") |
|
#pragma pop_macro("STDMETHOD") |
|
#pragma pop_macro("STDMETHOD_") |
|
#pragma pop_macro("THIS_") |
|
#pragma pop_macro("THIS") |
|
#pragma pop_macro("PURE") |
|
#pragma pop_macro("REFIID") |
|
#endif |
|
|
|
#undef DEVILUTION_MINIWIN_COM |
|
|
|
constexpr HRESULT DVL_E_FAIL = 0x80004005L; |
|
constexpr HRESULT DVL_S_OK = 0; |
|
|
|
constexpr auto DVL_SW_HIDE = 0; |
|
constexpr auto DVL_SW_SHOWNORMAL = 1; |
|
constexpr auto DVL_SM_CXSCREEN = 0; |
|
constexpr auto DVL_SM_CYSCREEN = 1; |
|
|
|
} // namespace dvl
|
|
|