From bceffa7c9bfeabe25d7fc6938212e536985f9aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Thu, 6 Mar 2003 00:57:44 +0000 Subject: [PATCH] Convert between RGBQUAD and COLORREF when creating a palette for a DIB svn path=/trunk/; revision=4246 --- reactos/subsys/win32k/objects/dc.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/reactos/subsys/win32k/objects/dc.c b/reactos/subsys/win32k/objects/dc.c index a31bd1c68aa..4e8262d074d 100644 --- a/reactos/subsys/win32k/objects/dc.c +++ b/reactos/subsys/win32k/objects/dc.c @@ -1,4 +1,4 @@ -/* $Id: dc.c,v 1.48 2003/03/04 10:09:01 gvg Exp $ +/* $Id: dc.c,v 1.49 2003/03/06 00:57:44 gvg Exp $ * * DC.C - Device context functions * @@ -1029,7 +1029,8 @@ HGDIOBJ STDCALL W32kSelectObject(HDC hDC, HGDIOBJ hGDIObj) PXLATEOBJ XlateObj; PPALGDI PalGDI; WORD objectMagic; - ULONG NumColors; + COLORREF *ColorMap; + ULONG NumColors, Index; if(!hDC || !hGDIObj) return NULL; @@ -1095,7 +1096,15 @@ HGDIOBJ STDCALL W32kSelectObject(HDC hDC, HGDIOBJ hGDIObj) if(pb->dib->dsBmih.biBitCount == 4) { NumColors = 16; } else if(pb->dib->dsBmih.biBitCount == 8) { NumColors = 256; } - dc->w.hPalette = EngCreatePalette(PAL_INDEXED, NumColors, pb->ColorMap, 0, 0, 0); + ColorMap = ExAllocatePool(PagedPool, sizeof(COLORREF) * NumColors); + for (Index = 0; Index < NumColors; Index++) + { + ColorMap[Index] = RGB(pb->ColorMap[Index].rgbRed, + pb->ColorMap[Index].rgbGreen, + pb->ColorMap[Index].rgbBlue); + } + dc->w.hPalette = EngCreatePalette(PAL_INDEXED, NumColors, ColorMap, 0, 0, 0); + ExFreePool(ColorMap); } else if(16 == pb->dib->dsBmih.biBitCount) {