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 "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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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 );
|
||||||
|
|
Loading…
Reference in New Issue