Author: tkreuzer
Date: Sat May 8 17:30:59 2010
New Revision: 47124
URL:
http://svn.reactos.org/svn/reactos?rev=47124&view=rev
Log:
[WIN32K]
Fix broken parameter passing from EngMaskBitBlt to (Alpha)BltMask. It was passing the
wrong surface and the wrong point. Rename some parameters to reflect what their usage is.
Add ASSERTs to make sure noone passes useless parameters. Fixes crippled text in
startmenu.
The whole code is broken by design, anyway it will go away, once the new text rendering
code is done.
See issue #4379 for more details.
Modified:
trunk/reactos/subsystems/win32/win32k/eng/bitblt.c
Modified: trunk/reactos/subsystems/win32/win32k/eng/bitblt.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/en…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/eng/bitblt.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/eng/bitblt.c [iso-8859-1] Sat May 8 17:30:59
2010
@@ -50,6 +50,9 @@
PFN_DIB_GetPixel fnPattern_GetPixel = NULL;
ULONG Pattern = 0;
HBITMAP hbmPattern;
+
+ ASSERT(psoSource == NULL);
+ ASSERT(pptlSource == NULL);
if (psoMask == NULL)
{
@@ -662,8 +665,8 @@
AlphaBltMask(SURFOBJ* psoDest,
SURFOBJ* psoSource, // unused
SURFOBJ* psoMask,
- XLATEOBJ* ColorTranslation,
- XLATEOBJ* SrcColorTranslation,
+ XLATEOBJ* pxloRGB2Dest,
+ XLATEOBJ* pxloBrush,
RECTL* prclDest,
POINTL* pptlSource, // unused
POINTL* pptlMask,
@@ -675,12 +678,15 @@
ULONG Background, BrushColor, NewColor;
BYTE *tMask, *lMask;
+ ASSERT(psoSource == NULL);
+ ASSERT(pptlSource == NULL);
+
dx = prclDest->right - prclDest->left;
dy = prclDest->bottom - prclDest->top;
if (psoMask != NULL)
{
- BrushColor = XLATEOBJ_iXlate(SrcColorTranslation, pbo ? pbo->iSolidColor :
0);
+ BrushColor = XLATEOBJ_iXlate(pxloBrush, pbo ? pbo->iSolidColor : 0);
r = (int)GetRValue(BrushColor);
g = (int)GetGValue(BrushColor);
b = (int)GetBValue(BrushColor);
@@ -701,14 +707,14 @@
else
{
Background = DIB_GetSource(psoDest, prclDest->left + i,
prclDest->top + j,
- SrcColorTranslation);
+ pxloBrush);
NewColor =
RGB((*lMask * (r - GetRValue(Background)) >> 8) +
GetRValue(Background),
(*lMask * (g - GetGValue(Background)) >> 8) +
GetGValue(Background),
(*lMask * (b - GetBValue(Background)) >> 8) +
GetBValue(Background));
- Background = XLATEOBJ_iXlate(ColorTranslation, NewColor);
+ Background = XLATEOBJ_iXlate(pxloRGB2Dest, NewColor);
DibFunctionsForBitmapFormat[psoDest->iBitmapFormat].DIB_PutPixel(
psoDest, prclDest->left + i, prclDest->top + j,
Background);
}
@@ -846,10 +852,10 @@
case DC_TRIVIAL:
if (psoMask->iBitmapFormat == BMF_8BPP)
Ret = AlphaBltMask(psoOutput, NULL , psoInput, DestColorTranslation,
SourceColorTranslation,
- &OutputRect, &InputPoint, pptlMask, pbo,
&AdjustedBrushOrigin);
+ &OutputRect, NULL, &InputPoint, pbo,
&AdjustedBrushOrigin);
else
Ret = BltMask(psoOutput, NULL, psoInput, DestColorTranslation,
- &OutputRect, &InputPoint, pptlMask, pbo,
&AdjustedBrushOrigin,
+ &OutputRect, NULL, &InputPoint, pbo,
&AdjustedBrushOrigin,
R4_MASK);
break;
case DC_RECT:
@@ -864,13 +870,13 @@
Pt.y = InputPoint.y + CombinedRect.top - OutputRect.top;
if (psoMask->iBitmapFormat == BMF_8BPP)
{
- Ret = AlphaBltMask(psoOutput, psoInput, psoMask,
DestColorTranslation, SourceColorTranslation,
- &CombinedRect, &Pt, pptlMask, pbo,
&AdjustedBrushOrigin);
+ Ret = AlphaBltMask(psoOutput, NULL, psoInput, DestColorTranslation,
SourceColorTranslation,
+ &CombinedRect, NULL, &Pt, pbo,
&AdjustedBrushOrigin);
}
else
{
- Ret = BltMask(psoOutput, psoInput, psoMask, DestColorTranslation,
- &CombinedRect, &Pt, pptlMask, pbo,
&AdjustedBrushOrigin, R4_MASK);
+ Ret = BltMask(psoOutput, NULL, psoInput, DestColorTranslation,
+ &CombinedRect, NULL, &Pt, pbo,
&AdjustedBrushOrigin, R4_MASK);
}
}
break;
@@ -908,17 +914,17 @@
Pt.y = InputPoint.y + CombinedRect.top - OutputRect.top;
if (psoMask->iBitmapFormat == BMF_8BPP)
{
- Ret = AlphaBltMask(psoOutput, psoInput, psoMask,
+ Ret = AlphaBltMask(psoOutput, NULL, psoInput,
DestColorTranslation,
SourceColorTranslation,
- &CombinedRect, &Pt, pptlMask,
pbo,
+ &CombinedRect, NULL, &Pt, pbo,
&AdjustedBrushOrigin) && Ret;
}
else
{
- Ret = BltMask(psoOutput, psoInput, psoMask,
- DestColorTranslation, &CombinedRect,
&Pt,
- pptlMask, pbo, &AdjustedBrushOrigin,
+ Ret = BltMask(psoOutput, NULL, psoInput,
+ DestColorTranslation, &CombinedRect, NULL,
+ &Pt, pbo, &AdjustedBrushOrigin,
R4_MASK) && Ret;
}
}