From 47bc28fa4723bc1e02cbf9e4cd32c98e66075b10 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 29 Mar 2009 02:15:37 +0000 Subject: [PATCH] Add the DC XlateBrush / XlatePen hack to DC_vUpdateFillBrush / DC_vUpdateLineBrush, so these should now be a full replacement for the current usage of IntGdiSelectPen/Brush + EBRUSHOBJ_vInit svn path=/trunk/; revision=40279 --- .../subsystems/win32/win32k/objects/dcobjs.c | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/reactos/subsystems/win32/win32k/objects/dcobjs.c b/reactos/subsystems/win32/win32k/objects/dcobjs.c index ea6dfd817c2..18473d62d2e 100644 --- a/reactos/subsystems/win32/win32k/objects/dcobjs.c +++ b/reactos/subsystems/win32/win32k/objects/dcobjs.c @@ -72,12 +72,9 @@ DC_vUpdateFillBrush(PDC pdc) { PDC_ATTR pdcattr = pdc->pdcattr; PBRUSH pbrFill; - XLATEOBJ *pxlo; + XLATEOBJ *pxlo = NULL; ULONG iSolidColor; - /* ROS HACK, should use surf xlate */ - pxlo = pdc->rosdc.XlatePen; - /* Check if the brush handle has changed */ if (pdcattr->hbrush != pdc->dclevel.pbrFill->BaseObject.hHmgr) { @@ -89,16 +86,25 @@ DC_vUpdateFillBrush(PDC pdc) BRUSH_ShareUnlockBrush(pdc->dclevel.pbrFill); pdc->dclevel.pbrFill = pbrFill; + /* ROS HACK, should use surf xlate */ + IntUpdateBrushXlate(pdc, &pdc->rosdc.XlateBrush, pbrFill); + /* Update eboFill, realizing it, if needed */ - EBRUSHOBJ_vUpdate(&pdc->eboFill, pbrFill, pxlo); + EBRUSHOBJ_vUpdate(&pdc->eboFill, pbrFill, pdc->rosdc.XlateBrush); } else { /* Invalid brush handle, restore old one */ pdcattr->hbrush = pdc->dclevel.pbrFill->BaseObject.hHmgr; + + /* ROS HACK, should use surf xlate */ + IntUpdateBrushXlate(pdc, &pdc->rosdc.XlateBrush, pdc->dclevel.pbrFill); } } + /* ROS HACK, should use surf xlate */ + pxlo = pdc->rosdc.XlateBrush; + /* Check for DC brush */ if (pdcattr->hbrush == StockObjects[DC_BRUSH]) { @@ -136,16 +142,25 @@ DC_vUpdateLineBrush(PDC pdc) BRUSH_ShareUnlockBrush(pdc->dclevel.pbrLine); pdc->dclevel.pbrLine = pbrLine; + /* ROS HACK, should use surf xlate */ + IntUpdateBrushXlate(pdc, &pdc->rosdc.XlatePen, pbrLine); + /* Update eboLine, realizing it, if needed */ - EBRUSHOBJ_vUpdate(&pdc->eboLine, pbrLine, pxlo); + EBRUSHOBJ_vUpdate(&pdc->eboLine, pbrLine, pdc->rosdc.XlatePen); } else { /* Invalid pen handle, restore old one */ pdcattr->hpen = pdc->dclevel.pbrLine->BaseObject.hHmgr; + + /* ROS HACK, should use surf xlate */ + IntUpdateBrushXlate(pdc, &pdc->rosdc.XlatePen, pdc->dclevel.pbrLine); } } + /* ROS HACK, should use surf xlate */ + pxlo = pdc->rosdc.XlatePen; + /* Check for DC pen */ if (pdcattr->hpen == StockObjects[DC_PEN]) {