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

Alexandre Julliard julliard at winehq.org
Tue Oct 1 05:40:42 CDT 2013


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.

>> 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.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list