Jacek Caban : gdi32: Store graphics mode in DC_ATTR.

Alexandre Julliard julliard at winehq.org
Wed Jul 21 16:04:30 CDT 2021


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Jul 20 09:19:14 2021 +0200

gdi32: Store graphics mode in DC_ATTR.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/dc.c                | 12 ++++++------
 dlls/gdi32/dibdrv/graphics.c   |  4 ++--
 dlls/gdi32/enhmfdrv/graphics.c | 10 +++++-----
 dlls/gdi32/font.c              |  8 ++++----
 dlls/gdi32/mapping.c           |  4 ++--
 dlls/gdi32/ntgdi_private.h     |  1 -
 dlls/gdi32/path.c              |  4 ++--
 include/ntgdi.h                |  1 +
 8 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 4441592f59f..2573390c6f2 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -99,7 +99,7 @@ static void set_initial_dc_state( DC *dc )
     dc->breakExtra          = 0;
     dc->breakRem            = 0;
     dc->MapMode             = MM_TEXT;
-    dc->GraphicsMode        = GM_COMPATIBLE;
+    dc->attr->graphics_mode = GM_COMPATIBLE;
     dc->attr->cur_pos.x     = 0;
     dc->attr->cur_pos.y     = 0;
     dc->ArcDirection        = AD_COUNTERCLOCKWISE;
@@ -414,7 +414,7 @@ INT CDECL nulldrv_SaveDC( PHYSDEV dev )
     newdc->breakExtra       = dc->breakExtra;
     newdc->breakRem         = dc->breakRem;
     newdc->MapMode          = dc->MapMode;
-    newdc->GraphicsMode     = dc->GraphicsMode;
+    newdc->attr->graphics_mode = dc->attr->graphics_mode;
     newdc->attr->cur_pos    = dc->attr->cur_pos;
     newdc->ArcDirection     = dc->ArcDirection;
     newdc->xformWorld2Wnd   = dc->xformWorld2Wnd;
@@ -491,7 +491,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level )
     dc->breakExtra       = dcs->breakExtra;
     dc->breakRem         = dcs->breakRem;
     dc->MapMode          = dcs->MapMode;
-    dc->GraphicsMode     = dcs->GraphicsMode;
+    dc->attr->graphics_mode = dcs->attr->graphics_mode;
     dc->attr->cur_pos    = dcs->attr->cur_pos;
     dc->ArcDirection     = dcs->ArcDirection;
     dc->xformWorld2Wnd   = dcs->xformWorld2Wnd;
@@ -1053,7 +1053,7 @@ INT WINAPI GetGraphicsMode( HDC hdc )
     DC * dc = get_dc_ptr( hdc );
     if (dc)
     {
-        ret = dc->GraphicsMode;
+        ret = dc->attr->graphics_mode;
         release_dc_ptr( dc );
     }
     return ret;
@@ -1076,8 +1076,8 @@ INT WINAPI SetGraphicsMode( HDC hdc, INT mode )
     if (!dc) return 0;
     if ((mode > 0) && (mode <= GM_LAST))
     {
-        ret = dc->GraphicsMode;
-        dc->GraphicsMode = mode;
+        ret = dc->attr->graphics_mode;
+        dc->attr->graphics_mode = mode;
     }
     /* font metrics depend on the graphics mode */
     if (ret != mode) NtGdiSelectFont(dc->hSelf, dc->hFont);
diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c
index a875ae113cd..b6ae4ab10e2 100644
--- a/dlls/gdi32/dibdrv/graphics.c
+++ b/dlls/gdi32/dibdrv/graphics.c
@@ -561,7 +561,7 @@ static struct cached_font *add_cached_font( DC *dc, HFONT hfont, UINT aa_flags )
     GetObjectW( hfont, sizeof(font.lf), &font.lf );
     font.xform = dc->xformWorld2Vport;
     font.xform.eDx = font.xform.eDy = 0;  /* unused, would break hashing */
-    if (dc->GraphicsMode == GM_COMPATIBLE)
+    if (dc->attr->graphics_mode == GM_COMPATIBLE)
     {
         font.lf.lfOrientation = font.lf.lfEscapement;
         if (font.xform.eM11 * font.xform.eM22 < 0)
@@ -1399,7 +1399,7 @@ BOOL CDECL dibdrv_Rectangle( PHYSDEV dev, INT left, INT top, INT right, INT bott
 
     TRACE("(%p, %d, %d, %d, %d)\n", dev, left, top, right, bottom);
 
-    if (dc->GraphicsMode == GM_ADVANCED)
+    if (dc->attr->graphics_mode == GM_ADVANCED)
     {
         pts[0].x = pts[3].x = left;
         pts[0].y = pts[1].y = top;
diff --git a/dlls/gdi32/enhmfdrv/graphics.c b/dlls/gdi32/enhmfdrv/graphics.c
index 3c8c8b3bd07..2c23d0f9ae7 100644
--- a/dlls/gdi32/enhmfdrv/graphics.c
+++ b/dlls/gdi32/enhmfdrv/graphics.c
@@ -188,7 +188,7 @@ EMFDRV_ArcChordPie( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
     if(left > right) {temp = left; left = right; right = temp;}
     if(top > bottom) {temp = top; top = bottom; bottom = temp;}
 
-    if(dc->GraphicsMode == GM_COMPATIBLE) {
+    if(dc->attr->graphics_mode == GM_COMPATIBLE) {
         right--;
 	bottom--;
     }
@@ -359,7 +359,7 @@ BOOL CDECL EMFDRV_Ellipse( PHYSDEV dev, INT left, INT top, INT right, INT bottom
     if(left > right) {temp = left; left = right; right = temp;}
     if(top > bottom) {temp = top; top = bottom; bottom = temp;}
 
-    if(dc->GraphicsMode == GM_COMPATIBLE) {
+    if(dc->attr->graphics_mode == GM_COMPATIBLE) {
         right--;
 	bottom--;
     }
@@ -393,7 +393,7 @@ BOOL CDECL EMFDRV_Rectangle(PHYSDEV dev, INT left, INT top, INT right, INT botto
     if(left > right) {temp = left; left = right; right = temp;}
     if(top > bottom) {temp = top; top = bottom; bottom = temp;}
 
-    if(dc->GraphicsMode == GM_COMPATIBLE) {
+    if(dc->attr->graphics_mode == GM_COMPATIBLE) {
         right--;
 	bottom--;
     }
@@ -426,7 +426,7 @@ BOOL CDECL EMFDRV_RoundRect( PHYSDEV dev, INT left, INT top, INT right,
     if(left > right) {temp = left; left = right; right = temp;}
     if(top > bottom) {temp = top; top = bottom; bottom = temp;}
 
-    if(dc->GraphicsMode == GM_COMPATIBLE) {
+    if(dc->attr->graphics_mode == GM_COMPATIBLE) {
         right--;
 	bottom--;
     }
@@ -810,7 +810,7 @@ BOOL CDECL EMFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, const RECT
     int textHeight = 0;
     int textWidth = 0;
     const UINT textAlign = dc->textAlign;
-    const INT graphicsMode = dc->GraphicsMode;
+    const INT graphicsMode = dc->attr->graphics_mode;
     FLOAT exScale, eyScale;
 
     nSize = sizeof(*pemr) + ((count+1) & ~1) * sizeof(WCHAR) + count * sizeof(INT);
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index 066b7a3648e..c3cbe18f0c8 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -3759,7 +3759,7 @@ static HFONT CDECL font_SelectFont( PHYSDEV dev, HFONT hfont, UINT *aa_flags )
                lf.lfWeight, lf.lfPitchAndFamily, lf.lfCharSet, lf.lfOrientation,
                lf.lfEscapement );
 
-        if (dc->GraphicsMode == GM_ADVANCED)
+        if (dc->attr->graphics_mode == GM_ADVANCED)
         {
             memcpy( &dcmat, &dc->xformWorld2Vport, sizeof(FMAT2) );
             /* try to avoid not necessary glyph transformations */
@@ -6015,7 +6015,7 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x, INT y, UINT flags,
     if(!(tm.tmPitchAndFamily & TMPF_VECTOR)) /* Non-scalable fonts shouldn't be rotated */
         lf.lfEscapement = 0;
 
-    if ((dc->GraphicsMode == GM_COMPATIBLE) &&
+    if ((dc->attr->graphics_mode == GM_COMPATIBLE) &&
         (dc->vport2WorldValid && dc->xformWorld2Vport.eM11 * dc->xformWorld2Vport.eM22 < 0))
     {
         lf.lfEscapement = -lf.lfEscapement;
@@ -6116,7 +6116,7 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x, INT y, UINT flags,
             desired[1].x -= desired[0].x;
             desired[1].y -= desired[0].y;
 
-            if (dc->GraphicsMode == GM_COMPATIBLE)
+            if (dc->attr->graphics_mode == GM_COMPATIBLE)
             {
                 if (dc->vport2WorldValid && dc->xformWorld2Vport.eM11 < 0)
                     desired[1].x = -desired[1].x;
@@ -6146,7 +6146,7 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x, INT y, UINT flags,
         desired[1].x -= desired[0].x;
         desired[1].y -= desired[0].y;
 
-        if (dc->GraphicsMode == GM_COMPATIBLE)
+        if (dc->attr->graphics_mode == GM_COMPATIBLE)
         {
             if (dc->vport2WorldValid && dc->xformWorld2Vport.eM11 < 0)
                 desired[1].x = -desired[1].x;
diff --git a/dlls/gdi32/mapping.c b/dlls/gdi32/mapping.c
index 5eb06555831..46a7973644e 100644
--- a/dlls/gdi32/mapping.c
+++ b/dlls/gdi32/mapping.c
@@ -561,7 +561,7 @@ BOOL WINAPI ModifyWorldTransform( HDC hdc, const XFORM *xform, DWORD mode )
     if ((dc = get_dc_ptr( hdc )))
     {
         PHYSDEV physdev = GET_DC_PHYSDEV( dc, pModifyWorldTransform );
-        if (dc->GraphicsMode == GM_ADVANCED)
+        if (dc->attr->graphics_mode == GM_ADVANCED)
             ret = physdev->funcs->pModifyWorldTransform( physdev, xform, mode );
         release_dc_ptr( dc );
     }
@@ -587,7 +587,7 @@ BOOL WINAPI SetWorldTransform( HDC hdc, const XFORM *xform )
     if ((dc = get_dc_ptr( hdc )))
     {
         PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetWorldTransform );
-        if (dc->GraphicsMode == GM_ADVANCED)
+        if (dc->attr->graphics_mode == GM_ADVANCED)
             ret = physdev->funcs->pSetWorldTransform( physdev, xform );
         release_dc_ptr( dc );
     }
diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h
index ba065c2439f..4527651bb33 100644
--- a/dlls/gdi32/ntgdi_private.h
+++ b/dlls/gdi32/ntgdi_private.h
@@ -135,7 +135,6 @@ typedef struct tagDC
     INT           breakExtra;        /* breakTotalExtra / breakCount */
     INT           breakRem;          /* breakTotalExtra % breakCount */
     INT           MapMode;
-    INT           GraphicsMode;      /* Graphics mode */
     ABORTPROC     pAbortProc;        /* AbortProc for Printing */
     INT           ArcDirection;
     XFORM         xformWorld2Wnd;    /* World-to-window transformation */
diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c
index 4bca32c2e30..3a1da23df30 100644
--- a/dlls/gdi32/path.c
+++ b/dlls/gdi32/path.c
@@ -383,7 +383,7 @@ static BOOL PATH_CheckCorners( DC *dc, POINT corners[], INT x1, INT y1, INT x2,
     }
 
     /* In GM_COMPATIBLE, don't include bottom and right edges */
-    if (dc->GraphicsMode == GM_COMPATIBLE)
+    if (dc->attr->graphics_mode == GM_COMPATIBLE)
     {
         if (corners[0].x == corners[1].x) return FALSE;
         if (corners[0].y == corners[1].y) return FALSE;
@@ -1129,7 +1129,7 @@ static BOOL PATH_Arc( PHYSDEV dev, INT x1, INT y1, INT x2, INT y2,
    }
 
    /* In GM_COMPATIBLE, don't include bottom and right edges */
-   if (dc->GraphicsMode == GM_COMPATIBLE)
+   if (dc->attr->graphics_mode == GM_COMPATIBLE)
    {
       corners[1].x--;
       corners[1].y--;
diff --git a/include/ntgdi.h b/include/ntgdi.h
index 53915033c89..4d1d6a48c4f 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -89,6 +89,7 @@ enum
 typedef struct DC_ATTR
 {
     POINT     cur_pos;
+    INT       graphics_mode;
     void     *emf;
 } DC_ATTR;
 




More information about the wine-cvs mailing list