Alexandre Julliard : gdi32: Pass a HDC instead of a DC pointer to internal path functions.

Alexandre Julliard julliard at winehq.org
Fri Oct 28 12:48:38 CDT 2011


Module: wine
Branch: master
Commit: fbafa45e84cc9451d7c46d0b1fcc65e1c2e7b4ae
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fbafa45e84cc9451d7c46d0b1fcc65e1c2e7b4ae

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Oct 26 23:15:10 2011 +0200

gdi32: Pass a HDC instead of a DC pointer to internal path functions.

---

 dlls/gdi32/path.c |  114 ++++++++++++++++++++++++++--------------------------
 1 files changed, 57 insertions(+), 57 deletions(-)

diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c
index 9689e67..6d1eb9d 100644
--- a/dlls/gdi32/path.c
+++ b/dlls/gdi32/path.c
@@ -683,7 +683,7 @@ HRGN WINAPI PathToRegion(HDC hdc)
    return hrgnRval;
 }
 
-static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
+static BOOL PATH_FillPath( HDC hdc, GdiPath *pPath )
 {
    INT   mapMode, graphicsMode;
    SIZE  ptViewportExt, ptWindowExt;
@@ -692,7 +692,7 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
    HRGN  hrgn;
 
    /* Construct a region from the path and fill it */
-   if(PATH_PathToRegion(pPath, dc->polyFillMode, &hrgn))
+   if(PATH_PathToRegion(pPath, GetPolyFillMode(hdc), &hrgn))
    {
       /* Since PaintRgn interprets the region as being in logical coordinates
        * but the points we store for the path are already in device
@@ -703,11 +703,11 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
        */
 
       /* Save the information about the old mapping mode */
-      mapMode=GetMapMode(dc->hSelf);
-      GetViewportExtEx(dc->hSelf, &ptViewportExt);
-      GetViewportOrgEx(dc->hSelf, &ptViewportOrg);
-      GetWindowExtEx(dc->hSelf, &ptWindowExt);
-      GetWindowOrgEx(dc->hSelf, &ptWindowOrg);
+      mapMode=GetMapMode(hdc);
+      GetViewportExtEx(hdc, &ptViewportExt);
+      GetViewportOrgEx(hdc, &ptViewportOrg);
+      GetWindowExtEx(hdc, &ptWindowExt);
+      GetWindowOrgEx(hdc, &ptWindowOrg);
 
       /* Save world transform
        * NB: The Windows documentation on world transforms would lead one to
@@ -715,32 +715,32 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
        * tests show that resetting the graphics mode to GM_COMPATIBLE does
        * not reset the world transform.
        */
-      GetWorldTransform(dc->hSelf, &xform);
+      GetWorldTransform(hdc, &xform);
 
       /* Set MM_TEXT */
-      SetMapMode(dc->hSelf, MM_TEXT);
-      SetViewportOrgEx(dc->hSelf, 0, 0, NULL);
-      SetWindowOrgEx(dc->hSelf, 0, 0, NULL);
-      graphicsMode=GetGraphicsMode(dc->hSelf);
-      SetGraphicsMode(dc->hSelf, GM_ADVANCED);
-      ModifyWorldTransform(dc->hSelf, &xform, MWT_IDENTITY);
-      SetGraphicsMode(dc->hSelf, graphicsMode);
+      SetMapMode(hdc, MM_TEXT);
+      SetViewportOrgEx(hdc, 0, 0, NULL);
+      SetWindowOrgEx(hdc, 0, 0, NULL);
+      graphicsMode=GetGraphicsMode(hdc);
+      SetGraphicsMode(hdc, GM_ADVANCED);
+      ModifyWorldTransform(hdc, &xform, MWT_IDENTITY);
+      SetGraphicsMode(hdc, graphicsMode);
 
       /* Paint the region */
-      PaintRgn(dc->hSelf, hrgn);
+      PaintRgn(hdc, hrgn);
       DeleteObject(hrgn);
       /* Restore the old mapping mode */
-      SetMapMode(dc->hSelf, mapMode);
-      SetViewportExtEx(dc->hSelf, ptViewportExt.cx, ptViewportExt.cy, NULL);
-      SetViewportOrgEx(dc->hSelf, ptViewportOrg.x, ptViewportOrg.y, NULL);
-      SetWindowExtEx(dc->hSelf, ptWindowExt.cx, ptWindowExt.cy, NULL);
-      SetWindowOrgEx(dc->hSelf, ptWindowOrg.x, ptWindowOrg.y, NULL);
+      SetMapMode(hdc, mapMode);
+      SetViewportExtEx(hdc, ptViewportExt.cx, ptViewportExt.cy, NULL);
+      SetViewportOrgEx(hdc, ptViewportOrg.x, ptViewportOrg.y, NULL);
+      SetWindowExtEx(hdc, ptWindowExt.cx, ptWindowExt.cy, NULL);
+      SetWindowOrgEx(hdc, ptWindowOrg.x, ptWindowOrg.y, NULL);
 
       /* Go to GM_ADVANCED temporarily to restore the world transform */
-      graphicsMode=GetGraphicsMode(dc->hSelf);
-      SetGraphicsMode(dc->hSelf, GM_ADVANCED);
-      SetWorldTransform(dc->hSelf, &xform);
-      SetGraphicsMode(dc->hSelf, graphicsMode);
+      graphicsMode=GetGraphicsMode(hdc);
+      SetGraphicsMode(hdc, GM_ADVANCED);
+      SetWorldTransform(hdc, &xform);
+      SetGraphicsMode(hdc, graphicsMode);
       return TRUE;
    }
    return FALSE;
@@ -1630,7 +1630,7 @@ BOOL WINAPI FlattenPath(HDC hdc)
 }
 
 
-static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
+static BOOL PATH_StrokePath( HDC hdc, GdiPath *pPath )
 {
     INT i, nLinePts, nAlloc;
     POINT *pLinePts;
@@ -1641,21 +1641,21 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
     BOOL ret = TRUE;
 
     /* Save the mapping mode info */
-    mapMode=GetMapMode(dc->hSelf);
-    GetViewportExtEx(dc->hSelf, &szViewportExt);
-    GetViewportOrgEx(dc->hSelf, &ptViewportOrg);
-    GetWindowExtEx(dc->hSelf, &szWindowExt);
-    GetWindowOrgEx(dc->hSelf, &ptWindowOrg);
-    GetWorldTransform(dc->hSelf, &xform);
+    mapMode=GetMapMode(hdc);
+    GetViewportExtEx(hdc, &szViewportExt);
+    GetViewportOrgEx(hdc, &ptViewportOrg);
+    GetWindowExtEx(hdc, &szWindowExt);
+    GetWindowOrgEx(hdc, &ptWindowOrg);
+    GetWorldTransform(hdc, &xform);
 
     /* Set MM_TEXT */
-    SetMapMode(dc->hSelf, MM_TEXT);
-    SetViewportOrgEx(dc->hSelf, 0, 0, NULL);
-    SetWindowOrgEx(dc->hSelf, 0, 0, NULL);
-    graphicsMode=GetGraphicsMode(dc->hSelf);
-    SetGraphicsMode(dc->hSelf, GM_ADVANCED);
-    ModifyWorldTransform(dc->hSelf, &xform, MWT_IDENTITY);
-    SetGraphicsMode(dc->hSelf, graphicsMode);
+    SetMapMode(hdc, MM_TEXT);
+    SetViewportOrgEx(hdc, 0, 0, NULL);
+    SetWindowOrgEx(hdc, 0, 0, NULL);
+    graphicsMode=GetGraphicsMode(hdc);
+    SetGraphicsMode(hdc, GM_ADVANCED);
+    ModifyWorldTransform(hdc, &xform, MWT_IDENTITY);
+    SetGraphicsMode(hdc, graphicsMode);
 
     /* Allocate enough memory for the worst case without beziers (one PT_MOVETO
      * and the rest PT_LINETO with PT_CLOSEFIGURE at the end) plus some buffer 
@@ -1678,7 +1678,7 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
             TRACE("Got PT_MOVETO (%d, %d)\n",
 		  pPath->pPoints[i].x, pPath->pPoints[i].y);
 	    if(nLinePts >= 2)
-	        Polyline(dc->hSelf, pLinePts, nLinePts);
+	        Polyline(hdc, pLinePts, nLinePts);
 	    nLinePts = 0;
 	    pLinePts[nLinePts++] = pPath->pPoints[i];
 	    break;
@@ -1724,23 +1724,23 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
 	    pLinePts[nLinePts++] = pLinePts[0];
     }
     if(nLinePts >= 2)
-        Polyline(dc->hSelf, pLinePts, nLinePts);
+        Polyline(hdc, pLinePts, nLinePts);
 
  end:
     HeapFree(GetProcessHeap(), 0, pLinePts);
 
     /* Restore the old mapping mode */
-    SetMapMode(dc->hSelf, mapMode);
-    SetWindowExtEx(dc->hSelf, szWindowExt.cx, szWindowExt.cy, NULL);
-    SetWindowOrgEx(dc->hSelf, ptWindowOrg.x, ptWindowOrg.y, NULL);
-    SetViewportExtEx(dc->hSelf, szViewportExt.cx, szViewportExt.cy, NULL);
-    SetViewportOrgEx(dc->hSelf, ptViewportOrg.x, ptViewportOrg.y, NULL);
+    SetMapMode(hdc, mapMode);
+    SetWindowExtEx(hdc, szWindowExt.cx, szWindowExt.cy, NULL);
+    SetWindowOrgEx(hdc, ptWindowOrg.x, ptWindowOrg.y, NULL);
+    SetViewportExtEx(hdc, szViewportExt.cx, szViewportExt.cy, NULL);
+    SetViewportOrgEx(hdc, ptViewportOrg.x, ptViewportOrg.y, NULL);
 
     /* Go to GM_ADVANCED temporarily to restore the world transform */
-    graphicsMode=GetGraphicsMode(dc->hSelf);
-    SetGraphicsMode(dc->hSelf, GM_ADVANCED);
-    SetWorldTransform(dc->hSelf, &xform);
-    SetGraphicsMode(dc->hSelf, graphicsMode);
+    graphicsMode=GetGraphicsMode(hdc);
+    SetGraphicsMode(hdc, GM_ADVANCED);
+    SetWorldTransform(hdc, &xform);
+    SetGraphicsMode(hdc, graphicsMode);
 
     /* If we've moved the current point then get its new position
        which will be in device (MM_TEXT) co-ords, convert it to
@@ -1750,9 +1750,9 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
     */
     if(i > 0) {
         POINT pt;
-        GetCurrentPositionEx(dc->hSelf, &pt);
-        DPtoLP(dc->hSelf, &pt, 1);
-        MoveToEx(dc->hSelf, pt.x, pt.y, NULL);
+        GetCurrentPositionEx(hdc, &pt);
+        DPtoLP(hdc, &pt, 1);
+        MoveToEx(hdc, pt.x, pt.y, NULL);
     }
 
     return ret;
@@ -2207,7 +2207,7 @@ BOOL nulldrv_FillPath( PHYSDEV dev )
         SetLastError( ERROR_CAN_NOT_COMPLETE );
         return FALSE;
     }
-    if (!PATH_FillPath( dc, &dc->path )) return FALSE;
+    if (!PATH_FillPath( dev->hdc, &dc->path )) return FALSE;
     /* FIXME: Should the path be emptied even if conversion failed? */
     PATH_EmptyPath( &dc->path );
     return TRUE;
@@ -2222,8 +2222,8 @@ BOOL nulldrv_StrokeAndFillPath( PHYSDEV dev )
         SetLastError( ERROR_CAN_NOT_COMPLETE );
         return FALSE;
     }
-    if (!PATH_FillPath( dc, &dc->path )) return FALSE;
-    if (!PATH_StrokePath( dc, &dc->path )) return FALSE;
+    if (!PATH_FillPath( dev->hdc, &dc->path )) return FALSE;
+    if (!PATH_StrokePath( dev->hdc, &dc->path )) return FALSE;
     PATH_EmptyPath( &dc->path );
     return TRUE;
 }
@@ -2237,7 +2237,7 @@ BOOL nulldrv_StrokePath( PHYSDEV dev )
         SetLastError( ERROR_CAN_NOT_COMPLETE );
         return FALSE;
     }
-    if (!PATH_StrokePath( dc, &dc->path )) return FALSE;
+    if (!PATH_StrokePath( dev->hdc, &dc->path )) return FALSE;
     PATH_EmptyPath( &dc->path );
     return TRUE;
 }




More information about the wine-cvs mailing list