[0.4.12][WIN32SS] Fix regression of font alignment CORE-16133

This fixes fonts not being displayed properly within an edit in
Precise Calculator application.

Jim Tabor intended to structurally use flTextAlign over
lTextAlign internally within IntExtTextOutW().
He initially committed these changes in 0.4.12-dev-805-g
3377fe184e

But we unintentionally lost these changes via 0.4.12-RC-26-g
486fd83a95

Many thanks to Doug Lyons who helped a lot with fixing CORE-16133.

We also corrected this issue in master via 0.4.13-dev-707-g
0e4db883e5 and 0.4.13-dev-712-g
64e182e429
This commit is contained in:
Joachim Henze 2019-07-27 10:09:13 +02:00
parent ca0e00e8af
commit 9dde283e9a

View file

@ -5678,7 +5678,7 @@ IntExtTextOutW(
IntLPtoDP(dc, (POINT *)lprc, 2);
}
if (pdcattr->lTextAlign & TA_UPDATECP)
if (pdcattr->flTextAlign & TA_UPDATECP)
{
Start.x = pdcattr->ptlCurrent.x;
Start.y = pdcattr->ptlCurrent.y;
@ -5800,9 +5800,9 @@ IntExtTextOutW(
* Process the vertical alignment and determine the yoff.
*/
#define VALIGN_MASK (TA_TOP | TA_BASELINE | TA_BOTTOM)
if ((pdcattr->lTextAlign & VALIGN_MASK) == TA_BASELINE)
if ((pdcattr->flTextAlign & VALIGN_MASK) == TA_BASELINE)
yoff = 0;
else if ((pdcattr->lTextAlign & VALIGN_MASK) == TA_BOTTOM)
else if ((pdcattr->flTextAlign & VALIGN_MASK) == TA_BOTTOM)
yoff = -(fixDescender >> 6);
else /* TA_TOP */
yoff = fixAscender >> 6;
@ -5815,7 +5815,7 @@ IntExtTextOutW(
* Process the horizontal alignment and modify XStart accordingly.
*/
DxShift = fuOptions & ETO_PDY ? 1 : 0;
if (pdcattr->lTextAlign & (TA_RIGHT | TA_CENTER))
if (pdcattr->flTextAlign & (TA_RIGHT | TA_CENTER))
{
ULONGLONG TextWidth = 0;
LPCWSTR TempText = String;
@ -5901,7 +5901,7 @@ IntExtTextOutW(
previous = 0;
if ((pdcattr->lTextAlign & TA_CENTER) == TA_CENTER)
if ((pdcattr->flTextAlign & TA_CENTER) == TA_CENTER)
{
RealXStart -= TextWidth / 2;
}
@ -6301,7 +6301,7 @@ IntExtTextOutW(
}
}
if (pdcattr->lTextAlign & TA_UPDATECP) {
if (pdcattr->flTextAlign & TA_UPDATECP) {
pdcattr->ptlCurrent.x = DestRect.right - dc->ptlDCOrig.x;
}