mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
[win32k]
- Add a hackfix to ftGdiGetGlyphOutline to make it handle scaling more properly - Improves CORE-4657 svn path=/trunk/; revision=58599
This commit is contained in:
parent
ed6bd94d05
commit
66fc8a9d5a
1 changed files with 25 additions and 8 deletions
|
@ -1646,15 +1646,32 @@ ftGdiGetGlyphOutline(
|
|||
IntLockFreeType;
|
||||
|
||||
/* Scaling transform */
|
||||
if (aveWidth)
|
||||
/*if (aveWidth)*/
|
||||
{
|
||||
FT_Matrix scaleMat;
|
||||
DPRINT("Scaling Trans!\n");
|
||||
scaleMat.xx = FT_FixedFromFloat(widthRatio);
|
||||
scaleMat.xy = 0;
|
||||
scaleMat.yx = 0;
|
||||
scaleMat.yy = (1 << 16);
|
||||
FT_Matrix_Multiply(&scaleMat, &transMat);
|
||||
|
||||
FT_Matrix ftmatrix;
|
||||
FLOATOBJ efTemp;
|
||||
|
||||
PMATRIX pmx = DC_pmxWorldToDevice(dc);
|
||||
|
||||
/* Create a freetype matrix, by converting to 16.16 fixpoint format */
|
||||
efTemp = pmx->efM11;
|
||||
FLOATOBJ_MulLong(&efTemp, 0x00010000);
|
||||
ftmatrix.xx = FLOATOBJ_GetLong(&efTemp);
|
||||
|
||||
efTemp = pmx->efM12;
|
||||
FLOATOBJ_MulLong(&efTemp, 0x00010000);
|
||||
ftmatrix.xy = FLOATOBJ_GetLong(&efTemp);
|
||||
|
||||
efTemp = pmx->efM21;
|
||||
FLOATOBJ_MulLong(&efTemp, 0x00010000);
|
||||
ftmatrix.yx = FLOATOBJ_GetLong(&efTemp);
|
||||
|
||||
efTemp = pmx->efM22;
|
||||
FLOATOBJ_MulLong(&efTemp, 0x00010000);
|
||||
ftmatrix.yy = FLOATOBJ_GetLong(&efTemp);
|
||||
|
||||
FT_Matrix_Multiply(&ftmatrix, &transMat);
|
||||
needsTransform = TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue