wine-staging/patches/win32u-NtGdiExtTextOutW-rotation/0002-win32u-NtGdiExtTextOutW-should-translate-x-y-from-lo.patch

56 lines
1.7 KiB
Diff
Raw Normal View History

From 33d132644a7398e4a3a17f1745dcb626ea6694af Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Wed, 22 Nov 2023 11:51:23 +0300
Subject: [PATCH 2/2] win32u: NtGdiExtTextOutW() should translate x,y from
logical to device units at the last step.
Bug: https://bugs.winehq.org/show_bug.cgi?id=33190
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/win32u/font.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/dlls/win32u/font.c b/dlls/win32u/font.c
index 8fbd8dc3f01..f32becbe669 100644
--- a/dlls/win32u/font.c
+++ b/dlls/win32u/font.c
@@ -5972,12 +5972,6 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
goto done;
}
- pt.x = x;
- pt.y = y;
- lp_to_dp(dc, &pt, 1);
- x = pt.x;
- y = pt.y;
-
char_extra = dc->attr->char_extra;
if (char_extra && lpDx && NtGdiGetDeviceCaps( hdc, TECHNOLOGY ) == DT_RASPRINTER)
char_extra = 0; /* Printer drivers don't add char_extra if lpDx is supplied */
@@ -6074,8 +6068,6 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
width = desired[1];
}
- tm.tmAscent = abs(INTERNAL_YWSTODS(dc, tm.tmAscent));
- tm.tmDescent = abs(INTERNAL_YWSTODS(dc, tm.tmDescent));
switch( align & (TA_LEFT | TA_RIGHT | TA_CENTER) )
{
case TA_LEFT:
@@ -6143,6 +6135,12 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
}
}
+ pt.x = x;
+ pt.y = y;
+ lp_to_dp(dc, &pt, 1);
+ x = pt.x;
+ y = pt.y;
+
ret = physdev->funcs->pExtTextOut( physdev, x, y, (flags & ~ETO_OPAQUE), &rc,
str, count, (INT*)deltas );
--
2.46.0