mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:52:56 +00:00
[WIN32K/FREETYPE]
* Consider current WorldTransform in ExtTextOutW. * Brought to you by Manuel "Tarnyko" Bachmann. Fix improved by Timo Kreuzer and me. CORE-8306 #resolve #comment Fixed in r63576. Thanks! svn path=/trunk/; revision=63576
This commit is contained in:
parent
87b791fd9e
commit
3629ad50aa
1 changed files with 10 additions and 2 deletions
|
@ -19,6 +19,8 @@
|
||||||
#include <ftoutln.h>
|
#include <ftoutln.h>
|
||||||
#include <ftwinfnt.h>
|
#include <ftwinfnt.h>
|
||||||
|
|
||||||
|
#include <gdi/eng/floatobj.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
@ -3228,6 +3230,7 @@ GreExtTextOutW(
|
||||||
USHORT DxShift;
|
USHORT DxShift;
|
||||||
PMATRIX pmxWorldToDevice;
|
PMATRIX pmxWorldToDevice;
|
||||||
LONG fixAscender, fixDescender;
|
LONG fixAscender, fixDescender;
|
||||||
|
FLOATOBJ Scale;
|
||||||
|
|
||||||
// TODO: Write test-cases to exactly match real Windows in different
|
// TODO: Write test-cases to exactly match real Windows in different
|
||||||
// bad parameters (e.g. does Windows check the DC or the RECT first?).
|
// bad parameters (e.g. does Windows check the DC or the RECT first?).
|
||||||
|
@ -3671,7 +3674,12 @@ GreExtTextOutW(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TextLeft += Dx[i<<DxShift] << 6;
|
Scale = pdcattr->mxWorldToDevice.efM11;
|
||||||
|
if (_FLOATOBJ_Equal0(&Scale))
|
||||||
|
FLOATOBJ_Set1(&Scale);
|
||||||
|
|
||||||
|
FLOATOBJ_MulLong(&Scale, Dx[i<<DxShift] << 6); // do the shift before multiplying to preserve precision
|
||||||
|
TextLeft += FLOATOBJ_GetLong(&Scale);
|
||||||
DPRINT("New TextLeft2: %I64d\n", TextLeft);
|
DPRINT("New TextLeft2: %I64d\n", TextLeft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue