On Wed, 6 Feb 2008, Alexandre Julliard wrote:
The reason is that we have
#define HDPTOLP(y) ((y<0)? \ (-abs(INTERNAL_YDSTOWS(dc, (y)))): \ (abs(INTERNAL_YDSTOWS(dc, (y)))))
which is overly complicated for unsigned types. We can avoid these warnings by using plain INTERNAL_YDSTOWS instead of HDPTOLP here.
No, you still need the abs().
You're right. That was a stupid thinko on my side. Please find below an updated patch.
Gerald
ChangeLog: For unsigned types, directly use INTERNAL_YDS
Index: font.c =================================================================== RCS file: /home/wine/wine/dlls/gdi32/font.c,v retrieving revision 1.39 diff -u -3 -p -r1.39 font.c --- font.c 6 Feb 2008 13:28:51 -0000 1.39 +++ font.c 10 Feb 2008 21:26:59 -0000 @@ -1690,16 +1690,16 @@ UINT WINAPI GetOutlineTextMetricsW( output->otmTextMetrics.tmOverhang = WDPTOLP(output->otmTextMetrics.tmOverhang); output->otmAscent = HDPTOLP(output->otmAscent); output->otmDescent = HDPTOLP(output->otmDescent); - output->otmLineGap = HDPTOLP(output->otmLineGap); - output->otmsCapEmHeight = HDPTOLP(output->otmsCapEmHeight); - output->otmsXHeight = HDPTOLP(output->otmsXHeight); + output->otmLineGap = abs(INTERNAL_YDSTOWS(dc,output->otmLineGap)); + output->otmsCapEmHeight = abs(INTERNAL_YDSTOWS(dc,output->otmsCapEmHeight)); + output->otmsXHeight = abs(INTERNAL_YDSTOWS(dc,output->otmsXHeight)); output->otmrcFontBox.top = HDPTOLP(output->otmrcFontBox.top); output->otmrcFontBox.bottom = HDPTOLP(output->otmrcFontBox.bottom); output->otmrcFontBox.left = WDPTOLP(output->otmrcFontBox.left); output->otmrcFontBox.right = WDPTOLP(output->otmrcFontBox.right); output->otmMacAscent = HDPTOLP(output->otmMacAscent); output->otmMacDescent = HDPTOLP(output->otmMacDescent); - output->otmMacLineGap = HDPTOLP(output->otmMacLineGap); + output->otmMacLineGap = abs(INTERNAL_YDSTOWS(dc,output->otmMacLineGap)); output->otmptSubscriptSize.x = WDPTOLP(output->otmptSubscriptSize.x); output->otmptSubscriptSize.y = HDPTOLP(output->otmptSubscriptSize.y); output->otmptSubscriptOffset.x = WDPTOLP(output->otmptSubscriptOffset.x); @@ -1708,7 +1708,7 @@ UINT WINAPI GetOutlineTextMetricsW( output->otmptSuperscriptSize.y = HDPTOLP(output->otmptSuperscriptSize.y); output->otmptSuperscriptOffset.x = WDPTOLP(output->otmptSuperscriptOffset.x); output->otmptSuperscriptOffset.y = HDPTOLP(output->otmptSuperscriptOffset.y); - output->otmsStrikeoutSize = HDPTOLP(output->otmsStrikeoutSize); + output->otmsStrikeoutSize = abs(INTERNAL_YDSTOWS(dc,output->otmsStrikeoutSize)); output->otmsStrikeoutPosition = HDPTOLP(output->otmsStrikeoutPosition); output->otmsUnderscoreSize = HDPTOLP(output->otmsUnderscoreSize); output->otmsUnderscorePosition = HDPTOLP(output->otmsUnderscorePosition);