Fix text rotation problem in GM_ADVANCED graphics mode caused by incorrect implementation of GetTextExtentPointW().

Ralf Habacker ralf at habacker.de
Tue Oct 1 06:06:30 CDT 2013


On 01.10.2013 12:40, Alexandre Julliard wrote:
> Ralf Habacker <ralf at habacker.de> writes:
>
>> On 01.10.2013 12:12, Alexandre Julliard wrote:
>>> Ralf Habacker <ralf.habacker at freenet.de> writes:
>>>
>>>> With other patches i have been told to implement such stuff in the dib
>>>> driver. Unfortunally this do not works in this case, because in the top
>>>> level function it looks like having driver specific stuff using display
>>>> coordinates.
>>> It would still most likely have to be in the driver,
>> which is freetype_GetTextExtentExPoint() ?
>>
>>>  though maybe the driver would not be calling that exact entry point.
>> not sure i understand right:
>>
>> GetTextExtentExPointW() calls get_char_positions(), which runs
>> dev->funcs->pGetTextExtentExPoint(), which is mapped to
>> freetype_GetTextExtentExPoint(), which is in the driver. Which entry
>> point your are refering else ?
> The various text rendering entry points in the graphics drivers.
>
>>> In any case, you can't change the DC transform like this 
>> then a real solution requires to move the transformation to logical
>> coordinates stuff in BOOL GetTextExtentExPointW() to
>> freetype_GetTextExtentExPoint() and to manipulate the related matrixes
>> in freetype_GetTextExtentExPoint() directly wen using GM_ADVANCED ?
> No, I don't think so. The transform is only used to determine the font
> scaling factor.
how then ?
>>> and you'll need test cases.
>>>
>> Do you mean in detail:
>>
>> 1. Create a specific font
>> 2. Run GetTextExtentExPointW() which specific parameters
>> 3. check if it results expected values
> Well, yes, that's what all tests do.
>




More information about the wine-devel mailing list