GetSystemPaletteEntries returns palette size if entries==NULL.

Use this instead of COLOR_GetSystemPaletteSize.
This commit is contained in:
Huw D M Davies 1998-11-30 11:18:26 +00:00 committed by Alexandre Julliard
parent 1ff1f7d15f
commit a38d84d854
4 changed files with 46 additions and 30 deletions

View File

@ -14,7 +14,6 @@
#include "global.h" #include "global.h"
#include "sysmetrics.h" #include "sysmetrics.h"
#include "cursoricon.h" #include "cursoricon.h"
#include "color.h"
#include "debug.h" #include "debug.h"
#include "x11drv.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, HANDLE32 WINAPI LoadImage32W( HINSTANCE32 hinst, LPCWSTR name, UINT32 type,
INT32 desiredx, INT32 desiredy, UINT32 loadflags ) INT32 desiredx, INT32 desiredy, UINT32 loadflags )
{ {
if (HIWORD(name)) { if (HIWORD(name)) {
TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n", TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n",
hinst,name,type,desiredx,desiredy,loadflags hinst,name,type,desiredx,desiredy,loadflags);
); } else {
} else { TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n",
TRACE(resource,"(0x%04x,%p,%d,%d,%d,0x%08x)\n", hinst,name,type,desiredx,desiredy,loadflags);
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; if (loadflags & LR_LOADFROMFILE) loadflags &= ~LR_SHARED;
switch (type) { switch (type) {
case IMAGE_BITMAP: case IMAGE_BITMAP:
return BITMAP_LoadBitmap32W(hinst, name, loadflags); return BITMAP_LoadBitmap32W(hinst, name, loadflags);
case IMAGE_ICON:
return CURSORICON_Load32(hinst, name, desiredx, desiredy, case IMAGE_ICON:
MIN(16, COLOR_GetSystemPaletteSize()), FALSE, loadflags); {
case IMAGE_CURSOR: HDC32 hdc = GetDC32(0);
return CURSORICON_Load32(hinst, name, desiredx, desiredy, 1, TRUE, UINT32 palEnts = GetSystemPaletteEntries32(hdc, 0, 0, NULL);
loadflags); 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; return 0;
} }

View File

@ -833,6 +833,10 @@ HCURSOR16 WINAPI LoadCursor16( HINSTANCE16 hInstance, SEGPTR name )
*/ */
HICON16 WINAPI LoadIcon16( 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)) if (HIWORD(name))
TRACE(icon, "%04x '%s'\n", TRACE(icon, "%04x '%s'\n",
hInstance, (char *)PTR_SEG_TO_LIN( name ) ); hInstance, (char *)PTR_SEG_TO_LIN( name ) );
@ -842,7 +846,7 @@ HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name )
return CURSORICON_Load16( hInstance, name, return CURSORICON_Load16( hInstance, name,
SYSMETRICS_CXICON, SYSMETRICS_CYICON, 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; UINT16 retVal = 0;
if( dir && !dir->idReserved && (dir->idType & 3) ) 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 ) if( bIcon )
{ {
ICONDIRENTRY* entry; ICONDIRENTRY* entry;
@ -1484,9 +1492,13 @@ HCURSOR32 WINAPI LoadCursorFromFile32A (LPCSTR name)
*/ */
HICON32 WINAPI LoadIcon32W(HINSTANCE32 hInstance, LPCWSTR 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, return CURSORICON_Load32( hInstance, name,
SYSMETRICS_CXICON, SYSMETRICS_CYICON, SYSMETRICS_CXICON, SYSMETRICS_CYICON,
MIN( 16, COLOR_GetSystemPaletteSize() ), FALSE, 0); MIN( 16, palEnts ), FALSE, 0);
} }
/*********************************************************************** /***********************************************************************

View File

@ -11,7 +11,6 @@
#include "bitmap.h" #include "bitmap.h"
#include "callback.h" #include "callback.h"
#include "palette.h" #include "palette.h"
#include "color.h"
#include "global.h" #include "global.h"
#include "debug.h" #include "debug.h"
#include "x11drv.h" #include "x11drv.h"

View File

@ -421,6 +421,7 @@ UINT32 WINAPI GetSystemPaletteEntries32(
TRACE(palette, "hdc=%04x,start=%i,count=%i\n", hdc,start,count); TRACE(palette, "hdc=%04x,start=%i,count=%i\n", hdc,start,count);
if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0; if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0;
if (!entries) return COLOR_GetSystemPaletteSize();
if (start >= dc->w.devCaps->sizePalette) if (start >= dc->w.devCaps->sizePalette)
{ {
GDI_HEAP_UNLOCK( hdc ); GDI_HEAP_UNLOCK( hdc );