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