mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 00:13:57 +00:00
[WIN32K]
Set proper flags and masks in BuildDIBPalette. Set PAL_BGR for 24/32 BPP in AllocPalette. Rename Mode to Flags to better reflect its usage. Fixes "red icons" and dibtest. svn path=/branches/reactos-yarotows/; revision=49265
This commit is contained in:
parent
6237a1d524
commit
a2e78394d2
|
@ -362,19 +362,19 @@ EXLATEOBJ_vInitialize(
|
|||
EXLATEOBJ_vInitTrivial(pexlo);
|
||||
|
||||
if (ppalDst == ppalSrc || !ppalSrc || !ppalDst ||
|
||||
((ppalDst->Mode == PAL_RGB || ppalDst->Mode == PAL_BGR) &&
|
||||
ppalDst->Mode == ppalSrc->Mode))
|
||||
((ppalDst->flFlags == PAL_RGB || ppalDst->flFlags == PAL_BGR) &&
|
||||
ppalDst->flFlags == ppalSrc->flFlags))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
pexlo->ppalSrc = ppalSrc;
|
||||
pexlo->ppalDst = ppalDst;
|
||||
pexlo->xlo.iSrcType = ppalSrc->Mode;
|
||||
pexlo->xlo.iDstType = ppalDst->Mode;
|
||||
pexlo->xlo.iSrcType = ppalSrc->flFlags;
|
||||
pexlo->xlo.iDstType = ppalDst->flFlags;
|
||||
|
||||
/* Chack if both of the pallettes are indexed */
|
||||
if (!(ppalSrc->Mode & PAL_INDEXED) || !(ppalDst->Mode & PAL_INDEXED))
|
||||
if (!(ppalSrc->flFlags & PAL_INDEXED) || !(ppalDst->flFlags & PAL_INDEXED))
|
||||
{
|
||||
/* At least one palette is not indexed, calculate shifts/masks */
|
||||
ULONG aulMasksSrc[3], aulMasksDst[3];
|
||||
|
@ -391,10 +391,10 @@ EXLATEOBJ_vInitialize(
|
|||
pexlo->ulBlueShift = CalculateShift(aulMasksSrc[2], aulMasksDst[2]);
|
||||
}
|
||||
|
||||
if (ppalSrc->Mode & PAL_MONOCHROME)
|
||||
if (ppalSrc->flFlags & PAL_MONOCHROME)
|
||||
{
|
||||
/* This is a monochrome palette */
|
||||
if (!(ppalDst->Mode & PAL_MONOCHROME))
|
||||
if (!(ppalDst->flFlags & PAL_MONOCHROME))
|
||||
{
|
||||
/* Mono to color, use the dest DC's fore and back color */
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateTable;
|
||||
|
@ -406,28 +406,28 @@ EXLATEOBJ_vInitialize(
|
|||
PALETTE_ulGetNearestIndex(ppalDst, crDstBackColor);
|
||||
}
|
||||
}
|
||||
else if (ppalDst->Mode & PAL_MONOCHROME)
|
||||
else if (ppalDst->flFlags & PAL_MONOCHROME)
|
||||
{
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateToMono;
|
||||
pexlo->xlo.flXlate |= XO_TO_MONO;
|
||||
pexlo->xlo.cEntries = 1;
|
||||
|
||||
if (ppalSrc->Mode & PAL_INDEXED)
|
||||
if (ppalSrc->flFlags & PAL_INDEXED)
|
||||
{
|
||||
pexlo->aulXlate[0] =
|
||||
PALETTE_ulGetNearestPaletteIndex(ppalSrc, crSrcBackColor);
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_BGR)
|
||||
else if (ppalSrc->flFlags & PAL_BGR)
|
||||
{
|
||||
pexlo->aulXlate[0] = crSrcBackColor;
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_RGB)
|
||||
else if (ppalSrc->flFlags & PAL_RGB)
|
||||
{
|
||||
pexlo->aulXlate[0] = RGB(GetBValue(crSrcBackColor),
|
||||
GetGValue(crSrcBackColor),
|
||||
GetRValue(crSrcBackColor));
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_BITFIELDS)
|
||||
else if (ppalSrc->flFlags & PAL_BITFIELDS)
|
||||
{
|
||||
PALETTE_vGetBitMasks(ppalSrc, &pexlo->ulRedMask);
|
||||
pexlo->ulRedShift = CalculateShift(0xFF, pexlo->ulRedMask);
|
||||
|
@ -437,7 +437,7 @@ EXLATEOBJ_vInitialize(
|
|||
pexlo->aulXlate[0] = EXLATEOBJ_iXlateShiftAndMask(pexlo, crSrcBackColor);
|
||||
}
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_INDEXED)
|
||||
else if (ppalSrc->flFlags & PAL_INDEXED)
|
||||
{
|
||||
cEntries = ppalSrc->NumColors;
|
||||
|
||||
|
@ -458,7 +458,7 @@ EXLATEOBJ_vInitialize(
|
|||
pexlo->xlo.cEntries = cEntries;
|
||||
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateTable;
|
||||
if (ppalDst->Mode & PAL_INDEXED)
|
||||
if (ppalDst->flFlags & PAL_INDEXED)
|
||||
{
|
||||
pexlo->xlo.flXlate |= XO_TABLE;
|
||||
|
||||
|
@ -504,78 +504,78 @@ EXLATEOBJ_vInitialize(
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_RGB)
|
||||
else if (ppalSrc->flFlags & PAL_RGB)
|
||||
{
|
||||
if (ppalDst->Mode & PAL_INDEXED)
|
||||
if (ppalDst->flFlags & PAL_INDEXED)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateRGBtoPal;
|
||||
|
||||
else if (ppalDst->Mode & PAL_BGR)
|
||||
else if (ppalDst->flFlags & PAL_BGR)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateRGBtoBGR;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB16_555)
|
||||
else if (ppalDst->flFlags & PAL_RGB16_555)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateRGBto555;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB16_565)
|
||||
else if (ppalDst->flFlags & PAL_RGB16_565)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateRGBto565;
|
||||
|
||||
else if (ppalDst->Mode & PAL_BITFIELDS)
|
||||
else if (ppalDst->flFlags & PAL_BITFIELDS)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_BGR)
|
||||
else if (ppalSrc->flFlags & PAL_BGR)
|
||||
{
|
||||
if (ppalDst->Mode & PAL_INDEXED)
|
||||
if (ppalDst->flFlags & PAL_INDEXED)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateBitfieldsToPal;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB)
|
||||
else if (ppalDst->flFlags & PAL_RGB)
|
||||
/* The inverse function works the same */
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateRGBtoBGR;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB16_555)
|
||||
else if (ppalDst->flFlags & PAL_RGB16_555)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateBGRto555;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB16_565)
|
||||
else if (ppalDst->flFlags & PAL_RGB16_565)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateBGRto565;
|
||||
|
||||
else if (ppalDst->Mode & PAL_BITFIELDS)
|
||||
else if (ppalDst->flFlags & PAL_BITFIELDS)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_RGB16_555)
|
||||
else if (ppalSrc->flFlags & PAL_RGB16_555)
|
||||
{
|
||||
if (ppalDst->Mode & PAL_INDEXED)
|
||||
if (ppalDst->flFlags & PAL_INDEXED)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlate555toPal;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB)
|
||||
else if (ppalDst->flFlags & PAL_RGB)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlate555toRGB;
|
||||
|
||||
else if (ppalDst->Mode & PAL_BGR)
|
||||
else if (ppalDst->flFlags & PAL_BGR)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlate555toBGR;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB16_565)
|
||||
else if (ppalDst->flFlags & PAL_RGB16_565)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlate555to565;
|
||||
|
||||
else if (ppalDst->Mode & PAL_BITFIELDS)
|
||||
else if (ppalDst->flFlags & PAL_BITFIELDS)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_RGB16_565)
|
||||
else if (ppalSrc->flFlags & PAL_RGB16_565)
|
||||
{
|
||||
if (ppalDst->Mode & PAL_INDEXED)
|
||||
if (ppalDst->flFlags & PAL_INDEXED)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlate565toPal;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB)
|
||||
else if (ppalDst->flFlags & PAL_RGB)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlate565toRGB;
|
||||
|
||||
else if (ppalDst->Mode & PAL_BGR)
|
||||
else if (ppalDst->flFlags & PAL_BGR)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlate565toBGR;
|
||||
|
||||
else if (ppalDst->Mode & PAL_RGB16_555)
|
||||
else if (ppalDst->flFlags & PAL_RGB16_555)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlate565to555;
|
||||
|
||||
else if (ppalDst->Mode & PAL_BITFIELDS)
|
||||
else if (ppalDst->flFlags & PAL_BITFIELDS)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
|
||||
}
|
||||
else if (ppalSrc->Mode & PAL_BITFIELDS)
|
||||
else if (ppalSrc->flFlags & PAL_BITFIELDS)
|
||||
{
|
||||
if (ppalDst->Mode & PAL_INDEXED)
|
||||
if (ppalDst->flFlags & PAL_INDEXED)
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateBitfieldsToPal;
|
||||
else
|
||||
pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
|
||||
|
@ -694,9 +694,9 @@ XLATEOBJ_cGetPalette(XLATEOBJ *pxlo, ULONG iPal, ULONG cPal, ULONG *pPalOut)
|
|||
/* Verify palette type match */
|
||||
if (!ppal ||
|
||||
((iPal == XO_SRCPALETTE || iPal == XO_DESTPALETTE)
|
||||
&& !(ppal->Mode & PAL_INDEXED)) ||
|
||||
&& !(ppal->flFlags & PAL_INDEXED)) ||
|
||||
((iPal == XO_SRCBITFIELDS || iPal == XO_DESTBITFIELDS)
|
||||
&& !(ppal->Mode & PAL_BITFIELDS)))
|
||||
&& !(ppal->flFlags & PAL_BITFIELDS)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -707,7 +707,7 @@ XLATEOBJ_cGetPalette(XLATEOBJ *pxlo, ULONG iPal, ULONG cPal, ULONG *pPalOut)
|
|||
}
|
||||
|
||||
/* Copy the values into the buffer */
|
||||
if (ppal->Mode & PAL_INDEXED)
|
||||
if (ppal->flFlags & PAL_INDEXED)
|
||||
{
|
||||
cPal = min(cPal, ppal->NumColors);
|
||||
for (i = 0; i < cPal; i++)
|
||||
|
|
|
@ -40,7 +40,7 @@ typedef struct _PALETTE
|
|||
PALOBJ PalObj;
|
||||
XLATEOBJ *logicalToSystem;
|
||||
HPALETTE Self;
|
||||
ULONG Mode; // PAL_INDEXED, PAL_BITFIELDS, PAL_RGB, PAL_BGR
|
||||
FLONG flFlags; // PAL_INDEXED, PAL_BITFIELDS, PAL_RGB, PAL_BGR
|
||||
ULONG NumColors;
|
||||
PALETTEENTRY *IndexedColors;
|
||||
ULONG RedMask;
|
||||
|
|
|
@ -949,7 +949,7 @@ BITMAP_GetObject(SURFACE *psurf, INT Count, LPVOID buffer)
|
|||
pds->dsBmih.biHeight = pds->dsBm.bmHeight;
|
||||
pds->dsBmih.biPlanes = pds->dsBm.bmPlanes;
|
||||
pds->dsBmih.biBitCount = pds->dsBm.bmBitsPixel;
|
||||
if(psurf->ppal->Mode & PAL_BITFIELDS)
|
||||
if(psurf->ppal->flFlags & PAL_BITFIELDS)
|
||||
{
|
||||
pds->dsBmih.biCompression = BI_BITFIELDS;
|
||||
}
|
||||
|
|
|
@ -166,7 +166,7 @@ GdiSelectPalette(
|
|||
|
||||
/* Is this a valid palette for this depth? */
|
||||
if ((BitsPerFormat(pdc->dclevel.pSurface->SurfObj.iBitmapFormat) <= 8
|
||||
&& ppal->Mode == PAL_INDEXED) ||
|
||||
&& (ppal->flFlags & PAL_INDEXED)) ||
|
||||
(BitsPerFormat(pdc->dclevel.pSurface->SurfObj.iBitmapFormat) > 8))
|
||||
{
|
||||
/* Get old palette, set new one */
|
||||
|
|
|
@ -1690,7 +1690,7 @@ DIB_MapPaletteColors(PPALETTE ppal, CONST BITMAPINFO* lpbmi)
|
|||
USHORT *lpIndex;
|
||||
HPALETTE hpal;
|
||||
|
||||
if (ppal->Mode != PAL_INDEXED)
|
||||
if (!(ppal->flFlags & PAL_INDEXED))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1764,17 +1764,33 @@ BuildDIBPalette(CONST BITMAPINFO *bmi)
|
|||
GreenMask = pdwColors[1];
|
||||
BlueMask = pdwColors[2];
|
||||
}
|
||||
else if (bits == 15)
|
||||
{
|
||||
paletteType = PAL_RGB16_555;
|
||||
}
|
||||
else if (bits == 16)
|
||||
{
|
||||
paletteType = PAL_RGB16_565;
|
||||
}
|
||||
else
|
||||
{
|
||||
paletteType = PAL_BGR;
|
||||
paletteType = PAL_BITFIELDS;
|
||||
switch (bits)
|
||||
{
|
||||
case 15:
|
||||
paletteType |= PAL_RGB16_555;
|
||||
RedMask = 0x7C00;
|
||||
GreenMask = 0x03E0;
|
||||
BlueMask = 0x001F;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
paletteType |= PAL_RGB16_565;
|
||||
RedMask = 0xF800;
|
||||
GreenMask = 0x07E0;
|
||||
BlueMask = 0x001F;
|
||||
break;
|
||||
|
||||
case 24:
|
||||
case 32:
|
||||
paletteType |= PAL_BGR;
|
||||
RedMask = 0xFF0000;
|
||||
GreenMask = 0x00FF00;
|
||||
BlueMask = 0x0000FF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bmi->bmiHeader.biClrUsed == 0)
|
||||
|
|
|
@ -256,9 +256,9 @@ UpdateDeviceGammaRamp( HDEV hPDev )
|
|||
palPtr = (PALOBJ*) palGDI;
|
||||
|
||||
if (pGDev->flFlags & PDEV_GAMMARAMP_TABLE)
|
||||
palGDI->Mode |= PAL_GAMMACORRECTION;
|
||||
palGDI->flFlags |= PAL_GAMMACORRECTION;
|
||||
else
|
||||
palGDI->Mode &= ~PAL_GAMMACORRECTION;
|
||||
palGDI->flFlags &= ~PAL_GAMMACORRECTION;
|
||||
|
||||
if (!(pGDev->flFlags & PDEV_DRIVER_PUNTED_CALL)) // No punting, we hook
|
||||
{
|
||||
|
|
|
@ -85,28 +85,28 @@ HPALETTE FASTCALL PALETTE_Init(VOID)
|
|||
|
||||
/* palette_size = visual->map_entries; */
|
||||
|
||||
gpalRGB.Mode = PAL_RGB;
|
||||
gpalRGB.flFlags = PAL_RGB;
|
||||
gpalRGB.RedMask = RGB(0xFF, 0x00, 0x00);
|
||||
gpalRGB.GreenMask = RGB(0x00, 0xFF, 0x00);
|
||||
gpalRGB.BlueMask = RGB(0x00, 0x00, 0xFF);
|
||||
gpalRGB.BaseObject.ulShareCount = 0;
|
||||
gpalRGB.BaseObject.BaseFlags = 0 ;
|
||||
|
||||
gpalBGR.Mode = PAL_BGR;
|
||||
gpalBGR.flFlags = PAL_BGR;
|
||||
gpalBGR.RedMask = RGB(0x00, 0x00, 0xFF);
|
||||
gpalBGR.GreenMask = RGB(0x00, 0xFF, 0x00);
|
||||
gpalBGR.BlueMask = RGB(0xFF, 0x00, 0x00);
|
||||
gpalBGR.BaseObject.ulShareCount = 0;
|
||||
gpalBGR.BaseObject.BaseFlags = 0 ;
|
||||
|
||||
gpalRGB555.Mode = PAL_RGB16_555 | PAL_BITFIELDS;
|
||||
gpalRGB555.flFlags = PAL_RGB16_555 | PAL_BITFIELDS;
|
||||
gpalRGB555.RedMask = 0x7C00;
|
||||
gpalRGB555.GreenMask = 0x3E0;
|
||||
gpalRGB555.BlueMask = 0x1F;
|
||||
gpalRGB555.BaseObject.ulShareCount = 0;
|
||||
gpalRGB555.BaseObject.BaseFlags = 0 ;
|
||||
|
||||
gpalRGB565.Mode = PAL_RGB16_565 | PAL_BITFIELDS;
|
||||
gpalRGB565.flFlags = PAL_RGB16_565 | PAL_BITFIELDS;
|
||||
gpalRGB565.RedMask = 0xF800;
|
||||
gpalRGB565.GreenMask = 0x7E0;
|
||||
gpalRGB565.BlueMask = 0x1F;
|
||||
|
@ -114,7 +114,7 @@ HPALETTE FASTCALL PALETTE_Init(VOID)
|
|||
gpalRGB565.BaseObject.BaseFlags = 0 ;
|
||||
|
||||
memset(&gpalMono, 0, sizeof(PALETTE));
|
||||
gpalMono.Mode = PAL_MONOCHROME;
|
||||
gpalMono.flFlags = PAL_MONOCHROME;
|
||||
gpalMono.BaseObject.ulShareCount = 0;
|
||||
gpalMono.BaseObject.BaseFlags = 0 ;
|
||||
|
||||
|
@ -162,7 +162,7 @@ PALETTE_AllocPalette(ULONG Mode,
|
|||
NewPalette = PalGDI->BaseObject.hHmgr;
|
||||
|
||||
PalGDI->Self = NewPalette;
|
||||
PalGDI->Mode = Mode;
|
||||
PalGDI->flFlags = Mode;
|
||||
|
||||
if (NULL != Colors)
|
||||
{
|
||||
|
@ -178,20 +178,22 @@ PALETTE_AllocPalette(ULONG Mode,
|
|||
RtlCopyMemory(PalGDI->IndexedColors, Colors, sizeof(PALETTEENTRY) * NumColors);
|
||||
}
|
||||
|
||||
if (PAL_INDEXED == Mode)
|
||||
if (Mode & PAL_INDEXED)
|
||||
{
|
||||
PalGDI->NumColors = NumColors;
|
||||
}
|
||||
else if (PAL_BITFIELDS == Mode)
|
||||
else if (Mode & PAL_BITFIELDS)
|
||||
{
|
||||
PalGDI->RedMask = Red;
|
||||
PalGDI->GreenMask = Green;
|
||||
PalGDI->BlueMask = Blue;
|
||||
|
||||
if (Red == 0x7c00 && Green == 0x3E0 && Blue == 0x1F)
|
||||
PalGDI->Mode |= PAL_RGB16_555;
|
||||
PalGDI->flFlags |= PAL_RGB16_555;
|
||||
else if (Red == 0xF800 && Green == 0x7E0 && Blue == 0x1F)
|
||||
PalGDI->Mode |= PAL_RGB16_565;
|
||||
PalGDI->flFlags |= PAL_RGB16_565;
|
||||
else if (Red == 0xFF0000 && Green == 0xFF00 && Blue == 0xFF)
|
||||
PalGDI->flFlags |= PAL_BGR;
|
||||
}
|
||||
|
||||
PALETTE_UnlockPalette(PalGDI);
|
||||
|
@ -217,7 +219,7 @@ PALETTE_AllocPaletteIndexedRGB(ULONG NumColors,
|
|||
NewPalette = PalGDI->BaseObject.hHmgr;
|
||||
|
||||
PalGDI->Self = NewPalette;
|
||||
PalGDI->Mode = PAL_INDEXED;
|
||||
PalGDI->flFlags = PAL_INDEXED;
|
||||
|
||||
PalGDI->IndexedColors = ExAllocatePoolWithTag(PagedPool,
|
||||
sizeof(PALETTEENTRY) * NumColors,
|
||||
|
@ -321,7 +323,7 @@ ULONG
|
|||
NTAPI
|
||||
PALETTE_ulGetNearestIndex(PALETTE* ppal, ULONG ulColor)
|
||||
{
|
||||
if (ppal->Mode & PAL_INDEXED) // use fl & PALINDEXED
|
||||
if (ppal->flFlags & PAL_INDEXED) // use fl & PALINDEXED
|
||||
return PALETTE_ulGetNearestPaletteIndex(ppal, ulColor);
|
||||
else
|
||||
return PALETTE_ulGetNearestBitFieldsIndex(ppal, ulColor);
|
||||
|
@ -333,19 +335,19 @@ PALETTE_vGetBitMasks(PPALETTE ppal, PULONG pulColors)
|
|||
{
|
||||
ASSERT(pulColors);
|
||||
|
||||
if (ppal->Mode & PAL_INDEXED || ppal->Mode & PAL_RGB)
|
||||
if (ppal->flFlags & PAL_INDEXED || ppal->flFlags & PAL_RGB)
|
||||
{
|
||||
pulColors[0] = RGB(0xFF, 0x00, 0x00);
|
||||
pulColors[1] = RGB(0x00, 0xFF, 0x00);
|
||||
pulColors[2] = RGB(0x00, 0x00, 0xFF);
|
||||
}
|
||||
else if (ppal->Mode & PAL_BGR)
|
||||
else if (ppal->flFlags & PAL_BGR)
|
||||
{
|
||||
pulColors[0] = RGB(0x00, 0x00, 0xFF);
|
||||
pulColors[1] = RGB(0x00, 0xFF, 0x00);
|
||||
pulColors[2] = RGB(0xFF, 0x00, 0x00);
|
||||
}
|
||||
else if (ppal->Mode & PAL_BITFIELDS)
|
||||
else if (ppal->flFlags & PAL_BITFIELDS)
|
||||
{
|
||||
pulColors[0] = ppal->RedMask;
|
||||
pulColors[1] = ppal->GreenMask;
|
||||
|
@ -433,7 +435,7 @@ PALOBJ_cGetColors(PALOBJ *PalObj, ULONG Start, ULONG Colors, ULONG *PaletteEntry
|
|||
/* NOTE: PaletteEntry ULONGs are in the same order as PALETTEENTRY. */
|
||||
RtlCopyMemory(PaletteEntry, PalGDI->IndexedColors + Start, sizeof(ULONG) * Colors);
|
||||
|
||||
if (PalGDI->Mode & PAL_GAMMACORRECTION)
|
||||
if (PalGDI->flFlags & PAL_GAMMACORRECTION)
|
||||
ColorCorrection(PalGDI, (PPALETTEENTRY)PaletteEntry, Colors);
|
||||
|
||||
return Colors;
|
||||
|
@ -664,17 +666,17 @@ COLORREF APIENTRY NtGdiGetNearestColor(HDC hDC, COLORREF Color)
|
|||
return nearest;
|
||||
}
|
||||
|
||||
if (palGDI->Mode & PAL_INDEXED)
|
||||
if (palGDI->flFlags & PAL_INDEXED)
|
||||
{
|
||||
ULONG index;
|
||||
index = PALETTE_ulGetNearestPaletteIndex(palGDI, Color);
|
||||
nearest = PALETTE_ulGetRGBColorFromIndex(palGDI, index);
|
||||
}
|
||||
else if (palGDI->Mode & PAL_RGB || palGDI->Mode & PAL_BGR)
|
||||
else if (palGDI->flFlags & PAL_RGB || palGDI->flFlags & PAL_BGR)
|
||||
{
|
||||
nearest = Color;
|
||||
}
|
||||
else if (palGDI->Mode & PAL_BITFIELDS)
|
||||
else if (palGDI->flFlags & PAL_BITFIELDS)
|
||||
{
|
||||
RBits = 8 - GetNumberOfBits(palGDI->RedMask);
|
||||
GBits = 8 - GetNumberOfBits(palGDI->GreenMask);
|
||||
|
@ -702,7 +704,7 @@ NtGdiGetNearestPaletteIndex(
|
|||
|
||||
if (ppal)
|
||||
{
|
||||
if (ppal->Mode & PAL_INDEXED)
|
||||
if (ppal->flFlags & PAL_INDEXED)
|
||||
{
|
||||
/* Return closest match for the given RGB color */
|
||||
index = PALETTE_ulGetNearestPaletteIndex(ppal, crColor);
|
||||
|
|
Loading…
Reference in a new issue