[PATCH v2 04/11] gdi32: Pass a DC pointer to PATH_CheckCorners().

Huw Davies huw at codeweavers.com
Fri Jul 29 09:09:29 CDT 2016


Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/gdi32/path.c | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c
index 24a9436..015a059 100644
--- a/dlls/gdi32/path.c
+++ b/dlls/gdi32/path.c
@@ -362,7 +362,7 @@ static HRGN path_to_region( const struct gdi_path *path, int mode )
  *
  * Helper function for RoundRect() and Rectangle()
  */
-static BOOL PATH_CheckCorners( HDC hdc, POINT corners[], INT x1, INT y1, INT x2, INT y2 )
+static BOOL PATH_CheckCorners( DC *dc, POINT corners[], INT x1, INT y1, INT x2, INT y2 )
 {
     INT temp;
 
@@ -371,7 +371,7 @@ static BOOL PATH_CheckCorners( HDC hdc, POINT corners[], INT x1, INT y1, INT x2,
     corners[0].y=y1;
     corners[1].x=x2;
     corners[1].y=y2;
-    LPtoDP( hdc, corners, 2 );
+    lp_to_dp( dc, corners, 2 );
 
     /* Make sure first corner is top left and second corner is bottom right */
     if(corners[0].x>corners[1].x)
@@ -388,7 +388,7 @@ static BOOL PATH_CheckCorners( HDC hdc, POINT corners[], INT x1, INT y1, INT x2,
     }
 
     /* In GM_COMPATIBLE, don't include bottom and right edges */
-    if (GetGraphicsMode( hdc ) == GM_COMPATIBLE)
+    if (dc->GraphicsMode == GM_COMPATIBLE)
     {
         if (corners[0].x == corners[1].x) return FALSE;
         if (corners[0].y == corners[1].y) return FALSE;
@@ -902,10 +902,11 @@ static BOOL pathdrv_LineTo( PHYSDEV dev, INT x, INT y )
 static BOOL pathdrv_Rectangle( PHYSDEV dev, INT x1, INT y1, INT x2, INT y2 )
 {
     struct path_physdev *physdev = get_path_physdev( dev );
+    DC *dc = get_physdev_dc( dev );
     POINT corners[2], points[4];
     BYTE *type;
 
-    if (!PATH_CheckCorners( dev->hdc, corners, x1, y1, x2, y2 )) return TRUE;
+    if (!PATH_CheckCorners( dc, corners, x1, y1, x2, y2 )) return TRUE;
 
     points[0].x = corners[1].x;
     points[0].y = corners[0].y;
@@ -913,7 +914,7 @@ static BOOL pathdrv_Rectangle( PHYSDEV dev, INT x1, INT y1, INT x2, INT y2 )
     points[2].x = corners[0].x;
     points[2].y = corners[1].y;
     points[3]   = corners[1];
-    if (GetArcDirection( dev->hdc ) == AD_CLOCKWISE) reverse_points( points, 4 );
+    if (dc->ArcDirection == AD_CLOCKWISE) reverse_points( points, 4 );
 
     if (!(type = add_points( physdev->path, points, 4, PT_LINETO ))) return FALSE;
     type[0] = PT_MOVETO;
@@ -929,18 +930,19 @@ static BOOL pathdrv_RoundRect( PHYSDEV dev, INT x1, INT y1, INT x2, INT y2, INT
 {
     const double factor = 0.55428475; /* 4 / 3 * (sqrt(2) - 1) */
     struct path_physdev *physdev = get_path_physdev( dev );
+    DC *dc = get_physdev_dc( dev );
     POINT corners[2], ellipse[2], points[16];
     BYTE *type;
     double width, height;
 
     if (!ell_width || !ell_height) return pathdrv_Rectangle( dev, x1, y1, x2, y2 );
 
-    if (!PATH_CheckCorners( dev->hdc, corners, x1, y1, x2, y2 )) return TRUE;
+    if (!PATH_CheckCorners( dc, corners, x1, y1, x2, y2 )) return TRUE;
 
     ellipse[0].x = ellipse[0].y = 0;
     ellipse[1].x = ell_width;
     ellipse[1].y = ell_height;
-    LPtoDP( dev->hdc, (POINT *)&ellipse, 2 );
+    lp_to_dp( dc, (POINT *)&ellipse, 2 );
     ell_width  = min( abs( ellipse[1].x - ellipse[0].x ), corners[1].x - corners[0].x );
     ell_height = min( abs( ellipse[1].y - ellipse[0].y ), corners[1].y - corners[0].y );
     width  = ell_width / 2.0;
@@ -987,7 +989,7 @@ static BOOL pathdrv_RoundRect( PHYSDEV dev, INT x1, INT y1, INT x2, INT y2, INT
     points[15].x = corners[1].x;
     points[15].y = corners[1].y - GDI_ROUND( height );
 
-    if (GetArcDirection( dev->hdc ) == AD_CLOCKWISE) reverse_points( points, 16 );
+    if (dc->ArcDirection == AD_CLOCKWISE) reverse_points( points, 16 );
     if (!(type = add_points( physdev->path, points, 16, PT_BEZIERTO ))) return FALSE;
     type[0] = PT_MOVETO;
     type[4] = type[8] = type[12] = PT_LINETO;
@@ -1003,11 +1005,12 @@ static BOOL pathdrv_Ellipse( PHYSDEV dev, INT x1, INT y1, INT x2, INT y2 )
 {
     const double factor = 0.55428475; /* 4 / 3 * (sqrt(2) - 1) */
     struct path_physdev *physdev = get_path_physdev( dev );
+    DC *dc = get_physdev_dc( dev );
     POINT corners[2], points[13];
     BYTE *type;
     double width, height;
 
-    if (!PATH_CheckCorners( dev->hdc, corners, x1, y1, x2, y2 )) return TRUE;
+    if (!PATH_CheckCorners( dc, corners, x1, y1, x2, y2 )) return TRUE;
 
     width  = (corners[1].x - corners[0].x) / 2.0;
     height = (corners[1].y - corners[0].y) / 2.0;
@@ -1044,7 +1047,7 @@ static BOOL pathdrv_Ellipse( PHYSDEV dev, INT x1, INT y1, INT x2, INT y2 )
     points[12].x = corners[1].x;
     points[12].y = corners[1].y - GDI_ROUND( height );
 
-    if (GetArcDirection( dev->hdc ) == AD_CLOCKWISE) reverse_points( points, 13 );
+    if (dc->ArcDirection == AD_CLOCKWISE) reverse_points( points, 13 );
     if (!(type = add_points( physdev->path, points, 13, PT_BEZIERTO ))) return FALSE;
     type[0] = PT_MOVETO;
     close_figure( physdev->path );
-- 
2.7.4




More information about the wine-patches mailing list