https://git.reactos.org/?p=reactos.git;a=commitdiff;h=11b7619a71d9bfc51ae41fcd22fab4fdfa3d96f1

commit 11b7619a71d9bfc51ae41fcd22fab4fdfa3d96f1
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Thu Aug 16 02:50:19 2018 +0900
Commit:     Hermès BÉLUSCA - MAÏTO <[email protected]>
CommitDate: Wed Aug 15 19:50:19 2018 +0200

    [WIN32SS] Fix DrawText wrt DT_CALCRECT | DT_VCENTER (#745)
    
    The test program: https://jira.reactos.org/secure/attachment/47925/TnB3.zip
    CORE-14896
---
 win32ss/user/rtl/text.c | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/win32ss/user/rtl/text.c b/win32ss/user/rtl/text.c
index 9ab726c80a..d723c55f57 100644
--- a/win32ss/user/rtl/text.c
+++ b/win32ss/user/rtl/text.c
@@ -1148,26 +1148,27 @@ INT WINAPI DrawTextExWorker( HDC hdc,
 
        if (flags & DT_SINGLELINE)
        {
-            if (flags & DT_VCENTER)
 #ifdef __REACTOS__
+        if (flags & DT_VCENTER)
+        {
+            if (flags & DT_CALCRECT)
             {
-                if (((rect->bottom - rect->top) < (invert_y ? -size.cy : 
size.cy)) && (flags & DT_CALCRECT))
-                {
-                    y = rect->top + (invert_y ? -size.cy : size.cy);
-                }
-                else
-                {
-                    y = rect->top + (rect->bottom - rect->top + (invert_y ? 
size.cy : -size.cy)) / 2;
-#else
-                    y = rect->top + (rect->bottom - rect->top) / 2 + (invert_y 
? (size.cy / 2) : (-size.cy / 2));
-#endif
-#ifdef __REACTOS__
-                }
+                if (rect->bottom - rect->top < size.cy / 2)
+                    y = rect->top + (invert_y ? size.cy : -size.cy) / 2;
+            }
+            else
+            {
+                y = rect->top + (rect->bottom - rect->top + (invert_y ? 
size.cy : -size.cy)) / 2;
             }
-#endif
-            else if (flags & DT_BOTTOM)
-                y = rect->bottom + (invert_y ? 0 : -size.cy);
         }
+        else if (flags & DT_BOTTOM)
+            y = rect->bottom + (invert_y ? 0 : -size.cy);
+#else
+           if (flags & DT_VCENTER) y = rect->top +
+               (rect->bottom - rect->top) / 2 - size.cy / 2;
+           else if (flags & DT_BOTTOM) y = rect->bottom - size.cy;
+#endif
+    }
 
        if (!(flags & DT_CALCRECT))
        {

Reply via email to