ReactOS 0.4.17-dev-934-g091855f
main.c File Reference
#include <stdarg.h>
#include <math.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "initguid.h"
#include "dwrite_private.h"
#include "unixlib.h"
#include "wine/debug.h"
Include dependency graph for main.c:

Go to the source code of this file.

Classes

struct  renderingparams
 
struct  localizedpair
 
struct  localizedstrings
 
struct  collectionloader
 
struct  fileloader
 
struct  dwritefactory
 

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (dwrite)
 
static void release_shared_factory (IDWriteFactory7 *factory)
 
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD reason, LPVOID reserved)
 
static struct renderingparams * impl_from_IDWriteRenderingParams3 (IDWriteRenderingParams3 *iface)
 
static HRESULT WINAPI renderingparams_QueryInterface (IDWriteRenderingParams3 *iface, REFIID riid, void **obj)
 
static ULONG WINAPI renderingparams_AddRef (IDWriteRenderingParams3 *iface)
 
static ULONG WINAPI renderingparams_Release (IDWriteRenderingParams3 *iface)
 
static float WINAPI renderingparams_GetGamma (IDWriteRenderingParams3 *iface)
 
static float WINAPI renderingparams_GetEnhancedContrast (IDWriteRenderingParams3 *iface)
 
static float WINAPI renderingparams_GetClearTypeLevel (IDWriteRenderingParams3 *iface)
 
static DWRITE_PIXEL_GEOMETRY WINAPI renderingparams_GetPixelGeometry (IDWriteRenderingParams3 *iface)
 
static DWRITE_RENDERING_MODE rendering_mode_from_mode1 (DWRITE_RENDERING_MODE1 mode)
 
static DWRITE_RENDERING_MODE WINAPI renderingparams_GetRenderingMode (IDWriteRenderingParams3 *iface)
 
static float WINAPI renderingparams1_GetGrayscaleEnhancedContrast (IDWriteRenderingParams3 *iface)
 
static DWRITE_GRID_FIT_MODE WINAPI renderingparams2_GetGridFitMode (IDWriteRenderingParams3 *iface)
 
static DWRITE_RENDERING_MODE1 WINAPI renderingparams3_GetRenderingMode1 (IDWriteRenderingParams3 *iface)
 
static HRESULT create_renderingparams (float gamma, float contrast, float grayscalecontrast, float cleartype_level, DWRITE_PIXEL_GEOMETRY geometry, DWRITE_RENDERING_MODE1 mode, DWRITE_GRID_FIT_MODE gridfit, IDWriteRenderingParams3 **params)
 
static struct localizedstrings * impl_from_IDWriteLocalizedStrings (IDWriteLocalizedStrings *iface)
 
static HRESULT WINAPI localizedstrings_QueryInterface (IDWriteLocalizedStrings *iface, REFIID riid, void **obj)
 
static ULONG WINAPI localizedstrings_AddRef (IDWriteLocalizedStrings *iface)
 
static ULONG WINAPI localizedstrings_Release (IDWriteLocalizedStrings *iface)
 
static UINT32 WINAPI localizedstrings_GetCount (IDWriteLocalizedStrings *iface)
 
static HRESULT WINAPI localizedstrings_FindLocaleName (IDWriteLocalizedStrings *iface, WCHAR const *locale_name, UINT32 *index, BOOL *exists)
 
static HRESULT WINAPI localizedstrings_GetLocaleNameLength (IDWriteLocalizedStrings *iface, UINT32 index, UINT32 *length)
 
static HRESULT WINAPI localizedstrings_GetLocaleName (IDWriteLocalizedStrings *iface, UINT32 index, WCHAR *buffer, UINT32 size)
 
static HRESULT WINAPI localizedstrings_GetStringLength (IDWriteLocalizedStrings *iface, UINT32 index, UINT32 *length)
 
static HRESULT WINAPI localizedstrings_GetString (IDWriteLocalizedStrings *iface, UINT32 index, WCHAR *buffer, UINT32 size)
 
HRESULT create_localizedstrings (IDWriteLocalizedStrings **strings)
 
HRESULT add_localizedstring (IDWriteLocalizedStrings *iface, const WCHAR *locale, const WCHAR *string)
 
HRESULT clone_localizedstrings (IDWriteLocalizedStrings *iface, IDWriteLocalizedStrings **ret)
 
void set_en_localizedstring (IDWriteLocalizedStrings *iface, const WCHAR *string)
 
static int __cdecl localizedstrings_sorting_compare (const void *left, const void *right)
 
void sort_localizedstrings (IDWriteLocalizedStrings *iface)
 
unsigned int get_localizedstrings_count (IDWriteLocalizedStrings *iface)
 
BOOL localizedstrings_contains (IDWriteLocalizedStrings *iface, const WCHAR *str)
 
static struct dwritefactory * impl_from_IDWriteFactory7 (IDWriteFactory7 *iface)
 
static void release_fontface_cache (struct list *fontfaces)
 
static void release_fileloader (struct fileloader *fileloader)
 
static void release_dwritefactory (struct dwritefactory *factory)
 
static struct fileloader * factory_get_file_loader (struct dwritefactory *factory, IDWriteFontFileLoader *loader)
 
static struct collectionloader * factory_get_collection_loader (struct dwritefactory *factory, IDWriteFontCollectionLoader *loader)
 
static HRESULT factory_get_system_collection (struct dwritefactory *factory, DWRITE_FONT_FAMILY_MODEL family_model, REFIID riid, void **out)
 
static HRESULT WINAPI dwritefactory_QueryInterface (IDWriteFactory7 *iface, REFIID riid, void **obj)
 
static ULONG WINAPI dwritefactory_AddRef (IDWriteFactory7 *iface)
 
static ULONG WINAPI dwritefactory_Release (IDWriteFactory7 *iface)
 
static HRESULT WINAPI dwritefactory_GetSystemFontCollection (IDWriteFactory7 *iface, IDWriteFontCollection **collection, BOOL check_for_updates)
 
static HRESULT WINAPI dwritefactory_CreateCustomFontCollection (IDWriteFactory7 *iface, IDWriteFontCollectionLoader *loader, void const *key, UINT32 key_size, IDWriteFontCollection **collection)
 
static HRESULT WINAPI dwritefactory_RegisterFontCollectionLoader (IDWriteFactory7 *iface, IDWriteFontCollectionLoader *loader)
 
static HRESULT WINAPI dwritefactory_UnregisterFontCollectionLoader (IDWriteFactory7 *iface, IDWriteFontCollectionLoader *loader)
 
static HRESULT WINAPI dwritefactory_CreateFontFileReference (IDWriteFactory7 *iface, WCHAR const *path, FILETIME const *writetime, IDWriteFontFile **font_file)
 
static HRESULT WINAPI dwritefactory_CreateCustomFontFileReference (IDWriteFactory7 *iface, void const *reference_key, UINT32 key_size, IDWriteFontFileLoader *loader, IDWriteFontFile **font_file)
 
void factory_lock (IDWriteFactory7 *iface)
 
void factory_unlock (IDWriteFactory7 *iface)
 
HRESULT factory_get_cached_fontface (IDWriteFactory7 *iface, IDWriteFontFile *const *font_files, UINT32 index, DWRITE_FONT_SIMULATIONS simulations, struct list **cached_list, REFIID riid, void **obj)
 
struct fontfacecached * factory_cache_fontface (IDWriteFactory7 *iface, struct list *fontfaces, IDWriteFontFace5 *fontface)
 
static HRESULT WINAPI dwritefactory_CreateFontFace (IDWriteFactory7 *iface, DWRITE_FONT_FACE_TYPE req_facetype, UINT32 files_number, IDWriteFontFile *const *font_files, UINT32 index, DWRITE_FONT_SIMULATIONS simulations, IDWriteFontFace **fontface)
 
static HRESULT WINAPI dwritefactory_CreateRenderingParams (IDWriteFactory7 *iface, IDWriteRenderingParams **params)
 
static HRESULT WINAPI dwritefactory_CreateMonitorRenderingParams (IDWriteFactory7 *iface, HMONITOR monitor, IDWriteRenderingParams **params)
 
static HRESULT WINAPI dwritefactory_CreateCustomRenderingParams (IDWriteFactory7 *iface, FLOAT gamma, FLOAT enhancedContrast, FLOAT cleartype_level, DWRITE_PIXEL_GEOMETRY geometry, DWRITE_RENDERING_MODE mode, IDWriteRenderingParams **params)
 
static HRESULT WINAPI dwritefactory_RegisterFontFileLoader (IDWriteFactory7 *iface, IDWriteFontFileLoader *loader)
 
static HRESULT WINAPI dwritefactory_UnregisterFontFileLoader (IDWriteFactory7 *iface, IDWriteFontFileLoader *loader)
 
static HRESULT WINAPI dwritefactory_CreateTextFormat (IDWriteFactory7 *iface, WCHAR const *family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style, DWRITE_FONT_STRETCH stretch, FLOAT size, WCHAR const *locale, IDWriteTextFormat **format)
 
static HRESULT WINAPI dwritefactory_CreateTypography (IDWriteFactory7 *iface, IDWriteTypography **typography)
 
static HRESULT WINAPI dwritefactory_GetGdiInterop (IDWriteFactory7 *iface, IDWriteGdiInterop **gdi_interop)
 
static HRESULT WINAPI dwritefactory_CreateTextLayout (IDWriteFactory7 *iface, WCHAR const *string, UINT32 length, IDWriteTextFormat *format, FLOAT max_width, FLOAT max_height, IDWriteTextLayout **layout)
 
static HRESULT WINAPI dwritefactory_CreateGdiCompatibleTextLayout (IDWriteFactory7 *iface, WCHAR const *string, UINT32 length, IDWriteTextFormat *format, FLOAT max_width, FLOAT max_height, FLOAT pixels_per_dip, DWRITE_MATRIX const *transform, BOOL use_gdi_natural, IDWriteTextLayout **layout)
 
static HRESULT WINAPI dwritefactory_CreateEllipsisTrimmingSign (IDWriteFactory7 *iface, IDWriteTextFormat *format, IDWriteInlineObject **trimming_sign)
 
static HRESULT WINAPI dwritefactory_CreateTextAnalyzer (IDWriteFactory7 *iface, IDWriteTextAnalyzer **analyzer)
 
static HRESULT WINAPI dwritefactory_CreateNumberSubstitution (IDWriteFactory7 *iface, DWRITE_NUMBER_SUBSTITUTION_METHOD method, WCHAR const *locale, BOOL ignore_user_override, IDWriteNumberSubstitution **substitution)
 
static HRESULT WINAPI dwritefactory_CreateGlyphRunAnalysis (IDWriteFactory7 *iface, DWRITE_GLYPH_RUN const *run, FLOAT ppdip, DWRITE_MATRIX const *transform, DWRITE_RENDERING_MODE rendering_mode, DWRITE_MEASURING_MODE measuring_mode, FLOAT originX, FLOAT originY, IDWriteGlyphRunAnalysis **analysis)
 
static HRESULT WINAPI dwritefactory1_GetEudcFontCollection (IDWriteFactory7 *iface, IDWriteFontCollection **collection, BOOL check_for_updates)
 
static HRESULT WINAPI dwritefactory1_CreateCustomRenderingParams (IDWriteFactory7 *iface, FLOAT gamma, FLOAT enhcontrast, FLOAT enhcontrast_grayscale, FLOAT cleartype_level, DWRITE_PIXEL_GEOMETRY geometry, DWRITE_RENDERING_MODE mode, IDWriteRenderingParams1 **params)
 
static HRESULT WINAPI dwritefactory2_GetSystemFontFallback (IDWriteFactory7 *iface, IDWriteFontFallback **fallback)
 
static HRESULT WINAPI dwritefactory2_CreateFontFallbackBuilder (IDWriteFactory7 *iface, IDWriteFontFallbackBuilder **fallbackbuilder)
 
static HRESULT WINAPI dwritefactory2_TranslateColorGlyphRun (IDWriteFactory7 *iface, FLOAT originX, FLOAT originY, const DWRITE_GLYPH_RUN *run, const DWRITE_GLYPH_RUN_DESCRIPTION *run_desc, DWRITE_MEASURING_MODE measuring_mode, const DWRITE_MATRIX *transform, UINT32 palette, IDWriteColorGlyphRunEnumerator **layers)
 
static HRESULT WINAPI dwritefactory2_CreateCustomRenderingParams (IDWriteFactory7 *iface, FLOAT gamma, FLOAT contrast, FLOAT grayscalecontrast, FLOAT cleartype_level, DWRITE_PIXEL_GEOMETRY geometry, DWRITE_RENDERING_MODE mode, DWRITE_GRID_FIT_MODE gridfit, IDWriteRenderingParams2 **params)
 
static HRESULT factory_create_glyphrun_analysis (const DWRITE_GLYPH_RUN *run, const DWRITE_MATRIX *transform, DWRITE_RENDERING_MODE1 rendering_mode, DWRITE_MEASURING_MODE measuring_mode, DWRITE_GRID_FIT_MODE gridfit_mode, DWRITE_TEXT_ANTIALIAS_MODE aa_mode, FLOAT originX, FLOAT originY, IDWriteGlyphRunAnalysis **analysis)
 
static HRESULT WINAPI dwritefactory2_CreateGlyphRunAnalysis (IDWriteFactory7 *iface, const DWRITE_GLYPH_RUN *run, const DWRITE_MATRIX *transform, DWRITE_RENDERING_MODE rendering_mode, DWRITE_MEASURING_MODE measuring_mode, DWRITE_GRID_FIT_MODE gridfit_mode, DWRITE_TEXT_ANTIALIAS_MODE aa_mode, FLOAT originX, FLOAT originY, IDWriteGlyphRunAnalysis **analysis)
 
static HRESULT WINAPI dwritefactory3_CreateGlyphRunAnalysis (IDWriteFactory7 *iface, DWRITE_GLYPH_RUN const *run, DWRITE_MATRIX const *transform, DWRITE_RENDERING_MODE1 rendering_mode, DWRITE_MEASURING_MODE measuring_mode, DWRITE_GRID_FIT_MODE gridfit_mode, DWRITE_TEXT_ANTIALIAS_MODE aa_mode, FLOAT originX, FLOAT originY, IDWriteGlyphRunAnalysis **analysis)
 
static HRESULT WINAPI dwritefactory3_CreateCustomRenderingParams (IDWriteFactory7 *iface, FLOAT gamma, FLOAT contrast, FLOAT grayscale_contrast, FLOAT cleartype_level, DWRITE_PIXEL_GEOMETRY pixel_geometry, DWRITE_RENDERING_MODE1 rendering_mode, DWRITE_GRID_FIT_MODE gridfit_mode, IDWriteRenderingParams3 **params)
 
static HRESULT WINAPI dwritefactory3_CreateFontFaceReference_ (IDWriteFactory7 *iface, IDWriteFontFile *file, UINT32 index, DWRITE_FONT_SIMULATIONS simulations, IDWriteFontFaceReference **reference)
 
static HRESULT WINAPI dwritefactory3_CreateFontFaceReference (IDWriteFactory7 *iface, WCHAR const *path, FILETIME const *writetime, UINT32 index, DWRITE_FONT_SIMULATIONS simulations, IDWriteFontFaceReference **reference)
 
static HRESULT create_system_path_list (WCHAR ***ret, unsigned int *ret_count)
 
static int __cdecl create_system_fontset_compare (const void *left, const void *right)
 
HRESULT create_system_fontset (IDWriteFactory7 *factory, REFIID riid, void **obj)
 
static HRESULT WINAPI dwritefactory3_GetSystemFontSet (IDWriteFactory7 *iface, IDWriteFontSet **fontset)
 
static HRESULT WINAPI dwritefactory3_CreateFontSetBuilder (IDWriteFactory7 *iface, IDWriteFontSetBuilder **builder)
 
static HRESULT WINAPI dwritefactory3_CreateFontCollectionFromFontSet (IDWriteFactory7 *iface, IDWriteFontSet *fontset, IDWriteFontCollection1 **collection)
 
static HRESULT WINAPI dwritefactory3_GetSystemFontCollection (IDWriteFactory7 *iface, BOOL include_downloadable, IDWriteFontCollection1 **collection, BOOL check_for_updates)
 
static HRESULT WINAPI dwritefactory3_GetFontDownloadQueue (IDWriteFactory7 *iface, IDWriteFontDownloadQueue **queue)
 
static HRESULT WINAPI dwritefactory4_TranslateColorGlyphRun (IDWriteFactory7 *iface, D2D1_POINT_2F origin, DWRITE_GLYPH_RUN const *run, DWRITE_GLYPH_RUN_DESCRIPTION const *run_desc, DWRITE_GLYPH_IMAGE_FORMATS desired_formats, DWRITE_MEASURING_MODE measuring_mode, DWRITE_MATRIX const *transform, UINT32 palette, IDWriteColorGlyphRunEnumerator1 **layers)
 
HRESULT compute_glyph_origins (DWRITE_GLYPH_RUN const *run, DWRITE_MEASURING_MODE measuring_mode, D2D1_POINT_2F baseline_origin, DWRITE_MATRIX const *transform, D2D1_POINT_2F *origins)
 
static HRESULT WINAPI dwritefactory4_ComputeGlyphOrigins_ (IDWriteFactory7 *iface, DWRITE_GLYPH_RUN const *run, D2D1_POINT_2F baseline_origin, D2D1_POINT_2F *origins)
 
static HRESULT WINAPI dwritefactory4_ComputeGlyphOrigins (IDWriteFactory7 *iface, DWRITE_GLYPH_RUN const *run, DWRITE_MEASURING_MODE measuring_mode, D2D1_POINT_2F baseline_origin, DWRITE_MATRIX const *transform, D2D1_POINT_2F *origins)
 
static HRESULT WINAPI dwritefactory5_CreateFontSetBuilder (IDWriteFactory7 *iface, IDWriteFontSetBuilder1 **builder)
 
static HRESULT WINAPI dwritefactory5_CreateInMemoryFontFileLoader (IDWriteFactory7 *iface, IDWriteInMemoryFontFileLoader **loader)
 
static HRESULT WINAPI dwritefactory5_CreateHttpFontFileLoader (IDWriteFactory7 *iface, WCHAR const *referrer_url, WCHAR const *extra_headers, IDWriteRemoteFontFileLoader **loader)
 
static DWRITE_CONTAINER_TYPE WINAPI dwritefactory5_AnalyzeContainerType (IDWriteFactory7 *iface, void const *data, UINT32 data_size)
 
static HRESULT WINAPI dwritefactory5_UnpackFontFile (IDWriteFactory7 *iface, DWRITE_CONTAINER_TYPE container_type, void const *data, UINT32 data_size, IDWriteFontFileStream **stream)
 
static HRESULT WINAPI dwritefactory6_CreateFontFaceReference (IDWriteFactory7 *iface, IDWriteFontFile *file, UINT32 face_index, DWRITE_FONT_SIMULATIONS simulations, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 axis_values_count, IDWriteFontFaceReference1 **reference)
 
static HRESULT WINAPI dwritefactory6_CreateFontResource (IDWriteFactory7 *iface, IDWriteFontFile *file, UINT32 face_index, IDWriteFontResource **resource)
 
static HRESULT WINAPI dwritefactory6_GetSystemFontSet (IDWriteFactory7 *iface, BOOL include_downloadable, IDWriteFontSet1 **fontset)
 
static HRESULT WINAPI dwritefactory6_GetSystemFontCollection (IDWriteFactory7 *iface, BOOL include_downloadable, DWRITE_FONT_FAMILY_MODEL family_model, IDWriteFontCollection2 **collection)
 
static HRESULT WINAPI dwritefactory6_CreateFontCollectionFromFontSet (IDWriteFactory7 *iface, IDWriteFontSet *fontset, DWRITE_FONT_FAMILY_MODEL family_model, IDWriteFontCollection2 **collection)
 
static HRESULT WINAPI dwritefactory6_CreateFontSetBuilder (IDWriteFactory7 *iface, IDWriteFontSetBuilder2 **builder)
 
static HRESULT WINAPI dwritefactory6_CreateTextFormat (IDWriteFactory7 *iface, const WCHAR *family_name, IDWriteFontCollection *collection, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 num_axis, float size, const WCHAR *locale, IDWriteTextFormat3 **format)
 
static HRESULT WINAPI dwritefactory7_GetSystemFontSet (IDWriteFactory7 *iface, BOOL include_downloadable, IDWriteFontSet2 **fontset)
 
static HRESULT WINAPI dwritefactory7_GetSystemFontCollection (IDWriteFactory7 *iface, BOOL include_downloadable, DWRITE_FONT_FAMILY_MODEL family_model, IDWriteFontCollection3 **collection)
 
static ULONG WINAPI shareddwritefactory_AddRef (IDWriteFactory7 *iface)
 
static ULONG WINAPI shareddwritefactory_Release (IDWriteFactory7 *iface)
 
static void init_dwritefactory (struct dwritefactory *factory, DWRITE_FACTORY_TYPE type)
 
void factory_detach_fontcollection (IDWriteFactory7 *iface, IDWriteFontCollection3 *collection)
 
void factory_detach_gdiinterop (IDWriteFactory7 *iface, IDWriteGdiInterop1 *interop)
 
HRESULT WINAPI DWriteCreateFactory (DWRITE_FACTORY_TYPE type, REFIID riid, IUnknown **ret)
 

Variables

HMODULE dwrite_module = 0
 
static IDWriteFactory7 * shared_factory
 
static const IDWriteRenderingParams3Vtbl renderingparamsvtbl
 
static const IDWriteLocalizedStringsVtbl localizedstringsvtbl
 
static const IDWriteFactory7Vtbl dwritefactoryvtbl
 
static const IDWriteFactory7Vtbl shareddwritefactoryvtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file main.c.

Function Documentation

◆ add_localizedstring()

HRESULT add_localizedstring ( IDWriteLocalizedStrings *  iface,
const WCHAR *  locale,
const WCHAR *  string 
)

Definition at line 466 of file main.c.

467{
469 size_t i, count = strings->count;
470
471 /* Make sure there's no duplicates, unless it's empty. This is used by dlng/slng entries of 'meta' table. */
472 if (*locale)
473 {
474 for (i = 0; i < count; i++)
475 if (!wcsicmp(strings->data[i].locale, locale))
476 return S_OK;
477 }
478
479 if (!dwrite_array_reserve((void **)&strings->data, &strings->size, strings->count + 1, sizeof(*strings->data)))
480 return E_OUTOFMEMORY;
481
482 strings->data[count].locale = wcsdup(locale);
483 strings->data[count].string = wcsdup(string);
484 if (!strings->data[count].locale || !strings->data[count].string)
485 {
486 free(strings->data[count].locale);
487 free(strings->data[count].string);
488 return E_OUTOFMEMORY;
489 }
490 wcslwr(strings->data[count].locale);
491
492 strings->count++;
493
494 return S_OK;
495}
Definition: _locale.h:75
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
static struct localizedstrings * impl_from_IDWriteLocalizedStrings(IDWriteLocalizedStrings *iface)
Definition: main.c:275
#define wcsicmp
Definition: compat.h:15
static wchar_t * wcslwr(wchar_t *str)
Definition: string.h:96
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
static BOOL dwrite_array_reserve(void **elements, size_t *capacity, size_t count, size_t size)
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizei const GLchar *const * strings
Definition: glext.h:7622
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define S_OK
Definition: intsafe.h:52

Referenced by eudc_collection_add_family(), fontcollection_add_replacement(), init_font_data_from_font(), opentype_decode_namerecord(), and opentype_get_font_strings_from_meta().

◆ clone_localizedstrings()

HRESULT clone_localizedstrings ( IDWriteLocalizedStrings *  iface,
IDWriteLocalizedStrings **  ret 
)

Definition at line 497 of file main.c.

498{
499 struct localizedstrings *strings, *strings_clone;
500 size_t i;
501
502 *ret = NULL;
503
504 if (!iface)
505 return S_FALSE;
506
508 if (!(strings_clone = calloc(1, sizeof(*strings_clone))))
509 return E_OUTOFMEMORY;
510
511 if (!dwrite_array_reserve((void **)&strings_clone->data, &strings_clone->size, strings->count,
512 sizeof(*strings_clone->data)))
513 {
514 free(strings_clone);
515 return E_OUTOFMEMORY;
516 }
517
519 strings_clone->refcount = 1;
520 strings_clone->count = strings->count;
521
522 for (i = 0; i < strings_clone->count; ++i)
523 {
524 strings_clone->data[i].locale = wcsdup(strings->data[i].locale);
525 strings_clone->data[i].string = wcsdup(strings->data[i].string);
526 }
527
528 *ret = &strings_clone->IDWriteLocalizedStrings_iface;
529
530 return S_OK;
531}
#define NULL
Definition: types.h:112
static const IDWriteLocalizedStringsVtbl localizedstringsvtbl
Definition: main.c:436
return ret
Definition: mutex.c:147
#define calloc
Definition: rosglue.h:14
LONG refcount
Definition: main.c:268
IDWriteLocalizedStrings IDWriteLocalizedStrings_iface
Definition: main.c:267
size_t count
Definition: main.c:272
struct localizedpair * data
Definition: main.c:270
size_t size
Definition: main.c:271
#define S_FALSE
Definition: winerror.h:3451

Referenced by dwritefont_GetFaceNames(), dwritefontface3_GetFaceNames(), dwritefontface3_GetFamilyNames(), dwritefontfamily_GetFamilyNames(), and get_font_info_strings().

◆ compute_glyph_origins()

HRESULT compute_glyph_origins ( DWRITE_GLYPH_RUN const *  run,
DWRITE_MEASURING_MODE  measuring_mode,
D2D1_POINT_2F  baseline_origin,
DWRITE_MATRIX const *  transform,
D2D1_POINT_2F *  origins 
)

Definition at line 1726 of file main.c.

1728{
1729 struct dwrite_fontface *font_obj;
1730 unsigned int i;
1731 float advance;
1732
1733 font_obj = unsafe_impl_from_IDWriteFontFace(run->fontFace);
1734
1735 for (i = 0; i < run->glyphCount; ++i)
1736 {
1737 origins[i] = baseline_origin;
1738
1739 if (run->bidiLevel & 1)
1740 {
1741 advance = fontface_get_scaled_design_advance(font_obj, measuring_mode, run->fontEmSize,
1742 1.0f, transform, run->glyphIndices[i], run->isSideways);
1743
1744 origins[i].x -= advance;
1745
1746 if (run->glyphOffsets)
1747 {
1748 origins[i].x -= run->glyphOffsets[i].advanceOffset;
1749 origins[i].y -= run->glyphOffsets[i].ascenderOffset;
1750 }
1751
1752 baseline_origin.x -= run->glyphAdvances ? run->glyphAdvances[i] : advance;
1753 }
1754 else
1755 {
1756 if (run->glyphOffsets)
1757 {
1758 origins[i].x += run->glyphOffsets[i].advanceOffset;
1759 origins[i].y -= run->glyphOffsets[i].ascenderOffset;
1760 }
1761
1762 baseline_origin.x += run->glyphAdvances ? run->glyphAdvances[i] :
1763 fontface_get_scaled_design_advance(font_obj, measuring_mode, run->fontEmSize, 1.0f, transform,
1764 run->glyphIndices[i], run->isSideways);
1765
1766 }
1767 }
1768
1769 return S_OK;
1770}
_STLP_MOVE_TO_STD_NAMESPACE void _STLP_CALL advance(_InputIterator &__i, _Distance __n)
float fontface_get_scaled_design_advance(struct dwrite_fontface *fontface, DWRITE_MEASURING_MODE measuring_mode, float emsize, float ppdip, const DWRITE_MATRIX *transform, UINT16 glyph, BOOL is_sideways)
Definition: font.c:6384
struct dwrite_fontface * unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
Definition: font.c:2536
GLuint GLenum GLenum transform
Definition: glext.h:9407

Referenced by create_glyphrunanalysis(), dwritefactory4_ComputeGlyphOrigins(), dwritefactory4_ComputeGlyphOrigins_(), dwritefontface_GetGlyphRunOutline(), and layout_get_erun_bbox().

◆ create_localizedstrings()

HRESULT create_localizedstrings ( IDWriteLocalizedStrings **  strings)

Definition at line 449 of file main.c.

450{
451 struct localizedstrings *object;
452
453 *strings = NULL;
454
455 if (!(object = calloc(1, sizeof(*object))))
456 return E_OUTOFMEMORY;
457
458 object->IDWriteLocalizedStrings_iface.lpVtbl = &localizedstringsvtbl;
459 object->refcount = 1;
460
461 *strings = &object->IDWriteLocalizedStrings_iface;
462
463 return S_OK;
464}

Referenced by eudc_collection_add_family(), fontcollection_add_replacement(), init_font_data_from_font(), opentype_get_font_strings_from_id(), and opentype_get_font_strings_from_meta().

◆ create_renderingparams()

static HRESULT create_renderingparams ( float  gamma,
float  contrast,
float  grayscalecontrast,
float  cleartype_level,
DWRITE_PIXEL_GEOMETRY  geometry,
DWRITE_RENDERING_MODE1  mode,
DWRITE_GRID_FIT_MODE  gridfit,
IDWriteRenderingParams3 **  params 
)
static

Definition at line 227 of file main.c.

230{
231 struct renderingparams *object;
232
233 *params = NULL;
234
235 if (gamma <= 0.0f || contrast < 0.0f || grayscalecontrast < 0.0f || cleartype_level < 0.0f)
236 return E_INVALIDARG;
237
239 return E_INVALIDARG;
240
241 if (!(object = malloc(sizeof(*object))))
242 return E_OUTOFMEMORY;
243
244 object->IDWriteRenderingParams3_iface.lpVtbl = &renderingparamsvtbl;
245 object->refcount = 1;
246
247 object->gamma = gamma;
248 object->contrast = contrast;
249 object->grayscalecontrast = grayscalecontrast;
250 object->cleartype_level = cleartype_level;
251 object->geometry = geometry;
252 object->mode = mode;
253 object->gridfit = gridfit;
254
255 *params = &object->IDWriteRenderingParams3_iface;
256
257 return S_OK;
258}
#define E_INVALIDARG
Definition: ddrawi.h:101
#define malloc
Definition: debug_ros.c:4
static const IDWriteRenderingParams3Vtbl renderingparamsvtbl
Definition: main.c:212
@ DWRITE_PIXEL_GEOMETRY_BGR
Definition: dwrite.idl:156
@ DWRITE_GRID_FIT_MODE_ENABLED
Definition: dwrite_2.idl:31
GLenum mode
Definition: glext.h:6217
GLenum const GLfloat * params
Definition: glext.h:5645
DWRITE_GRID_FIT_MODE gridfit
Definition: main.c:73
float contrast
Definition: main.c:68
float cleartype_level
Definition: main.c:70
float gamma
Definition: main.c:67
float grayscalecontrast
Definition: main.c:69
DWRITE_PIXEL_GEOMETRY geometry
Definition: main.c:71
uint32_t UINT32
Definition: typedefs.h:59

Referenced by dwritefactory3_CreateCustomRenderingParams().

◆ create_system_fontset()

HRESULT create_system_fontset ( IDWriteFactory7 *  factory,
REFIID  riid,
void **  obj 
)

Definition at line 1624 of file main.c.

1625{
1626 IDWriteFontSetBuilder2 *builder;
1627 IDWriteFontSet *fontset;
1628 unsigned int i, j, count;
1629 WCHAR **paths;
1630 HRESULT hr;
1631
1632 *obj = NULL;
1633
1634 if (FAILED(hr = create_fontset_builder(factory, &builder))) return hr;
1635
1637 {
1638 /* Sort, skip duplicates. */
1639
1641
1642 for (i = 0, j = 0; i < count; ++i)
1643 {
1644 if (i != j && !wcsicmp(paths[i], paths[j])) continue;
1645
1646 if (FAILED(hr = IDWriteFontSetBuilder2_AddFontFile(builder, paths[i])) && hr != DWRITE_E_FILEFORMAT)
1647 WARN("Failed to add font file, hr %#lx, path %s.\n", hr, debugstr_w(paths[i]));
1648
1649 j = i;
1650 }
1651
1652 for (i = 0; i < count; ++i)
1653 free(paths[i]);
1654 free(paths);
1655 }
1656
1657 if (SUCCEEDED(hr = IDWriteFontSetBuilder2_CreateFontSet(builder, &fontset)))
1658 {
1659 hr = IDWriteFontSet_QueryInterface(fontset, riid, obj);
1660 IDWriteFontSet_Release(fontset);
1661 }
1662
1663 IDWriteFontSetBuilder2_Release(builder);
1664
1665 return hr;
1666}
#define WARN(fmt,...)
Definition: precomp.h:61
HRESULT hr
Definition: delayimp.cpp:582
static HRESULT create_system_path_list(WCHAR ***ret, unsigned int *ret_count)
Definition: main.c:1526
static int __cdecl create_system_fontset_compare(const void *left, const void *right)
Definition: main.c:1618
_ACRTIMP void __cdecl qsort(void *, size_t, size_t, int(__cdecl *)(const void *, const void *))
HRESULT create_fontset_builder(IDWriteFactory7 *factory, IDWriteFontSetBuilder2 **ret)
Definition: font.c:8391
GLsizei const GLuint * paths
Definition: glext.h:11717
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
REFIID riid
Definition: atlbase.h:39
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_w
Definition: kernel32.h:32
short WCHAR
Definition: pedump.c:58
Definition: main.c:439
#define DWRITE_E_FILEFORMAT
Definition: winerror.h:7334

Referenced by dwritefactory3_GetSystemFontSet(), dwritefactory6_GetSystemFontSet(), dwritefactory7_GetSystemFontSet(), and get_system_fontcollection().

◆ create_system_fontset_compare()

static int __cdecl create_system_fontset_compare ( const void *  left,
const void *  right 
)
static

Definition at line 1618 of file main.c.

1619{
1620 const WCHAR *_l = *(WCHAR **)left, *_r = *(WCHAR **)right;
1621 return wcsicmp(_l, _r);
1622};
GLdouble GLdouble right
Definition: glext.h:10859
GLint left
Definition: glext.h:7726

Referenced by create_system_fontset().

◆ create_system_path_list()

static HRESULT create_system_path_list ( WCHAR ***  ret,
unsigned int *  ret_count 
)
static

Definition at line 1526 of file main.c.

1527{
1528 unsigned int index = 0, value_size, max_name_count;
1529 WCHAR **paths = NULL, *name, *value = NULL;
1530 DWORD name_count, type, data_size;
1531 size_t capacity = 0, count = 0;
1532 HKEY hkey;
1533 LONG r;
1534
1535 if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts",
1536 0, GENERIC_READ, &hkey))
1537 {
1538 return E_UNEXPECTED;
1539 }
1540
1541 value_size = MAX_PATH * sizeof(*value);
1542 value = malloc(value_size);
1543
1544 max_name_count = MAX_PATH;
1545 name = malloc(max_name_count * sizeof(*name));
1546
1547 for (;;)
1548 {
1549 if (!value)
1550 {
1551 value_size = MAX_PATH * sizeof(*value);
1552 value = malloc(value_size);
1553 }
1554
1555 do
1556 {
1557 name_count = max_name_count;
1558 data_size = value_size - sizeof(*value);
1559
1560 r = RegEnumValueW(hkey, index, name, &name_count, NULL, &type, (BYTE *)value, &data_size);
1561 if (r == ERROR_MORE_DATA)
1562 {
1563 if (name_count >= max_name_count)
1564 {
1565 max_name_count *= 2;
1566 free(name);
1567 name = malloc(max_name_count * sizeof(*name));
1568 }
1569
1570 if (data_size > value_size - sizeof(*value))
1571 {
1572 free(value);
1573 value_size = max(data_size + sizeof(*value), value_size * 2);
1574 value = malloc(value_size);
1575 }
1576 }
1577 } while (r == ERROR_MORE_DATA);
1578
1579 if (r != ERROR_SUCCESS)
1580 break;
1581
1582 value[data_size / sizeof(*value)] = 0;
1583 if (type == REG_SZ && *name != '@')
1584 {
1585 if (dwrite_array_reserve((void **)&paths, &capacity, count + 1, sizeof(*paths)))
1586 {
1587 if (!wcschr(value, '\\'))
1588 {
1589 WCHAR *ptrW;
1590
1591 ptrW = malloc((MAX_PATH + wcslen(value)) * sizeof(WCHAR));
1593 wcscat(ptrW, L"\\fonts\\");
1594 wcscat(ptrW, value);
1595
1596 free(value);
1597 value = ptrW;
1598 }
1599
1600 paths[count++] = value;
1601 value = NULL;
1602 }
1603 }
1604 index++;
1605 }
1606
1607 free(value);
1608 free(name);
1609
1610 *ret = paths;
1611 *ret_count = count;
1612
1613 RegCloseKey(hkey);
1614
1615 return S_OK;
1616}
#define REG_SZ
Definition: layer.c:22
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_MORE_DATA
Definition: dderror.h:13
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
Definition: reg.c:3298
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2830
#define wcschr
Definition: compat.h:17
#define GENERIC_READ
Definition: compat.h:135
#define MAX_PATH
Definition: compat.h:34
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2370
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
#define L(x)
Definition: resources.c:13
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLuint index
Definition: glext.h:6031
long LONG
Definition: pedump.c:60
wcscat
Definition: name.c:39
#define max(a, b)
Definition: svc.c:63
Definition: pdh_main.c:64
#define E_UNEXPECTED
Definition: winerror.h:3528
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
unsigned char BYTE
Definition: xxhash.c:193

Referenced by create_system_fontset().

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hinstDLL,
DWORD  reason,
LPVOID  reserved 
)

Definition at line 42 of file main.c.

43{
44 switch (reason)
45 {
47 dwrite_module = hinstDLL;
48 DisableThreadLibraryCalls( hinstDLL );
52 break;
54 if (reserved) break;
58 }
59 return TRUE;
60}
void release_system_fallback_data(void)
Definition: analyzer.c:3024
#define UNIX_CALL(func, params)
Definition: unixlib.h:113
#define TRUE
Definition: types.h:120
static NTSTATUS process_attach(void *args)
Definition: freetype.c:745
static void release_shared_factory(IDWriteFactory7 *factory)
Definition: main.c:672
static IDWriteFactory7 * shared_factory
Definition: main.c:39
HMODULE dwrite_module
Definition: main.c:38
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1971
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
static void process_detach(void)
Definition: main.c:94
r reserved
Definition: btrfs.c:3006
void init_local_fontfile_loader(void)
Definition: font.c:5991
#define __wine_init_unix_call()
Definition: unixlib.h:13

◆ DWriteCreateFactory()

HRESULT WINAPI DWriteCreateFactory ( DWRITE_FACTORY_TYPE  type,
REFIID  riid,
IUnknown **  ret 
)

Definition at line 2110 of file main.c.

2111{
2112 struct dwritefactory *factory;
2113 HRESULT hr;
2114
2115 TRACE("%d, %s, %p.\n", type, debugstr_guid(riid), ret);
2116
2117 *ret = NULL;
2118
2120 return IDWriteFactory7_QueryInterface(shared_factory, riid, (void**)ret);
2121
2122 if (!(factory = calloc(1, sizeof(*factory))))
2123 return E_OUTOFMEMORY;
2124
2126
2128 if (InterlockedCompareExchangePointer((void **)&shared_factory, &factory->IDWriteFactory7_iface, NULL))
2129 {
2130 release_shared_factory(&factory->IDWriteFactory7_iface);
2131 return IDWriteFactory7_QueryInterface(shared_factory, riid, (void**)ret);
2132 }
2133
2134 hr = IDWriteFactory7_QueryInterface(&factory->IDWriteFactory7_iface, riid, (void**)ret);
2135 IDWriteFactory7_Release(&factory->IDWriteFactory7_iface);
2136 return hr;
2137}
static void init_dwritefactory(struct dwritefactory *factory, DWRITE_FACTORY_TYPE type)
Definition: main.c:2077
@ DWRITE_FACTORY_TYPE_SHARED
Definition: dwrite.idl:42
#define InterlockedCompareExchangePointer
Definition: interlocked.h:144
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by d2d_device_context_draw_glyph_run_bitmap(), d2d_device_context_DrawText(), d2d_device_context_init(), and d2d_text_renderer_DrawGlyphRun().

◆ dwritefactory1_CreateCustomRenderingParams()

static HRESULT WINAPI dwritefactory1_CreateCustomRenderingParams ( IDWriteFactory7 *  iface,
FLOAT  gamma,
FLOAT  enhcontrast,
FLOAT  enhcontrast_grayscale,
FLOAT  cleartype_level,
DWRITE_PIXEL_GEOMETRY  geometry,
DWRITE_RENDERING_MODE  mode,
IDWriteRenderingParams1 **  params 
)
static

Definition at line 1361 of file main.c.

1364{
1365 IDWriteRenderingParams3 *params3;
1366 HRESULT hr;
1367
1368 TRACE("%p, %.8e, %.8e, %.8e, %.8e, %d, %d, %p.\n", iface, gamma, enhcontrast, enhcontrast_grayscale,
1369 cleartype_level, geometry, mode, params);
1370
1372 *params = NULL;
1373 return E_INVALIDARG;
1374 }
1375
1376 hr = IDWriteFactory7_CreateCustomRenderingParams(iface, gamma, enhcontrast, enhcontrast_grayscale,
1377 cleartype_level, geometry, (DWRITE_RENDERING_MODE1)mode, DWRITE_GRID_FIT_MODE_DEFAULT, &params3);
1378 *params = (IDWriteRenderingParams1*)params3;
1379 return hr;
1380}
@ DWRITE_RENDERING_MODE_OUTLINE
Definition: dwrite.idl:167
@ DWRITE_GRID_FIT_MODE_DEFAULT
Definition: dwrite_2.idl:29
DWRITE_RENDERING_MODE1
Definition: dwrite_3.idl:77

◆ dwritefactory1_GetEudcFontCollection()

static HRESULT WINAPI dwritefactory1_GetEudcFontCollection ( IDWriteFactory7 *  iface,
IDWriteFontCollection **  collection,
BOOL  check_for_updates 
)
static

Definition at line 1329 of file main.c.

1331{
1333 HRESULT hr = S_OK;
1334
1335 TRACE("%p, %p, %d.\n", iface, collection, check_for_updates);
1336
1337 if (check_for_updates)
1338 FIXME("checking for eudc updates not implemented\n");
1339
1340 if (factory->eudc_collection)
1341 IDWriteFontCollection1_AddRef(factory->eudc_collection);
1342 else {
1344
1346 {
1347 *collection = NULL;
1348 WARN("Failed to get EUDC collection, hr %#lx.\n", hr);
1349 return hr;
1350 }
1351
1352 if (InterlockedCompareExchangePointer((void **)&factory->eudc_collection, eudc_collection, NULL))
1353 IDWriteFontCollection3_Release(eudc_collection);
1354 }
1355
1356 *collection = (IDWriteFontCollection *)factory->eudc_collection;
1357
1358 return hr;
1359}
#define FIXME(fmt,...)
Definition: precomp.h:53
static struct dwritefactory * impl_from_IDWriteFactory7(IDWriteFactory7 *iface)
Definition: main.c:614
HRESULT get_eudc_fontcollection(IDWriteFactory7 *factory, IDWriteFontCollection3 **collection)
Definition: font.c:5223
IDWriteFontCollection1 * eudc_collection
Definition: main.c:601

◆ dwritefactory2_CreateCustomRenderingParams()

static HRESULT WINAPI dwritefactory2_CreateCustomRenderingParams ( IDWriteFactory7 *  iface,
FLOAT  gamma,
FLOAT  contrast,
FLOAT  grayscalecontrast,
FLOAT  cleartype_level,
DWRITE_PIXEL_GEOMETRY  geometry,
DWRITE_RENDERING_MODE  mode,
DWRITE_GRID_FIT_MODE  gridfit,
IDWriteRenderingParams2 **  params 
)
static

Definition at line 1424 of file main.c.

1427{
1428 IDWriteRenderingParams3 *params3;
1429 HRESULT hr;
1430
1431 TRACE("%p, %.8e, %.8e, %.8e, %.8e, %d, %d, %d, %p.\n", iface, gamma, contrast, grayscalecontrast, cleartype_level,
1432 geometry, mode, gridfit, params);
1433
1435 *params = NULL;
1436 return E_INVALIDARG;
1437 }
1438
1439 hr = IDWriteFactory7_CreateCustomRenderingParams(iface, gamma, contrast, grayscalecontrast,
1440 cleartype_level, geometry, (DWRITE_RENDERING_MODE1)mode, DWRITE_GRID_FIT_MODE_DEFAULT, &params3);
1441 *params = (IDWriteRenderingParams2*)params3;
1442 return hr;
1443}

◆ dwritefactory2_CreateFontFallbackBuilder()

static HRESULT WINAPI dwritefactory2_CreateFontFallbackBuilder ( IDWriteFactory7 *  iface,
IDWriteFontFallbackBuilder **  fallbackbuilder 
)
static

Definition at line 1402 of file main.c.

1404{
1405 TRACE("%p, %p.\n", iface, fallbackbuilder);
1406
1407 return create_fontfallback_builder(iface, fallbackbuilder);
1408}
HRESULT create_fontfallback_builder(IDWriteFactory7 *factory, IDWriteFontFallbackBuilder **ret)
Definition: analyzer.c:2929

◆ dwritefactory2_CreateGlyphRunAnalysis()

static HRESULT WINAPI dwritefactory2_CreateGlyphRunAnalysis ( IDWriteFactory7 *  iface,
const DWRITE_GLYPH_RUN *  run,
const DWRITE_MATRIX *  transform,
DWRITE_RENDERING_MODE  rendering_mode,
DWRITE_MEASURING_MODE  measuring_mode,
DWRITE_GRID_FIT_MODE  gridfit_mode,
DWRITE_TEXT_ANTIALIAS_MODE  aa_mode,
FLOAT  originX,
FLOAT  originY,
IDWriteGlyphRunAnalysis **  analysis 
)
static

Definition at line 1462 of file main.c.

1466{
1467 TRACE("%p, %p, %p, %d, %d, %d, %d, %.8e, %.8e, %p.\n", iface, run, transform, rendering_mode, measuring_mode,
1468 gridfit_mode, aa_mode, originX, originY, analysis);
1469
1470 return factory_create_glyphrun_analysis(run, transform, (DWRITE_RENDERING_MODE1)rendering_mode, measuring_mode,
1471 gridfit_mode, aa_mode, originX, originY, analysis);
1472}
static HRESULT factory_create_glyphrun_analysis(const DWRITE_GLYPH_RUN *run, const DWRITE_MATRIX *transform, DWRITE_RENDERING_MODE1 rendering_mode, DWRITE_MEASURING_MODE measuring_mode, DWRITE_GRID_FIT_MODE gridfit_mode, DWRITE_TEXT_ANTIALIAS_MODE aa_mode, FLOAT originX, FLOAT originY, IDWriteGlyphRunAnalysis **analysis)
Definition: main.c:1445

◆ dwritefactory2_GetSystemFontFallback()

static HRESULT WINAPI dwritefactory2_GetSystemFontFallback ( IDWriteFactory7 *  iface,
IDWriteFontFallback **  fallback 
)
static

Definition at line 1382 of file main.c.

1383{
1385
1386 TRACE("%p, %p.\n", iface, fallback);
1387
1388 *fallback = NULL;
1389
1390 if (!factory->fallback)
1391 {
1392 HRESULT hr = create_system_fontfallback(iface, &factory->fallback);
1393 if (FAILED(hr))
1394 return hr;
1395 }
1396
1397 *fallback = (IDWriteFontFallback *)factory->fallback;
1398 IDWriteFontFallback_AddRef(*fallback);
1399 return S_OK;
1400}
HRESULT create_system_fontfallback(IDWriteFactory7 *factory, IDWriteFontFallback1 **ret)
Definition: analyzer.c:3029
IDWriteFontFallback1 * fallback
Definition: main.c:603

◆ dwritefactory2_TranslateColorGlyphRun()

static HRESULT WINAPI dwritefactory2_TranslateColorGlyphRun ( IDWriteFactory7 *  iface,
FLOAT  originX,
FLOAT  originY,
const DWRITE_GLYPH_RUN *  run,
const DWRITE_GLYPH_RUN_DESCRIPTION *  run_desc,
DWRITE_MEASURING_MODE  measuring_mode,
const DWRITE_MATRIX *  transform,
UINT32  palette,
IDWriteColorGlyphRunEnumerator **  layers 
)
static

Definition at line 1410 of file main.c.

1413{
1414 D2D1_POINT_2F origin = { originX, originY };
1415
1416 TRACE("%p, %.8e, %.8e, %p, %p, %d, %p, %u, %p.\n", iface, originX, originY, run, run_desc, measuring_mode,
1417 transform, palette, layers);
1418
1421 measuring_mode, transform, palette, (IDWriteColorGlyphRunEnumerator1 **)layers);
1422}
@ DWRITE_GLYPH_IMAGE_FORMATS_COLR
Definition: dcommon.idl:47
@ DWRITE_GLYPH_IMAGE_FORMATS_CFF
Definition: dcommon.idl:46
@ DWRITE_GLYPH_IMAGE_FORMATS_TRUETYPE
Definition: dcommon.idl:45
HRESULT create_colorglyphenum(D2D1_POINT_2F origin, const DWRITE_GLYPH_RUN *run, const DWRITE_GLYPH_RUN_DESCRIPTION *desc, DWRITE_GLYPH_IMAGE_FORMATS formats, DWRITE_MEASURING_MODE mode, const DWRITE_MATRIX *transform, UINT32 palette, IDWriteColorGlyphRunEnumerator1 **enumerator)
voidpf uLong int origin
Definition: ioapi.h:144
static HPALETTE palette
Definition: clipboard.c:1457

◆ dwritefactory3_CreateCustomRenderingParams()

static HRESULT WINAPI dwritefactory3_CreateCustomRenderingParams ( IDWriteFactory7 *  iface,
FLOAT  gamma,
FLOAT  contrast,
FLOAT  grayscale_contrast,
FLOAT  cleartype_level,
DWRITE_PIXEL_GEOMETRY  pixel_geometry,
DWRITE_RENDERING_MODE1  rendering_mode,
DWRITE_GRID_FIT_MODE  gridfit_mode,
IDWriteRenderingParams3 **  params 
)
static

Definition at line 1486 of file main.c.

1489{
1490 TRACE("%p, %.8e, %.8e, %.8e, %.8e, %d, %d, %d, %p.\n", iface, gamma, contrast, grayscale_contrast, cleartype_level,
1491 pixel_geometry, rendering_mode, gridfit_mode, params);
1492
1493 return create_renderingparams(gamma, contrast, grayscale_contrast, cleartype_level, pixel_geometry, rendering_mode,
1494 gridfit_mode, params);
1495}
static HRESULT create_renderingparams(float gamma, float contrast, float grayscalecontrast, float cleartype_level, DWRITE_PIXEL_GEOMETRY geometry, DWRITE_RENDERING_MODE1 mode, DWRITE_GRID_FIT_MODE gridfit, IDWriteRenderingParams3 **params)
Definition: main.c:227

◆ dwritefactory3_CreateFontCollectionFromFontSet()

static HRESULT WINAPI dwritefactory3_CreateFontCollectionFromFontSet ( IDWriteFactory7 *  iface,
IDWriteFontSet *  fontset,
IDWriteFontCollection1 **  collection 
)
static

Definition at line 1682 of file main.c.

1684{
1685 TRACE("%p, %p, %p.\n", iface, fontset, collection);
1686
1688 &IID_IDWriteFontCollection1, (void **)collection);
1689}
@ DWRITE_FONT_FAMILY_MODEL_WEIGHT_STRETCH_STYLE
Definition: dwrite_3.idl:171
HRESULT create_font_collection_from_set(IDWriteFactory7 *factory, IDWriteFontSet *set, DWRITE_FONT_FAMILY_MODEL family_model, REFGUID riid, void **ret)
Definition: font.c:4857

◆ dwritefactory3_CreateFontFaceReference()

static HRESULT WINAPI dwritefactory3_CreateFontFaceReference ( IDWriteFactory7 *  iface,
WCHAR const *  path,
FILETIME const *  writetime,
UINT32  index,
DWRITE_FONT_SIMULATIONS  simulations,
IDWriteFontFaceReference **  reference 
)
static

Definition at line 1505 of file main.c.

1508{
1510 HRESULT hr;
1511
1512 TRACE("%p, %s, %p, %u, %#x, %p.\n", iface, debugstr_w(path), writetime, index, simulations, reference);
1513
1514 hr = IDWriteFactory7_CreateFontFileReference(iface, path, writetime, &file);
1515 if (FAILED(hr))
1516 {
1517 *reference = NULL;
1518 return hr;
1519 }
1520
1522 IDWriteFontFile_Release(file);
1523 return hr;
1524}
HRESULT create_fontfacereference(IDWriteFactory7 *factory, IDWriteFontFile *file, UINT32 face_index, DWRITE_FONT_SIMULATIONS simulations, DWRITE_FONT_AXIS_VALUE const *axis_values, UINT32 axis_values_count, IDWriteFontFaceReference1 **reference)
Definition: font.c:7082
GLint reference
Definition: glext.h:11729
Definition: fci.c:123

◆ dwritefactory3_CreateFontFaceReference_()

static HRESULT WINAPI dwritefactory3_CreateFontFaceReference_ ( IDWriteFactory7 *  iface,
IDWriteFontFile *  file,
UINT32  index,
DWRITE_FONT_SIMULATIONS  simulations,
IDWriteFontFaceReference **  reference 
)
static

Definition at line 1497 of file main.c.

1499{
1500 TRACE("%p, %p, %u, %x, %p.\n", iface, file, index, simulations, reference);
1501
1502 return create_fontfacereference(iface, file, index, simulations, NULL, 0, (IDWriteFontFaceReference1 **)reference);
1503}

◆ dwritefactory3_CreateFontSetBuilder()

static HRESULT WINAPI dwritefactory3_CreateFontSetBuilder ( IDWriteFactory7 *  iface,
IDWriteFontSetBuilder **  builder 
)
static

Definition at line 1675 of file main.c.

1676{
1677 TRACE("%p, %p.\n", iface, builder);
1678
1679 return create_fontset_builder(iface, (IDWriteFontSetBuilder2 **)builder);
1680}

◆ dwritefactory3_CreateGlyphRunAnalysis()

static HRESULT WINAPI dwritefactory3_CreateGlyphRunAnalysis ( IDWriteFactory7 *  iface,
DWRITE_GLYPH_RUN const *  run,
DWRITE_MATRIX const *  transform,
DWRITE_RENDERING_MODE1  rendering_mode,
DWRITE_MEASURING_MODE  measuring_mode,
DWRITE_GRID_FIT_MODE  gridfit_mode,
DWRITE_TEXT_ANTIALIAS_MODE  aa_mode,
FLOAT  originX,
FLOAT  originY,
IDWriteGlyphRunAnalysis **  analysis 
)
static

Definition at line 1474 of file main.c.

1478{
1479 TRACE("%p, %p, %p, %d, %d, %d, %d, %.8e, %.8e, %p.\n", iface, run, transform, rendering_mode, measuring_mode,
1480 gridfit_mode, aa_mode, originX, originY, analysis);
1481
1482 return factory_create_glyphrun_analysis(run, transform, rendering_mode, measuring_mode, gridfit_mode,
1483 aa_mode, originX, originY, analysis);
1484}

◆ dwritefactory3_GetFontDownloadQueue()

static HRESULT WINAPI dwritefactory3_GetFontDownloadQueue ( IDWriteFactory7 *  iface,
IDWriteFontDownloadQueue **  queue 
)
static

Definition at line 1708 of file main.c.

1709{
1710 FIXME("%p, %p: stub\n", iface, queue);
1711
1712 return E_NOTIMPL;
1713}
#define E_NOTIMPL
Definition: ddrawi.h:99
Definition: queue.c:179

◆ dwritefactory3_GetSystemFontCollection()

static HRESULT WINAPI dwritefactory3_GetSystemFontCollection ( IDWriteFactory7 *  iface,
BOOL  include_downloadable,
IDWriteFontCollection1 **  collection,
BOOL  check_for_updates 
)
static

Definition at line 1691 of file main.c.

1693{
1695
1696 TRACE("%p, %d, %p, %d.\n", iface, include_downloadable, collection, check_for_updates);
1697
1698 if (include_downloadable)
1699 FIXME("remote fonts are not supported\n");
1700
1701 if (check_for_updates)
1702 FIXME("checking for system font updates not implemented\n");
1703
1705 &IID_IDWriteFontCollection1, (void **)collection);
1706}
static HRESULT factory_get_system_collection(struct dwritefactory *factory, DWRITE_FONT_FAMILY_MODEL family_model, REFIID riid, void **out)
Definition: main.c:709

◆ dwritefactory3_GetSystemFontSet()

static HRESULT WINAPI dwritefactory3_GetSystemFontSet ( IDWriteFactory7 *  iface,
IDWriteFontSet **  fontset 
)
static

Definition at line 1668 of file main.c.

1669{
1670 TRACE("%p, %p.\n", iface, fontset);
1671
1672 return create_system_fontset(iface, &IID_IDWriteFontSet, (void **)fontset);
1673}
HRESULT create_system_fontset(IDWriteFactory7 *factory, REFIID riid, void **obj)
Definition: main.c:1624

◆ dwritefactory4_ComputeGlyphOrigins()

static HRESULT WINAPI dwritefactory4_ComputeGlyphOrigins ( IDWriteFactory7 *  iface,
DWRITE_GLYPH_RUN const *  run,
DWRITE_MEASURING_MODE  measuring_mode,
D2D1_POINT_2F  baseline_origin,
DWRITE_MATRIX const *  transform,
D2D1_POINT_2F *  origins 
)
static

Definition at line 1780 of file main.c.

1783{
1784 TRACE("%p, %p, %d, {%.8e,%.8e}, %p, %p.\n", iface, run, measuring_mode, baseline_origin.x, baseline_origin.y,
1785 transform, origins);
1786
1787 return compute_glyph_origins(run, measuring_mode, baseline_origin, transform, origins);
1788}
HRESULT compute_glyph_origins(DWRITE_GLYPH_RUN const *run, DWRITE_MEASURING_MODE measuring_mode, D2D1_POINT_2F baseline_origin, DWRITE_MATRIX const *transform, D2D1_POINT_2F *origins)
Definition: main.c:1726

◆ dwritefactory4_ComputeGlyphOrigins_()

static HRESULT WINAPI dwritefactory4_ComputeGlyphOrigins_ ( IDWriteFactory7 *  iface,
DWRITE_GLYPH_RUN const *  run,
D2D1_POINT_2F  baseline_origin,
D2D1_POINT_2F *  origins 
)
static

Definition at line 1772 of file main.c.

1774{
1775 TRACE("%p, %p, {%.8e,%.8e}, %p.\n", iface, run, baseline_origin.x, baseline_origin.y, origins);
1776
1777 return compute_glyph_origins(run, DWRITE_MEASURING_MODE_NATURAL, baseline_origin, NULL, origins);
1778}
@ DWRITE_MEASURING_MODE_NATURAL
Definition: dcommon.idl:37

◆ dwritefactory4_TranslateColorGlyphRun()

static HRESULT WINAPI dwritefactory4_TranslateColorGlyphRun ( IDWriteFactory7 *  iface,
D2D1_POINT_2F  origin,
DWRITE_GLYPH_RUN const *  run,
DWRITE_GLYPH_RUN_DESCRIPTION const *  run_desc,
DWRITE_GLYPH_IMAGE_FORMATS  desired_formats,
DWRITE_MEASURING_MODE  measuring_mode,
DWRITE_MATRIX const *  transform,
UINT32  palette,
IDWriteColorGlyphRunEnumerator1 **  layers 
)
static

Definition at line 1715 of file main.c.

1719{
1720 TRACE("%p, %.8e, %.8e, %p, %p, %u, %d, %p, %u, %p.\n", iface, origin.x, origin.y, run, run_desc, desired_formats,
1721 measuring_mode, transform, palette, layers);
1722
1723 return create_colorglyphenum(origin, run, run_desc, desired_formats, measuring_mode, transform, palette, layers);
1724}

◆ dwritefactory5_AnalyzeContainerType()

static DWRITE_CONTAINER_TYPE WINAPI dwritefactory5_AnalyzeContainerType ( IDWriteFactory7 *  iface,
void const *  data,
UINT32  data_size 
)
static

Definition at line 1813 of file main.c.

1815{
1816 TRACE("%p, %p, %u.\n", iface, data, data_size);
1817
1818 return opentype_analyze_container_type(data, data_size);
1819}
DWRITE_CONTAINER_TYPE opentype_analyze_container_type(void const *, UINT32)
Definition: opentype.c:3217
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

◆ dwritefactory5_CreateFontSetBuilder()

static HRESULT WINAPI dwritefactory5_CreateFontSetBuilder ( IDWriteFactory7 *  iface,
IDWriteFontSetBuilder1 **  builder 
)
static

Definition at line 1790 of file main.c.

1791{
1792 TRACE("%p, %p.\n", iface, builder);
1793
1794 return create_fontset_builder(iface, (IDWriteFontSetBuilder2 **)builder);
1795}

◆ dwritefactory5_CreateHttpFontFileLoader()

static HRESULT WINAPI dwritefactory5_CreateHttpFontFileLoader ( IDWriteFactory7 *  iface,
WCHAR const *  referrer_url,
WCHAR const *  extra_headers,
IDWriteRemoteFontFileLoader **  loader 
)
static

Definition at line 1805 of file main.c.

1807{
1808 FIXME("%p, %s, %s, %p: stub\n", iface, debugstr_w(referrer_url), wine_dbgstr_w(extra_headers), loader);
1809
1810 return E_NOTIMPL;
1811}
#define wine_dbgstr_w
Definition: kernel32.h:34
Definition: loader.c:72

◆ dwritefactory5_CreateInMemoryFontFileLoader()

static HRESULT WINAPI dwritefactory5_CreateInMemoryFontFileLoader ( IDWriteFactory7 *  iface,
IDWriteInMemoryFontFileLoader **  loader 
)
static

Definition at line 1797 of file main.c.

1799{
1800 TRACE("%p, %p.\n", iface, loader);
1801
1803}
HRESULT create_inmemory_fileloader(IDWriteInMemoryFontFileLoader **loader)
Definition: font.c:7358

◆ dwritefactory5_UnpackFontFile()

static HRESULT WINAPI dwritefactory5_UnpackFontFile ( IDWriteFactory7 *  iface,
DWRITE_CONTAINER_TYPE  container_type,
void const *  data,
UINT32  data_size,
IDWriteFontFileStream **  stream 
)
static

Definition at line 1821 of file main.c.

1823{
1824 FIXME("%p, %d, %p, %u, %p: stub\n", iface, container_type, data, data_size, stream);
1825
1826 return E_NOTIMPL;
1827}
container_type
Definition: metafile.c:150
Definition: parse.h:23

◆ dwritefactory6_CreateFontCollectionFromFontSet()

static HRESULT WINAPI dwritefactory6_CreateFontCollectionFromFontSet ( IDWriteFactory7 *  iface,
IDWriteFontSet *  fontset,
DWRITE_FONT_FAMILY_MODEL  family_model,
IDWriteFontCollection2 **  collection 
)
static

Definition at line 1871 of file main.c.

1873{
1874 TRACE("%p, %p, %d, %p.\n", iface, fontset, family_model, collection);
1875
1876 return create_font_collection_from_set(iface, fontset, family_model, &IID_IDWriteFontCollection2, (void **)collection);
1877}

◆ dwritefactory6_CreateFontFaceReference()

static HRESULT WINAPI dwritefactory6_CreateFontFaceReference ( IDWriteFactory7 *  iface,
IDWriteFontFile *  file,
UINT32  face_index,
DWRITE_FONT_SIMULATIONS  simulations,
DWRITE_FONT_AXIS_VALUE const *  axis_values,
UINT32  axis_values_count,
IDWriteFontFaceReference1 **  reference 
)
static

Definition at line 1829 of file main.c.

1832{
1833 TRACE("%p, %p, %u, %#x, %p, %u, %p.\n", iface, file, face_index, simulations, axis_values, axis_values_count,
1834 reference);
1835
1836 return create_fontfacereference(iface, file, face_index, simulations, axis_values, axis_values_count, reference);
1837}

◆ dwritefactory6_CreateFontResource()

static HRESULT WINAPI dwritefactory6_CreateFontResource ( IDWriteFactory7 *  iface,
IDWriteFontFile *  file,
UINT32  face_index,
IDWriteFontResource **  resource 
)
static

Definition at line 1839 of file main.c.

1841{
1842 TRACE("%p, %p, %u, %p.\n", iface, file, face_index, resource);
1843
1844 return create_font_resource(iface, file, face_index, resource);
1845}
HRESULT create_font_resource(IDWriteFactory7 *factory, IDWriteFontFile *file, UINT32 face_index, IDWriteFontResource **resource)
Definition: font.c:7583

◆ dwritefactory6_CreateFontSetBuilder()

static HRESULT WINAPI dwritefactory6_CreateFontSetBuilder ( IDWriteFactory7 *  iface,
IDWriteFontSetBuilder2 **  builder 
)
static

Definition at line 1879 of file main.c.

1880{
1881 TRACE("%p, %p.\n", iface, builder);
1882
1883 return create_fontset_builder(iface, builder);
1884}

◆ dwritefactory6_CreateTextFormat()

static HRESULT WINAPI dwritefactory6_CreateTextFormat ( IDWriteFactory7 *  iface,
const WCHAR *  family_name,
IDWriteFontCollection *  collection,
DWRITE_FONT_AXIS_VALUE const *  axis_values,
UINT32  num_axis,
float  size,
const WCHAR *  locale,
IDWriteTextFormat3 **  format 
)
static

Definition at line 1886 of file main.c.

1889{
1891 HRESULT hr;
1892
1893 TRACE("%p, %s, %p, %p, %u, %.8e, %s, %p.\n", iface, debugstr_w(family_name), collection, axis_values, num_axis,
1895
1896 *format = NULL;
1897
1898 if (axis_values)
1899 FIXME("Axis values are ignored.\n");
1900
1901 if (collection)
1902 {
1903 IDWriteFontCollection_AddRef(collection);
1904 }
1906 &IID_IDWriteFontCollection, (void **)&collection)))
1907 {
1908 return hr;
1909 }
1910
1912 DWRITE_FONT_STRETCH_NORMAL, size, locale, &IID_IDWriteTextFormat3, (void **)format);
1913 IDWriteFontCollection_Release(collection);
1914 return hr;
1915}
@ DWRITE_FONT_WEIGHT_NORMAL
Definition: dwrite.idl:79
@ DWRITE_FONT_STYLE_NORMAL
Definition: dwrite.idl:110
@ DWRITE_FONT_STRETCH_NORMAL
Definition: dwrite.idl:100
@ DWRITE_FONT_FAMILY_MODEL_TYPOGRAPHIC
Definition: dwrite_3.idl:170
HRESULT create_text_format(const WCHAR *family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style, DWRITE_FONT_STRETCH stretch, float size, const WCHAR *locale, REFIID riid, void **out)
Definition: format.c:714
GLsizeiptr size
Definition: glext.h:5919
T1_FIELD_DICT_FONTDICT family_name
Definition: t1tokens.h:30

◆ dwritefactory6_GetSystemFontCollection()

static HRESULT WINAPI dwritefactory6_GetSystemFontCollection ( IDWriteFactory7 *  iface,
BOOL  include_downloadable,
DWRITE_FONT_FAMILY_MODEL  family_model,
IDWriteFontCollection2 **  collection 
)
static

Definition at line 1858 of file main.c.

1860{
1862
1863 TRACE("%p, %d, %d, %p.\n", iface, include_downloadable, family_model, collection);
1864
1865 if (include_downloadable)
1866 FIXME("remote fonts are not supported\n");
1867
1868 return factory_get_system_collection(factory, family_model, &IID_IDWriteFontCollection2, (void **)collection);
1869}

◆ dwritefactory6_GetSystemFontSet()

static HRESULT WINAPI dwritefactory6_GetSystemFontSet ( IDWriteFactory7 *  iface,
BOOL  include_downloadable,
IDWriteFontSet1 **  fontset 
)
static

Definition at line 1847 of file main.c.

1849{
1850 TRACE("%p, %d, %p.\n", iface, include_downloadable, fontset);
1851
1852 if (include_downloadable)
1853 FIXME("Downloadable fonts are not supported.\n");
1854
1855 return create_system_fontset(iface, &IID_IDWriteFontSet1, (void **)fontset);
1856}

◆ dwritefactory7_GetSystemFontCollection()

static HRESULT WINAPI dwritefactory7_GetSystemFontCollection ( IDWriteFactory7 *  iface,
BOOL  include_downloadable,
DWRITE_FONT_FAMILY_MODEL  family_model,
IDWriteFontCollection3 **  collection 
)
static

Definition at line 1928 of file main.c.

1930{
1932
1933 TRACE("%p, %d, %d, %p.\n", iface, include_downloadable, family_model, collection);
1934
1935 if (include_downloadable)
1936 FIXME("remote fonts are not supported\n");
1937
1938 return factory_get_system_collection(factory, family_model, &IID_IDWriteFontCollection3, (void **)collection);
1939}

◆ dwritefactory7_GetSystemFontSet()

static HRESULT WINAPI dwritefactory7_GetSystemFontSet ( IDWriteFactory7 *  iface,
BOOL  include_downloadable,
IDWriteFontSet2 **  fontset 
)
static

Definition at line 1917 of file main.c.

1919{
1920 TRACE("%p, %d, %p.\n", iface, include_downloadable, fontset);
1921
1922 if (include_downloadable)
1923 FIXME("Downloadable fonts are not supported.\n");
1924
1925 return create_system_fontset(iface, &IID_IDWriteFontSet2, (void **)fontset);
1926}

◆ dwritefactory_AddRef()

static ULONG WINAPI dwritefactory_AddRef ( IDWriteFactory7 *  iface)
static

Definition at line 764 of file main.c.

765{
768
769 TRACE("%p, refcount %lu.\n", iface, refcount);
770
771 return refcount;
772}
#define InterlockedIncrement
Definition: armddk.h:53
LONG refcount
Definition: main.c:598
uint32_t ULONG
Definition: typedefs.h:59

◆ dwritefactory_CreateCustomFontCollection()

static HRESULT WINAPI dwritefactory_CreateCustomFontCollection ( IDWriteFactory7 *  iface,
IDWriteFontCollectionLoader *  loader,
void const *  key,
UINT32  key_size,
IDWriteFontCollection **  collection 
)
static

Definition at line 801 of file main.c.

803{
805 IDWriteFontFileEnumerator *enumerator;
806 struct collectionloader *found;
807 HRESULT hr;
808
809 TRACE("%p, %p, %p, %u, %p.\n", iface, loader, key, key_size, collection);
810
811 *collection = NULL;
812
813 if (!loader)
814 return E_INVALIDARG;
815
817 if (!found)
818 return E_INVALIDARG;
819
820 hr = IDWriteFontCollectionLoader_CreateEnumeratorFromKey(found->loader, (IDWriteFactory *)iface,
821 key, key_size, &enumerator);
822 if (FAILED(hr))
823 return hr;
824
826 IDWriteFontFileEnumerator_Release(enumerator);
827 return hr;
828}
#define FALSE
Definition: types.h:117
static struct collectionloader * factory_get_collection_loader(struct dwritefactory *factory, IDWriteFontCollectionLoader *loader)
Definition: main.c:694
HRESULT create_font_collection(IDWriteFactory7 *factory, IDWriteFontFileEnumerator *enumerator, BOOL is_system, IDWriteFontCollection3 **collection)
Definition: font.c:4649
IDWriteFontCollectionLoader * loader
Definition: main.c:585
Definition: copy.c:22

◆ dwritefactory_CreateCustomFontFileReference()

static HRESULT WINAPI dwritefactory_CreateCustomFontFileReference ( IDWriteFactory7 *  iface,
void const *  reference_key,
UINT32  key_size,
IDWriteFontFileLoader *  loader,
IDWriteFontFile **  font_file 
)
static

Definition at line 899 of file main.c.

901{
903
904 TRACE("%p, %p, %u, %p, %p.\n", iface, reference_key, key_size, loader, font_file);
905
906 *font_file = NULL;
907
908 if (!loader || !(factory_get_file_loader(factory, loader) || factory->localfontfileloader == loader))
909 return E_INVALIDARG;
910
911 return create_font_file(loader, reference_key, key_size, font_file);
912}
static struct fileloader * factory_get_file_loader(struct dwritefactory *factory, IDWriteFontFileLoader *loader)
Definition: main.c:680
HRESULT create_font_file(IDWriteFontFileLoader *loader, const void *reference_key, UINT32 key_size, IDWriteFontFile **font_file)
Definition: font.c:5400

◆ dwritefactory_CreateCustomRenderingParams()

static HRESULT WINAPI dwritefactory_CreateCustomRenderingParams ( IDWriteFactory7 *  iface,
FLOAT  gamma,
FLOAT  enhancedContrast,
FLOAT  cleartype_level,
DWRITE_PIXEL_GEOMETRY  geometry,
DWRITE_RENDERING_MODE  mode,
IDWriteRenderingParams **  params 
)
static

Definition at line 1117 of file main.c.

1120{
1121 IDWriteRenderingParams3 *params3;
1122 HRESULT hr;
1123
1124 TRACE("%p, %.8e, %.8e, %.8e, %d, %d, %p.\n", iface, gamma, enhancedContrast, cleartype_level, geometry, mode, params);
1125
1127 *params = NULL;
1128 return E_INVALIDARG;
1129 }
1130
1131 hr = IDWriteFactory7_CreateCustomRenderingParams(iface, gamma, enhancedContrast, 1.0f, cleartype_level, geometry,
1133 *params = (IDWriteRenderingParams*)params3;
1134 return hr;
1135}

◆ dwritefactory_CreateEllipsisTrimmingSign()

static HRESULT WINAPI dwritefactory_CreateEllipsisTrimmingSign ( IDWriteFactory7 *  iface,
IDWriteTextFormat *  format,
IDWriteInlineObject **  trimming_sign 
)
static

Definition at line 1273 of file main.c.

1275{
1276 TRACE("%p, %p, %p.\n", iface, format, trimming_sign);
1277
1278 return create_trimmingsign(iface, format, trimming_sign);
1279}
HRESULT create_trimmingsign(IDWriteFactory7 *factory, IDWriteTextFormat *format, IDWriteInlineObject **sign)
Definition: format.c:891

◆ dwritefactory_CreateFontFace()

static HRESULT WINAPI dwritefactory_CreateFontFace ( IDWriteFactory7 *  iface,
DWRITE_FONT_FACE_TYPE  req_facetype,
UINT32  files_number,
IDWriteFontFile *const *  font_files,
UINT32  index,
DWRITE_FONT_SIMULATIONS  simulations,
IDWriteFontFace **  fontface 
)
static

Definition at line 1020 of file main.c.

1023{
1025 DWRITE_FONT_FACE_TYPE face_type;
1027 struct fontface_desc desc;
1028 struct list *fontfaces;
1029 BOOL is_supported;
1031 HRESULT hr;
1032
1033 TRACE("%p, %d, %u, %p, %u, %#x, %p.\n", iface, req_facetype, files_number, font_files, index,
1034 simulations, fontface);
1035
1036 *fontface = NULL;
1037
1038 if (!is_face_type_supported(req_facetype))
1039 return E_INVALIDARG;
1040
1041 if (req_facetype != DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION && index)
1042 return E_INVALIDARG;
1043
1044 if (!is_simulation_valid(simulations))
1045 return E_INVALIDARG;
1046
1047 if (FAILED(hr = get_filestream_from_file(*font_files, &stream)))
1048 return hr;
1049
1050 /* check actual file/face type */
1051 is_supported = FALSE;
1053 hr = opentype_analyze_font(stream, &is_supported, &file_type, &face_type, &face_count);
1054 if (FAILED(hr))
1055 goto failed;
1056
1057 if (!is_supported) {
1058 hr = E_FAIL;
1059 goto failed;
1060 }
1061
1062 if (face_type != req_facetype) {
1064 goto failed;
1065 }
1066
1067 hr = factory_get_cached_fontface(iface, font_files, index, simulations, &fontfaces,
1068 &IID_IDWriteFontFace, (void **)fontface);
1069 if (hr != S_FALSE)
1070 goto failed;
1071
1072 desc.factory = iface;
1073 desc.face_type = req_facetype;
1074 desc.file = *font_files;
1075 desc.stream = stream;
1076 desc.index = index;
1077 desc.simulations = simulations;
1078 desc.font_data = NULL;
1079 hr = create_fontface(&desc, fontfaces, (IDWriteFontFace5 **)fontface);
1080
1081failed:
1082 IDWriteFontFileStream_Release(stream);
1083 return hr;
1084}
#define index(s, c)
Definition: various.h:29
Definition: list.h:39
#define E_FAIL
Definition: ddrawi.h:102
HRESULT factory_get_cached_fontface(IDWriteFactory7 *iface, IDWriteFontFile *const *font_files, UINT32 index, DWRITE_FONT_SIMULATIONS simulations, struct list **cached_list, REFIID riid, void **obj)
Definition: main.c:926
DWRITE_FONT_FILE_TYPE
Definition: dwrite.idl:47
DWRITE_FONT_FACE_TYPE
Definition: dwrite.idl:60
@ DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION
Definition: dwrite.idl:63
@ DWRITE_FONT_FACE_TYPE_UNKNOWN
Definition: dwrite.idl:67
HRESULT get_filestream_from_file(IDWriteFontFile *, IDWriteFontFileStream **)
Definition: font.c:3563
static BOOL is_simulation_valid(DWRITE_FONT_SIMULATIONS simulations)
HRESULT opentype_analyze_font(IDWriteFontFileStream *, BOOL *, DWRITE_FONT_FILE_TYPE *, DWRITE_FONT_FACE_TYPE *, UINT32 *)
Definition: opentype.c:1492
HRESULT create_fontface(const struct fontface_desc *desc, struct list *cached_list, IDWriteFontFace5 **fontface)
Definition: font.c:5473
BOOL is_face_type_supported(DWRITE_FONT_FACE_TYPE)
Definition: opentype.c:1337
unsigned int BOOL
Definition: ntddk_ex.h:94
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
int face_count
Definition: d3drm.c:3529
FD_TYPE file_type(FDSC **curr, char *fixed)
Definition: file.c:221

◆ dwritefactory_CreateFontFileReference()

static HRESULT WINAPI dwritefactory_CreateFontFileReference ( IDWriteFactory7 *  iface,
WCHAR const *  path,
FILETIME const *  writetime,
IDWriteFontFile **  font_file 
)
static

Definition at line 876 of file main.c.

878{
880 UINT32 key_size;
881 HRESULT hr;
882 void *key;
883
884 TRACE("%p, %s, %p, %p.\n", iface, debugstr_w(path), writetime, font_file);
885
886 *font_file = NULL;
887
888 /* Get a reference key in local file loader format. */
889 hr = get_local_refkey(path, writetime, &key, &key_size);
890 if (FAILED(hr))
891 return hr;
892
893 hr = create_font_file(factory->localfontfileloader, key, key_size, font_file);
894 free(key);
895
896 return hr;
897}
HRESULT get_local_refkey(const WCHAR *, const FILETIME *, void **, UINT32 *)
Definition: font.c:6005

◆ dwritefactory_CreateGdiCompatibleTextLayout()

static HRESULT WINAPI dwritefactory_CreateGdiCompatibleTextLayout ( IDWriteFactory7 *  iface,
WCHAR const *  string,
UINT32  length,
IDWriteTextFormat *  format,
FLOAT  max_width,
FLOAT  max_height,
FLOAT  pixels_per_dip,
DWRITE_MATRIX const *  transform,
BOOL  use_gdi_natural,
IDWriteTextLayout **  layout 
)
static

Definition at line 1251 of file main.c.

1254{
1255 struct textlayout_desc desc;
1256
1257 TRACE("%p, %s:%u, %p, %.8e, %.8e, %.8e, %p, %d, %p.\n", iface, debugstr_wn(string, length), length, format,
1258 max_width, max_height, pixels_per_dip, transform, use_gdi_natural, layout);
1259
1260 desc.factory = iface;
1261 desc.string = string;
1262 desc.length = length;
1263 desc.format = format;
1264 desc.max_width = max_width;
1265 desc.max_height = max_height;
1266 desc.is_gdi_compatible = TRUE;
1267 desc.ppdip = pixels_per_dip;
1268 desc.transform = transform;
1269 desc.use_gdi_natural = use_gdi_natural;
1270 return create_textlayout(&desc, layout);
1271}
HRESULT create_textlayout(const struct textlayout_desc *, IDWriteTextLayout **)
Definition: layout.c:5346
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
#define debugstr_wn
Definition: kernel32.h:33
char string[160]
Definition: util.h:11
IDWriteTextFormat * format

◆ dwritefactory_CreateGlyphRunAnalysis()

static HRESULT WINAPI dwritefactory_CreateGlyphRunAnalysis ( IDWriteFactory7 *  iface,
DWRITE_GLYPH_RUN const *  run,
FLOAT  ppdip,
DWRITE_MATRIX const *  transform,
DWRITE_RENDERING_MODE  rendering_mode,
DWRITE_MEASURING_MODE  measuring_mode,
FLOAT  originX,
FLOAT  originY,
IDWriteGlyphRunAnalysis **  analysis 
)
static

Definition at line 1299 of file main.c.

1302{
1304 DWRITE_MATRIX m, scale = { 0 };
1305
1306 TRACE("%p, %p, %.8e, %p, %d, %d, %.8e, %.8e, %p.\n", iface, run, ppdip, transform, rendering_mode,
1307 measuring_mode, originX, originY, analysis);
1308
1309 if (ppdip <= 0.0f) {
1310 *analysis = NULL;
1311 return E_INVALIDARG;
1312 }
1313
1315 scale.m11 = ppdip;
1316 scale.m22 = ppdip;
1318 desc.run = run;
1319 desc.transform = &m;
1320 desc.rendering_mode = (DWRITE_RENDERING_MODE1)rendering_mode;
1321 desc.measuring_mode = measuring_mode;
1322 desc.gridfit_mode = DWRITE_GRID_FIT_MODE_DEFAULT;
1323 desc.aa_mode = DWRITE_TEXT_ANTIALIAS_MODE_CLEARTYPE;
1324 desc.origin.x = originX;
1325 desc.origin.y = originY;
1326 return create_glyphrunanalysis(&desc, analysis);
1327}
HRESULT create_glyphrunanalysis(const struct glyphrunanalysis_desc *, IDWriteGlyphRunAnalysis **)
Definition: font.c:6410
static void dwrite_matrix_multiply(DWRITE_MATRIX *a, const DWRITE_MATRIX *b)
static const DWRITE_MATRIX identity
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:9032
const GLfloat * m
Definition: glext.h:10848
DWRITE_RENDERING_MODE1 rendering_mode
const DWRITE_GLYPH_RUN * run
DWRITE_MEASURING_MODE measuring_mode

◆ dwritefactory_CreateMonitorRenderingParams()

static HRESULT WINAPI dwritefactory_CreateMonitorRenderingParams ( IDWriteFactory7 *  iface,
HMONITOR  monitor,
IDWriteRenderingParams **  params 
)
static

Definition at line 1098 of file main.c.

1100{
1101 IDWriteRenderingParams3 *params3;
1102 static int fixme_once = 0;
1103 HRESULT hr;
1104
1105 TRACE("%p, %p, %p.\n", iface, monitor, params);
1106
1107 if (!fixme_once++)
1108 FIXME("(%p): monitor setting ignored\n", monitor);
1109
1110 /* FIXME: use actual per-monitor gamma factor */
1111 hr = IDWriteFactory7_CreateCustomRenderingParams(iface, 2.0f, 0.0f, 1.0f, 0.0f, DWRITE_PIXEL_GEOMETRY_FLAT,
1113 *params = (IDWriteRenderingParams*)params3;
1114 return hr;
1115}
@ DWRITE_PIXEL_GEOMETRY_FLAT
Definition: dwrite.idl:154
@ DWRITE_RENDERING_MODE1_DEFAULT
Definition: dwrite_3.idl:78

◆ dwritefactory_CreateNumberSubstitution()

static HRESULT WINAPI dwritefactory_CreateNumberSubstitution ( IDWriteFactory7 *  iface,
DWRITE_NUMBER_SUBSTITUTION_METHOD  method,
WCHAR const *  locale,
BOOL  ignore_user_override,
IDWriteNumberSubstitution **  substitution 
)
static

Definition at line 1290 of file main.c.

1293{
1294 TRACE("%p, %d, %s, %d, %p.\n", iface, method, debugstr_w(locale), ignore_user_override, substitution);
1295
1296 return create_numbersubstitution(method, locale, ignore_user_override, substitution);
1297}
HRESULT create_numbersubstitution(DWRITE_NUMBER_SUBSTITUTION_METHOD method, const WCHAR *locale, BOOL ignore_user_override, IDWriteNumberSubstitution **ret)
Definition: analyzer.c:2305
method
Definition: dragdrop.c:54

◆ dwritefactory_CreateRenderingParams()

static HRESULT WINAPI dwritefactory_CreateRenderingParams ( IDWriteFactory7 *  iface,
IDWriteRenderingParams **  params 
)
static

Definition at line 1086 of file main.c.

1087{
1088 HMONITOR monitor;
1089 POINT pt;
1090
1091 TRACE("%p, %p.\n", iface, params);
1092
1093 pt.x = pt.y = 0;
1094 monitor = MonitorFromPoint(pt, MONITOR_DEFAULTTOPRIMARY);
1095 return IDWriteFactory7_CreateMonitorRenderingParams(iface, monitor, params);
1096}
#define pt(x, y)
Definition: drawing.c:79
HMONITOR WINAPI MonitorFromPoint(POINT, DWORD)

◆ dwritefactory_CreateTextAnalyzer()

static HRESULT WINAPI dwritefactory_CreateTextAnalyzer ( IDWriteFactory7 *  iface,
IDWriteTextAnalyzer **  analyzer 
)
static

Definition at line 1281 of file main.c.

1282{
1283 TRACE("%p, %p.\n", iface, analyzer);
1284
1285 *analyzer = (IDWriteTextAnalyzer *)get_text_analyzer();
1286
1287 return S_OK;
1288}
IDWriteTextAnalyzer2 * get_text_analyzer(void)
Definition: analyzer.c:2241

◆ dwritefactory_CreateTextFormat()

static HRESULT WINAPI dwritefactory_CreateTextFormat ( IDWriteFactory7 *  iface,
WCHAR const *  family_name,
IDWriteFontCollection *  collection,
DWRITE_FONT_WEIGHT  weight,
DWRITE_FONT_STYLE  style,
DWRITE_FONT_STRETCH  stretch,
FLOAT  size,
WCHAR const *  locale,
IDWriteTextFormat **  format 
)
static

Definition at line 1179 of file main.c.

1182{
1184 HRESULT hr;
1185
1186 TRACE("%p, %s, %p, %d, %d, %d, %.8e, %s, %p.\n", iface, debugstr_w(family_name), collection, weight, style, stretch,
1188
1189 *format = NULL;
1190
1191 if (collection)
1192 {
1193 IDWriteFontCollection_AddRef(collection);
1194 }
1196 &IID_IDWriteFontCollection, (void **)&collection)))
1197 {
1198 return hr;
1199 }
1200
1202 &IID_IDWriteTextFormat, (void **)format);
1203 IDWriteFontCollection_Release(collection);
1204 return hr;
1205}
weight
Definition: sortkey.c:157
Definition: style.c:91

◆ dwritefactory_CreateTextLayout()

static HRESULT WINAPI dwritefactory_CreateTextLayout ( IDWriteFactory7 *  iface,
WCHAR const *  string,
UINT32  length,
IDWriteTextFormat *  format,
FLOAT  max_width,
FLOAT  max_height,
IDWriteTextLayout **  layout 
)
static

Definition at line 1231 of file main.c.

1233{
1234 struct textlayout_desc desc;
1235
1236 TRACE("%p, %s:%u, %p, %.8e, %.8e, %p.\n", iface, debugstr_wn(string, length), length, format, max_width, max_height, layout);
1237
1238 desc.factory = iface;
1239 desc.string = string;
1240 desc.length = length;
1241 desc.format = format;
1242 desc.max_width = max_width;
1243 desc.max_height = max_height;
1244 desc.is_gdi_compatible = FALSE;
1245 desc.ppdip = 1.0f;
1246 desc.transform = NULL;
1247 desc.use_gdi_natural = FALSE;
1248 return create_textlayout(&desc, layout);
1249}

◆ dwritefactory_CreateTypography()

static HRESULT WINAPI dwritefactory_CreateTypography ( IDWriteFactory7 *  iface,
IDWriteTypography **  typography 
)
static

Definition at line 1207 of file main.c.

1208{
1209 TRACE("%p, %p.\n", iface, typography);
1210
1211 return create_typography(typography);
1212}
HRESULT create_typography(IDWriteTypography **)
Definition: layout.c:5461

◆ dwritefactory_GetGdiInterop()

static HRESULT WINAPI dwritefactory_GetGdiInterop ( IDWriteFactory7 *  iface,
IDWriteGdiInterop **  gdi_interop 
)
static

Definition at line 1214 of file main.c.

1215{
1217 HRESULT hr = S_OK;
1218
1219 TRACE("%p, %p.\n", iface, gdi_interop);
1220
1221 if (factory->gdiinterop)
1222 IDWriteGdiInterop1_AddRef(factory->gdiinterop);
1223 else
1224 hr = create_gdiinterop(iface, &factory->gdiinterop);
1225
1226 *gdi_interop = (IDWriteGdiInterop *)factory->gdiinterop;
1227
1228 return hr;
1229}
HRESULT create_gdiinterop(IDWriteFactory7 *factory, IDWriteGdiInterop1 **interop)
Definition: gdiinterop.c:1110

◆ dwritefactory_GetSystemFontCollection()

static HRESULT WINAPI dwritefactory_GetSystemFontCollection ( IDWriteFactory7 *  iface,
IDWriteFontCollection **  collection,
BOOL  check_for_updates 
)
static

Definition at line 787 of file main.c.

789{
791
792 TRACE("%p, %p, %d.\n", iface, collection, check_for_updates);
793
794 if (check_for_updates)
795 FIXME("checking for system font updates not implemented\n");
796
798 &IID_IDWriteFontCollection, (void **)collection);
799}

◆ dwritefactory_QueryInterface()

static HRESULT WINAPI dwritefactory_QueryInterface ( IDWriteFactory7 *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 740 of file main.c.

741{
742 TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
743
744 if (IsEqualIID(riid, &IID_IDWriteFactory7) ||
745 IsEqualIID(riid, &IID_IDWriteFactory6) ||
746 IsEqualIID(riid, &IID_IDWriteFactory5) ||
747 IsEqualIID(riid, &IID_IDWriteFactory4) ||
748 IsEqualIID(riid, &IID_IDWriteFactory3) ||
749 IsEqualIID(riid, &IID_IDWriteFactory2) ||
750 IsEqualIID(riid, &IID_IDWriteFactory1) ||
751 IsEqualIID(riid, &IID_IDWriteFactory) ||
753 {
754 *obj = iface;
755 IDWriteFactory7_AddRef(iface);
756 return S_OK;
757 }
758
759 *obj = NULL;
760
761 return E_NOINTERFACE;
762}
const GUID IID_IUnknown
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ dwritefactory_RegisterFontCollectionLoader()

static HRESULT WINAPI dwritefactory_RegisterFontCollectionLoader ( IDWriteFactory7 *  iface,
IDWriteFontCollectionLoader *  loader 
)
static

Definition at line 830 of file main.c.

832{
834 struct collectionloader *entry;
835
836 TRACE("%p, %p.\n", iface, loader);
837
838 if (!loader)
839 return E_INVALIDARG;
840
843
844 if (!(entry = malloc(sizeof(*entry))))
845 return E_OUTOFMEMORY;
846
847 entry->loader = loader;
848 IDWriteFontCollectionLoader_AddRef(loader);
849 list_add_tail(&factory->collection_loaders, &entry->entry);
850
851 return S_OK;
852}
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
Definition: list.h:83
uint32_t entry
Definition: isohybrid.c:63
#define DWRITE_E_ALREADYREGISTERED
Definition: winerror.h:7340

◆ dwritefactory_RegisterFontFileLoader()

static HRESULT WINAPI dwritefactory_RegisterFontFileLoader ( IDWriteFactory7 *  iface,
IDWriteFontFileLoader *  loader 
)
static

Definition at line 1137 of file main.c.

1138{
1140 struct fileloader *entry;
1141
1142 TRACE("%p, %p.\n", iface, loader);
1143
1144 if (!loader)
1145 return E_INVALIDARG;
1146
1149
1150 if (!(entry = malloc(sizeof(*entry))))
1151 return E_OUTOFMEMORY;
1152
1153 entry->loader = loader;
1154 list_init(&entry->fontfaces);
1155 IDWriteFontFileLoader_AddRef(loader);
1156 list_add_tail(&factory->file_loaders, &entry->entry);
1157
1158 return S_OK;
1159}
static void list_init(struct list_entry *head)
Definition: list.h:51
IDWriteFontFileLoader * loader
Definition: main.c:592

◆ dwritefactory_Release()

static ULONG WINAPI dwritefactory_Release ( IDWriteFactory7 *  iface)
static

Definition at line 774 of file main.c.

775{
778
779 TRACE("%p, refcount %lu.\n", iface, refcount);
780
781 if (!refcount)
783
784 return refcount;
785}
#define InterlockedDecrement
Definition: armddk.h:52
static void release_dwritefactory(struct dwritefactory *factory)
Definition: main.c:638

◆ dwritefactory_UnregisterFontCollectionLoader()

static HRESULT WINAPI dwritefactory_UnregisterFontCollectionLoader ( IDWriteFactory7 *  iface,
IDWriteFontCollectionLoader *  loader 
)
static

Definition at line 854 of file main.c.

856{
858 struct collectionloader *found;
859
860 TRACE("%p, %p.\n", iface, loader);
861
862 if (!loader)
863 return E_INVALIDARG;
864
866 if (!found)
867 return E_INVALIDARG;
868
869 IDWriteFontCollectionLoader_Release(found->loader);
870 list_remove(&found->entry);
871 free(found);
872
873 return S_OK;
874}
static void list_remove(struct list_entry *entry)
Definition: list.h:90
struct list entry
Definition: main.c:584

◆ dwritefactory_UnregisterFontFileLoader()

static HRESULT WINAPI dwritefactory_UnregisterFontFileLoader ( IDWriteFactory7 *  iface,
IDWriteFontFileLoader *  loader 
)
static

Definition at line 1161 of file main.c.

1162{
1164 struct fileloader *found;
1165
1166 TRACE("%p, %p.\n", iface, loader);
1167
1168 if (!loader)
1169 return E_INVALIDARG;
1170
1172 if (!found)
1173 return E_INVALIDARG;
1174
1175 release_fileloader(found);
1176 return S_OK;
1177}
static void release_fileloader(struct fileloader *fileloader)
Definition: main.c:630

◆ factory_cache_fontface()

struct fontfacecached * factory_cache_fontface ( IDWriteFactory7 *  iface,
struct list *  fontfaces,
IDWriteFontFace5 *  fontface 
)

Definition at line 1002 of file main.c.

1004{
1006 struct fontfacecached *cached;
1007
1008 /* new cache entry */
1009 if (!(cached = malloc(sizeof(*cached))))
1010 return NULL;
1011
1012 cached->fontface = fontface;
1014 list_add_tail(fontfaces, &cached->entry);
1016
1017 return cached;
1018}
struct list entry
IDWriteFontFace5 * fontface
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by create_fontface().

◆ factory_create_glyphrun_analysis()

static HRESULT factory_create_glyphrun_analysis ( const DWRITE_GLYPH_RUN *  run,
const DWRITE_MATRIX *  transform,
DWRITE_RENDERING_MODE1  rendering_mode,
DWRITE_MEASURING_MODE  measuring_mode,
DWRITE_GRID_FIT_MODE  gridfit_mode,
DWRITE_TEXT_ANTIALIAS_MODE  aa_mode,
FLOAT  originX,
FLOAT  originY,
IDWriteGlyphRunAnalysis **  analysis 
)
static

Definition at line 1445 of file main.c.

1448{
1450
1451 desc.run = run;
1452 desc.transform = transform;
1453 desc.rendering_mode = rendering_mode;
1454 desc.measuring_mode = measuring_mode;
1455 desc.gridfit_mode = gridfit_mode;
1456 desc.aa_mode = aa_mode;
1457 desc.origin.x = originX;
1458 desc.origin.y = originY;
1459 return create_glyphrunanalysis(&desc, analysis);
1460}
DWRITE_GRID_FIT_MODE gridfit_mode
DWRITE_TEXT_ANTIALIAS_MODE aa_mode

Referenced by dwritefactory2_CreateGlyphRunAnalysis(), and dwritefactory3_CreateGlyphRunAnalysis().

◆ factory_detach_fontcollection()

void factory_detach_fontcollection ( IDWriteFactory7 *  iface,
IDWriteFontCollection3 *  collection 
)

Definition at line 2092 of file main.c.

2093{
2095 unsigned int i;
2096
2097 for (i = 0; i < ARRAY_SIZE(factory->system_collections); ++i)
2098 InterlockedCompareExchangePointer((void **)&factory->system_collections[i], NULL, collection);
2099 InterlockedCompareExchangePointer((void **)&factory->eudc_collection, NULL, collection);
2100 IDWriteFactory7_Release(iface);
2101}
#define ARRAY_SIZE(A)
Definition: main.h:20

Referenced by dwritefontcollection_Release().

◆ factory_detach_gdiinterop()

void factory_detach_gdiinterop ( IDWriteFactory7 *  iface,
IDWriteGdiInterop1 *  interop 
)

Definition at line 2103 of file main.c.

2104{
2106 factory->gdiinterop = NULL;
2107 IDWriteFactory7_Release(iface);
2108}

Referenced by gdiinterop_Release().

◆ factory_get_cached_fontface()

HRESULT factory_get_cached_fontface ( IDWriteFactory7 *  iface,
IDWriteFontFile *const *  font_files,
UINT32  index,
DWRITE_FONT_SIMULATIONS  simulations,
struct list **  cached_list,
REFIID  riid,
void **  obj 
)

Definition at line 926 of file main.c.

928{
930 struct fontfacecached *cached;
932 struct list *fontfaces;
933 UINT32 key_size;
934 const void *key;
935 HRESULT hr;
936
937 *obj = NULL;
938 *cached_list = NULL;
939
940 hr = IDWriteFontFile_GetReferenceKey(*font_files, &key, &key_size);
941 if (FAILED(hr))
942 return hr;
943
944 hr = IDWriteFontFile_GetLoader(*font_files, &loader);
945 if (FAILED(hr))
946 return hr;
947
948 if (loader == factory->localfontfileloader) {
949 fontfaces = &factory->localfontfaces;
950 IDWriteFontFileLoader_Release(loader);
951 }
952 else {
954 IDWriteFontFileLoader_Release(loader);
955 if (!fileloader)
956 return E_INVALIDARG;
958 }
959
960 *cached_list = fontfaces;
961
963
964 /* search through cache list */
966 UINT32 cached_key_size, count = 1, cached_face_index;
967 DWRITE_FONT_SIMULATIONS cached_simulations;
968 const void *cached_key;
970
971 cached_face_index = IDWriteFontFace5_GetIndex(cached->fontface);
972 cached_simulations = IDWriteFontFace5_GetSimulations(cached->fontface);
973
974 /* skip earlier */
975 if (cached_face_index != index || cached_simulations != simulations)
976 continue;
977
978 hr = IDWriteFontFace5_GetFiles(cached->fontface, &count, &file);
979 if (FAILED(hr))
980 break;
981
982 hr = IDWriteFontFile_GetReferenceKey(file, &cached_key, &cached_key_size);
983 IDWriteFontFile_Release(file);
984 if (FAILED(hr))
985 break;
986
987 if (cached_key_size == key_size && !memcmp(cached_key, key, key_size))
988 {
989 if (FAILED(hr = IDWriteFontFace5_QueryInterface(cached->fontface, riid, obj)))
990 WARN("Failed to get %s from fontface, hr %#lx.\n", debugstr_guid(riid), hr);
991
992 TRACE("returning cached fontface %p\n", cached->fontface);
993 break;
994 }
995 }
996
998
999 return *obj ? S_OK : S_FALSE;
1000}
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
Definition: string.c:2807
DWRITE_FONT_SIMULATIONS
Definition: dwrite.idl:145
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:236
struct list fontfaces
Definition: main.c:591

Referenced by dwritefactory_CreateFontFace(), and get_fontface_from_font().

◆ factory_get_collection_loader()

static struct collectionloader * factory_get_collection_loader ( struct dwritefactory *  factory,
IDWriteFontCollectionLoader *  loader 
)
static

Definition at line 694 of file main.c.

696{
697 struct collectionloader *entry, *found = NULL;
698
699 LIST_FOR_EACH_ENTRY(entry, &factory->collection_loaders, struct collectionloader, entry) {
700 if (entry->loader == loader) {
701 found = entry;
702 break;
703 }
704 }
705
706 return found;
707}

Referenced by dwritefactory_CreateCustomFontCollection(), dwritefactory_RegisterFontCollectionLoader(), and dwritefactory_UnregisterFontCollectionLoader().

◆ factory_get_file_loader()

static struct fileloader * factory_get_file_loader ( struct dwritefactory *  factory,
IDWriteFontFileLoader *  loader 
)
static

Definition at line 680 of file main.c.

681{
682 struct fileloader *entry, *found = NULL;
683
684 LIST_FOR_EACH_ENTRY(entry, &factory->file_loaders, struct fileloader, entry) {
685 if (entry->loader == loader) {
686 found = entry;
687 break;
688 }
689 }
690
691 return found;
692}

Referenced by dwritefactory_CreateCustomFontFileReference(), dwritefactory_RegisterFontFileLoader(), dwritefactory_UnregisterFontFileLoader(), and factory_get_cached_fontface().

◆ factory_get_system_collection()

static HRESULT factory_get_system_collection ( struct dwritefactory *  factory,
DWRITE_FONT_FAMILY_MODEL  family_model,
REFIID  riid,
void **  out 
)
static

Definition at line 709 of file main.c.

711{
713 HRESULT hr;
714
715 *out = NULL;
716
717 if (family_model != DWRITE_FONT_FAMILY_MODEL_TYPOGRAPHIC &&
719 {
720 return E_INVALIDARG;
721 }
722
723 if (factory->system_collections[family_model])
724 return IDWriteFontCollection_QueryInterface(factory->system_collections[family_model], riid, out);
725
726 if (FAILED(hr = get_system_fontcollection(&factory->IDWriteFactory7_iface, family_model, &collection)))
727 {
728 WARN("Failed to create system font collection, hr %#lx.\n", hr);
729 return hr;
730 }
731
732 if (InterlockedCompareExchangePointer((void **)&factory->system_collections[family_model], collection, NULL))
733 IDWriteFontCollection_Release(collection);
734
735 hr = IDWriteFontCollection_QueryInterface(factory->system_collections[family_model], riid, out);
736 IDWriteFontCollection_Release(factory->system_collections[family_model]);
737 return hr;
738}
HRESULT get_system_fontcollection(IDWriteFactory7 *factory, DWRITE_FONT_FAMILY_MODEL family_model, IDWriteFontCollection **collection)
Definition: font.c:5109
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by dwritefactory3_GetSystemFontCollection(), dwritefactory6_CreateTextFormat(), dwritefactory6_GetSystemFontCollection(), dwritefactory7_GetSystemFontCollection(), dwritefactory_CreateTextFormat(), and dwritefactory_GetSystemFontCollection().

◆ factory_lock()

void factory_lock ( IDWriteFactory7 *  iface)

Definition at line 914 of file main.c.

915{
918}

Referenced by dwritefontface_Release().

◆ factory_unlock()

void factory_unlock ( IDWriteFactory7 *  iface)

Definition at line 920 of file main.c.

921{
924}

Referenced by dwritefontface_Release().

◆ get_localizedstrings_count()

unsigned int get_localizedstrings_count ( IDWriteLocalizedStrings *  iface)

Definition at line 563 of file main.c.

564{
566 return strings->count;
567}

Referenced by localizedstrings_GetCount(), and opentype_get_font_strings_from_id().

◆ impl_from_IDWriteFactory7()

◆ impl_from_IDWriteLocalizedStrings()

◆ impl_from_IDWriteRenderingParams3()

◆ init_dwritefactory()

static void init_dwritefactory ( struct dwritefactory *  factory,
DWRITE_FACTORY_TYPE  type 
)
static

Definition at line 2077 of file main.c.

2078{
2079 factory->IDWriteFactory7_iface.lpVtbl = type == DWRITE_FACTORY_TYPE_SHARED ?
2081 factory->refcount = 1;
2082 factory->localfontfileloader = get_local_fontfile_loader();
2083
2084 list_init(&factory->collection_loaders);
2085 list_init(&factory->file_loaders);
2086 list_init(&factory->localfontfaces);
2087
2089 factory->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": dwritefactory.lock");
2090}
static const IDWriteFactory7Vtbl dwritefactoryvtbl
Definition: main.c:1941
static const IDWriteFactory7Vtbl shareddwritefactoryvtbl
Definition: main.c:2016
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync.c:107
IDWriteFontFileLoader * get_local_fontfile_loader(void)
Definition: font.c:6000
#define DWORD_PTR
Definition: treelist.c:76
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
Definition: winnt_old.h:1156

Referenced by DWriteCreateFactory().

◆ localizedstrings_AddRef()

static ULONG WINAPI localizedstrings_AddRef ( IDWriteLocalizedStrings *  iface)
static

Definition at line 296 of file main.c.

297{
300
301 TRACE("%p, refcount %ld.\n", iface, refcount);
302
303 return refcount;
304}

◆ localizedstrings_contains()

BOOL localizedstrings_contains ( IDWriteLocalizedStrings *  iface,
const WCHAR *  str 
)

Definition at line 569 of file main.c.

570{
572 unsigned int i;
573
574 for (i = 0; i < strings->count; ++i)
575 {
576 if (!wcsicmp(strings->data[i].string, str)) return TRUE;
577 }
578
579 return FALSE;
580}
const WCHAR * str

Referenced by fontset_entry_is_matching().

◆ localizedstrings_FindLocaleName()

static HRESULT WINAPI localizedstrings_FindLocaleName ( IDWriteLocalizedStrings *  iface,
WCHAR const *  locale_name,
UINT32 *  index,
BOOL *  exists 
)
static

Definition at line 336 of file main.c.

338{
340 size_t i;
341
342 TRACE("%p, %s, %p, %p.\n", iface, debugstr_w(locale_name), index, exists);
343
344 *exists = FALSE;
345 *index = ~0;
346
347 for (i = 0; i < strings->count; ++i)
348 {
349 if (!wcsicmp(strings->data[i].locale, locale_name))
350 {
351 *exists = TRUE;
352 *index = i;
353 break;
354 }
355 }
356
357 return S_OK;
358}

◆ localizedstrings_GetCount()

static UINT32 WINAPI localizedstrings_GetCount ( IDWriteLocalizedStrings *  iface)
static

Definition at line 329 of file main.c.

330{
331 TRACE("%p.\n", iface);
332
333 return get_localizedstrings_count(iface);
334}
unsigned int get_localizedstrings_count(IDWriteLocalizedStrings *iface)
Definition: main.c:563

◆ localizedstrings_GetLocaleName()

static HRESULT WINAPI localizedstrings_GetLocaleName ( IDWriteLocalizedStrings *  iface,
UINT32  index,
WCHAR *  buffer,
UINT32  size 
)
static

Definition at line 376 of file main.c.

377{
379
380 TRACE("%p, %u, %p, %u.\n", iface, index, buffer, size);
381
382 if (index >= strings->count)
383 {
384 if (buffer) *buffer = 0;
385 return E_FAIL;
386 }
387
388 if (size < wcslen(strings->data[index].locale) + 1)
389 {
390 if (buffer) *buffer = 0;
392 }
393
394 wcscpy(buffer, strings->data[index].locale);
395 return S_OK;
396}
GLuint buffer
Definition: glext.h:5915
wcscpy
#define E_NOT_SUFFICIENT_BUFFER
Definition: winerror.h:3437

◆ localizedstrings_GetLocaleNameLength()

static HRESULT WINAPI localizedstrings_GetLocaleNameLength ( IDWriteLocalizedStrings *  iface,
UINT32  index,
UINT32 *  length 
)
static

Definition at line 360 of file main.c.

361{
363
364 TRACE("%p, %u, %p.\n", iface, index, length);
365
366 if (index >= strings->count)
367 {
368 *length = (UINT32)-1;
369 return E_FAIL;
370 }
371
372 *length = wcslen(strings->data[index].locale);
373 return S_OK;
374}

◆ localizedstrings_GetString()

static HRESULT WINAPI localizedstrings_GetString ( IDWriteLocalizedStrings *  iface,
UINT32  index,
WCHAR *  buffer,
UINT32  size 
)
static

Definition at line 414 of file main.c.

415{
417
418 TRACE("%p, %u, %p, %u.\n", iface, index, buffer, size);
419
420 if (index >= strings->count)
421 {
422 if (buffer) *buffer = 0;
423 return E_FAIL;
424 }
425
426 if (size < wcslen(strings->data[index].string) + 1)
427 {
428 if (buffer) *buffer = 0;
430 }
431
432 wcscpy(buffer, strings->data[index].string);
433 return S_OK;
434}

◆ localizedstrings_GetStringLength()

static HRESULT WINAPI localizedstrings_GetStringLength ( IDWriteLocalizedStrings *  iface,
UINT32  index,
UINT32 *  length 
)
static

Definition at line 398 of file main.c.

399{
401
402 TRACE("%p, %u, %p.\n", iface, index, length);
403
404 if (index >= strings->count)
405 {
406 *length = ~0u;
407 return E_FAIL;
408 }
409
410 *length = wcslen(strings->data[index].string);
411 return S_OK;
412}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240

◆ localizedstrings_QueryInterface()

static HRESULT WINAPI localizedstrings_QueryInterface ( IDWriteLocalizedStrings *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 280 of file main.c.

281{
282 TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
283
284 if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDWriteLocalizedStrings))
285 {
286 *obj = iface;
287 IDWriteLocalizedStrings_AddRef(iface);
288 return S_OK;
289 }
290
291 *obj = NULL;
292
293 return E_NOINTERFACE;
294}

◆ localizedstrings_Release()

static ULONG WINAPI localizedstrings_Release ( IDWriteLocalizedStrings *  iface)
static

Definition at line 306 of file main.c.

307{
310 size_t i;
311
312 TRACE("%p, refcount %ld.\n", iface, refcount);
313
314 if (!refcount)
315 {
316 for (i = 0; i < strings->count; ++i)
317 {
318 free(strings->data[i].locale);
319 free(strings->data[i].string);
320 }
321
322 free(strings->data);
323 free(strings);
324 }
325
326 return refcount;
327}

◆ localizedstrings_sorting_compare()

static int __cdecl localizedstrings_sorting_compare ( const void *  left,
const void *  right 
)
static

Definition at line 549 of file main.c.

550{
551 const struct localizedpair *_l = left, *_r = right;
552
553 return wcscmp(_l->locale, _r->locale);
554};
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:1977
WCHAR * locale
Definition: main.c:261

Referenced by sort_localizedstrings().

◆ release_dwritefactory()

static void release_dwritefactory ( struct dwritefactory *  factory)
static

Definition at line 638 of file main.c.

639{
640 struct fileloader *fileloader, *fileloader2;
641 struct collectionloader *loader, *loader2;
642 unsigned int i;
643
645 release_fontface_cache(&factory->localfontfaces);
647
648 LIST_FOR_EACH_ENTRY_SAFE(loader, loader2, &factory->collection_loaders, struct collectionloader, entry) {
649 list_remove(&loader->entry);
650 IDWriteFontCollectionLoader_Release(loader->loader);
651 free(loader);
652 }
653
654 LIST_FOR_EACH_ENTRY_SAFE(fileloader, fileloader2, &factory->file_loaders, struct fileloader, entry)
656
657 for (i = 0; i < ARRAY_SIZE(factory->system_collections); ++i)
658 {
659 if (factory->system_collections[i])
660 IDWriteFontCollection_Release(factory->system_collections[i]);
661 }
662 if (factory->eudc_collection)
663 IDWriteFontCollection1_Release(factory->eudc_collection);
664 if (factory->fallback)
666
667 factory->cs.DebugInfo->Spare[0] = 0;
669 free(factory);
670}
void release_system_fontfallback(IDWriteFontFallback1 *iface)
Definition: analyzer.c:2575
static void release_fontface_cache(struct list *fontfaces)
Definition: main.c:619
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:242
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)

Referenced by dwritefactory_Release(), and release_shared_factory().

◆ release_fileloader()

static void release_fileloader ( struct fileloader *  fileloader)
static

Definition at line 630 of file main.c.

631{
634 IDWriteFontFileLoader_Release(fileloader->loader);
636}
struct list entry
Definition: main.c:590

Referenced by dwritefactory_UnregisterFontFileLoader(), and release_dwritefactory().

◆ release_fontface_cache()

static void release_fontface_cache ( struct list *  fontfaces)
static

Definition at line 619 of file main.c.

620{
621 struct fontfacecached *fontface, *fontface2;
622
623 LIST_FOR_EACH_ENTRY_SAFE(fontface, fontface2, fontfaces, struct fontfacecached, entry) {
624 list_remove(&fontface->entry);
626 free(fontface);
627 }
628}
void fontface_detach_from_cache(IDWriteFontFace5 *fontface)
Definition: font.c:764

Referenced by release_dwritefactory(), and release_fileloader().

◆ release_shared_factory()

static void release_shared_factory ( IDWriteFactory7 *  factory)
static

Definition at line 672 of file main.c.

673{
674 struct dwritefactory *factory;
675 if (!iface) return;
678}

Referenced by DllMain(), and DWriteCreateFactory().

◆ rendering_mode_from_mode1()

static DWRITE_RENDERING_MODE rendering_mode_from_mode1 ( DWRITE_RENDERING_MODE1  mode)
static

Definition at line 160 of file main.c.

161{
162 static const DWRITE_RENDERING_MODE rendering_modes[] = {
163 DWRITE_RENDERING_MODE_DEFAULT, /* DWRITE_RENDERING_MODE1_DEFAULT */
164 DWRITE_RENDERING_MODE_ALIASED, /* DWRITE_RENDERING_MODE1_ALIASED */
165 DWRITE_RENDERING_MODE_GDI_CLASSIC, /* DWRITE_RENDERING_MODE1_GDI_CLASSIC */
166 DWRITE_RENDERING_MODE_GDI_NATURAL, /* DWRITE_RENDERING_MODE1_GDI_NATURAL */
167 DWRITE_RENDERING_MODE_NATURAL, /* DWRITE_RENDERING_MODE1_NATURAL */
168 DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC, /* DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC */
169 DWRITE_RENDERING_MODE_OUTLINE, /* DWRITE_RENDERING_MODE1_OUTLINE */
170 DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC, /* DWRITE_RENDERING_MODE1_NATURAL_SYMMETRIC_DOWNSAMPLED */
171 };
172
173 return rendering_modes[mode];
174}
DWRITE_RENDERING_MODE
Definition: dwrite.idl:160
@ DWRITE_RENDERING_MODE_GDI_NATURAL
Definition: dwrite.idl:164
@ DWRITE_RENDERING_MODE_GDI_CLASSIC
Definition: dwrite.idl:163
@ DWRITE_RENDERING_MODE_NATURAL
Definition: dwrite.idl:165
@ DWRITE_RENDERING_MODE_DEFAULT
Definition: dwrite.idl:161
@ DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC
Definition: dwrite.idl:166
@ DWRITE_RENDERING_MODE_ALIASED
Definition: dwrite.idl:162

Referenced by renderingparams_GetRenderingMode().

◆ renderingparams1_GetGrayscaleEnhancedContrast()

static float WINAPI renderingparams1_GetGrayscaleEnhancedContrast ( IDWriteRenderingParams3 *  iface)
static

Definition at line 185 of file main.c.

186{
188
189 TRACE("%p.\n", iface);
190
191 return params->grayscalecontrast;
192}
static struct renderingparams * impl_from_IDWriteRenderingParams3(IDWriteRenderingParams3 *iface)
Definition: main.c:76

◆ renderingparams2_GetGridFitMode()

static DWRITE_GRID_FIT_MODE WINAPI renderingparams2_GetGridFitMode ( IDWriteRenderingParams3 *  iface)
static

Definition at line 194 of file main.c.

195{
197
198 TRACE("%p.\n", iface);
199
200 return params->gridfit;
201}

◆ renderingparams3_GetRenderingMode1()

static DWRITE_RENDERING_MODE1 WINAPI renderingparams3_GetRenderingMode1 ( IDWriteRenderingParams3 *  iface)
static

Definition at line 203 of file main.c.

204{
206
207 TRACE("%p.\n", iface);
208
209 return params->mode;
210}

◆ renderingparams_AddRef()

static ULONG WINAPI renderingparams_AddRef ( IDWriteRenderingParams3 *  iface)
static

Definition at line 101 of file main.c.

102{
105
106 TRACE("%p, refcount %ld.\n", iface, refcount);
107
108 return refcount;
109}
LONG refcount
Definition: main.c:65

◆ renderingparams_GetClearTypeLevel()

static float WINAPI renderingparams_GetClearTypeLevel ( IDWriteRenderingParams3 *  iface)
static

Definition at line 142 of file main.c.

143{
145
146 TRACE("%p.\n", iface);
147
148 return params->cleartype_level;
149}

◆ renderingparams_GetEnhancedContrast()

static float WINAPI renderingparams_GetEnhancedContrast ( IDWriteRenderingParams3 *  iface)
static

Definition at line 133 of file main.c.

134{
136
137 TRACE("%p.\n", iface);
138
139 return params->contrast;
140}

◆ renderingparams_GetGamma()

static float WINAPI renderingparams_GetGamma ( IDWriteRenderingParams3 *  iface)
static

Definition at line 124 of file main.c.

125{
127
128 TRACE("%p.\n", iface);
129
130 return params->gamma;
131}

◆ renderingparams_GetPixelGeometry()

static DWRITE_PIXEL_GEOMETRY WINAPI renderingparams_GetPixelGeometry ( IDWriteRenderingParams3 *  iface)
static

Definition at line 151 of file main.c.

152{
154
155 TRACE("%p.\n", iface);
156
157 return params->geometry;
158}

◆ renderingparams_GetRenderingMode()

static DWRITE_RENDERING_MODE WINAPI renderingparams_GetRenderingMode ( IDWriteRenderingParams3 *  iface)
static

Definition at line 176 of file main.c.

177{
179
180 TRACE("%p.\n", iface);
181
182 return rendering_mode_from_mode1(params->mode);
183}
static DWRITE_RENDERING_MODE rendering_mode_from_mode1(DWRITE_RENDERING_MODE1 mode)
Definition: main.c:160

◆ renderingparams_QueryInterface()

static HRESULT WINAPI renderingparams_QueryInterface ( IDWriteRenderingParams3 *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 81 of file main.c.

82{
83 TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj);
84
85 if (IsEqualIID(riid, &IID_IDWriteRenderingParams3) ||
86 IsEqualIID(riid, &IID_IDWriteRenderingParams2) ||
87 IsEqualIID(riid, &IID_IDWriteRenderingParams1) ||
88 IsEqualIID(riid, &IID_IDWriteRenderingParams) ||
90 {
91 *obj = iface;
92 IDWriteRenderingParams3_AddRef(iface);
93 return S_OK;
94 }
95
96 *obj = NULL;
97
98 return E_NOINTERFACE;
99}

◆ renderingparams_Release()

static ULONG WINAPI renderingparams_Release ( IDWriteRenderingParams3 *  iface)
static

Definition at line 111 of file main.c.

112{
115
116 TRACE("%p, refcount %ld.\n", iface, refcount);
117
118 if (!refcount)
119 free(params);
120
121 return refcount;
122}

◆ set_en_localizedstring()

void set_en_localizedstring ( IDWriteLocalizedStrings *  iface,
const WCHAR *  string 
)

Definition at line 533 of file main.c.

534{
536 UINT32 i;
537
538 for (i = 0; i < strings->count; i++)
539 {
540 if (!wcsicmp(strings->data[i].locale, L"en-US"))
541 {
542 free(strings->data[i].string);
543 strings->data[i].string = wcsdup(string);
544 break;
545 }
546 }
547}

Referenced by init_font_data().

◆ shareddwritefactory_AddRef()

static ULONG WINAPI shareddwritefactory_AddRef ( IDWriteFactory7 *  iface)
static

Definition at line 2002 of file main.c.

2003{
2004 TRACE("%p.\n", iface);
2005
2006 return 2;
2007}

◆ shareddwritefactory_Release()

static ULONG WINAPI shareddwritefactory_Release ( IDWriteFactory7 *  iface)
static

Definition at line 2009 of file main.c.

2010{
2011 TRACE("%p.\n", iface);
2012
2013 return 1;
2014}

◆ sort_localizedstrings()

void sort_localizedstrings ( IDWriteLocalizedStrings *  iface)

Definition at line 556 of file main.c.

557{
559
560 qsort(strings->data, strings->count, sizeof(*strings->data), localizedstrings_sorting_compare);
561}
static int __cdecl localizedstrings_sorting_compare(const void *left, const void *right)
Definition: main.c:549

Referenced by opentype_get_font_strings_from_id().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( dwrite  )

Variable Documentation

◆ dwrite_module

HMODULE dwrite_module = 0

Definition at line 38 of file main.c.

Referenced by DllMain().

◆ dwritefactoryvtbl

const IDWriteFactory7Vtbl dwritefactoryvtbl
static

Definition at line 1941 of file main.c.

Referenced by init_dwritefactory().

◆ localizedstringsvtbl

const IDWriteLocalizedStringsVtbl localizedstringsvtbl
static
Initial value:
=
{
}
static UINT32 WINAPI localizedstrings_GetCount(IDWriteLocalizedStrings *iface)
Definition: main.c:329
static HRESULT WINAPI localizedstrings_FindLocaleName(IDWriteLocalizedStrings *iface, WCHAR const *locale_name, UINT32 *index, BOOL *exists)
Definition: main.c:336
static HRESULT WINAPI localizedstrings_GetLocaleNameLength(IDWriteLocalizedStrings *iface, UINT32 index, UINT32 *length)
Definition: main.c:360
static ULONG WINAPI localizedstrings_Release(IDWriteLocalizedStrings *iface)
Definition: main.c:306
static HRESULT WINAPI localizedstrings_GetString(IDWriteLocalizedStrings *iface, UINT32 index, WCHAR *buffer, UINT32 size)
Definition: main.c:414
static ULONG WINAPI localizedstrings_AddRef(IDWriteLocalizedStrings *iface)
Definition: main.c:296
static HRESULT WINAPI localizedstrings_GetStringLength(IDWriteLocalizedStrings *iface, UINT32 index, UINT32 *length)
Definition: main.c:398
static HRESULT WINAPI localizedstrings_QueryInterface(IDWriteLocalizedStrings *iface, REFIID riid, void **obj)
Definition: main.c:280
static HRESULT WINAPI localizedstrings_GetLocaleName(IDWriteLocalizedStrings *iface, UINT32 index, WCHAR *buffer, UINT32 size)
Definition: main.c:376

Definition at line 436 of file main.c.

Referenced by clone_localizedstrings(), and create_localizedstrings().

◆ renderingparamsvtbl

const IDWriteRenderingParams3Vtbl renderingparamsvtbl
static
Initial value:
=
{
}
static DWRITE_GRID_FIT_MODE WINAPI renderingparams2_GetGridFitMode(IDWriteRenderingParams3 *iface)
Definition: main.c:194
static ULONG WINAPI renderingparams_AddRef(IDWriteRenderingParams3 *iface)
Definition: main.c:101
static DWRITE_RENDERING_MODE WINAPI renderingparams_GetRenderingMode(IDWriteRenderingParams3 *iface)
Definition: main.c:176
static float WINAPI renderingparams_GetGamma(IDWriteRenderingParams3 *iface)
Definition: main.c:124
static DWRITE_PIXEL_GEOMETRY WINAPI renderingparams_GetPixelGeometry(IDWriteRenderingParams3 *iface)
Definition: main.c:151
static HRESULT WINAPI renderingparams_QueryInterface(IDWriteRenderingParams3 *iface, REFIID riid, void **obj)
Definition: main.c:81
static float WINAPI renderingparams_GetEnhancedContrast(IDWriteRenderingParams3 *iface)
Definition: main.c:133
static float WINAPI renderingparams1_GetGrayscaleEnhancedContrast(IDWriteRenderingParams3 *iface)
Definition: main.c:185
static float WINAPI renderingparams_GetClearTypeLevel(IDWriteRenderingParams3 *iface)
Definition: main.c:142
static DWRITE_RENDERING_MODE1 WINAPI renderingparams3_GetRenderingMode1(IDWriteRenderingParams3 *iface)
Definition: main.c:203
static ULONG WINAPI renderingparams_Release(IDWriteRenderingParams3 *iface)
Definition: main.c:111

Definition at line 212 of file main.c.

Referenced by create_renderingparams().

◆ shared_factory

IDWriteFactory7* shared_factory
static

Definition at line 39 of file main.c.

Referenced by DllMain(), and DWriteCreateFactory().

◆ shareddwritefactoryvtbl

const IDWriteFactory7Vtbl shareddwritefactoryvtbl
static

Definition at line 2016 of file main.c.

Referenced by init_dwritefactory().