hook RealizePalette
This commit is contained in:
parent
8be9875553
commit
75ed1582d2
5 changed files with 36 additions and 8 deletions
|
@ -59,6 +59,7 @@ CREATEFONTINDIRECTAPROC real_CreateFontIndirectA = CreateFontIndirectA;
|
|||
CREATEFONTAPROC real_CreateFontA = CreateFontA;
|
||||
GETSYSTEMPALETTEENTRIESPROC real_GetSystemPaletteEntries = GetSystemPaletteEntries;
|
||||
SELECTPALETTEPROC real_SelectPalette = SelectPalette;
|
||||
REALIZEPALETTEPROC real_RealizePalette = RealizePalette;
|
||||
LOADLIBRARYAPROC real_LoadLibraryA = LoadLibraryA;
|
||||
LOADLIBRARYWPROC real_LoadLibraryW = LoadLibraryW;
|
||||
LOADLIBRARYEXAPROC real_LoadLibraryExA = LoadLibraryExA;
|
||||
|
@ -153,6 +154,7 @@ HOOKLIST g_hook_hooklist[] =
|
|||
{ "CreateFontA", (PROC)fake_CreateFontA, (PROC*)&real_CreateFontA, 0 },
|
||||
{ "GetSystemPaletteEntries", (PROC)fake_GetSystemPaletteEntries, (PROC*)&real_GetSystemPaletteEntries, 0 },
|
||||
{ "SelectPalette", (PROC)fake_SelectPalette, (PROC*)&real_SelectPalette, 0 },
|
||||
{ "RealizePalette", (PROC)fake_RealizePalette, (PROC*)&real_RealizePalette, 0 },
|
||||
{ "CreateFontIndirectA", (PROC)fake_CreateFontIndirectA, (PROC*)&real_CreateFontIndirectA, 0 },
|
||||
{ "", NULL, NULL, 0 }
|
||||
}
|
||||
|
|
|
@ -905,11 +905,11 @@ int WINAPI fake_GetDeviceCaps(HDC hdc, int index)
|
|||
return 20;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 256;
|
||||
{
|
||||
return 256;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return real_GetDeviceCaps(hdc, index);
|
||||
}
|
||||
|
@ -1410,18 +1410,39 @@ HPALETTE WINAPI fake_SelectPalette(HDC hdc, HPALETTE hPal, BOOL bForceBkgd)
|
|||
{
|
||||
TRACE("%s [%p]\n", __FUNCTION__, _ReturnAddress());
|
||||
|
||||
PALETTEENTRY pal[256];
|
||||
UINT count = GetPaletteEntries(hPal, 0, 256, pal);
|
||||
|
||||
ddp_SetEntries(g_ddraw.primary->palette, 0, 0, count, pal);
|
||||
g_ddraw.primary->selected_pal_count = GetPaletteEntries(hPal, 0, 256, g_ddraw.primary->selected_pal);
|
||||
|
||||
return real_SelectPalette(g_ddraw.primary->hdc, hPal, bForceBkgd);
|
||||
return real_SelectPalette(g_ddraw.primary->hdc, hPal, bForceBkgd);;
|
||||
}
|
||||
}
|
||||
|
||||
return real_SelectPalette(hdc, hPal, bForceBkgd);
|
||||
}
|
||||
|
||||
UINT WINAPI fake_RealizePalette(HDC hdc)
|
||||
{
|
||||
if (g_ddraw.ref &&
|
||||
g_ddraw.bpp == 8 &&
|
||||
((g_ddraw.hwnd && WindowFromDC(hdc) == g_ddraw.hwnd) || WindowFromDC(hdc) == GetDesktopWindow()))
|
||||
{
|
||||
if (g_ddraw.primary && g_ddraw.primary->palette)
|
||||
{
|
||||
TRACE("%s [%p]\n", __FUNCTION__, _ReturnAddress());
|
||||
|
||||
ddp_SetEntries(
|
||||
g_ddraw.primary->palette,
|
||||
0,
|
||||
0,
|
||||
g_ddraw.primary->selected_pal_count,
|
||||
g_ddraw.primary->selected_pal);
|
||||
|
||||
return g_ddraw.primary->selected_pal_count;
|
||||
}
|
||||
}
|
||||
|
||||
return real_RealizePalette(hdc);
|
||||
}
|
||||
|
||||
HMODULE WINAPI fake_LoadLibraryA(LPCSTR lpLibFileName)
|
||||
{
|
||||
HMODULE hmod_old = GetModuleHandleA(lpLibFileName);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue