https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5b56f3d68121dc04477281190a542c3127b38a2b

commit 5b56f3d68121dc04477281190a542c3127b38a2b
Author:     winesync <[email protected]>
AuthorDate: Wed Feb 5 22:13:52 2020 +0100
Commit:     Jérôme Gardou <[email protected]>
CommitDate: Wed Feb 26 18:19:18 2020 +0100

    [WINESYNC] d3dx9_36: Fix horizontal centering in ID3DXFont_DrawText.
    
    Fix remaining text issues in Air Strike.
    Should fix text placement in Stronghold Kingdoms.
    
    wine-staging patch by Christian Costa <[email protected]>
---
 dll/directx/wine/d3dx9_36/font.c                       |  7 +++++++
 ...Fix_horizontal_centering_in_ID3DXFont_DrawText.diff | 18 ++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/dll/directx/wine/d3dx9_36/font.c b/dll/directx/wine/d3dx9_36/font.c
index 2e2f6964c45..e8689bb864f 100644
--- a/dll/directx/wine/d3dx9_36/font.c
+++ b/dll/directx/wine/d3dx9_36/font.c
@@ -253,6 +253,13 @@ static INT WINAPI ID3DXFontImpl_DrawTextW(ID3DXFont 
*iface, ID3DXSprite *sprite,
         return height;
     }
 
+    if (format & DT_CENTER)
+    {
+        UINT new_width = calc_rect.right - calc_rect.left;
+        calc_rect.left = (rect->right + rect->left - new_width) / 2;
+        calc_rect.right = calc_rect.left + new_width;
+    }
+
     if (height && (calc_rect.left < calc_rect.right))
     {
         D3DLOCKED_RECT locked_rect;
diff --git 
a/sdk/tools/winesync/d3dx9_staging/0016-d3dx9_36__Fix_horizontal_centering_in_ID3DXFont_DrawText.diff
 
b/sdk/tools/winesync/d3dx9_staging/0016-d3dx9_36__Fix_horizontal_centering_in_ID3DXFont_DrawText.diff
new file mode 100644
index 00000000000..4f34de4c6e6
--- /dev/null
+++ 
b/sdk/tools/winesync/d3dx9_staging/0016-d3dx9_36__Fix_horizontal_centering_in_ID3DXFont_DrawText.diff
@@ -0,0 +1,18 @@
+diff --git a/dll/directx/wine/d3dx9_36/font.c 
b/dll/directx/wine/d3dx9_36/font.c
+index 2e2f696..e8689bb 100644
+--- a/dll/directx/wine/d3dx9_36/font.c
++++ b/dll/directx/wine/d3dx9_36/font.c
+@@ -253,6 +253,13 @@ static INT WINAPI ID3DXFontImpl_DrawTextW(ID3DXFont 
*iface, ID3DXSprite *sprite,
+         return height;
+     }
+ 
++    if (format & DT_CENTER)
++    {
++        UINT new_width = calc_rect.right - calc_rect.left;
++        calc_rect.left = (rect->right + rect->left - new_width) / 2;
++        calc_rect.right = calc_rect.left + new_width;
++    }
++
+     if (height && (calc_rect.left < calc_rect.right))
+     {
+         D3DLOCKED_RECT locked_rect;

Reply via email to