Author: tkreuzer
Date: Mon Apr 23 21:22:12 2012
New Revision: 56401

URL: http://svn.reactos.org/svn/reactos?rev=56401&view=rev
Log:
[GDI32/WIN32K]
Fix some regressions from previous commit

Modified:
    trunk/reactos/win32ss/gdi/gdi32/objects/coord.c
    trunk/reactos/win32ss/gdi/gdi32/objects/dc.c

Modified: trunk/reactos/win32ss/gdi/gdi32/objects/coord.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/coord.c?rev=56401&r1=56400&r2=56401&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/gdi32/objects/coord.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/gdi32/objects/coord.c [iso-8859-1] Mon Apr 23 
21:22:12 2012
@@ -479,7 +479,8 @@
                int nYExtent,
                LPSIZE lpSize)
 {
-    PDC_ATTR Dc_Attr;
+    PDC_ATTR pdcattr;
+
 #if 0
     if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)
     {
@@ -500,39 +501,44 @@
         }
     }
 #endif
-    if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) 
&Dc_Attr)) return FALSE;
+    pdcattr = GdiGetDcAttr(hdc);
+    if (!pdcattr)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return 0;
+    }
 
     if (lpSize)
     {
-        lpSize->cx = Dc_Attr->szlWindowExt.cx;
-        lpSize->cy = Dc_Attr->szlWindowExt.cy;
-        if (Dc_Attr->dwLayout & LAYOUT_RTL) lpSize->cx = -lpSize->cx;
-    }
-
-    if (Dc_Attr->dwLayout & LAYOUT_RTL)
+        lpSize->cx = pdcattr->szlWindowExt.cx;
+        lpSize->cy = pdcattr->szlWindowExt.cy;
+        if (pdcattr->dwLayout & LAYOUT_RTL) lpSize->cx = -lpSize->cx;
+    }
+
+    if (pdcattr->dwLayout & LAYOUT_RTL)
     {
         NtGdiMirrorWindowOrg(hdc);
-        Dc_Attr->flXform |= 
(PAGE_EXTENTS_CHANGED|INVALIDATE_ATTRIBUTES|DEVICE_TO_WORLD_INVALID);
-    }
-    else if ((Dc_Attr->iMapMode == MM_ISOTROPIC) || (Dc_Attr->iMapMode == 
MM_ANISOTROPIC))
-    {
-        if ((Dc_Attr->szlWindowExt.cx == nXExtent) && 
(Dc_Attr->szlWindowExt.cy == nYExtent))
+        pdcattr->flXform |= 
(PAGE_EXTENTS_CHANGED|INVALIDATE_ATTRIBUTES|DEVICE_TO_WORLD_INVALID);
+    }
+    else if ((pdcattr->iMapMode == MM_ISOTROPIC) || (pdcattr->iMapMode == 
MM_ANISOTROPIC))
+    {
+        if ((pdcattr->szlWindowExt.cx == nXExtent) && 
(pdcattr->szlWindowExt.cy == nYExtent))
             return TRUE;
 
         if ((!nXExtent) || (!nYExtent)) return FALSE;
 
         if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
         {
-            if (Dc_Attr->ulDirty_ & DC_FONTTEXT_DIRTY)
+            if (pdcattr->ulDirty_ & DC_FONTTEXT_DIRTY)
             {
                 NtGdiFlush(); // Sync up Dc_Attr from Kernel space.
-                Dc_Attr->ulDirty_ &= ~(DC_MODE_DIRTY|DC_FONTTEXT_DIRTY);
-            }
-        }
-        Dc_Attr->szlWindowExt.cx = nXExtent;
-        Dc_Attr->szlWindowExt.cy = nYExtent;
-        if (Dc_Attr->dwLayout & LAYOUT_RTL) NtGdiMirrorWindowOrg(hdc);
-        Dc_Attr->flXform |= 
(PAGE_EXTENTS_CHANGED|INVALIDATE_ATTRIBUTES|DEVICE_TO_WORLD_INVALID);
+                pdcattr->ulDirty_ &= ~(DC_MODE_DIRTY|DC_FONTTEXT_DIRTY);
+            }
+        }
+        pdcattr->szlWindowExt.cx = nXExtent;
+        pdcattr->szlWindowExt.cy = nYExtent;
+        if (pdcattr->dwLayout & LAYOUT_RTL) NtGdiMirrorWindowOrg(hdc);
+        pdcattr->flXform |= 
(PAGE_EXTENTS_CHANGED|INVALIDATE_ATTRIBUTES|DEVICE_TO_WORLD_INVALID);
     }
     return TRUE; // Return TRUE.
 }

Modified: trunk/reactos/win32ss/gdi/gdi32/objects/dc.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/dc.c?rev=56401&r1=56400&r2=56401&view=diff
==============================================================================
--- trunk/reactos/win32ss/gdi/gdi32/objects/dc.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/gdi32/objects/dc.c [iso-8859-1] Mon Apr 23 
21:22:12 2012
@@ -909,9 +909,6 @@
                 SetLastError(ERROR_INVALID_PARAMETER);
             return cbResult;
 
-        case GDI_OBJECT_TYPE_METADC:
-            return 0;
-
         case GDI_OBJECT_TYPE_DC:
         case GDI_OBJECT_TYPE_REGION:
         case GDI_OBJECT_TYPE_EMF:
@@ -1011,25 +1008,30 @@
 COLORREF
 WINAPI
 SetDCPenColor(
-    HDC hdc,
-    COLORREF crColor
-)
-{
-    PDC_ATTR Dc_Attr;
-    COLORREF OldColor = CLR_INVALID;
-
-    if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) 
&Dc_Attr)) return OldColor;
-    else
-    {
-        OldColor = (COLORREF) Dc_Attr->ulPenClr;
-        Dc_Attr->ulPenClr = (ULONG) crColor;
-
-        if ( Dc_Attr->crPenClr != crColor )
-        {
-            Dc_Attr->ulDirty_ |= DIRTY_LINE;
-            Dc_Attr->crPenClr = crColor;
-        }
-    }
+    _In_ HDC hdc,
+    _In_ COLORREF crColor)
+{
+    PDC_ATTR pdcattr;
+    COLORREF OldColor;
+
+    /* Get the dc attribute */
+    pdcattr = GdiGetDcAttr(hdc);
+    if (!pdcattr)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return CLR_INVALID;
+    }
+
+    /* Get old color and store the new */
+    OldColor = (COLORREF)pdcattr->ulPenClr;
+    pdcattr->ulPenClr = (ULONG)crColor;
+
+    if (pdcattr->crPenClr != crColor)
+    {
+        pdcattr->ulDirty_ |= DIRTY_LINE;
+        pdcattr->crPenClr = crColor;
+    }
+
     return OldColor;
 }
 
@@ -1438,129 +1440,135 @@
 INT
 WINAPI
 SetMapMode(
-    HDC hdc,
-    INT Mode
-)
+    _In_ HDC hdc,
+    _In_ INT iMode)
+{
+    PDC_ATTR pdcattr;
+
+    pdcattr = GdiGetDcAttr(hdc);
+    if (!pdcattr)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return 0;
+    }
+
+#if 0
+    if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
+    {
+        if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
+            return MFDRV_SetMapMode(hdc, iMode);
+        else
+        {
+            SetLastError(ERROR_INVALID_HANDLE);
+            return 0;
+        }
+#endif
+    // Force change if Isotropic is set for recompute.
+    if ((iMode != pdcattr->iMapMode) || (iMode == MM_ISOTROPIC))
+    {
+        pdcattr->ulDirty_ &= ~SLOW_WIDTHS;
+        return GetAndSetDCDWord( hdc, GdiGetSetMapMode, iMode, 0, 0, 0 );
+    }
+    return pdcattr->iMapMode;
+}
+
+/*
+ * @implemented
+ *
+ */
+int
+WINAPI
+GetStretchBltMode(HDC hdc)
 {
     PDC_ATTR Dc_Attr;
     if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) 
&Dc_Attr)) return 0;
+    return Dc_Attr->lStretchBltMode;
+}
+
+/*
+ * @implemented
+ */
+int
+WINAPI
+SetStretchBltMode(HDC hdc, int iStretchMode)
+{
+    INT oSMode;
+    PDC_ATTR Dc_Attr;
 #if 0
-    if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
-    {
-        if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
-            return MFDRV_SetMapMode(hdc, Mode);
+    if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)
+    {
+        if (GDI_HANDLE_GET_TYPE(hdc) == GDI_OBJECT_TYPE_METADC)
+            return MFDRV_SetStretchBltMode( hdc, iStretchMode);
         else
         {
-            SetLastError(ERROR_INVALID_HANDLE);
-            return 0;
-        }
+            PLDC pLDC = GdiGetLDC(hdc);
+            if ( !pLDC )
+            {
+                SetLastError(ERROR_INVALID_HANDLE);
+                return 0;
+            }
+            if (pLDC->iType == LDC_EMFLDC)
+            {
+                return EMFDRV_SetStretchBltMode( hdc, iStretchMode);
+            }
+        }
+    }
 #endif
-        // Force change if Isotropic is set for recompute.
-        if ((Mode != Dc_Attr->iMapMode) || (Mode == MM_ISOTROPIC))
-        {
-            Dc_Attr->ulDirty_ &= ~SLOW_WIDTHS;
-            return GetAndSetDCDWord( hdc, GdiGetSetMapMode, Mode, 0, 0, 0 );
-        }
-        return Dc_Attr->iMapMode;
-    }
-
-    /*
-     * @implemented
-     *
-     */
-    int
-    WINAPI
-    GetStretchBltMode(HDC hdc)
-    {
-        PDC_ATTR Dc_Attr;
-        if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) 
&Dc_Attr)) return 0;
-        return Dc_Attr->lStretchBltMode;
-    }
-
-    /*
-     * @implemented
-     */
-    int
-    WINAPI
-    SetStretchBltMode(HDC hdc, int iStretchMode)
-    {
-        INT oSMode;
-        PDC_ATTR Dc_Attr;
-#if 0
-        if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)
-        {
-            if (GDI_HANDLE_GET_TYPE(hdc) == GDI_OBJECT_TYPE_METADC)
-                return MFDRV_SetStretchBltMode( hdc, iStretchMode);
-            else
-            {
-                PLDC pLDC = GdiGetLDC(hdc);
-                if ( !pLDC )
-                {
-                    SetLastError(ERROR_INVALID_HANDLE);
-                    return 0;
-                }
-                if (pLDC->iType == LDC_EMFLDC)
-                {
-                    return EMFDRV_SetStretchBltMode( hdc, iStretchMode);
-                }
-            }
-        }
-#endif
-        if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) 
&Dc_Attr)) return 0;
-
-        oSMode = Dc_Attr->lStretchBltMode;
-        Dc_Attr->lStretchBltMode = iStretchMode;
-
-        // Wine returns an error here. We set the default.
-        if ((iStretchMode <= 0) || (iStretchMode > MAXSTRETCHBLTMODE)) 
iStretchMode = WHITEONBLACK;
-
-        Dc_Attr->jStretchBltMode = iStretchMode;
-
-        return oSMode;
-    }
-
-    /*
-     * @implemented
-     */
-    HFONT
-    WINAPI
-    GetHFONT(HDC hdc)
-    {
-        PDC_ATTR Dc_Attr;
-        if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) 
&Dc_Attr)) return NULL;
-        return Dc_Attr->hlfntNew;
-    }
-
-
-    /*
-     * @implemented
-     *
-     */
-    HGDIOBJ
-    WINAPI
-    SelectObject(HDC hDC,
-                 HGDIOBJ hGdiObj)
-    {
-        PDC_ATTR pDc_Attr;
-        HGDIOBJ hOldObj = NULL;
-        UINT uType;
-
-        if(!GdiGetHandleUserData(hDC, GDI_OBJECT_TYPE_DC, (PVOID)&pDc_Attr))
-        {
-            SetLastError(ERROR_INVALID_HANDLE);
-            return NULL;
-        }
-
-        hGdiObj = GdiFixUpHandle(hGdiObj);
-        if (!GdiIsHandleValid(hGdiObj))
-        {
-            return NULL;
-        }
-
-        uType = GDI_HANDLE_GET_TYPE(hGdiObj);
-
-        switch (uType)
-        {
+    if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) 
&Dc_Attr)) return 0;
+
+    oSMode = Dc_Attr->lStretchBltMode;
+    Dc_Attr->lStretchBltMode = iStretchMode;
+
+    // Wine returns an error here. We set the default.
+    if ((iStretchMode <= 0) || (iStretchMode > MAXSTRETCHBLTMODE)) 
iStretchMode = WHITEONBLACK;
+
+    Dc_Attr->jStretchBltMode = iStretchMode;
+
+    return oSMode;
+}
+
+/*
+ * @implemented
+ */
+HFONT
+WINAPI
+GetHFONT(HDC hdc)
+{
+    PDC_ATTR Dc_Attr;
+    if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) 
&Dc_Attr)) return NULL;
+    return Dc_Attr->hlfntNew;
+}
+
+
+/*
+ * @implemented
+ *
+ */
+HGDIOBJ
+WINAPI
+SelectObject(HDC hDC,
+             HGDIOBJ hGdiObj)
+{
+    PDC_ATTR pDc_Attr;
+    HGDIOBJ hOldObj = NULL;
+    UINT uType;
+
+    if(!GdiGetHandleUserData(hDC, GDI_OBJECT_TYPE_DC, (PVOID)&pDc_Attr))
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return NULL;
+    }
+
+    hGdiObj = GdiFixUpHandle(hGdiObj);
+    if (!GdiIsHandleValid(hGdiObj))
+    {
+        return NULL;
+    }
+
+    uType = GDI_HANDLE_GET_TYPE(hGdiObj);
+
+    switch (uType)
+    {
         case GDI_OBJECT_TYPE_REGION:
             return (HGDIOBJ)ExtSelectClipRgn(hDC, hGdiObj, RGN_COPY);
 
@@ -1618,10 +1626,10 @@
             return NULL;
 
         case GDI_OBJECT_TYPE_PALETTE:
+            SetLastError(ERROR_INVALID_FUNCTION);
         default:
-            SetLastError(ERROR_INVALID_FUNCTION);
             return NULL;
-        }
-
-        return NULL;
-    }
+    }
+
+    return NULL;
+}


Reply via email to