Add the DC XlateBrush / XlatePen hack to DC_vUpdateFillBrush / DC_vUpdateLineBrush...
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sun, 29 Mar 2009 02:15:37 +0000 (02:15 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sun, 29 Mar 2009 02:15:37 +0000 (02:15 +0000)
svn path=/trunk/; revision=40279

reactos/subsystems/win32/win32k/objects/dcobjs.c

index ea6dfd8..18473d6 100644 (file)
@@ -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])
     {