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);


Reply via email to