1
0
mirror of https://github.com/narzoul/DDrawCompat synced 2024-12-30 08:55:36 +01:00
DDrawCompat/DDrawCompat/DirectDrawVtblVisitor.h
2015-12-25 01:57:44 +01:00

75 lines
1.7 KiB
C++

#pragma once
#include "DDrawVtableVisitor.h"
template <>
struct DDrawVtableForEach<IDirectDrawVtbl>
{
template <typename Vtable, typename Visitor>
static void forEach(Visitor& visitor)
{
DDrawVtableForEach<IUnknownVtbl>::forEach<Vtable>(visitor);
DD_VISIT(Compact);
DD_VISIT(CreateClipper);
DD_VISIT(CreatePalette);
DD_VISIT(CreateSurface);
DD_VISIT(DuplicateSurface);
DD_VISIT(EnumDisplayModes);
DD_VISIT(EnumSurfaces);
DD_VISIT(FlipToGDISurface);
DD_VISIT(GetCaps);
DD_VISIT(GetDisplayMode);
DD_VISIT(GetFourCCCodes);
DD_VISIT(GetGDISurface);
DD_VISIT(GetMonitorFrequency);
DD_VISIT(GetScanLine);
DD_VISIT(GetVerticalBlankStatus);
DD_VISIT(Initialize);
DD_VISIT(RestoreDisplayMode);
DD_VISIT(SetCooperativeLevel);
DD_VISIT(SetDisplayMode);
DD_VISIT(WaitForVerticalBlank);
}
};
template <>
struct DDrawVtableForEach<IDirectDraw2Vtbl>
{
template <typename Vtable, typename Visitor>
static void forEach(Visitor& visitor)
{
DDrawVtableForEach<IDirectDrawVtbl>::forEach<Vtable>(visitor);
DD_VISIT(GetAvailableVidMem);
}
};
template <>
struct DDrawVtableForEach<IDirectDraw4Vtbl>
{
template <typename Vtable, typename Visitor>
static void forEach(Visitor& visitor)
{
DDrawVtableForEach<IDirectDraw2Vtbl>::forEach<Vtable>(visitor);
DD_VISIT(GetSurfaceFromDC);
DD_VISIT(RestoreAllSurfaces);
DD_VISIT(TestCooperativeLevel);
DD_VISIT(GetDeviceIdentifier);
}
};
template <>
struct DDrawVtableForEach<IDirectDraw7Vtbl>
{
template <typename Vtable, typename Visitor>
static void forEach(Visitor& visitor)
{
DDrawVtableForEach<IDirectDraw4Vtbl>::forEach<Vtable>(visitor);
DD_VISIT(StartModeTest);
DD_VISIT(EvaluateMode);
}
};