ULONG iNewColor;
/* Copy green */
- iNewColor = iColor & 0x00ff00;
+ iNewColor = iColor & 0xff00ff00;
/* Mask red and blue */
- iColor &= 0xff00ff;
+ iColor &= 0x00ff00ff;
/* Shift and copy red and blue */
iNewColor |= iColor >> 16;
{
ULONG iNewColor;
+ /* Copy blue */
+ iColor >>= 3;
+ iNewColor = iColor & 0x1F;
+
+ /* Copy green */
+ iColor >>= 3;
+ iNewColor |= iColor & 0x3E0;
+
+ /* Copy red */
+ iColor >>= 3;
+ iNewColor |= iColor & 0x7C00;
+
+ return iNewColor;
+}
+
+ULONG
+FASTCALL
+EXLATEOBJ_iXlateBGRto555(PEXLATEOBJ pxlo, ULONG iColor)
+{
+ ULONG iNewColor;
+
/* Copy red */
iColor <<= 7;
iNewColor = iColor & 0x7C00;
/* Copy green */
iColor >>= 13;
- iNewColor |= iColor & 0x3E0;
+ iNewColor |= (iColor & 0x3E0);
- /* Copy green */
+ /* Copy blue */
iColor >>= 13;
- iNewColor |= iColor & 0x1F;
+ iNewColor |= (iColor & 0x1F);
return iNewColor;
}
ULONG
FASTCALL
-EXLATEOBJ_iXlateBGRto555(PEXLATEOBJ pxlo, ULONG iColor)
+EXLATEOBJ_iXlateRGBto565(PEXLATEOBJ pxlo, ULONG iColor)
{
ULONG iNewColor;
iNewColor = iColor & 0x1f;
/* Copy green */
- iColor >>= 3;
- iNewColor |= (iColor & 0x3E0);
+ iColor >>= 2;
+ iNewColor |= (iColor & 0x7E0);
/* Copy red */
iColor >>= 3;
- iNewColor |= (iColor & 0x7C00);
+ iNewColor |= (iColor & 0xF800);
return iNewColor;
}
ULONG
FASTCALL
-EXLATEOBJ_iXlateRGBto565(PEXLATEOBJ pxlo, ULONG iColor)
+EXLATEOBJ_iXlateBGRto565(PEXLATEOBJ pxlo, ULONG iColor)
{
ULONG iNewColor;
return iNewColor;
}
-ULONG
-FASTCALL
-EXLATEOBJ_iXlateBGRto565(PEXLATEOBJ pxlo, ULONG iColor)
-{
- ULONG iNewColor;
-
- /* Copy blue */
- iColor >>= 3;
- iNewColor = iColor & 0x1f;
-
- /* Copy green */
- iColor >>= 2;
- iNewColor |= (iColor & 0x7E0);
-
- /* Copy red */
- iColor >>= 3;
- iNewColor |= (iColor & 0xF800);
-
- return iNewColor;
-}
-
ULONG
FASTCALL
EXLATEOBJ_iXlateRGBtoPal(PEXLATEOBJ pexlo, ULONG iColor)
ULONG iNewColor;
/* Copy blue */
- iNewColor = gajXlate5to8[iColor & 0x1F] << 16;
+ iNewColor = gajXlate5to8[iColor & 0x1F];
/* Copy green */
iColor >>= 5;
/* Copy red */
iColor >>= 5;
- iNewColor |= gajXlate5to8[iColor & 0x1F];
+ iNewColor |= gajXlate5to8[iColor & 0x1F] << 16;
return iNewColor;
}
ULONG iNewColor;
/* Copy blue */
- iNewColor = gajXlate5to8[iColor & 0x1F];
+ iNewColor = gajXlate5to8[iColor & 0x1F] << 16;
/* Copy green */
iColor >>= 5;
/* Copy red */
iColor >>= 5;
- iNewColor |= gajXlate5to8[iColor & 0x1F] << 16;
+ iNewColor |= gajXlate5to8[iColor & 0x1F];
return iNewColor;
}
ULONG iNewColor;
/* Copy blue */
- iNewColor = gajXlate5to8[iColor & 0x1F] << 16;
+ iNewColor = gajXlate5to8[iColor & 0x1F];
/* Copy green */
iColor >>= 5;
/* Copy red */
iColor >>= 6;
- iNewColor |= gajXlate5to8[iColor & 0x1F];
+ iNewColor |= gajXlate5to8[iColor & 0x1F] << 16;
return iNewColor;
}
ULONG iNewColor;
/* Copy blue */
- iNewColor = gajXlate5to8[iColor & 0x1F];
+ iNewColor = gajXlate5to8[iColor & 0x1F] << 16;
/* Copy green */
iColor >>= 5;
iNewColor |= gajXlate6to8[iColor & 0x3F] << 8;
- /* Copy blue */
+ /* Copy red */
iColor >>= 6;
- iNewColor |= gajXlate5to8[iColor & 0x1F] << 16;
+ iNewColor |= gajXlate5to8[iColor & 0x1F];
return iNewColor;
}
PDC pdcDst)
{
PSURFACE psurfDst, psurfSrc;
- PPALETTE ppalSrc, ppalDst, ppalDstDc;
-
- DPRINT("Enter EXLATEOBJ_vInitXlateFromDCs\n");
-
- /* Do basic init */
- EXLATEOBJ_vInitTrivial(pexlo);
psurfDst = pdcDst->dclevel.pSurface;
psurfSrc = pdcSrc->dclevel.pSurface;
+ /* Check for trivial color translation */
if (psurfDst == psurfSrc)
{
+ EXLATEOBJ_vInitTrivial(pexlo);
return;
}
- ppalSrc = psurfSrc->ppal;
-
- if(!ppalSrc)
- {
- DPRINT1("No palette for src surface %p.\n", psurfSrc);
- return;
- }
-
- ppalDst = psurfDst->ppal;
-
- if (!ppalDst)
- {
- DPRINT1("No palette for dst surface %p.\n", psurfDst);
- return;
- }
-
- ppalDstDc = pdcDst->dclevel.ppal;
- ASSERT(ppalDstDc);
-
+ /* Normal initialisation. No surface means DEFAULT_BITMAP */
EXLATEOBJ_vInitialize(pexlo,
- ppalSrc,
- ppalDst,
+ psurfSrc ? psurfSrc->ppal : &gpalMono,
+ psurfDst ? psurfDst->ppal : &gpalMono,
pdcSrc->pdcattr->crBackgroundClr,
pdcDst->pdcattr->crBackgroundClr,
pdcDst->pdcattr->crForegroundClr);
}
-
-VOID
-NTAPI
-EXLATEOBJ_vInitBrushXlate(
- PEXLATEOBJ pexlo,
- BRUSH *pbrush,
- SURFACE *psurfDst,
- COLORREF crForegroundClr,
- COLORREF crBackgroundClr)
-{
- PPALETTE ppalDst;
- SURFACE *psurfPattern;
-
- ASSERT(pexlo);
- ASSERT(pbrush);
- ASSERT(psurfDst);
- ASSERT(!(pbrush->flAttrs & (GDIBRUSH_IS_SOLID | GDIBRUSH_IS_NULL)));
-
- EXLATEOBJ_vInitTrivial(pexlo);
-
- ppalDst = psurfDst->ppal;
-
- if (!ppalDst)
- {
- DPRINT1("No palette for dst surface %p.\n", psurfDst);
- return;
- }
-
- psurfPattern = SURFACE_ShareLockSurface(pbrush->hbmPattern);
- if (!psurfPattern)
- {
- return;
- }
-
- if (psurfPattern->ppal)
- {
- EXLATEOBJ_vInitialize(pexlo, psurfPattern->ppal, ppalDst, 0, crBackgroundClr, crForegroundClr);
- }
-
- SURFACE_ShareUnlockSurface(psurfPattern);
-}
-
VOID
NTAPI
EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo)