2 * Copyright 2012 Nikolay Sivov for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "wine/debug.h"
20 #include "wine/unicode.h"
22 static inline void *heap_alloc(size_t len
)
24 return HeapAlloc(GetProcessHeap(), 0, len
);
27 static inline void *heap_alloc_zero(size_t len
)
29 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
);
32 static inline void *heap_realloc(void *mem
, size_t len
)
34 return HeapReAlloc(GetProcessHeap(), 0, mem
, len
);
37 static inline void *heap_realloc_zero(void *mem
, size_t len
)
39 return HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, mem
, len
);
42 static inline BOOL
heap_free(void *mem
)
44 return HeapFree(GetProcessHeap(), 0, mem
);
47 static inline LPWSTR
heap_strdupW(const WCHAR
*str
)
54 size
= (strlenW(str
)+1)*sizeof(WCHAR
);
55 ret
= heap_alloc(size
);
57 memcpy(ret
, str
, size
);
63 static inline LPWSTR
heap_strdupnW(const WCHAR
*str
, UINT32 len
)
69 ret
= heap_alloc((len
+1)*sizeof(WCHAR
));
72 memcpy(ret
, str
, len
*sizeof(WCHAR
));
80 static inline const char *debugstr_range(const DWRITE_TEXT_RANGE
*range
)
82 return wine_dbg_sprintf("%u:%u", range
->startPosition
, range
->length
);
85 extern HRESULT
create_font_from_logfont(const LOGFONTW
*, IDWriteFont
**) DECLSPEC_HIDDEN
;
86 extern HRESULT
convert_fontface_to_logfont(IDWriteFontFace
*, LOGFONTW
*) DECLSPEC_HIDDEN
;
87 extern HRESULT
create_textformat(const WCHAR
*,IDWriteFontCollection
*,DWRITE_FONT_WEIGHT
,DWRITE_FONT_STYLE
,DWRITE_FONT_STRETCH
,
88 FLOAT
,const WCHAR
*,IDWriteTextFormat
**) DECLSPEC_HIDDEN
;
89 extern HRESULT
create_textlayout(const WCHAR
*,UINT32
,IDWriteTextFormat
*,FLOAT
,FLOAT
,IDWriteTextLayout
**) DECLSPEC_HIDDEN
;
90 extern HRESULT
create_trimmingsign(IDWriteInlineObject
**) DECLSPEC_HIDDEN
;
91 extern HRESULT
get_gdiinterop(IDWriteGdiInterop
**) DECLSPEC_HIDDEN
;
92 extern HRESULT
create_localizedstrings(IDWriteLocalizedStrings
**) DECLSPEC_HIDDEN
;
93 extern HRESULT
add_localizedstring(IDWriteLocalizedStrings
*,const WCHAR
*,const WCHAR
*) DECLSPEC_HIDDEN
;
94 extern HRESULT
clone_localizedstring(IDWriteLocalizedStrings
*iface
, IDWriteLocalizedStrings
**strings
) DECLSPEC_HIDDEN
;
95 extern HRESULT
get_system_fontcollection(IDWriteFontCollection
**) DECLSPEC_HIDDEN
;
96 extern HRESULT
get_textanalyzer(IDWriteTextAnalyzer
**) DECLSPEC_HIDDEN
;
97 extern HRESULT
create_font_file(IDWriteFontFileLoader
*loader
, const void *reference_key
, UINT32 key_size
, IDWriteFontFile
**font_file
) DECLSPEC_HIDDEN
;
98 extern HRESULT
create_localfontfileloader(IDWriteLocalFontFileLoader
** iface
) DECLSPEC_HIDDEN
;
99 extern HRESULT
font_create_fontface(IDWriteFactory
*iface
, DWRITE_FONT_FACE_TYPE facetype
, UINT32 files_number
, IDWriteFontFile
* const* font_files
, UINT32 index
, DWRITE_FONT_SIMULATIONS sim_flags
, IDWriteFontFace
**font_face
) DECLSPEC_HIDDEN
;
101 /* Opentype font table functions */
102 extern HRESULT
analyze_opentype_font(const void* font_data
, UINT32
* font_count
, DWRITE_FONT_FILE_TYPE
*file_type
, DWRITE_FONT_FACE_TYPE
*face_type
, BOOL
*supported
) DECLSPEC_HIDDEN
;
103 extern HRESULT
find_font_table(IDWriteFontFileStream
*stream
, UINT32 font_index
, UINT32 tag
, const void** table_data
, void** table_context
, UINT32
*table_size
, BOOL
* found
) DECLSPEC_HIDDEN
;
104 extern VOID
OpenType_CMAP_GetGlyphIndex(LPVOID data
, DWORD utf32c
, LPWORD pgi
, DWORD flags
) DECLSPEC_HIDDEN
;
105 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
;