riched20: add tests for EM_FORMATRANGE
Paul Vriens
paul.vriens.wine at gmail.com
Mon Mar 16 04:13:38 CDT 2009
Paul Vriens wrote:
> James McKenzie wrote:
>> Lei Zhang wrote:
>>> On Fri, Mar 13, 2009 at 12:01 PM, Paul Vriens
>>> <paul.vriens.wine at gmail.com> wrote:
>>>
>>>> Lei Zhang wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> In my last attempt, I submitted Troy Rollo's EM_FORMATRANGE
>>>>> implementation and with my test cases. I'm not sure what was wrong
>>>>> with the implementation, but the test cases should be ok.
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>>
>>>> Hi Lei,
>>>>
>>>> Pretty old patch. (June 2007)
>>>>
>>>> I just moved some of my VMware 'boxes' to my new laptop (laptop
>>>> resolution
>>>> 1024x800) and I suddenly had some failures. The resolution that
>>>> VMware can
>>>> use (with all those borders and the sidebar) is 1044x574. Running
>>>> the tests
>>>> fullscreen makes them pass again.
>>>>
>>>> You can replicate this by playing with the screen resolution. The
>>>> smaller
>>>> the resolution the more test failures.
>>>>
>>>> Any idea where I need to look?
>>>>
>>>> --
>>>> Cheers,
>>>>
>>>> Paul.
>>>>
>>>>
>>> Is this on Windows in VMWare? I'm not getting any riched20 crosstest
>>> failures here at 800x600.
>>>
>>>
>>>
>>>
>> Interesting that this should fail on a VMWare workstation setup. The
>> tests are pretty straightfoward.
>>
>> Also, I have not worked on this due to other pressures of life. Would
>> someone like to take this over and finish it? This would solve a couple
>> of open bug reports and fix some complaints about text rendering.
>>
>> James McKenzie
>>
>>
>>
> As said before, this issue can be seen on both VMware and real boxes.
> It's much easier of course to play around with resolutions on VMware.
>
> I'm currently trying loads of different resolutions to see if there is
> some logic. I do see that when I'm reducing just the horizontal
> resolution for example that the result of the EM_FORMATRANGE message
> changes at certain intervals (no logic found yet though).
>
> The number that keeps coming back is '15' :
>
> Hor Vert EM_FORMATRANGE
>
> 1040 800 20
> 937 800 16
> 832 800 15
> 712 800 14
> 652 800 13
> 547 800 12
> 517 800 9
> 412 800 7
> 382 800 6
>
> The difference between the horizontal resolution when the results change
> is always a multiple of 15 (can't check the first one as 20 is the
> maximum returned).
>
> The same behavior can be seen with a vertical resolution of 600:
>
> Hor Vert EM_FORMATRANGE
>
> 1238 600 20
> 1222 600 18
> 1057 600 16
> 1012 600 15
> 937 600 9
> 547 600 7
> 517 600 6
>
> And with a horizontal resolution of 979 (yeah I know):
>
> Hor Vert EM_FORMATRANGE
>
> 979 724 20
> 979 712 15
> 979 472 7
>
> So any idea about that number '15'? Maybe once I've figured out where
> that comes from the logic makes more sense.
>
The magic number '15' is 1440/96(dpi). And sure enough the magic number changes
to '12' on 120dpi.
If I read MSDN correctly
(http://msdn.microsoft.com/en-us/library/bb787911(VS.85).aspx) the rc and rcPage
area should be in twips not pixels.
If I change the code to do exactly that (multiply by 1440/dpi) the tests succeed
on all resolutions I've checked.
Another thing I found but I'm not sure it's relevant here is that fr.rc.bottom
is changed after a EM_FORMATRANGE message.
--
Cheers,
Paul.
More information about the wine-devel
mailing list