Author: tkreuzer
Date: Thu Apr 26 16:19:22 2012
New Revision: 56429

URL: http://svn.reactos.org/svn/reactos?rev=56429&view=rev
Log:
[WIN32K]
- Implement TranslateCOLORREF, based on IntHandleSpecialColorType, but now 
returning both the translated color and the resulting RGB color, correctly 
handling DIBINDEX, which will use the given value without translation.
- Rewrite NtGdiSetPixel using IntPatBlt
- Rewrite NtGdiGetPixel  using IntEngCopyBits
- Fix EXLATEOBJ_iXlateTable to return 0, when the palette index is too big, 
instead of wrapping around
- Remove old debugcode

Added:
    trunk/reactos/win32ss/gdi/ntgdi/patblt.c
      - copied, changed from r56411, trunk/reactos/win32ss/gdi/ntgdi/bitblt.c
Modified:
    trunk/reactos/win32ss/gdi/eng/engbrush.c
    trunk/reactos/win32ss/gdi/eng/xlate.c
    trunk/reactos/win32ss/gdi/ntgdi/bitblt.c
    trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c
    trunk/reactos/win32ss/gdi/ntgdi/brush.h
    trunk/reactos/win32ss/gdi/ntgdi/dcobjs.c

Modified: trunk/reactos/win32ss/gdi/eng/engbrush.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/eng/engbrush.c?rev=56429&r1=56428&r2=56429&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/eng/engbrush.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/eng/engbrush.c [iso-8859-1] Thu Apr 26 16:19:22 
2012
@@ -47,7 +47,7 @@
     else if (pbrush->flAttrs & GDIBRUSH_IS_SOLID)
     {
         /* Set the RGB color */
-        EBRUSHOBJ_vSetSolidBrushColor(pebo, pbrush->BrushAttr.lbColor);
+        EBRUSHOBJ_vSetSolidRGBColor(pebo, pbrush->BrushAttr.lbColor);
     }
     else
     {
@@ -62,7 +62,7 @@
 
 VOID
 FASTCALL
-EBRUSHOBJ_vSetSolidBrushColor(EBRUSHOBJ *pebo, COLORREF crColor)
+EBRUSHOBJ_vSetSolidRGBColor(EBRUSHOBJ *pebo, COLORREF crColor)
 {
     ULONG iSolidColor;
     EXLATEOBJ exlo;

Modified: trunk/reactos/win32ss/gdi/eng/xlate.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/eng/xlate.c?rev=56429&r1=56428&r2=56429&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/eng/xlate.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/eng/xlate.c [iso-8859-1] Thu Apr 26 16:19:22 2012
@@ -49,10 +49,7 @@
 FASTCALL
 EXLATEOBJ_iXlateTable(PEXLATEOBJ pexlo, ULONG iColor)
 {
-    if (iColor >= pexlo->xlo.cEntries)
-    {
-        iColor %= pexlo->xlo.cEntries;
-    }
+    if (iColor >= pexlo->xlo.cEntries) return 0;
     return pexlo->xlo.pulXlate[iColor];
 }
 

Modified: trunk/reactos/win32ss/gdi/ntgdi/bitblt.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/bitblt.c?rev=56429&r1=56428&r2=56429&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/ntgdi/bitblt.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/ntgdi/bitblt.c [iso-8859-1] Thu Apr 26 16:19:22 
2012
@@ -16,6 +16,79 @@
 
 #define FIXUP_ROP(Rop) if(((Rop) & 0xFF000000) == 0) Rop = MAKEROP4((Rop), 
(Rop))
 #define ROP_TO_ROP4(Rop) ((Rop) >> 16)
+
+ULONG
+TranslateCOLORREF(PDC pdc, COLORREF *pcrColor)
+{
+    PPALETTE ppalDC, ppalSurface;
+    ULONG index, ulColor, iBitmapFormat;
+    COLORREF crColor = *pcrColor;
+    EXLATEOBJ exlo;
+
+    switch (crColor >> 24)
+    {
+        case 0x00: /* RGB color */
+            break;
+
+        case 0x01: /* PALETTEINDEX */
+            index = crColor & 0xFFFFFF;
+            ppalDC = pdc->dclevel.ppal;
+            if (index >= ppalDC->NumColors) index = 0;
+
+            /* Get the RGB value */
+            crColor = PALETTE_ulGetRGBColorFromIndex(ppalDC, index);
+            *pcrColor = crColor;
+            break;
+
+        case 0x02: /* PALETTERGB */
+
+            /* First find the nearest index in the dc palette */
+            ppalDC = pdc->dclevel.ppal;
+            index = PALETTE_ulGetNearestIndex(ppalDC, crColor & 0xFFFFFF);
+
+            /* Get the RGB value */
+            crColor = PALETTE_ulGetRGBColorFromIndex(ppalDC, index);
+            *pcrColor = crColor;
+            break;
+
+        case 0x10: /* DIBINDEX */
+            /* Mask the value to match the target bpp */
+            iBitmapFormat = pdc->dclevel.pSurface->SurfObj.iBitmapFormat;
+            if (iBitmapFormat == BMF_1BPP) index = crColor & 0x1;
+            else if (iBitmapFormat == BMF_4BPP) index = crColor & 0xf;
+            else if (iBitmapFormat == BMF_8BPP) index = crColor & 0xFF;
+            else if (iBitmapFormat == BMF_16BPP) index = crColor & 0xFFFF;
+            else index = crColor & 0xFFFFFF;
+
+            /* Translate the color to RGB for the caller */
+            ppalSurface = pdc->dclevel.pSurface->ppal;
+            if (index < ppalSurface->NumColors)
+                *pcrColor = PALETTE_ulGetRGBColorFromIndex(ppalSurface, index);
+            else
+                *pcrColor = 0;
+            return index;
+
+        default:
+            DPRINT("Unsupported color type %d passed\n", crColor >> 24);
+            return 0;
+    }
+
+    /* Initialize an XLATEOBJ from RGB to the target surface */
+    EXLATEOBJ_vInitialize(&exlo,
+                          &gpalRGB,
+                          pdc->dclevel.pSurface->ppal,
+                          0,
+                          pdc->pdcattr->crBackgroundClr,
+                          pdc->pdcattr->crForegroundClr);
+
+    /* Translate the color to the target format */
+    ulColor = XLATEOBJ_iXlate(&exlo.xlo, crColor);
+
+    /* Cleanup and return the RGB value */
+    EXLATEOBJ_vCleanup(&exlo);
+    return ulColor;
+}
+
 
 BOOL APIENTRY
 NtGdiAlphaBlend(
@@ -874,17 +947,17 @@
     _In_ INT y,
     _In_ INT cx,
     _In_ INT cy,
-    _In_ DWORD rop4)
+    _In_ DWORD dwRop)
 {
     BOOL bResult;
     PDC pdc;
 
     /* Mask away everything except foreground rop index */
-    rop4 = rop4 & 0x00FF0000;
-    rop4 |= rop4 << 8;
+    dwRop = dwRop & 0x00FF0000;
+    dwRop |= dwRop << 8;
 
     /* Check if the rop uses a source */
-    if (ROP_USES_SOURCE(rop4))
+    if (ROP_USES_SOURCE(dwRop))
     {
         /* This is not possible */
         return 0;
@@ -911,7 +984,7 @@
         DC_vUpdateFillBrush(pdc);
 
     /* Call the internal function */
-    bResult = IntPatBlt(pdc, x, y, cx, cy, rop4, &pdc->eboFill);
+    bResult = IntPatBlt(pdc, x, y, cx, cy, dwRop, &pdc->eboFill);
 
     /* Unlock the DC and return the result */
     DC_UnlockDc(pdc);
@@ -969,3 +1042,137 @@
 
     return Ret;
 }
+
+
+COLORREF
+APIENTRY
+NtGdiSetPixel(
+    _In_ HDC hdc,
+    _In_ INT x,
+    _In_ INT y,
+    _In_ COLORREF crColor)
+{
+    PDC pdc;
+    ULONG iOldColor, iSolidColor;
+    BOOL bResult;
+    PEBRUSHOBJ pebo;
+    ULONG ulDirty;
+
+    /* Lock the DC */
+    pdc = DC_LockDc(hdc);
+    if (!pdc)
+    {
+        EngSetLastError(ERROR_INVALID_HANDLE);
+        return -1;
+    }
+
+    /* Check if the DC has no surface (empty mem or info DC) */
+    if (pdc->dclevel.pSurface == NULL)
+    {
+        /* Fail! */
+        DC_UnlockDc(pdc);
+        return -1;
+    }
+
+    /* Translate the color to the target format and get the RGB value */
+    iSolidColor = TranslateCOLORREF(pdc, &crColor);
+
+    /* Use the DC's text brush, which is always a solid brush */
+    pebo = &pdc->eboText;
+
+    /* Save the old solid color and set the one for the pixel */
+    iOldColor = EBRUSHOBJ_iSetSolidColor(pebo, iSolidColor);
+
+    /* Save dirty flags and reset dirty text brush flag */
+    ulDirty = pdc->pdcattr->ulDirty_;
+    pdc->pdcattr->ulDirty_ &= ~DIRTY_TEXT;
+
+    /* Call the internal function */
+    bResult = IntPatBlt(pdc, x, y, 1, 1, PATCOPY, pebo);
+
+    /* Restore old text brush color and dirty flags */
+    EBRUSHOBJ_iSetSolidColor(pebo, iOldColor);
+    pdc->pdcattr->ulDirty_ = ulDirty;
+
+    /* Unlock the DC */
+    DC_UnlockDc(pdc);
+
+    /* Return the new RGB color or -1 on failure */
+    return bResult ? crColor : -1;
+}
+
+COLORREF
+APIENTRY
+NtGdiGetPixel(
+    _In_ HDC hdc,
+    _In_ INT x,
+    _In_ INT y)
+{
+    PDC pdc;
+    ULONG ulRGBColor;
+    BOOL bResult = FALSE;
+    POINTL ptlSrc;
+    PSURFACE psurfSrc, psurfDest;
+
+    /* Lock the DC */
+    pdc = DC_LockDc(hdc);
+    if (!pdc)
+    {
+        EngSetLastError(ERROR_INVALID_HANDLE);
+        return -1;
+    }
+
+    /* Check if the DC has no surface (empty mem or info DC) */
+    psurfSrc = pdc->dclevel.pSurface;
+    if (psurfSrc == NULL)
+    {
+        /* Fail! */
+        DC_UnlockDc(pdc);
+        return -1;
+    }
+
+    /* Get the logical coordinates */
+    ptlSrc.x = x;
+    ptlSrc.y = y;
+
+    /* Translate coordinates to device coordinates */
+    IntLPtoDP(pdc, &ptlSrc, 1);
+    ptlSrc.x += pdc->ptlDCOrig.x;
+    ptlSrc.y += pdc->ptlDCOrig.y;
+
+    /* Allocate a surface */
+    psurfDest = SURFACE_AllocSurface(STYPE_BITMAP, 1, 1, BMF_32BPP);
+    if (psurfDest)
+    {
+        /* Set the bitmap bits */
+        if (SURFACE_bSetBitmapBits(psurfDest, 0, 0, &ulRGBColor))
+        {
+            RECTL rclDest = {0, 0, 1, 1};
+            EXLATEOBJ exlo;
+
+            /* Translate from the source palette to RGB color */
+            EXLATEOBJ_vInitialize(&exlo, psurfSrc->ppal, &gpalRGB, 0, 0, 0);
+
+            /* Call the copy bits function */
+            bResult = IntEngCopyBits(&psurfDest->SurfObj,
+                                     &psurfSrc->SurfObj,
+                                     pdc->rosdc.CombinedClip,
+                                     &exlo.xlo,
+                                     &rclDest,
+                                     &ptlSrc);
+
+            /* Cleanup the XLATEOBJ */
+            EXLATEOBJ_vCleanup(&exlo);
+        }
+
+        /* Delete the surface */
+        GDIOBJ_vDeleteObject(&psurfDest->BaseObject);
+    }
+
+    /* Unlock the DC */
+    DC_UnlockDc(pdc);
+
+    /* Return the new RGB color or -1 on failure */
+    return bResult ? ulRGBColor : -1;
+}
+

Modified: trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c?rev=56429&r1=56428&r2=56429&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c [iso-8859-1] Thu Apr 26 16:19:22 
2012
@@ -385,103 +385,6 @@
     return Ret;
 }
 
-COLORREF APIENTRY
-NtGdiGetPixel(HDC hDC, INT XPos, INT YPos)
-{
-    PDC dc = NULL;
-    COLORREF Result = (COLORREF)CLR_INVALID; // Default to failure
-    BOOL bInRect = FALSE;
-    SURFACE *psurf;
-    SURFOBJ *pso;
-    EXLATEOBJ exlo;
-    HBITMAP hBmpTmp;
-
-    dc = DC_LockDc(hDC);
-
-    if (!dc)
-    {
-        EngSetLastError(ERROR_INVALID_HANDLE);
-        return Result;
-    }
-
-    if (dc->dctype == DC_TYPE_INFO)
-    {
-        DC_UnlockDc(dc);
-        return Result;
-    }
-
-    XPos += dc->ptlDCOrig.x;
-    YPos += dc->ptlDCOrig.y;
-    if ((dc->rosdc.CombinedClip == NULL) ||
-        (RECTL_bPointInRect(&dc->rosdc.CombinedClip->rclBounds, XPos, YPos)))
-    {
-        bInRect = TRUE;
-        psurf = dc->dclevel.pSurface;
-        if (psurf)
-        {
-            pso = &psurf->SurfObj;
-            EXLATEOBJ_vInitialize(&exlo, psurf->ppal, &gpalRGB, 0, 0xffffff, 
0);
-            // Check if this DC has a DIB behind it...
-            if (pso->pvScan0) // STYPE_BITMAP == pso->iType
-            {
-                ASSERT(pso->lDelta);
-                Result = XLATEOBJ_iXlate(&exlo.xlo,
-                                         
DibFunctionsForBitmapFormat[pso->iBitmapFormat].DIB_GetPixel(pso, XPos, YPos));
-            }
-
-            EXLATEOBJ_vCleanup(&exlo);
-        }
-    }
-    DC_UnlockDc(dc);
-
-    // If Result is still CLR_INVALID, then the "quick" method above didn't 
work
-    if (bInRect && Result == CLR_INVALID)
-    {
-        // FIXME: create a 1x1 32BPP DIB, and blit to it
-        HDC hDCTmp = NtGdiCreateCompatibleDC(hDC);
-        if (hDCTmp)
-        {
-            static const BITMAPINFOHEADER bih = { sizeof(BITMAPINFOHEADER), 1, 
1, 1, 32, BI_RGB, 0, 0, 0, 0, 0 };
-            BITMAPINFO bi;
-            RtlMoveMemory(&(bi.bmiHeader), &bih, sizeof(bih));
-            hBmpTmp = NtGdiCreateDIBitmapInternal(hDC,
-                                                  bi.bmiHeader.biWidth,
-                                                  bi.bmiHeader.biHeight,
-                                                  0,
-                                                  NULL,
-                                                  &bi,
-                                                  DIB_RGB_COLORS,
-                                                  bi.bmiHeader.biBitCount,
-                                                  bi.bmiHeader.biSizeImage,
-                                                  0,
-                                                  0);
-
-            //HBITMAP hBmpTmp = GreCreateBitmap(1, 1, 1, 32, NULL);
-            if (hBmpTmp)
-            {
-                HBITMAP hBmpOld = (HBITMAP)NtGdiSelectBitmap(hDCTmp, hBmpTmp);
-                if (hBmpOld)
-                {
-                    NtGdiBitBlt(hDCTmp, 0, 0, 1, 1, hDC, XPos, YPos, SRCCOPY, 
0, 0);
-                    NtGdiSelectBitmap(hDCTmp, hBmpOld);
-
-                    // Our bitmap is no longer selected, so we can access it's 
stuff...
-                    psurf = SURFACE_ShareLockSurface(hBmpTmp);
-                    if (psurf)
-                    {
-                        // Dont you need to convert something here?
-                        Result = *(COLORREF*)psurf->SurfObj.pvScan0;
-                        SURFACE_ShareUnlockSurface(psurf);
-                    }
-                }
-                GreDeleteObject(hBmpTmp);
-            }
-            NtGdiDeleteObjectApp(hDCTmp);
-        }
-    }
-
-    return Result;
-}
 
 VOID
 FASTCALL
@@ -652,116 +555,6 @@
 
     return Ret;
 }
-
-VOID IntHandleSpecialColorType(HDC hDC, COLORREF* Color)
-{
-    PDC pdc = NULL;
-    RGBQUAD quad;
-    PALETTEENTRY palEntry;
-    UINT index;
-
-    switch (*Color >> 24)
-    {
-        case 0x10: /* DIBINDEX */
-            if (IntGetDIBColorTable(hDC, LOWORD(*Color), 1, &quad) == 1)
-            {
-                *Color = RGB(quad.rgbRed, quad.rgbGreen, quad.rgbBlue);
-            }
-            else
-            {
-                /* Out of color table bounds - use black */
-                *Color = RGB(0, 0, 0);
-            }
-            break;
-        case 0x02: /* PALETTERGB */
-            pdc = DC_LockDc(hDC);
-            if (pdc->dclevel.hpal != NtGdiGetStockObject(DEFAULT_PALETTE))
-            {
-                index = NtGdiGetNearestPaletteIndex(pdc->dclevel.hpal, *Color);
-                IntGetPaletteEntries(pdc->dclevel.hpal, index, 1, &palEntry);
-                *Color = RGB(palEntry.peRed, palEntry.peGreen, 
palEntry.peBlue);
-            }
-            else
-            {
-                /* Use the pure color */
-                *Color = *Color & 0x00FFFFFF;
-            }
-            DC_UnlockDc(pdc);
-            break;
-        case 0x01: /* PALETTEINDEX */
-            pdc = DC_LockDc(hDC);
-            if (IntGetPaletteEntries(pdc->dclevel.hpal, LOWORD(*Color), 1, 
&palEntry) == 1)
-            {
-                *Color = RGB(palEntry.peRed, palEntry.peGreen, 
palEntry.peBlue);
-            }
-            else
-            {
-                /* Index does not exist, use zero index */
-                IntGetPaletteEntries(pdc->dclevel.hpal, 0, 1, &palEntry);
-                *Color = RGB(palEntry.peRed, palEntry.peGreen, 
palEntry.peBlue);
-            }
-            DC_UnlockDc(pdc);
-            break;
-        default:
-            DPRINT("Unsupported color type %d passed\n", *Color >> 24);
-            break;
-    }
-}
-
-BOOL APIENTRY
-GdiSetPixelV(
-    HDC hDC,
-    INT X,
-    INT Y,
-    COLORREF Color)
-{
-    HBRUSH hBrush;
-    HGDIOBJ OldBrush;
-
-    if ((Color & 0xFF000000) != 0)
-    {
-        IntHandleSpecialColorType(hDC, &Color);
-    }
-
-    hBrush = NtGdiCreateSolidBrush(Color, NULL);
-    if (hBrush == NULL)
-        return FALSE;
-
-    OldBrush = NtGdiSelectBrush(hDC, hBrush);
-    if (OldBrush == NULL)
-    {
-        GreDeleteObject(hBrush);
-        return FALSE;
-    }
-
-    NtGdiPatBlt(hDC, X, Y, 1, 1, PATCOPY);
-    NtGdiSelectBrush(hDC, OldBrush);
-    GreDeleteObject(hBrush);
-
-    return TRUE;
-}
-
-COLORREF APIENTRY
-NtGdiSetPixel(
-    HDC hDC,
-    INT X,
-    INT Y,
-    COLORREF Color)
-{
-    DPRINT("0 NtGdiSetPixel X %ld Y %ld C %ld\n", X, Y, Color);
-
-    if (GdiSetPixelV(hDC,X,Y,Color))
-    {
-        Color = NtGdiGetPixel(hDC,X,Y);
-        DPRINT("1 NtGdiSetPixel X %ld Y %ld C %ld\n", X, Y, Color);
-        return Color;
-    }
-
-    Color = (COLORREF)CLR_INVALID;
-    DPRINT("2 NtGdiSetPixel X %ld Y %ld C %ld\n", X, Y, Color);
-    return Color;
-}
-
 
 /*  Internal Functions  */
 

Modified: trunk/reactos/win32ss/gdi/ntgdi/brush.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/brush.h?rev=56429&r1=56428&r2=56429&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/ntgdi/brush.h [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/ntgdi/brush.h [iso-8859-1] Thu Apr 26 16:19:22 
2012
@@ -104,7 +104,7 @@
 
 VOID
 FASTCALL
-EBRUSHOBJ_vSetSolidBrushColor(EBRUSHOBJ *pebo, COLORREF crColor);
+EBRUSHOBJ_vSetSolidRGBColor(EBRUSHOBJ *pebo, COLORREF crColor);
 
 VOID
 NTAPI
@@ -129,6 +129,15 @@
 #define BRUSHOBJ_psoPattern(pbo) \
     EBRUSHOBJ_psoPattern(CONTAINING_RECORD(pbo, EBRUSHOBJ, BrushObject))
 
+ULONG
+FORCEINLINE
+EBRUSHOBJ_iSetSolidColor(EBRUSHOBJ *pebo, ULONG iSolidColor)
+{
+    ULONG iOldColor = pebo->BrushObject.iSolidColor;
+    pebo->BrushObject.iSolidColor = iSolidColor;
+    return iOldColor;
+}
+
 BOOL FASTCALL IntGdiSetBrushOwner(PBRUSH,DWORD);
 BOOL FASTCALL GreSetBrushOwner(HBRUSH,DWORD);
 

Modified: trunk/reactos/win32ss/gdi/ntgdi/dcobjs.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/dcobjs.c?rev=56429&r1=56428&r2=56429&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/ntgdi/dcobjs.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/ntgdi/dcobjs.c [iso-8859-1] Thu Apr 26 16:19:22 
2012
@@ -51,7 +51,7 @@
     {
         /* ROS HACK, should use surf xlate */
         /* Update the eboFill's solid color */
-        EBRUSHOBJ_vSetSolidBrushColor(&pdc->eboFill, pdcattr->crPenClr);
+        EBRUSHOBJ_vSetSolidRGBColor(&pdc->eboFill, pdcattr->crPenClr);
     }
 
     /* Clear flags */
@@ -97,7 +97,7 @@
     if (pdcattr->hpen == StockObjects[DC_PEN])
     {
         /* Update the eboLine's solid color */
-        EBRUSHOBJ_vSetSolidBrushColor(&pdc->eboLine, pdcattr->crPenClr);
+        EBRUSHOBJ_vSetSolidRGBColor(&pdc->eboLine, pdcattr->crPenClr);
     }
 
     /* Clear flags */
@@ -116,7 +116,7 @@
         EBRUSHOBJ_vUpdate(&pdc->eboText, pbrDefaultBrush, pdc);
 
     /* Update the eboText's solid color */
-    EBRUSHOBJ_vSetSolidBrushColor(&pdc->eboText, pdcattr->crForegroundClr);
+    EBRUSHOBJ_vSetSolidRGBColor(&pdc->eboText, pdcattr->crForegroundClr);
 
     /* Clear flag */
     pdcattr->ulDirty_ &= ~DIRTY_TEXT;
@@ -132,7 +132,7 @@
         EBRUSHOBJ_vUpdate(&pdc->eboBackground, pbrDefaultBrush, pdc);
 
     /* Update the eboBackground's solid color */
-    EBRUSHOBJ_vSetSolidBrushColor(&pdc->eboBackground, 
pdcattr->crBackgroundClr);
+    EBRUSHOBJ_vSetSolidRGBColor(&pdc->eboBackground, pdcattr->crBackgroundClr);
 
     /* Clear flag */
     pdcattr->ulDirty_ &= ~DIRTY_BACKGROUND;

Copied: trunk/reactos/win32ss/gdi/ntgdi/patblt.c (from r56411, 
trunk/reactos/win32ss/gdi/ntgdi/bitblt.c)
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/patblt.c?p2=trunk/reactos/win32ss/gdi/ntgdi/patblt.c&p1=trunk/reactos/win32ss/gdi/ntgdi/bitblt.c&r1=56411&r2=56429&rev=56429&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/ntgdi/bitblt.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/ntgdi/patblt.c [iso-8859-1] Thu Apr 26 16:19:22 
2012
@@ -885,8 +885,6 @@
         return NtGdiMaskBlt(hDC, XLeft, YLeft, Width, Height, 
0,0,0,0,0,0,ROP,0);
     }
 
-if ((XLeft == 0) && (YLeft == 0) && (Width == 592) && (Height == 362)) 
__debugbreak();
-
     dc = DC_LockDc(hDC);
     if (dc == NULL)
     {


Reply via email to