mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 14:37:45 +00:00
Convert between RGBQUAD and PALETTEENTRY
svn path=/trunk/; revision=9814
This commit is contained in:
parent
a8b5ba5a72
commit
47e5aeceab
|
@ -33,6 +33,8 @@ HPALETTE FASTCALL PALETTE_AllocPalette(ULONG Mode,
|
|||
ULONG Red,
|
||||
ULONG Green,
|
||||
ULONG Blue);
|
||||
HPALETTE FASTCALL PALETTE_AllocPaletteIndexedRGB(ULONG NumColors,
|
||||
CONST RGBQUAD *Colors);
|
||||
#define PALETTE_FreePalette(hPalette) GDIOBJ_FreeObj((HGDIOBJ)hPalette, GDI_OBJECT_TYPE_PALETTE, GDIOBJFLAG_DEFAULT)
|
||||
#define PALETTE_LockPalette(hPalette) ((PPALGDI)GDIOBJ_LockObj((HGDIOBJ)hPalette, GDI_OBJECT_TYPE_PALETTE))
|
||||
#define PALETTE_UnlockPalette(hPalette) GDIOBJ_UnlockObj((HGDIOBJ)hPalette, GDI_OBJECT_TYPE_PALETTE)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* $Id: dib.c,v 1.51 2004/06/20 00:45:37 navaraf Exp $
|
||||
* $Id: dib.c,v 1.52 2004/06/22 20:08:17 gvg Exp $
|
||||
*
|
||||
* ReactOS W32 Subsystem
|
||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team
|
||||
|
@ -54,9 +54,8 @@ NtGdiSetDIBColorTable(HDC hDC, UINT StartIndex, UINT Entries, CONST RGBQUAD *Col
|
|||
|
||||
/* Rebuild the palette. */
|
||||
NtGdiDeleteObject(dc->w.hPalette);
|
||||
dc->w.hPalette = PALETTE_AllocPalette(PAL_INDEXED,
|
||||
1 << BitmapObj->dib->dsBmih.biBitCount,
|
||||
(PULONG)BitmapObj->ColorMap, 0, 0, 0);
|
||||
dc->w.hPalette = PALETTE_AllocPaletteIndexedRGB(1 << BitmapObj->dib->dsBmih.biBitCount,
|
||||
BitmapObj->ColorMap);
|
||||
}
|
||||
else
|
||||
Entries = 0;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: palette.c,v 1.19 2004/06/20 00:45:37 navaraf Exp $ */
|
||||
/* $Id: palette.c,v 1.20 2004/06/22 20:08:17 gvg Exp $ */
|
||||
#include <w32k.h>
|
||||
|
||||
#ifndef NO_MAPPING
|
||||
|
@ -98,6 +98,48 @@ PALETTE_AllocPalette(ULONG Mode,
|
|||
return NewPalette;
|
||||
}
|
||||
|
||||
HPALETTE FASTCALL
|
||||
PALETTE_AllocPaletteIndexedRGB(ULONG NumColors,
|
||||
CONST RGBQUAD *Colors)
|
||||
{
|
||||
HPALETTE NewPalette;
|
||||
PPALGDI PalGDI;
|
||||
unsigned i;
|
||||
|
||||
NewPalette = (HPALETTE) GDIOBJ_AllocObj(sizeof(PALGDI), GDI_OBJECT_TYPE_PALETTE, (GDICLEANUPPROC) PALETTE_InternalDelete);
|
||||
if (NULL == NewPalette)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PalGDI = PALETTE_LockPalette(NewPalette);
|
||||
ASSERT( PalGDI );
|
||||
|
||||
PalGDI->Self = NewPalette;
|
||||
PalGDI->Mode = PAL_INDEXED;
|
||||
|
||||
PalGDI->IndexedColors = ExAllocatePoolWithTag(PagedPool, sizeof(PALETTEENTRY) * NumColors, TAG_PALETTE);
|
||||
if (NULL == PalGDI->IndexedColors)
|
||||
{
|
||||
PALETTE_UnlockPalette(NewPalette);
|
||||
PALETTE_FreePalette(NewPalette);
|
||||
return NULL;
|
||||
}
|
||||
for (i = 0; i < NumColors; i++)
|
||||
{
|
||||
PalGDI->IndexedColors[i].peRed = Colors[i].rgbRed;
|
||||
PalGDI->IndexedColors[i].peGreen = Colors[i].rgbGreen;
|
||||
PalGDI->IndexedColors[i].peBlue = Colors[i].rgbBlue;
|
||||
PalGDI->IndexedColors[i].peFlags = 0;
|
||||
}
|
||||
|
||||
PalGDI->NumColors = NumColors;
|
||||
|
||||
PALETTE_UnlockPalette(NewPalette);
|
||||
|
||||
return NewPalette;
|
||||
}
|
||||
|
||||
// Create the system palette
|
||||
HPALETTE FASTCALL PALETTE_Init(VOID)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue