GetSystemPaletteEntries returns palette size if entries==NULL.
Use this instead of COLOR_GetSystemPaletteSize.
This commit is contained in:
parent
1ff1f7d15f
commit
a38d84d854
|
@ -14,7 +14,6 @@
|
|||
#include "global.h"
|
||||
#include "sysmetrics.h"
|
||||
#include "cursoricon.h"
|
||||
#include "color.h"
|
||||
#include "debug.h"
|
||||
#include "x11drv.h"
|
||||
|
||||
|
@ -462,35 +461,40 @@ HANDLE32 WINAPI LoadImage32A( HINSTANCE32 hinst, LPCSTR name, UINT32 type,
|
|||
HANDLE32 WINAPI LoadImage32W( HINSTANCE32 hinst, LPCWSTR name, UINT32 type,
|
||||
INT32 desiredx, INT32 desiredy, UINT32 loadflags )
|
||||
{
|
||||
if (HIWORD(name)) {
|
||||
TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n",
|
||||
hinst,name,type,desiredx,desiredy,loadflags
|
||||
);
|
||||
} else {
|
||||
TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n",
|
||||
hinst,name,type,desiredx,desiredy,loadflags
|
||||
);
|
||||
if (HIWORD(name)) {
|
||||
TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n",
|
||||
hinst,name,type,desiredx,desiredy,loadflags);
|
||||
} else {
|
||||
TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n",
|
||||
hinst,name,type,desiredx,desiredy,loadflags);
|
||||
}
|
||||
if (loadflags & LR_DEFAULTSIZE) {
|
||||
if (type == IMAGE_ICON) {
|
||||
if (!desiredx) desiredx = SYSMETRICS_CXICON;
|
||||
if (!desiredy) desiredy = SYSMETRICS_CYICON;
|
||||
} else if (type == IMAGE_CURSOR) {
|
||||
if (!desiredx) desiredx = SYSMETRICS_CXCURSOR;
|
||||
if (!desiredy) desiredy = SYSMETRICS_CYCURSOR;
|
||||
}
|
||||
if (loadflags & LR_DEFAULTSIZE)
|
||||
{
|
||||
if (type == IMAGE_ICON) {
|
||||
if (!desiredx) desiredx = SYSMETRICS_CXICON;
|
||||
if (!desiredy) desiredy = SYSMETRICS_CYICON;
|
||||
} else if (type == IMAGE_CURSOR) {
|
||||
if (!desiredx) desiredx = SYSMETRICS_CXCURSOR;
|
||||
if (!desiredy) desiredy = SYSMETRICS_CYCURSOR;
|
||||
}
|
||||
}
|
||||
if (loadflags & LR_LOADFROMFILE) loadflags &= ~LR_SHARED;
|
||||
switch (type) {
|
||||
case IMAGE_BITMAP:
|
||||
return BITMAP_LoadBitmap32W(hinst, name, loadflags);
|
||||
case IMAGE_ICON:
|
||||
return CURSORICON_Load32(hinst, name, desiredx, desiredy,
|
||||
MIN(16, COLOR_GetSystemPaletteSize()), FALSE, loadflags);
|
||||
case IMAGE_CURSOR:
|
||||
return CURSORICON_Load32(hinst, name, desiredx, desiredy, 1, TRUE,
|
||||
loadflags);
|
||||
case IMAGE_BITMAP:
|
||||
return BITMAP_LoadBitmap32W(hinst, name, loadflags);
|
||||
|
||||
case IMAGE_ICON:
|
||||
{
|
||||
HDC32 hdc = GetDC32(0);
|
||||
UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
|
||||
ReleaseDC32(0, hdc);
|
||||
|
||||
return CURSORICON_Load32(hinst, name, desiredx, desiredy,
|
||||
MIN(16, palEnts), FALSE, loadflags);
|
||||
}
|
||||
|
||||
case IMAGE_CURSOR:
|
||||
return CURSORICON_Load32(hinst, name, desiredx, desiredy,
|
||||
1, TRUE, loadflags);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -833,6 +833,10 @@ HCURSOR16 WINAPI LoadCursor16( HINSTANCE16 hInstance, SEGPTR name )
|
|||
*/
|
||||
HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name )
|
||||
{
|
||||
HDC32 hdc = GetDC32(0);
|
||||
UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
|
||||
ReleaseDC32(0, hdc);
|
||||
|
||||
if (HIWORD(name))
|
||||
TRACE(icon, "%04x '%s'\n",
|
||||
hInstance, (char *)PTR_SEG_TO_LIN( name ) );
|
||||
|
@ -842,7 +846,7 @@ HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name )
|
|||
|
||||
return CURSORICON_Load16( hInstance, name,
|
||||
SYSMETRICS_CXICON, SYSMETRICS_CYICON,
|
||||
MIN( 16, COLOR_GetSystemPaletteSize() ), FALSE, 0);
|
||||
MIN(16, palEnts), FALSE, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1294,7 +1298,11 @@ INT16 WINAPI LookupIconIdFromDirectoryEx16( LPBYTE xdir, BOOL16 bIcon,
|
|||
UINT16 retVal = 0;
|
||||
if( dir && !dir->idReserved && (dir->idType & 3) )
|
||||
{
|
||||
int colors = (cFlag & LR_MONOCHROME) ? 2 : COLOR_GetSystemPaletteSize();
|
||||
HDC32 hdc = GetDC32(0);
|
||||
UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
|
||||
int colors = (cFlag & LR_MONOCHROME) ? 2 : palEnts;
|
||||
ReleaseDC32(0, hdc);
|
||||
|
||||
if( bIcon )
|
||||
{
|
||||
ICONDIRENTRY* entry;
|
||||
|
@ -1484,9 +1492,13 @@ HCURSOR32 WINAPI LoadCursorFromFile32A (LPCSTR name)
|
|||
*/
|
||||
HICON32 WINAPI LoadIcon32W(HINSTANCE32 hInstance, LPCWSTR name)
|
||||
{
|
||||
HDC32 hdc = GetDC32(0);
|
||||
UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
|
||||
ReleaseDC32(0, hdc);
|
||||
|
||||
return CURSORICON_Load32( hInstance, name,
|
||||
SYSMETRICS_CXICON, SYSMETRICS_CYICON,
|
||||
MIN( 16, COLOR_GetSystemPaletteSize() ), FALSE, 0);
|
||||
MIN( 16, palEnts ), FALSE, 0);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include "bitmap.h"
|
||||
#include "callback.h"
|
||||
#include "palette.h"
|
||||
#include "color.h"
|
||||
#include "global.h"
|
||||
#include "debug.h"
|
||||
#include "x11drv.h"
|
||||
|
|
|
@ -421,6 +421,7 @@ UINT32 WINAPI GetSystemPaletteEntries32(
|
|||
TRACE(palette, "hdc=%04x,start=%i,count=%i\n", hdc,start,count);
|
||||
|
||||
if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0;
|
||||
if (!entries) return COLOR_GetSystemPaletteSize();
|
||||
if (start >= dc->w.devCaps->sizePalette)
|
||||
{
|
||||
GDI_HEAP_UNLOCK( hdc );
|
||||
|
|
Loading…
Reference in New Issue