- Remove gexloTrivial, it was never used
- Remove EXLATEOBJ_vInitTrivial and move the code into EXLATEOBJ_vInitialize
- Properly set XO_TABLE
- Set ppalDstDc in EXLATEOBJ_vInitXlateFromDCs

svn path=/trunk/; revision=50695
This commit is contained in:
Timo Kreuzer 2011-02-14 17:23:58 +00:00
parent c1f1c6ee41
commit 0be0719111

View file

@ -17,8 +17,6 @@
/** Globals *******************************************************************/
ULONG giUniqueXlate = 0;
EXLATEOBJ gexloTrivial;
XLATEOBJ* gpxloTrivial = &gexloTrivial.xlo;
const BYTE gajXlate5to8[32] =
{ 0, 8, 16, 25, 33, 41, 49, 58, 66, 74, 82, 90, 99,107,115,123,
@ -329,23 +327,6 @@ EXLATEOBJ_iXlateBitfieldsToPal(PEXLATEOBJ pexlo, ULONG iColor)
/** Private Functions *********************************************************/
VOID
NTAPI
EXLATEOBJ_vInitTrivial(PEXLATEOBJ pexlo)
{
pexlo->xlo.iUniq = InterlockedIncrement((LONG*)&giUniqueXlate);
pexlo->xlo.flXlate = XO_TRIVIAL;
pexlo->xlo.iSrcType = PAL_RGB;
pexlo->xlo.iDstType = PAL_RGB;
pexlo->xlo.cEntries = 0;
pexlo->xlo.pulXlate = pexlo->aulXlate;
pexlo->pfnXlate = EXLATEOBJ_iXlateTrivial;
pexlo->ppalSrc = &gpalRGB;
pexlo->ppalDst = &gpalRGB;
pexlo->ppalDstDc = &gpalRGB;
pexlo->hColorTransform = NULL;
}
VOID
NTAPI
EXLATEOBJ_vInitialize(
@ -359,22 +340,24 @@ EXLATEOBJ_vInitialize(
ULONG cEntries;
ULONG i, ulColor;
EXLATEOBJ_vInitTrivial(pexlo);
if (!ppalSrc || !ppalDst)
{
return;
}
if (!ppalSrc) ppalSrc = &gpalRGB;
if (!ppalDst) ppalDst = &gpalRGB;
pexlo->xlo.iUniq = InterlockedIncrement((LONG*)&giUniqueXlate);
pexlo->xlo.cEntries = 0;
pexlo->xlo.flXlate = 0;
pexlo->xlo.pulXlate = pexlo->aulXlate;
pexlo->pfnXlate = EXLATEOBJ_iXlateTrivial;
pexlo->hColorTransform = NULL;
pexlo->ppalSrc = ppalSrc;
pexlo->ppalDst = ppalDst;
pexlo->xlo.iSrcType = ppalSrc->flFlags;
pexlo->xlo.iDstType = ppalDst->flFlags;
if (ppalDst == ppalSrc ||
((ppalDst->flFlags == PAL_RGB || ppalDst->flFlags == PAL_BGR) &&
ppalDst->flFlags == ppalSrc->flFlags))
pexlo->ppalDstDc = &gpalRGB;
if (ppalDst == ppalSrc)
{
pexlo->xlo.flXlate |= XO_TRIVIAL;
return;
}
@ -460,12 +443,14 @@ EXLATEOBJ_vInitialize(
return;
}
}
pexlo->xlo.cEntries = cEntries;
pexlo->pfnXlate = EXLATEOBJ_iXlateTable;
pexlo->xlo.cEntries = cEntries;
pexlo->xlo.flXlate |= XO_TABLE;
if (ppalDst->flFlags & PAL_INDEXED)
{
pexlo->xlo.flXlate |= XO_TABLE;
ULONG cDiff = 0;
for (i = 0; i < cEntries; i++)
{
@ -476,11 +461,11 @@ EXLATEOBJ_vInitialize(
pexlo->xlo.pulXlate[i] =
PALETTE_ulGetNearestPaletteIndex(ppalDst, ulColor);
if (pexlo->xlo.pulXlate[i] != i)
pexlo->xlo.flXlate &= ~XO_TRIVIAL;
if (pexlo->xlo.pulXlate[i] != i) cDiff++;
}
if (pexlo->xlo.flXlate & XO_TRIVIAL)
/* Check if we have only trivial mappings */
if (cDiff == 0)
{
if (pexlo->xlo.pulXlate != pexlo->aulXlate)
{
@ -489,6 +474,7 @@ EXLATEOBJ_vInitialize(
}
pexlo->pfnXlate = EXLATEOBJ_iXlateTrivial;
pexlo->xlo.flXlate = XO_TRIVIAL;
pexlo->xlo.cEntries = 0;
return;
}
}
@ -619,6 +605,8 @@ EXLATEOBJ_vInitXlateFromDCs(
pdcSrc->pdcattr->crBackgroundClr,
pdcDst->pdcattr->crBackgroundClr,
pdcDst->pdcattr->crForegroundClr);
pexlo->ppalDstDc = pdcDst->dclevel.ppal;
}
VOID
@ -637,7 +625,6 @@ NTSTATUS
NTAPI
InitXlateImpl(VOID)
{
EXLATEOBJ_vInitTrivial(&gexloTrivial);
return STATUS_SUCCESS;
}