gdi32: Keep track of the number of unique fonts that are created and return this in the second DWORD of the GdiRealizationInfo structure.
This commit is contained in:
parent
2d6d879562
commit
29637c1441
|
@ -3254,14 +3254,6 @@ BOOL WINAPI FontIsLinked(HDC hdc)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
DWORD flags; /* 1 for bitmap fonts, 3 for scalable fonts */
|
|
||||||
DWORD unknown1; /* keeps incrementing - num of fonts that have been created or selected into a dc ?? */
|
|
||||||
DWORD unknown2; /* fixed for a given font - looks like it could be the order of the face in the font list or the order
|
|
||||||
in which the face was first rendered. */
|
|
||||||
} realization_info_t;
|
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
* GdiRealizationInfo (GDI32.@)
|
* GdiRealizationInfo (GDI32.@)
|
||||||
*
|
*
|
||||||
|
@ -3269,14 +3261,12 @@ typedef struct
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI GdiRealizationInfo(HDC hdc, realization_info_t *info)
|
BOOL WINAPI GdiRealizationInfo(HDC hdc, realization_info_t *info)
|
||||||
{
|
{
|
||||||
UINT otm_size;
|
DC *dc = get_dc_ptr(hdc);
|
||||||
FIXME("(%p, %p): stub!\n", hdc, info);
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
info->flags = 1;
|
if (!dc) return FALSE;
|
||||||
otm_size = GetOutlineTextMetricsW(hdc, 0, NULL);
|
if (dc->gdiFont) ret = WineEngRealizationInfo(dc->gdiFont, info);
|
||||||
if(otm_size) info->flags |= 2; /* scalable */
|
release_dc_ptr(dc);
|
||||||
|
|
||||||
info->unknown1 = -1;
|
return ret;
|
||||||
info->unknown2 = -1;
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -335,6 +335,7 @@ struct tagGdiFont {
|
||||||
FONTSIGNATURE fs;
|
FONTSIGNATURE fs;
|
||||||
GdiFont *base_font;
|
GdiFont *base_font;
|
||||||
VOID *GSUB_Table;
|
VOID *GSUB_Table;
|
||||||
|
DWORD cache_num;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -3113,6 +3114,13 @@ static GdiFont *find_in_cache(HFONT hfont, const LOGFONTW *plf, const FMAT2 *pma
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void add_to_cache(GdiFont *font)
|
||||||
|
{
|
||||||
|
static DWORD cache_num = 1;
|
||||||
|
|
||||||
|
font->cache_num = cache_num++;
|
||||||
|
list_add_head(&gdi_font_list, &font->entry);
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
* create_child_font_list
|
* create_child_font_list
|
||||||
|
@ -3604,7 +3612,7 @@ found:
|
||||||
|
|
||||||
TRACE("caching: gdiFont=%p hfont=%p\n", ret, hfont);
|
TRACE("caching: gdiFont=%p hfont=%p\n", ret, hfont);
|
||||||
|
|
||||||
list_add_head(&gdi_font_list, &ret->entry);
|
add_to_cache(ret);
|
||||||
LeaveCriticalSection( &freetype_cs );
|
LeaveCriticalSection( &freetype_cs );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -5748,6 +5756,22 @@ BOOL WINAPI GetRasterizerCaps( LPRASTERIZER_STATUS lprs, UINT cbNumBytes)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************
|
||||||
|
* WineEngRealizationInfo
|
||||||
|
*/
|
||||||
|
BOOL WineEngRealizationInfo(GdiFont *font, realization_info_t *info)
|
||||||
|
{
|
||||||
|
FIXME("(%p, %p): stub!\n", font, info);
|
||||||
|
|
||||||
|
info->flags = 1;
|
||||||
|
if(FT_IS_SCALABLE(font->ft_face))
|
||||||
|
info->flags |= 2;
|
||||||
|
|
||||||
|
info->cache_num = font->cache_num;
|
||||||
|
info->unknown2 = -1;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Kerning support for TrueType fonts
|
* Kerning support for TrueType fonts
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -420,6 +420,17 @@ extern BOOL DRIVER_GetDriverName( LPCWSTR device, LPWSTR driver, DWORD size ) DE
|
||||||
extern HENHMETAFILE EMF_Create_HENHMETAFILE(ENHMETAHEADER *emh, BOOL on_disk ) DECLSPEC_HIDDEN;
|
extern HENHMETAFILE EMF_Create_HENHMETAFILE(ENHMETAHEADER *emh, BOOL on_disk ) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
/* freetype.c */
|
/* freetype.c */
|
||||||
|
|
||||||
|
/* Undocumented structure filled in by GdiRealizationInfo */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
DWORD flags; /* 1 for bitmap fonts, 3 for scalable fonts */
|
||||||
|
DWORD cache_num; /* keeps incrementing - num of fonts that have been created allowing for caching?? */
|
||||||
|
DWORD unknown2; /* fixed for a given font - looks like it could be the order of the face in the font list or the order
|
||||||
|
in which the face was first rendered. */
|
||||||
|
} realization_info_t;
|
||||||
|
|
||||||
|
|
||||||
extern INT WineEngAddFontResourceEx(LPCWSTR, DWORD, PVOID) DECLSPEC_HIDDEN;
|
extern INT WineEngAddFontResourceEx(LPCWSTR, DWORD, PVOID) DECLSPEC_HIDDEN;
|
||||||
extern HANDLE WineEngAddFontMemResourceEx(PVOID, DWORD, PVOID, LPDWORD) DECLSPEC_HIDDEN;
|
extern HANDLE WineEngAddFontMemResourceEx(PVOID, DWORD, PVOID, LPDWORD) DECLSPEC_HIDDEN;
|
||||||
extern GdiFont* WineEngCreateFontInstance(DC*, HFONT) DECLSPEC_HIDDEN;
|
extern GdiFont* WineEngCreateFontInstance(DC*, HFONT) DECLSPEC_HIDDEN;
|
||||||
|
@ -447,6 +458,7 @@ extern INT WineEngGetTextFace(GdiFont*, INT, LPWSTR) DECLSPEC_HIDDEN;
|
||||||
extern BOOL WineEngGetTextMetrics(GdiFont*, LPTEXTMETRICW) DECLSPEC_HIDDEN;
|
extern BOOL WineEngGetTextMetrics(GdiFont*, LPTEXTMETRICW) DECLSPEC_HIDDEN;
|
||||||
extern BOOL WineEngFontIsLinked(GdiFont*) DECLSPEC_HIDDEN;
|
extern BOOL WineEngFontIsLinked(GdiFont*) DECLSPEC_HIDDEN;
|
||||||
extern BOOL WineEngInit(void) DECLSPEC_HIDDEN;
|
extern BOOL WineEngInit(void) DECLSPEC_HIDDEN;
|
||||||
|
extern BOOL WineEngRealizationInfo(GdiFont*, realization_info_t*) DECLSPEC_HIDDEN;
|
||||||
extern BOOL WineEngRemoveFontResourceEx(LPCWSTR, DWORD, PVOID) DECLSPEC_HIDDEN;
|
extern BOOL WineEngRemoveFontResourceEx(LPCWSTR, DWORD, PVOID) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
/* gdiobj.c */
|
/* gdiobj.c */
|
||||||
|
|
Loading…
Reference in New Issue