Jacek Caban : gdi32: Store text alignment in DC_ATTR.

Alexandre Julliard julliard at winehq.org
Fri Jul 23 18:08:00 CDT 2021


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Jul 23 10:49:19 2021 +0200

gdi32: Store text alignment 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                | 26 +++++---------------------
 dlls/gdi32/enhmfdrv/graphics.c |  2 +-
 dlls/gdi32/font.c              |  2 +-
 dlls/gdi32/gdidc.c             |  9 +++++++++
 dlls/gdi32/ntgdi_private.h     |  1 -
 include/ntgdi.h                |  1 +
 6 files changed, 17 insertions(+), 24 deletions(-)

diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 2573390c6f2..deca9510f20 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -94,7 +94,7 @@ static void set_initial_dc_state( DC *dc )
     dc->brush_org.x         = 0;
     dc->brush_org.y         = 0;
     dc->mapperFlags         = 0;
-    dc->textAlign           = TA_LEFT | TA_TOP | TA_NOUPDATECP;
+    dc->attr->text_align    = TA_LEFT | TA_TOP | TA_NOUPDATECP;
     dc->charExtra           = 0;
     dc->breakExtra          = 0;
     dc->breakRem            = 0;
@@ -409,7 +409,7 @@ INT CDECL nulldrv_SaveDC( PHYSDEV dev )
     newdc->dcPenColor       = dc->dcPenColor;
     newdc->brush_org        = dc->brush_org;
     newdc->mapperFlags      = dc->mapperFlags;
-    newdc->textAlign        = dc->textAlign;
+    newdc->attr->text_align = dc->attr->text_align;
     newdc->charExtra        = dc->charExtra;
     newdc->breakExtra       = dc->breakExtra;
     newdc->breakRem         = dc->breakRem;
@@ -486,7 +486,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level )
     dc->dcPenColor       = dcs->dcPenColor;
     dc->brush_org        = dcs->brush_org;
     dc->mapperFlags      = dcs->mapperFlags;
-    dc->textAlign        = dcs->textAlign;
+    dc->attr->text_align = dcs->attr->text_align;
     dc->charExtra        = dcs->charExtra;
     dc->breakExtra       = dcs->breakExtra;
     dc->breakRem         = dcs->breakRem;
@@ -988,22 +988,6 @@ COLORREF WINAPI SetTextColor( HDC hdc, COLORREF color )
 }
 
 
-/***********************************************************************
- *		GetTextAlign (GDI32.@)
- */
-UINT WINAPI GetTextAlign( HDC hdc )
-{
-    UINT ret = 0;
-    DC * dc = get_dc_ptr( hdc );
-    if (dc)
-    {
-        ret = dc->textAlign;
-        release_dc_ptr( dc );
-    }
-    return ret;
-}
-
-
 /***********************************************************************
  *           SetTextAlign    (GDI32.@)
  */
@@ -1020,8 +1004,8 @@ UINT WINAPI SetTextAlign( HDC hdc, UINT align )
         align = physdev->funcs->pSetTextAlign( physdev, align );
         if (align != GDI_ERROR)
         {
-            ret = dc->textAlign;
-            dc->textAlign = align;
+            ret = dc->attr->text_align;
+            dc->attr->text_align = align;
         }
         release_dc_ptr( dc );
     }
diff --git a/dlls/gdi32/enhmfdrv/graphics.c b/dlls/gdi32/enhmfdrv/graphics.c
index 7c800148cf8..67def307f1e 100644
--- a/dlls/gdi32/enhmfdrv/graphics.c
+++ b/dlls/gdi32/enhmfdrv/graphics.c
@@ -936,7 +936,7 @@ BOOL CDECL EMFDRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, const RECT
     BOOL ret;
     int textHeight = 0;
     int textWidth = 0;
-    const UINT textAlign = dc->textAlign;
+    const UINT textAlign = dc->attr->text_align;
     const INT graphicsMode = dc->attr->graphics_mode;
     FLOAT exScale, eyScale;
 
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index 41d6f9dda69..d89f9182b9b 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -5949,7 +5949,7 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x, INT y, UINT flags,
     if (!dc) return FALSE;
     if (count > INT_MAX) return FALSE;
 
-    align = dc->textAlign;
+    align = dc->attr->text_align;
     breakRem = dc->breakRem;
     layout = dc->layout;
 
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index c6a8cbd567f..e2161d062b8 100644
--- a/dlls/gdi32/gdidc.c
+++ b/dlls/gdi32/gdidc.c
@@ -37,6 +37,15 @@ static DC_ATTR *get_dc_attr( HDC hdc )
     return dc_attr;
 }
 
+/***********************************************************************
+ *		GetTextAlign (GDI32.@)
+ */
+UINT WINAPI GetTextAlign( HDC hdc )
+{
+    DC_ATTR *dc_attr = get_dc_attr( hdc );
+    return dc_attr ? dc_attr->text_align : 0;
+}
+
 /***********************************************************************
  *		GetCurrentPositionEx (GDI32.@)
  */
diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h
index 4527651bb33..dc36789fdec 100644
--- a/dlls/gdi32/ntgdi_private.h
+++ b/dlls/gdi32/ntgdi_private.h
@@ -130,7 +130,6 @@ typedef struct tagDC
     POINT         brush_org;
 
     DWORD         mapperFlags;       /* Font mapper flags */
-    WORD          textAlign;         /* Text alignment from SetTextAlign() */
     INT           charExtra;         /* Spacing from SetTextCharacterExtra() */
     INT           breakExtra;        /* breakTotalExtra / breakCount */
     INT           breakRem;          /* breakTotalExtra % breakCount */
diff --git a/include/ntgdi.h b/include/ntgdi.h
index dce35a8b0b8..33c5b53f50f 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -100,6 +100,7 @@ typedef struct DC_ATTR
 {
     POINT     cur_pos;
     INT       graphics_mode;
+    WORD      text_align;
     void     *emf;
 } DC_ATTR;
 




More information about the wine-cvs mailing list