mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 22:23:05 +00:00
[FORMATTING]
Fix indentation. No code change. svn path=/trunk/; revision=38199
This commit is contained in:
parent
35568f58b0
commit
93d4ecb9e8
1 changed files with 2699 additions and 2690 deletions
|
@ -58,7 +58,8 @@
|
||||||
|
|
||||||
FT_Library library;
|
FT_Library library;
|
||||||
|
|
||||||
typedef struct _FONT_ENTRY {
|
typedef struct _FONT_ENTRY
|
||||||
|
{
|
||||||
LIST_ENTRY ListEntry;
|
LIST_ENTRY ListEntry;
|
||||||
FONTGDI *Font;
|
FONTGDI *Font;
|
||||||
UNICODE_STRING FaceName;
|
UNICODE_STRING FaceName;
|
||||||
|
@ -77,7 +78,8 @@ static BOOL RenderingEnabled = TRUE;
|
||||||
UINT Hits;
|
UINT Hits;
|
||||||
UINT Misses;
|
UINT Misses;
|
||||||
|
|
||||||
typedef struct _FONT_CACHE_ENTRY {
|
typedef struct _FONT_CACHE_ENTRY
|
||||||
|
{
|
||||||
LIST_ENTRY ListEntry;
|
LIST_ENTRY ListEntry;
|
||||||
int GlyphIndex;
|
int GlyphIndex;
|
||||||
FT_Face Face;
|
FT_Face Face;
|
||||||
|
@ -87,7 +89,8 @@ typedef struct _FONT_CACHE_ENTRY {
|
||||||
static LIST_ENTRY FontCacheListHead;
|
static LIST_ENTRY FontCacheListHead;
|
||||||
static UINT FontCacheNumEntries;
|
static UINT FontCacheNumEntries;
|
||||||
|
|
||||||
static PWCHAR ElfScripts[32] = { /* these are in the order of the fsCsb[0] bits */
|
static PWCHAR ElfScripts[32] = /* these are in the order of the fsCsb[0] bits */
|
||||||
|
{
|
||||||
L"Western", /*00*/
|
L"Western", /*00*/
|
||||||
L"Central_European",
|
L"Central_European",
|
||||||
L"Cyrillic",
|
L"Cyrillic",
|
||||||
|
@ -114,7 +117,8 @@ static PWCHAR ElfScripts[32] = { /* these are in the order of the fsCsb[0] bits
|
||||||
*/
|
*/
|
||||||
#define CP_SYMBOL 42
|
#define CP_SYMBOL 42
|
||||||
#define MAXTCIINDEX 32
|
#define MAXTCIINDEX 32
|
||||||
static const CHARSETINFO FontTci[MAXTCIINDEX] = {
|
static const CHARSETINFO FontTci[MAXTCIINDEX] =
|
||||||
|
{
|
||||||
/* ANSI */
|
/* ANSI */
|
||||||
{ ANSI_CHARSET, 1252, {{0,0,0,0},{FS_LATIN1,0}} },
|
{ ANSI_CHARSET, 1252, {{0,0,0,0},{FS_LATIN1,0}} },
|
||||||
{ EASTEUROPE_CHARSET, 1250, {{0,0,0,0},{FS_LATIN2,0}} },
|
{ EASTEUROPE_CHARSET, 1250, {{0,0,0,0},{FS_LATIN2,0}} },
|
||||||
|
@ -166,7 +170,8 @@ InitFontSupport(VOID)
|
||||||
ExInitializeFastMutex(&FreeTypeLock);
|
ExInitializeFastMutex(&FreeTypeLock);
|
||||||
|
|
||||||
ulError = FT_Init_FreeType(&library);
|
ulError = FT_Init_FreeType(&library);
|
||||||
if (ulError) {
|
if (ulError)
|
||||||
|
{
|
||||||
DPRINT1("FT_Init_FreeType failed with error code 0x%x\n", ulError);
|
DPRINT1("FT_Init_FreeType failed with error code 0x%x\n", ulError);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -367,7 +372,7 @@ IntGdiAddFontResource(PUNICODE_STRING FileName, DWORD Characteristics)
|
||||||
}
|
}
|
||||||
|
|
||||||
FontGDI = EngAllocMem(FL_ZERO_MEMORY, sizeof(FONTGDI), TAG_FONTOBJ);
|
FontGDI = EngAllocMem(FL_ZERO_MEMORY, sizeof(FONTGDI), TAG_FONTOBJ);
|
||||||
if(FontGDI == NULL)
|
if (FontGDI == NULL)
|
||||||
{
|
{
|
||||||
FT_Done_Face(Face);
|
FT_Done_Face(Face);
|
||||||
ObDereferenceObject(SectionObject);
|
ObDereferenceObject(SectionObject);
|
||||||
|
@ -466,13 +471,13 @@ IntEnableFontRendering(BOOL Enable)
|
||||||
FT_Render_Mode FASTCALL
|
FT_Render_Mode FASTCALL
|
||||||
IntGetFontRenderMode(LOGFONTW *logfont)
|
IntGetFontRenderMode(LOGFONTW *logfont)
|
||||||
{
|
{
|
||||||
switch(logfont->lfQuality)
|
switch (logfont->lfQuality)
|
||||||
{
|
{
|
||||||
case NONANTIALIASED_QUALITY:
|
case NONANTIALIASED_QUALITY:
|
||||||
return FT_RENDER_MODE_MONO;
|
return FT_RENDER_MODE_MONO;
|
||||||
case DRAFT_QUALITY:
|
case DRAFT_QUALITY:
|
||||||
return FT_RENDER_MODE_LIGHT;
|
return FT_RENDER_MODE_LIGHT;
|
||||||
/* case CLEARTYPE_QUALITY:
|
/* case CLEARTYPE_QUALITY:
|
||||||
return FT_RENDER_MODE_LCD; */
|
return FT_RENDER_MODE_LCD; */
|
||||||
}
|
}
|
||||||
return FT_RENDER_MODE_NORMAL;
|
return FT_RENDER_MODE_NORMAL;
|
||||||
|
@ -1309,15 +1314,16 @@ ftGdiGlyphCacheGet(
|
||||||
CurrentEntry = CurrentEntry->Flink;
|
CurrentEntry = CurrentEntry->Flink;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentEntry == &FontCacheListHead) {
|
if (CurrentEntry == &FontCacheListHead)
|
||||||
|
{
|
||||||
// DbgPrint("Miss! %x\n", FontEntry->Glyph);
|
// DbgPrint("Miss! %x\n", FontEntry->Glyph);
|
||||||
/*
|
/*
|
||||||
Misses++;
|
Misses++;
|
||||||
if (Misses>100) {
|
if (Misses>100) {
|
||||||
DbgPrint ("Hits: %d Misses: %d\n", Hits, Misses);
|
DbgPrint ("Hits: %d Misses: %d\n", Hits, Misses);
|
||||||
Hits = Misses = 0;
|
Hits = Misses = 0;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1325,14 +1331,14 @@ ftGdiGlyphCacheGet(
|
||||||
InsertHeadList(&FontCacheListHead, CurrentEntry);
|
InsertHeadList(&FontCacheListHead, CurrentEntry);
|
||||||
|
|
||||||
// DbgPrint("Hit! %x\n", FontEntry->Glyph);
|
// DbgPrint("Hit! %x\n", FontEntry->Glyph);
|
||||||
/*
|
/*
|
||||||
Hits++;
|
Hits++;
|
||||||
|
|
||||||
if (Hits>100) {
|
if (Hits>100) {
|
||||||
DbgPrint ("Hits: %d Misses: %d\n", Hits, Misses);
|
DbgPrint ("Hits: %d Misses: %d\n", Hits, Misses);
|
||||||
Hits = Misses = 0;
|
Hits = Misses = 0;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
return FontEntry->Glyph;
|
return FontEntry->Glyph;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1377,7 +1383,8 @@ ftGdiGlyphCacheSet(
|
||||||
NewEntry->Height = Height;
|
NewEntry->Height = Height;
|
||||||
|
|
||||||
InsertHeadList(&FontCacheListHead, &NewEntry->ListEntry);
|
InsertHeadList(&FontCacheListHead, &NewEntry->ListEntry);
|
||||||
if (FontCacheNumEntries++ > MAX_FONT_CACHE) {
|
if (FontCacheNumEntries++ > MAX_FONT_CACHE)
|
||||||
|
{
|
||||||
NewEntry = (PFONT_CACHE_ENTRY)FontCacheListHead.Blink;
|
NewEntry = (PFONT_CACHE_ENTRY)FontCacheListHead.Blink;
|
||||||
FT_Done_Glyph(NewEntry->Glyph);
|
FT_Done_Glyph(NewEntry->Glyph);
|
||||||
RemoveTailList(&FontCacheListHead);
|
RemoveTailList(&FontCacheListHead);
|
||||||
|
@ -1471,7 +1478,7 @@ ftGdiGetGlyphOutline(
|
||||||
cjBuf, pvBuf, pmat2);
|
cjBuf, pvBuf, pmat2);
|
||||||
|
|
||||||
Dc_Attr = dc->pDc_Attr;
|
Dc_Attr = dc->pDc_Attr;
|
||||||
if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
if (!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
||||||
|
|
||||||
MatrixS2XForm(&xForm, &dc->DcLevel.mxWorldToDevice);
|
MatrixS2XForm(&xForm, &dc->DcLevel.mxWorldToDevice);
|
||||||
eM11 = xForm.eM11;
|
eM11 = xForm.eM11;
|
||||||
|
@ -1651,9 +1658,9 @@ ftGdiGetGlyphOutline(
|
||||||
{
|
{
|
||||||
INT xc, yc;
|
INT xc, yc;
|
||||||
FT_Vector vec;
|
FT_Vector vec;
|
||||||
for(xc = 0; xc < 2; xc++)
|
for (xc = 0; xc < 2; xc++)
|
||||||
{
|
{
|
||||||
for(yc = 0; yc < 2; yc++)
|
for (yc = 0; yc < 2; yc++)
|
||||||
{
|
{
|
||||||
vec.x = (ft_face->glyph->metrics.horiBearingX +
|
vec.x = (ft_face->glyph->metrics.horiBearingX +
|
||||||
xc * ft_face->glyph->metrics.width);
|
xc * ft_face->glyph->metrics.width);
|
||||||
|
@ -1661,17 +1668,17 @@ ftGdiGetGlyphOutline(
|
||||||
yc * ft_face->glyph->metrics.height;
|
yc * ft_face->glyph->metrics.height;
|
||||||
DPRINT("Vec %ld,%ld\n", vec.x, vec.y);
|
DPRINT("Vec %ld,%ld\n", vec.x, vec.y);
|
||||||
FT_Vector_Transform(&vec, &transMat);
|
FT_Vector_Transform(&vec, &transMat);
|
||||||
if(xc == 0 && yc == 0)
|
if (xc == 0 && yc == 0)
|
||||||
{
|
{
|
||||||
left = right = vec.x;
|
left = right = vec.x;
|
||||||
top = bottom = vec.y;
|
top = bottom = vec.y;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(vec.x < left) left = vec.x;
|
if (vec.x < left) left = vec.x;
|
||||||
else if(vec.x > right) right = vec.x;
|
else if (vec.x > right) right = vec.x;
|
||||||
if(vec.y < bottom) bottom = vec.y;
|
if (vec.y < bottom) bottom = vec.y;
|
||||||
else if(vec.y > top) top = vec.y;
|
else if (vec.y > top) top = vec.y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1713,7 +1720,7 @@ ftGdiGetGlyphOutline(
|
||||||
return GDI_ERROR;
|
return GDI_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(iFormat)
|
switch (iFormat)
|
||||||
{
|
{
|
||||||
case GGO_BITMAP:
|
case GGO_BITMAP:
|
||||||
width = gm.gmBlackBoxX;
|
width = gm.gmBlackBoxX;
|
||||||
|
@ -1721,16 +1728,16 @@ ftGdiGetGlyphOutline(
|
||||||
pitch = ((width + 31) >> 5) << 2;
|
pitch = ((width + 31) >> 5) << 2;
|
||||||
needed = pitch * height;
|
needed = pitch * height;
|
||||||
|
|
||||||
if(!pvBuf || !cjBuf) break;
|
if (!pvBuf || !cjBuf) break;
|
||||||
|
|
||||||
switch(ft_face->glyph->format)
|
switch (ft_face->glyph->format)
|
||||||
{
|
{
|
||||||
case ft_glyph_format_bitmap:
|
case ft_glyph_format_bitmap:
|
||||||
{
|
{
|
||||||
BYTE *src = ft_face->glyph->bitmap.buffer, *dst = pvBuf;
|
BYTE *src = ft_face->glyph->bitmap.buffer, *dst = pvBuf;
|
||||||
INT w = (ft_face->glyph->bitmap.width + 7) >> 3;
|
INT w = (ft_face->glyph->bitmap.width + 7) >> 3;
|
||||||
INT h = ft_face->glyph->bitmap.rows;
|
INT h = ft_face->glyph->bitmap.rows;
|
||||||
while(h--)
|
while (h--)
|
||||||
{
|
{
|
||||||
RtlCopyMemory(dst, src, w);
|
RtlCopyMemory(dst, src, w);
|
||||||
src += ft_face->glyph->bitmap.pitch;
|
src += ft_face->glyph->bitmap.pitch;
|
||||||
|
@ -1747,7 +1754,7 @@ ftGdiGetGlyphOutline(
|
||||||
ft_bitmap.buffer = pvBuf;
|
ft_bitmap.buffer = pvBuf;
|
||||||
|
|
||||||
IntLockFreeType;
|
IntLockFreeType;
|
||||||
if(needsTransform)
|
if (needsTransform)
|
||||||
{
|
{
|
||||||
FT_Outline_Transform(&ft_face->glyph->outline, &transMat);
|
FT_Outline_Transform(&ft_face->glyph->outline, &transMat);
|
||||||
}
|
}
|
||||||
|
@ -1776,20 +1783,20 @@ ftGdiGetGlyphOutline(
|
||||||
pitch = (width + 3) / 4 * 4;
|
pitch = (width + 3) / 4 * 4;
|
||||||
needed = pitch * height;
|
needed = pitch * height;
|
||||||
|
|
||||||
if(!pvBuf || !cjBuf) break;
|
if (!pvBuf || !cjBuf) break;
|
||||||
|
|
||||||
switch(ft_face->glyph->format)
|
switch (ft_face->glyph->format)
|
||||||
{
|
{
|
||||||
case ft_glyph_format_bitmap:
|
case ft_glyph_format_bitmap:
|
||||||
{
|
{
|
||||||
BYTE *src = ft_face->glyph->bitmap.buffer, *dst = pvBuf;
|
BYTE *src = ft_face->glyph->bitmap.buffer, *dst = pvBuf;
|
||||||
INT h = ft_face->glyph->bitmap.rows;
|
INT h = ft_face->glyph->bitmap.rows;
|
||||||
INT x;
|
INT x;
|
||||||
while(h--)
|
while (h--)
|
||||||
{
|
{
|
||||||
for(x = 0; x < pitch; x++)
|
for (x = 0; x < pitch; x++)
|
||||||
{
|
{
|
||||||
if(x < ft_face->glyph->bitmap.width)
|
if (x < ft_face->glyph->bitmap.width)
|
||||||
dst[x] = (src[x / 8] & (1 << ( (7 - (x % 8))))) ? 0xff : 0;
|
dst[x] = (src[x / 8] & (1 << ( (7 - (x % 8))))) ? 0xff : 0;
|
||||||
else
|
else
|
||||||
dst[x] = 0;
|
dst[x] = 0;
|
||||||
|
@ -1833,10 +1840,10 @@ ftGdiGetGlyphOutline(
|
||||||
return GDI_ERROR;
|
return GDI_ERROR;
|
||||||
}
|
}
|
||||||
start = pvBuf;
|
start = pvBuf;
|
||||||
for(row = 0; row < height; row++)
|
for (row = 0; row < height; row++)
|
||||||
{
|
{
|
||||||
ptr = start;
|
ptr = start;
|
||||||
for(col = 0; col < width; col++, ptr++)
|
for (col = 0; col < width; col++, ptr++)
|
||||||
{
|
{
|
||||||
*ptr = (((int)*ptr) * mult + 128) / 256;
|
*ptr = (((int)*ptr) * mult + 128) / 256;
|
||||||
}
|
}
|
||||||
|
@ -1853,24 +1860,24 @@ ftGdiGetGlyphOutline(
|
||||||
TTPOLYCURVE *ppc;
|
TTPOLYCURVE *ppc;
|
||||||
DWORD pph_start, cpfx, type;
|
DWORD pph_start, cpfx, type;
|
||||||
|
|
||||||
if(cjBuf == 0) pvBuf = NULL; /* This is okay, need cjBuf to allocate. */
|
if (cjBuf == 0) pvBuf = NULL; /* This is okay, need cjBuf to allocate. */
|
||||||
|
|
||||||
IntLockFreeType;
|
IntLockFreeType;
|
||||||
if (needsTransform && pvBuf) FT_Outline_Transform(outline, &transMat);
|
if (needsTransform && pvBuf) FT_Outline_Transform(outline, &transMat);
|
||||||
|
|
||||||
for(contour = 0; contour < outline->n_contours; contour++)
|
for (contour = 0; contour < outline->n_contours; contour++)
|
||||||
{
|
{
|
||||||
pph_start = needed;
|
pph_start = needed;
|
||||||
pph = (TTPOLYGONHEADER *)((char *)pvBuf + needed);
|
pph = (TTPOLYGONHEADER *)((char *)pvBuf + needed);
|
||||||
first_pt = point;
|
first_pt = point;
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
{
|
{
|
||||||
pph->dwType = TT_POLYGON_TYPE;
|
pph->dwType = TT_POLYGON_TYPE;
|
||||||
FTVectorToPOINTFX(&outline->points[point], &pph->pfxStart);
|
FTVectorToPOINTFX(&outline->points[point], &pph->pfxStart);
|
||||||
}
|
}
|
||||||
needed += sizeof(*pph);
|
needed += sizeof(*pph);
|
||||||
point++;
|
point++;
|
||||||
while(point <= outline->contours[contour])
|
while (point <= outline->contours[contour])
|
||||||
{
|
{
|
||||||
ppc = (TTPOLYCURVE *)((char *)pvBuf + needed);
|
ppc = (TTPOLYCURVE *)((char *)pvBuf + needed);
|
||||||
type = (outline->tags[point] & FT_Curve_Tag_On) ?
|
type = (outline->tags[point] & FT_Curve_Tag_On) ?
|
||||||
|
@ -1878,40 +1885,41 @@ ftGdiGetGlyphOutline(
|
||||||
cpfx = 0;
|
cpfx = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
FTVectorToPOINTFX(&outline->points[point], &ppc->apfx[cpfx]);
|
FTVectorToPOINTFX(&outline->points[point], &ppc->apfx[cpfx]);
|
||||||
cpfx++;
|
cpfx++;
|
||||||
point++;
|
point++;
|
||||||
} while(point <= outline->contours[contour] &&
|
}
|
||||||
|
while (point <= outline->contours[contour] &&
|
||||||
(outline->tags[point] & FT_Curve_Tag_On) ==
|
(outline->tags[point] & FT_Curve_Tag_On) ==
|
||||||
(outline->tags[point-1] & FT_Curve_Tag_On));
|
(outline->tags[point-1] & FT_Curve_Tag_On));
|
||||||
|
|
||||||
/* At the end of a contour Windows adds the start point, but
|
/* At the end of a contour Windows adds the start point, but
|
||||||
only for Beziers */
|
only for Beziers */
|
||||||
if(point > outline->contours[contour] &&
|
if (point > outline->contours[contour] &&
|
||||||
!(outline->tags[point-1] & FT_Curve_Tag_On))
|
!(outline->tags[point-1] & FT_Curve_Tag_On))
|
||||||
{
|
{
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
FTVectorToPOINTFX(&outline->points[first_pt], &ppc->apfx[cpfx]);
|
FTVectorToPOINTFX(&outline->points[first_pt], &ppc->apfx[cpfx]);
|
||||||
cpfx++;
|
cpfx++;
|
||||||
}
|
}
|
||||||
else if(point <= outline->contours[contour] &&
|
else if (point <= outline->contours[contour] &&
|
||||||
outline->tags[point] & FT_Curve_Tag_On)
|
outline->tags[point] & FT_Curve_Tag_On)
|
||||||
{
|
{
|
||||||
/* add closing pt for bezier */
|
/* add closing pt for bezier */
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
FTVectorToPOINTFX(&outline->points[point], &ppc->apfx[cpfx]);
|
FTVectorToPOINTFX(&outline->points[point], &ppc->apfx[cpfx]);
|
||||||
cpfx++;
|
cpfx++;
|
||||||
point++;
|
point++;
|
||||||
}
|
}
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
{
|
{
|
||||||
ppc->wType = type;
|
ppc->wType = type;
|
||||||
ppc->cpfx = cpfx;
|
ppc->cpfx = cpfx;
|
||||||
}
|
}
|
||||||
needed += sizeof(*ppc) + (cpfx - 1) * sizeof(POINTFX);
|
needed += sizeof(*ppc) + (cpfx - 1) * sizeof(POINTFX);
|
||||||
}
|
}
|
||||||
if(pvBuf) pph->cb = needed - pph_start;
|
if (pvBuf) pph->cb = needed - pph_start;
|
||||||
}
|
}
|
||||||
IntUnLockFreeType;
|
IntUnLockFreeType;
|
||||||
break;
|
break;
|
||||||
|
@ -1941,7 +1949,7 @@ ftGdiGetGlyphOutline(
|
||||||
TTPOLYCURVE *ppc;
|
TTPOLYCURVE *ppc;
|
||||||
DWORD pph_start, cpfx, type;
|
DWORD pph_start, cpfx, type;
|
||||||
FT_Vector cubic_control[4];
|
FT_Vector cubic_control[4];
|
||||||
if(cjBuf == 0) pvBuf = NULL;
|
if (cjBuf == 0) pvBuf = NULL;
|
||||||
|
|
||||||
if (needsTransform && pvBuf)
|
if (needsTransform && pvBuf)
|
||||||
{
|
{
|
||||||
|
@ -1950,19 +1958,19 @@ ftGdiGetGlyphOutline(
|
||||||
IntUnLockFreeType;
|
IntUnLockFreeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(contour = 0; contour < outline->n_contours; contour++)
|
for (contour = 0; contour < outline->n_contours; contour++)
|
||||||
{
|
{
|
||||||
pph_start = needed;
|
pph_start = needed;
|
||||||
pph = (TTPOLYGONHEADER *)((char *)pvBuf + needed);
|
pph = (TTPOLYGONHEADER *)((char *)pvBuf + needed);
|
||||||
first_pt = point;
|
first_pt = point;
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
{
|
{
|
||||||
pph->dwType = TT_POLYGON_TYPE;
|
pph->dwType = TT_POLYGON_TYPE;
|
||||||
FTVectorToPOINTFX(&outline->points[point], &pph->pfxStart);
|
FTVectorToPOINTFX(&outline->points[point], &pph->pfxStart);
|
||||||
}
|
}
|
||||||
needed += sizeof(*pph);
|
needed += sizeof(*pph);
|
||||||
point++;
|
point++;
|
||||||
while(point <= outline->contours[contour])
|
while (point <= outline->contours[contour])
|
||||||
{
|
{
|
||||||
ppc = (TTPOLYCURVE *)((char *)pvBuf + needed);
|
ppc = (TTPOLYCURVE *)((char *)pvBuf + needed);
|
||||||
type = (outline->tags[point] & FT_Curve_Tag_On) ?
|
type = (outline->tags[point] & FT_Curve_Tag_On) ?
|
||||||
|
@ -1970,9 +1978,9 @@ ftGdiGetGlyphOutline(
|
||||||
cpfx = 0;
|
cpfx = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if(type == TT_PRIM_LINE)
|
if (type == TT_PRIM_LINE)
|
||||||
{
|
{
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
FTVectorToPOINTFX(&outline->points[point], &ppc->apfx[cpfx]);
|
FTVectorToPOINTFX(&outline->points[point], &ppc->apfx[cpfx]);
|
||||||
cpfx++;
|
cpfx++;
|
||||||
point++;
|
point++;
|
||||||
|
@ -1985,19 +1993,19 @@ ftGdiGetGlyphOutline(
|
||||||
/* FIXME: Possible optimization in endpoint calculation
|
/* FIXME: Possible optimization in endpoint calculation
|
||||||
if there are two consecutive curves */
|
if there are two consecutive curves */
|
||||||
cubic_control[0] = outline->points[point-1];
|
cubic_control[0] = outline->points[point-1];
|
||||||
if(!(outline->tags[point-1] & FT_Curve_Tag_On))
|
if (!(outline->tags[point-1] & FT_Curve_Tag_On))
|
||||||
{
|
{
|
||||||
cubic_control[0].x += outline->points[point].x + 1;
|
cubic_control[0].x += outline->points[point].x + 1;
|
||||||
cubic_control[0].y += outline->points[point].y + 1;
|
cubic_control[0].y += outline->points[point].y + 1;
|
||||||
cubic_control[0].x >>= 1;
|
cubic_control[0].x >>= 1;
|
||||||
cubic_control[0].y >>= 1;
|
cubic_control[0].y >>= 1;
|
||||||
}
|
}
|
||||||
if(point+1 > outline->contours[contour])
|
if (point+1 > outline->contours[contour])
|
||||||
cubic_control[3] = outline->points[first_pt];
|
cubic_control[3] = outline->points[first_pt];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cubic_control[3] = outline->points[point+1];
|
cubic_control[3] = outline->points[point+1];
|
||||||
if(!(outline->tags[point+1] & FT_Curve_Tag_On))
|
if (!(outline->tags[point+1] & FT_Curve_Tag_On))
|
||||||
{
|
{
|
||||||
cubic_control[3].x += outline->points[point].x + 1;
|
cubic_control[3].x += outline->points[point].x + 1;
|
||||||
cubic_control[3].y += outline->points[point].y + 1;
|
cubic_control[3].y += outline->points[point].y + 1;
|
||||||
|
@ -2014,7 +2022,7 @@ ftGdiGetGlyphOutline(
|
||||||
cubic_control[1].y += (cubic_control[0].y + 1) / 3;
|
cubic_control[1].y += (cubic_control[0].y + 1) / 3;
|
||||||
cubic_control[2].x += (cubic_control[3].x + 1) / 3;
|
cubic_control[2].x += (cubic_control[3].x + 1) / 3;
|
||||||
cubic_control[2].y += (cubic_control[3].y + 1) / 3;
|
cubic_control[2].y += (cubic_control[3].y + 1) / 3;
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
{
|
{
|
||||||
FTVectorToPOINTFX(&cubic_control[1], &ppc->apfx[cpfx]);
|
FTVectorToPOINTFX(&cubic_control[1], &ppc->apfx[cpfx]);
|
||||||
FTVectorToPOINTFX(&cubic_control[2], &ppc->apfx[cpfx+1]);
|
FTVectorToPOINTFX(&cubic_control[2], &ppc->apfx[cpfx+1]);
|
||||||
|
@ -2024,27 +2032,27 @@ ftGdiGetGlyphOutline(
|
||||||
point++;
|
point++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while(point <= outline->contours[contour] &&
|
while (point <= outline->contours[contour] &&
|
||||||
(outline->tags[point] & FT_Curve_Tag_On) ==
|
(outline->tags[point] & FT_Curve_Tag_On) ==
|
||||||
(outline->tags[point-1] & FT_Curve_Tag_On));
|
(outline->tags[point-1] & FT_Curve_Tag_On));
|
||||||
/* At the end of a contour Windows adds the start point,
|
/* At the end of a contour Windows adds the start point,
|
||||||
but only for Beziers and we've already done that.
|
but only for Beziers and we've already done that.
|
||||||
*/
|
*/
|
||||||
if(point <= outline->contours[contour] &&
|
if (point <= outline->contours[contour] &&
|
||||||
outline->tags[point] & FT_Curve_Tag_On)
|
outline->tags[point] & FT_Curve_Tag_On)
|
||||||
{
|
{
|
||||||
/* This is the closing pt of a bezier, but we've already
|
/* This is the closing pt of a bezier, but we've already
|
||||||
added it, so just inc point and carry on */
|
added it, so just inc point and carry on */
|
||||||
point++;
|
point++;
|
||||||
}
|
}
|
||||||
if(pvBuf)
|
if (pvBuf)
|
||||||
{
|
{
|
||||||
ppc->wType = type;
|
ppc->wType = type;
|
||||||
ppc->cpfx = cpfx;
|
ppc->cpfx = cpfx;
|
||||||
}
|
}
|
||||||
needed += sizeof(*ppc) + (cpfx - 1) * sizeof(POINTFX);
|
needed += sizeof(*ppc) + (cpfx - 1) * sizeof(POINTFX);
|
||||||
}
|
}
|
||||||
if(pvBuf) pph->cb = needed - pph_start;
|
if (pvBuf) pph->cb = needed - pph_start;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2212,7 +2220,7 @@ ftGdiGetTextCharsetInfo(
|
||||||
USHORT usACP, usOEM;
|
USHORT usACP, usOEM;
|
||||||
|
|
||||||
Dc_Attr = Dc->pDc_Attr;
|
Dc_Attr = Dc->pDc_Attr;
|
||||||
if(!Dc_Attr) Dc_Attr = &Dc->Dc_Attr;
|
if (!Dc_Attr) Dc_Attr = &Dc->Dc_Attr;
|
||||||
hFont = Dc_Attr->hlfntNew;
|
hFont = Dc_Attr->hlfntNew;
|
||||||
TextObj = RealizeFontInit(hFont);
|
TextObj = RealizeFontInit(hFont);
|
||||||
|
|
||||||
|
@ -2241,7 +2249,7 @@ ftGdiGetTextCharsetInfo(
|
||||||
{
|
{
|
||||||
FT_UInt dummy;
|
FT_UInt dummy;
|
||||||
|
|
||||||
if(FT_Get_First_Char( Face, &dummy ) < 0x100)
|
if (FT_Get_First_Char( Face, &dummy ) < 0x100)
|
||||||
fs.fsCsb[0] |= FS_LATIN1;
|
fs.fsCsb[0] |= FS_LATIN1;
|
||||||
else
|
else
|
||||||
fs.fsCsb[0] |= FS_SYMBOL;
|
fs.fsCsb[0] |= FS_SYMBOL;
|
||||||
|
@ -2394,13 +2402,13 @@ ftGdiGetTextMetricsW(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(dc = DC_LockDc(hDC)))
|
if (!(dc = DC_LockDc(hDC)))
|
||||||
{
|
{
|
||||||
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
Dc_Attr = dc->pDc_Attr;
|
Dc_Attr = dc->pDc_Attr;
|
||||||
if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
if (!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
||||||
TextObj = RealizeFontInit(Dc_Attr->hlfntNew);
|
TextObj = RealizeFontInit(Dc_Attr->hlfntNew);
|
||||||
if (NULL != TextObj)
|
if (NULL != TextObj)
|
||||||
{
|
{
|
||||||
|
@ -2501,7 +2509,7 @@ ftGdiGetFontData(
|
||||||
|
|
||||||
Error = FT_Load_Sfnt_Table(FontGdi->face, Table, Offset, NULL, &Needed);
|
Error = FT_Load_Sfnt_Table(FontGdi->face, Table, Offset, NULL, &Needed);
|
||||||
|
|
||||||
if( !Error && Needed < Size) Size = Needed;
|
if ( !Error && Needed < Size) Size = Needed;
|
||||||
}
|
}
|
||||||
if (!FT_Load_Sfnt_Table(FontGdi->face, Table, Offset, Buffer, &Size))
|
if (!FT_Load_Sfnt_Table(FontGdi->face, Table, Offset, Buffer, &Size))
|
||||||
Result = Size;
|
Result = Size;
|
||||||
|
@ -2884,7 +2892,7 @@ IntGdiGetFontResourceInfo(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(dwType)
|
switch (dwType)
|
||||||
{
|
{
|
||||||
case 0: /* FIXME: returns 1 or 2, don't know what this is atm */
|
case 0: /* FIXME: returns 1 or 2, don't know what this is atm */
|
||||||
*(DWORD*)pBuffer = 1;
|
*(DWORD*)pBuffer = 1;
|
||||||
|
@ -3144,7 +3152,7 @@ NtGdiExtTextOutW(
|
||||||
}
|
}
|
||||||
|
|
||||||
Dc_Attr = dc->pDc_Attr;
|
Dc_Attr = dc->pDc_Attr;
|
||||||
if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
if (!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
||||||
|
|
||||||
/* Check if String is valid */
|
/* Check if String is valid */
|
||||||
if ((Count > 0xFFFF) || (Count > 0 && UnsafeString == NULL))
|
if ((Count > 0xFFFF) || (Count > 0 && UnsafeString == NULL))
|
||||||
|
@ -3217,7 +3225,8 @@ NtGdiExtTextOutW(
|
||||||
SurfObj = &BitmapObj->SurfObj;
|
SurfObj = &BitmapObj->SurfObj;
|
||||||
ASSERT(SurfObj);
|
ASSERT(SurfObj);
|
||||||
|
|
||||||
Start.x = XStart; Start.y = YStart;
|
Start.x = XStart;
|
||||||
|
Start.y = YStart;
|
||||||
IntLPtoDP(dc, &Start, 1);
|
IntLPtoDP(dc, &Start, 1);
|
||||||
|
|
||||||
RealXStart = (Start.x + dc->ptlDCOrig.x) << 6;
|
RealXStart = (Start.x + dc->ptlDCOrig.x) << 6;
|
||||||
|
@ -3307,7 +3316,7 @@ NtGdiExtTextOutW(
|
||||||
}
|
}
|
||||||
|
|
||||||
TextObj = RealizeFontInit(Dc_Attr->hlfntNew);
|
TextObj = RealizeFontInit(Dc_Attr->hlfntNew);
|
||||||
if(TextObj == NULL)
|
if (TextObj == NULL)
|
||||||
{
|
{
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@ -3642,7 +3651,7 @@ NtGdiExtTextOutW(
|
||||||
EngDeleteXlate(XlateObj);
|
EngDeleteXlate(XlateObj);
|
||||||
EngDeleteXlate(XlateObj2);
|
EngDeleteXlate(XlateObj2);
|
||||||
BITMAPOBJ_UnlockBitmap(BitmapObj);
|
BITMAPOBJ_UnlockBitmap(BitmapObj);
|
||||||
if(TextObj != NULL)
|
if (TextObj != NULL)
|
||||||
TEXTOBJ_UnlockText(TextObj);
|
TEXTOBJ_UnlockText(TextObj);
|
||||||
if (hBrushBg != NULL)
|
if (hBrushBg != NULL)
|
||||||
{
|
{
|
||||||
|
@ -3669,7 +3678,7 @@ fail:
|
||||||
EngDeleteXlate(XlateObj2);
|
EngDeleteXlate(XlateObj2);
|
||||||
if ( XlateObj != NULL )
|
if ( XlateObj != NULL )
|
||||||
EngDeleteXlate(XlateObj);
|
EngDeleteXlate(XlateObj);
|
||||||
if(TextObj != NULL)
|
if (TextObj != NULL)
|
||||||
TEXTOBJ_UnlockText(TextObj);
|
TEXTOBJ_UnlockText(TextObj);
|
||||||
if (BitmapObj != NULL)
|
if (BitmapObj != NULL)
|
||||||
BITMAPOBJ_UnlockBitmap(BitmapObj);
|
BITMAPOBJ_UnlockBitmap(BitmapObj);
|
||||||
|
@ -3696,9 +3705,9 @@ fail:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
APIENTRY
|
APIENTRY
|
||||||
NtGdiGetCharABCWidthsW(
|
NtGdiGetCharABCWidthsW(
|
||||||
|
@ -3721,7 +3730,7 @@ NtGdiGetCharABCWidthsW(
|
||||||
HFONT hFont = 0;
|
HFONT hFont = 0;
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
if(pwch)
|
if (pwch)
|
||||||
{
|
{
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
|
@ -3758,7 +3767,7 @@ NtGdiGetCharABCWidthsW(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
Dc_Attr = dc->pDc_Attr;
|
Dc_Attr = dc->pDc_Attr;
|
||||||
if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
if (!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
||||||
hFont = Dc_Attr->hlfntNew;
|
hFont = Dc_Attr->hlfntNew;
|
||||||
TextObj = RealizeFontInit(hFont);
|
TextObj = RealizeFontInit(hFont);
|
||||||
DC_UnlockDc(dc);
|
DC_UnlockDc(dc);
|
||||||
|
@ -3834,7 +3843,7 @@ NtGdiGetCharABCWidthsW(
|
||||||
|
|
||||||
lsb = left >> 6;
|
lsb = left >> 6;
|
||||||
bbx = (right - left) >> 6;
|
bbx = (right - left) >> 6;
|
||||||
/*
|
/*
|
||||||
DPRINT1("lsb %d and bbx %d\n", lsb, bbx );
|
DPRINT1("lsb %d and bbx %d\n", lsb, bbx );
|
||||||
*/
|
*/
|
||||||
if (!fl)
|
if (!fl)
|
||||||
|
@ -3864,9 +3873,9 @@ NtGdiGetCharABCWidthsW(
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
APIENTRY
|
APIENTRY
|
||||||
NtGdiGetCharWidthW(
|
NtGdiGetCharWidthW(
|
||||||
|
@ -3889,7 +3898,7 @@ NtGdiGetCharWidthW(
|
||||||
UINT i, glyph_index, BufferSize;
|
UINT i, glyph_index, BufferSize;
|
||||||
HFONT hFont = 0;
|
HFONT hFont = 0;
|
||||||
|
|
||||||
if(pwc)
|
if (pwc)
|
||||||
{
|
{
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
|
@ -3926,7 +3935,7 @@ NtGdiGetCharWidthW(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
Dc_Attr = dc->pDc_Attr;
|
Dc_Attr = dc->pDc_Attr;
|
||||||
if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
if (!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
||||||
hFont = Dc_Attr->hlfntNew;
|
hFont = Dc_Attr->hlfntNew;
|
||||||
TextObj = RealizeFontInit(hFont);
|
TextObj = RealizeFontInit(hFont);
|
||||||
DC_UnlockDc(dc);
|
DC_UnlockDc(dc);
|
||||||
|
@ -4004,9 +4013,9 @@ NtGdiGetCharWidthW(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
APIENTRY
|
APIENTRY
|
||||||
NtGdiGetGlyphIndicesW(
|
NtGdiGetGlyphIndicesW(
|
||||||
|
@ -4038,7 +4047,7 @@ NtGdiGetGlyphIndicesW(
|
||||||
return GDI_ERROR;
|
return GDI_ERROR;
|
||||||
}
|
}
|
||||||
Dc_Attr = dc->pDc_Attr;
|
Dc_Attr = dc->pDc_Attr;
|
||||||
if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
if (!Dc_Attr) Dc_Attr = &dc->Dc_Attr;
|
||||||
hFont = Dc_Attr->hlfntNew;
|
hFont = Dc_Attr->hlfntNew;
|
||||||
TextObj = RealizeFontInit(hFont);
|
TextObj = RealizeFontInit(hFont);
|
||||||
DC_UnlockDc(dc);
|
DC_UnlockDc(dc);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue