Module: wine Branch: master Commit: d3cdec0e66ef4222dea4b663b33ce871d7254eda URL: http://source.winehq.org/git/wine.git/?a=commit;h=d3cdec0e66ef4222dea4b663b3...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Thu Oct 16 07:32:27 2014 +0400
dwrite: Use better integer types for cmap helpers.
---
dlls/dwrite/dwrite_private.h | 2 +- dlls/dwrite/font.c | 5 ++--- dlls/dwrite/opentype.c | 33 +++++++++++++++++---------------- 3 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/dlls/dwrite/dwrite_private.h b/dlls/dwrite/dwrite_private.h index b3bd1df..f4a19c7 100644 --- a/dlls/dwrite/dwrite_private.h +++ b/dlls/dwrite/dwrite_private.h @@ -108,7 +108,7 @@ extern HRESULT font_create_fontface(IDWriteFactory *iface, DWRITE_FONT_FACE_TYPE /* Opentype font table functions */ extern HRESULT opentype_analyze_font(IDWriteFontFileStream*,UINT32*,DWRITE_FONT_FILE_TYPE*,DWRITE_FONT_FACE_TYPE*,BOOL*) DECLSPEC_HIDDEN; extern HRESULT opentype_get_font_table(IDWriteFontFileStream*,DWRITE_FONT_FACE_TYPE,UINT32,UINT32,const void**,void**,UINT32*,BOOL*) DECLSPEC_HIDDEN; -extern VOID OpenType_CMAP_GetGlyphIndex(LPVOID data, DWORD utf32c, LPWORD pgi, DWORD flags) DECLSPEC_HIDDEN; +extern void opentype_cmap_get_glyphindex(void*,UINT32,UINT16*) DECLSPEC_HIDDEN; extern VOID get_font_properties(LPCVOID os2, LPCVOID head, LPCVOID post, DWRITE_FONT_METRICS *metrics, DWRITE_FONT_STRETCH *stretch, DWRITE_FONT_WEIGHT *weight, DWRITE_FONT_STYLE *style) DECLSPEC_HIDDEN;
extern HRESULT bidi_computelevels(const WCHAR*,UINT32,UINT8,UINT8*,UINT8*); diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c index 69b7746..e3edbaa 100644 --- a/dlls/dwrite/font.c +++ b/dlls/dwrite/font.c @@ -391,9 +391,8 @@ static HRESULT WINAPI dwritefontface_GetGlyphIndices(IDWriteFontFace2 *iface, UI }
for (i = 0; i < count; i++) - { - OpenType_CMAP_GetGlyphIndex(This->cmap.data, codepoints[i], &glyph_indices[i], 0); - } + opentype_cmap_get_glyphindex(This->cmap.data, codepoints[i], &glyph_indices[i]); + return S_OK; } } diff --git a/dlls/dwrite/opentype.c b/dlls/dwrite/opentype.c index 9af04fd..dba3e31 100644 --- a/dlls/dwrite/opentype.c +++ b/dlls/dwrite/opentype.c @@ -96,6 +96,12 @@ typedef struct { WORD endCode[1]; } CMAP_SegmentMapping_0;
+enum OPENTYPE_CMAP_TABLE_FORMAT +{ + OPENTYPE_CMAP_TABLE_SEGMENT_MAPPING = 4, + OPENTYPE_CMAP_TABLE_SEGMENTED_COVERAGE = 12 +}; + /* PANOSE is 10 bytes in size, need to pack the structure properly */ #include "pshpack2.h" typedef struct @@ -301,7 +307,7 @@ static int compare_group(const void *a, const void* b) return 0; }
-static void CMAP4_GetGlyphIndex(CMAP_SegmentMapping_0* format, DWORD utf32c, LPWORD pgi) +static void CMAP4_GetGlyphIndex(CMAP_SegmentMapping_0* format, UINT32 utf32c, UINT16 *pgi) { WORD *startCode; SHORT *idDelta; @@ -340,9 +346,9 @@ static void CMAP4_GetGlyphIndex(CMAP_SegmentMapping_0* format, DWORD utf32c, LPW } }
-static void CMAP12_GetGlyphIndex(CMAP_SegmentedCoverage* format, DWORD utf32c, LPWORD pgi) +static void CMAP12_GetGlyphIndex(CMAP_SegmentedCoverage* format, UINT32 utf32c, UINT16 *pgi) { - CMAP_SegmentedCoverage_group *group = NULL; + CMAP_SegmentedCoverage_group *group;
group = bsearch(&utf32c, format->groups, GET_BE_DWORD(format->nGroups), sizeof(CMAP_SegmentedCoverage_group), compare_group); @@ -354,17 +360,12 @@ static void CMAP12_GetGlyphIndex(CMAP_SegmentedCoverage* format, DWORD utf32c, L } }
-VOID OpenType_CMAP_GetGlyphIndex(LPVOID data, DWORD utf32c, LPWORD pgi, DWORD flags) +void opentype_cmap_get_glyphindex(void *data, UINT32 utf32c, UINT16 *pgi) { + CMAP_Header *CMAP_Table = data; int i; - CMAP_Header *CMAP_Table = NULL; - - if (flags & GGI_MARK_NONEXISTING_GLYPHS) - *pgi = 0xffff; - else - *pgi = 0;
- CMAP_Table = data; + *pgi = 0;
for (i = 0; i < GET_BE_WORD(CMAP_Table->numTables); i++) { @@ -376,18 +377,18 @@ VOID OpenType_CMAP_GetGlyphIndex(LPVOID data, DWORD utf32c, LPWORD pgi, DWORD fl
table = (WORD*)(((BYTE*)CMAP_Table) + GET_BE_DWORD(CMAP_Table->tables[i].offset)); type = GET_BE_WORD(*table); - TRACE("Type %i\n", type); + TRACE("table type %i\n", type); /* Break when we find a handled type */ - switch(type) + switch (type) { - case 4: + case OPENTYPE_CMAP_TABLE_SEGMENT_MAPPING: CMAP4_GetGlyphIndex((CMAP_SegmentMapping_0*) table, utf32c, pgi); break; - case 12: + case OPENTYPE_CMAP_TABLE_SEGMENTED_COVERAGE: CMAP12_GetGlyphIndex((CMAP_SegmentedCoverage*) table, utf32c, pgi); break; default: - TRACE("Type %i unhandled.\n", type); + TRACE("table type %i unhandled.\n", type); } } }