1
0
mirror of https://github.com/narzoul/DDrawCompat synced 2024-12-30 08:55:36 +01:00

Hooked the IDirectDrawGammaControl interface

This commit is contained in:
narzoul 2017-05-27 22:14:48 +02:00
parent 5c91706b03
commit 4b02a40bc9
7 changed files with 58 additions and 1 deletions

View File

@ -40,6 +40,7 @@ namespace Compat
DEFINE_BASE_INTF(IDirectDrawSurface3, IDirectDrawSurface);
DEFINE_BASE_INTF(IDirectDrawSurface4, IDirectDrawSurface);
DEFINE_BASE_INTF(IDirectDrawSurface7, IDirectDrawSurface);
DEFINE_BASE_INTF(IDirectDrawGammaControl, IDirectDrawSurface);
DEFINE_BASE_INTF(IDirect3D, IDirectDraw);
DEFINE_BASE_INTF(IDirect3D2, IDirectDraw);

View File

@ -0,0 +1,8 @@
#include "DDraw/DirectDrawGammaControl.h"
namespace DDraw
{
void DirectDrawGammaControl::setCompatVtable(IDirectDrawGammaControlVtbl& /*vtable*/)
{
}
}

View File

@ -0,0 +1,15 @@
#pragma once
#include "Common/CompatVtable.h"
#include "DDraw/Visitors/DirectDrawGammaControlVtblVisitor.h"
namespace DDraw
{
class DirectDrawGammaControl : public CompatVtable<IDirectDrawGammaControlVtbl>
{
public:
static void setCompatVtable(IDirectDrawGammaControlVtbl& vtable);
};
}
SET_COMPAT_VTABLE(IDirectDrawGammaControlVtbl, DDraw::DirectDrawGammaControl);

View File

@ -8,6 +8,7 @@
#include "DDraw/ActivateAppHandler.h"
#include "DDraw/DirectDraw.h"
#include "DDraw/DirectDrawClipper.h"
#include "DDraw/DirectDrawGammaControl.h"
#include "DDraw/DirectDrawPalette.h"
#include "DDraw/DirectDrawSurface.h"
#include "DDraw/Hooks.h"
@ -81,6 +82,7 @@ namespace
hookVtable<IDirectDrawSurface3>(surface);
hookVtable<IDirectDrawSurface4>(surface);
hookVtable<IDirectDrawSurface7>(surface);
hookVtable<IDirectDrawGammaControl>(surface);
}
else
{
@ -91,7 +93,10 @@ namespace
template <typename Interface>
void hookVtable(const CompatPtr<Interface>& intf)
{
CompatVtable<Vtable<Interface>>::hookVtable(intf.get()->lpVtbl);
if (intf)
{
CompatVtable<Vtable<Interface>>::hookVtable(intf.get()->lpVtbl);
}
}
}

View File

@ -0,0 +1,16 @@
#pragma once
#include "Common/VtableVisitor.h"
template <>
struct VtableForEach<IDirectDrawGammaControlVtbl>
{
template <typename Vtable, typename Visitor>
static void forEach(Visitor& visitor)
{
VtableForEach<IUnknownVtbl>::forEach<Vtable>(visitor);
DD_VISIT(GetGammaRamp);
DD_VISIT(SetGammaRamp);
}
};

View File

@ -183,6 +183,7 @@
<ClInclude Include="DDraw\ActivateAppHandler.h" />
<ClInclude Include="DDraw\DirectDraw.h" />
<ClInclude Include="DDraw\DirectDrawClipper.h" />
<ClInclude Include="DDraw\DirectDrawGammaControl.h" />
<ClInclude Include="DDraw\DirectDrawPalette.h" />
<ClInclude Include="DDraw\DirectDrawSurface.h" />
<ClInclude Include="DDraw\Hooks.h" />
@ -197,6 +198,7 @@
<ClInclude Include="DDraw\IReleaseNotifier.h" />
<ClInclude Include="DDraw\RealPrimarySurface.h" />
<ClInclude Include="DDraw\Visitors\DirectDrawClipperVtblVisitor.h" />
<ClInclude Include="DDraw\Visitors\DirectDrawGammaControlVtblVisitor.h" />
<ClInclude Include="DDraw\Visitors\DirectDrawPaletteVtblVisitor.h" />
<ClInclude Include="DDraw\Visitors\DirectDrawSurfaceVtblVisitor.h" />
<ClInclude Include="DDraw\Visitors\DirectDrawVtblVisitor.h" />
@ -248,6 +250,7 @@
<ClCompile Include="DDraw\ActivateAppHandler.cpp" />
<ClCompile Include="DDraw\DirectDraw.cpp" />
<ClCompile Include="DDraw\DirectDrawClipper.cpp" />
<ClCompile Include="DDraw\DirectDrawGammaControl.cpp" />
<ClCompile Include="DDraw\DirectDrawPalette.cpp" />
<ClCompile Include="DDraw\DirectDrawSurface.cpp" />
<ClCompile Include="DDraw\Hooks.cpp" />

View File

@ -306,6 +306,12 @@
<ClInclude Include="Win32\DisplayMode.h">
<Filter>Header Files\Win32</Filter>
</ClInclude>
<ClInclude Include="DDraw\Visitors\DirectDrawGammaControlVtblVisitor.h">
<Filter>Header Files\DDraw\Visitors</Filter>
</ClInclude>
<ClInclude Include="DDraw\DirectDrawGammaControl.h">
<Filter>Header Files\DDraw</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Gdi\Gdi.cpp">
@ -467,6 +473,9 @@
<ClCompile Include="Win32\DisplayMode.cpp">
<Filter>Source Files\Win32</Filter>
</ClCompile>
<ClCompile Include="DDraw\DirectDrawGammaControl.cpp">
<Filter>Source Files\DDraw</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="Dll\DDrawCompat.def">