Alexandre Julliard : gdi32: Implement GetFontUnicodeRanges as a standard driver entry point.
Alexandre Julliard
julliard at winehq.org
Tue Oct 25 13:50:29 CDT 2011
Module: wine
Branch: master
Commit: 90ecea9739c1ca8585a97c1a4c1f65f4e141bed6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=90ecea9739c1ca8585a97c1a4c1f65f4e141bed6
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Oct 20 16:26:26 2011 +0200
gdi32: Implement GetFontUnicodeRanges as a standard driver entry point.
---
dlls/gdi32/font.c | 6 ++++--
dlls/gdi32/freetype.c | 24 ++++++++++++++----------
dlls/gdi32/gdi_private.h | 1 -
3 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index f2f4c94..72490c9 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -3397,14 +3397,16 @@ BOOL WINAPI GetCharWidthI(HDC hdc, UINT first, UINT count, LPWORD glyphs, LPINT
*/
DWORD WINAPI GetFontUnicodeRanges(HDC hdc, LPGLYPHSET lpgs)
{
- DWORD ret = 0;
+ DWORD ret;
+ PHYSDEV dev;
DC *dc = get_dc_ptr(hdc);
TRACE("(%p, %p)\n", hdc, lpgs);
if (!dc) return 0;
- if (dc->gdiFont) ret = WineEngGetFontUnicodeRanges(dc->gdiFont, lpgs);
+ dev = GET_DC_PHYSDEV( dc, pGetFontUnicodeRanges );
+ ret = dev->funcs->pGetFontUnicodeRanges( dev, lpgs );
release_dc_ptr(dc);
return ret;
}
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 5b3543b..11245d6 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -6675,11 +6675,21 @@ static DWORD get_font_unicode_ranges(FT_Face face, GLYPHSET *gs)
return num_ranges;
}
-DWORD WineEngGetFontUnicodeRanges(GdiFont *font, LPGLYPHSET glyphset)
+/*************************************************************
+ * freetype_GetFontUnicodeRanges
+ */
+static DWORD freetype_GetFontUnicodeRanges( PHYSDEV dev, LPGLYPHSET glyphset )
{
- DWORD size = 0;
- DWORD num_ranges = get_font_unicode_ranges(font->ft_face, glyphset);
+ struct freetype_physdev *physdev = get_freetype_dev( dev );
+ DWORD size, num_ranges;
+ if (!physdev->font)
+ {
+ dev = GET_NEXT_PHYSDEV( dev, pGetFontUnicodeRanges );
+ return dev->funcs->pGetFontUnicodeRanges( dev, glyphset );
+ }
+
+ num_ranges = get_font_unicode_ranges(physdev->font->ft_face, glyphset);
size = sizeof(GLYPHSET) + sizeof(WCRANGE) * (num_ranges - 1);
if (glyphset)
{
@@ -7072,7 +7082,7 @@ static const struct gdi_dc_funcs freetype_funcs =
NULL, /* pGetDeviceCaps */
NULL, /* pGetDeviceGammaRamp */
NULL, /* pGetFontData */
- NULL, /* pGetFontUnicodeRanges */
+ freetype_GetFontUnicodeRanges, /* pGetFontUnicodeRanges */
NULL, /* pGetGlyphIndices */
NULL, /* pGetGlyphOutline */
NULL, /* pGetICMProfile */
@@ -7245,12 +7255,6 @@ BOOL WineEngGetLinkedHFont(DC *dc, WCHAR c, HFONT *new_hfont, UINT *glyph)
return FALSE;
}
-DWORD WineEngGetFontUnicodeRanges(GdiFont *font, LPGLYPHSET glyphset)
-{
- FIXME("(%p, %p): stub\n", font, glyphset);
- return 0;
-}
-
BOOL WineEngFontIsLinked(GdiFont *font)
{
return FALSE;
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index 23c1e78..316e6a9 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -293,7 +293,6 @@ extern INT WineEngAddFontResourceEx(LPCWSTR, DWORD, PVOID) DECLSPEC_HIDDEN;
extern HANDLE WineEngAddFontMemResourceEx(PVOID, DWORD, PVOID, LPDWORD) DECLSPEC_HIDDEN;
extern BOOL WineEngDestroyFontInstance(HFONT handle) DECLSPEC_HIDDEN;
extern DWORD WineEngGetFontData(GdiFont*, DWORD, DWORD, LPVOID, DWORD) DECLSPEC_HIDDEN;
-extern DWORD WineEngGetFontUnicodeRanges(GdiFont *, LPGLYPHSET) DECLSPEC_HIDDEN;
extern DWORD WineEngGetGlyphIndices(GdiFont *font, LPCWSTR lpstr, INT count,
LPWORD pgi, DWORD flags) DECLSPEC_HIDDEN;
extern DWORD WineEngGetGlyphOutline(GdiFont*, UINT glyph, UINT format,
More information about the wine-cvs
mailing list