Fixed part of font cache issue.

This commit is contained in:
Armin Novak 2016-07-20 10:31:07 +02:00
parent 3f90966da6
commit bb82d48506
4 changed files with 251 additions and 253 deletions

View File

@ -25,8 +25,8 @@
struct _GLYPH_DATA
{
UINT32 cacheIndex;
INT32 x;
INT32 y;
INT16 x;
INT16 y;
UINT32 cx;
UINT32 cy;
UINT32 cb;

File diff suppressed because it is too large Load Diff

View File

@ -185,8 +185,8 @@ static BOOL BitBlt_SRCCOPY(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
return FALSE;
return freerdp_image_copy(hDstBmp->data, hDstBmp->format, hDstBmp->scanline,
nXDest, nYDest, nWidth, nHeight,
hSrcBmp->data, hSrcBmp->format, hSrcBmp->scanline,
nXDest, nYDest, nWidth, nHeight,
hSrcBmp->data, hSrcBmp->format, hSrcBmp->scanline,
nXSrc, nYSrc, palette);
}
@ -247,7 +247,7 @@ static BOOL BitBlt_SRCERASE(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
UINT32 color;
colorA = ConvertColor(colorA, hdcSrc->format, hdcDest->format,
palette);
color = ~colorA & colorB;
color = colorA & ~colorB;
WriteColor(dstp, hdcDest->format, color);
}
}
@ -277,11 +277,11 @@ static BOOL BitBlt_NOTSRCERASE(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
if (srcp && dstp)
{
UINT32 color;
UINT32 colorA = ReadColor(dstp, hdcDest->format);
UINT32 colorB = ReadColor(srcp, hdcSrc->format);
colorB = ConvertColor(colorB, hdcSrc->format,
UINT32 colorA = ReadColor(srcp, hdcSrc->format);
UINT32 colorB = ReadColor(dstp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
color = ~(colorA | colorB);
color = ~colorA & ~colorB;
WriteColor(dstp, hdcDest->format, color);
}
}
@ -311,9 +311,9 @@ static BOOL BitBlt_SRCINVERT(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
if (srcp && dstp)
{
UINT32 color;
UINT32 colorA = ReadColor(dstp, hdcDest->format);
UINT32 colorB = ReadColor(srcp, hdcSrc->format);
colorB = ConvertColor(colorB, hdcSrc->format,
UINT32 colorA = ReadColor(srcp, hdcSrc->format);
UINT32 colorB = ReadColor(dstp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
color = colorA ^ colorB;
WriteColor(dstp, hdcDest->format, color);
@ -345,9 +345,9 @@ static BOOL BitBlt_SRCAND(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
if (srcp && dstp)
{
UINT32 color;
UINT32 colorA = ReadColor(dstp, hdcDest->format);
UINT32 colorB = ReadColor(srcp, hdcSrc->format);
colorB = ConvertColor(colorB, hdcSrc->format,
UINT32 colorA = ReadColor(srcp, hdcSrc->format);
UINT32 colorB = ReadColor(dstp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
color = colorA & colorB;
WriteColor(dstp, hdcDest->format, color);
@ -397,12 +397,13 @@ static BOOL BitBlt_DSPDxax(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
UINT32 nXSrc, UINT32 nYSrc, const gdiPalette* palette)
{
UINT32 x, y;
UINT32 colorC;
UINT32 color;
if (!hdcDest || !hdcSrc)
return FALSE;
colorC = hdcDest->textColor;
/* D = (D ^ S) & (P ^ D) */
color = hdcDest->textColor;
for (y = 0; y < nHeight; y++)
{
@ -416,15 +417,11 @@ static BOOL BitBlt_DSPDxax(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
if (srcp && dstp)
{
UINT32 dstColor;
UINT32 tmp1, tmp2;
UINT32 colorA = ReadColor(dstp, hdcDest->format);
UINT32 colorB = ReadColor(srcp, hdcSrc->format);
colorB = ConvertColor(colorB, hdcSrc->format,
UINT32 colorA = ReadColor(srcp, hdcSrc->format);
UINT32 colorB = ReadColor(dstp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
tmp1 = colorA ^ colorB;
tmp2 = tmp1 & colorC;
dstColor = tmp2 ^ colorA;
//dstColor = (colorA ^ colorB) & (colorC ^ colorA);
dstColor = (colorA & color) | (~colorA & colorB);
WriteColor(dstp, hdcDest->format, dstColor);
}
}
@ -445,7 +442,7 @@ static BOOL BitBlt_PSDPxax(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
/* D = (S & D) | (~S & P) */
if (hdcDest->brush->style == GDI_BS_SOLID)
{
UINT32 colorA = hdcDest->brush->color;
UINT32 colorC = hdcDest->brush->color;
for (y = 0; y < nHeight; y++)
{
@ -459,11 +456,11 @@ static BOOL BitBlt_PSDPxax(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
if (srcp && dstp)
{
UINT32 color;
UINT32 colorB = ReadColor(srcp, hdcSrc->format);
UINT32 colorC = ReadColor(dstp, hdcDest->format);
colorB = ConvertColor(colorB, hdcSrc->format,
UINT32 colorA = ReadColor(srcp, hdcSrc->format);
UINT32 colorB = ReadColor(dstp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
color = ((colorA ^ colorB) & colorC) ^ colorA;
color = (colorA & colorB) | (~colorA & colorC);
WriteColor(dstp, hdcDest->format, color);
}
}
@ -485,12 +482,12 @@ static BOOL BitBlt_PSDPxax(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
if (srcp && dstp)
{
UINT32 color;
UINT32 colorB = ReadColor(srcp, hdcSrc->format);
UINT32 colorC = ReadColor(dstp, hdcDest->format);
UINT32 colorA = ReadColor(patp, hdcDest->format);
UINT32 colorA = ReadColor(srcp, hdcSrc->format);
UINT32 colorB = ReadColor(dstp, hdcDest->format);
UINT32 colorC = ReadColor(patp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
color = ((colorA ^ colorB) & colorC) ^ colorA;
color = (colorA & colorB) | (~colorA & colorC);
WriteColor(dstp, hdcDest->format, color);
}
}
@ -512,7 +509,7 @@ static BOOL BitBlt_SPDSxax(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
/* D = S ^ (P & (D ^ S)) */
if (hdcDest->brush->style == GDI_BS_SOLID)
{
UINT32 colorB = hdcDest->brush->color;
UINT32 color = hdcDest->brush->color;
for (y = 0; y < nHeight; y++)
{
@ -525,12 +522,12 @@ static BOOL BitBlt_SPDSxax(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
if (srcp && dstp)
{
UINT32 color;
UINT32 colorD;
UINT32 colorA = ReadColor(srcp, hdcSrc->format);
UINT32 colorC = ReadColor(dstp, hdcDest->format);
UINT32 colorB = ReadColor(dstp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
color = ((colorA ^ colorB) & colorC) ^ colorA;
colorD = colorA ^ (color & (colorB ^ colorA));
WriteColor(dstp, hdcDest->format, color);
}
}
@ -551,13 +548,13 @@ static BOOL BitBlt_SPDSxax(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
if (srcp && dstp)
{
UINT32 color;
UINT32 colorD;
UINT32 colorA = ReadColor(srcp, hdcSrc->format);
UINT32 colorB = ReadColor(patp, hdcDest->format);
UINT32 colorC = ReadColor(dstp, hdcDest->format);
UINT32 colorB = ReadColor(dstp, hdcDest->format);
UINT32 color = ReadColor(patp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
color = ((colorA ^ colorB) & colorC) ^ colorA;
colorD = colorA ^ (color & (colorB ^ colorA));
WriteColor(dstp, hdcDest->format, color);
}
}
@ -591,7 +588,7 @@ static BOOL BitBlt_SPna(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
UINT32 colorB = ReadColor(patp, hdcDest->format);
colorB = ConvertColor(colorB, hdcDest->format,
hdcSrc->format, palette);
color = (~colorA) & colorB;
color = colorA & ~colorB;
color = ConvertColor(color, hdcSrc->format, hdcDest->format, palette);
WriteColor(dstp, hdcDest->format, color);
}
@ -626,7 +623,7 @@ static BOOL BitBlt_DSna(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
UINT32 colorB = ReadColor(dstp, hdcDest->format);
colorA = ConvertColor(colorA, hdcSrc->format,
hdcDest->format, palette);
color = colorA & (~colorB);
color = ~colorA & colorB;
WriteColor(dstp, hdcDest->format, color);
}
}
@ -696,7 +693,7 @@ static BOOL BitBlt_MERGEPAINT(HGDI_DC hdcDest, UINT32 nXDest, UINT32 nYDest,
UINT32 color;
colorA = ConvertColor(colorA, hdcSrc->format, hdcDest->format,
palette);
color = colorA | (~colorB);
color = ~colorA | colorB;
WriteColor(dstp, hdcDest->format, color);
}
}

View File

@ -236,6 +236,7 @@ BOOL gdi_DeleteObject(HGDIOBJECT hgdiobject)
return TRUE;
}
/**
* Delete device context.\n
* @msdn{dd183533}