1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 /**
7  * Stripped version. Only definitions needed by libass. Contains fixes to
8  * make it compile with C. Also needed on MSVC.
9  */
10 #ifndef __INC_DWRITE__
11 #define __INC_DWRITE__
12 
13 #define DWRITEAPI DECLSPEC_IMPORT
14 
15 #include <unknwn.h>
16 
17 typedef struct IDWriteFactory IDWriteFactory;
18 typedef struct IDWriteFactory3 IDWriteFactory3;
19 typedef struct IDWriteFont IDWriteFont;
20 typedef struct IDWriteFontCollection IDWriteFontCollection;
21 typedef struct IDWriteFontFace IDWriteFontFace;
22 typedef struct IDWriteFontFace3 IDWriteFontFace3;
23 typedef struct IDWriteFontFaceReference IDWriteFontFaceReference;
24 typedef struct IDWriteFontFamily IDWriteFontFamily;
25 typedef struct IDWriteFontList IDWriteFontList;
26 typedef struct IDWriteFontFile IDWriteFontFile;
27 typedef struct IDWriteFontFileLoader IDWriteFontFileLoader;
28 typedef struct IDWriteFontFileStream IDWriteFontFileStream;
29 typedef struct IDWriteFontSet IDWriteFontSet;
30 typedef struct IDWriteInlineObject IDWriteInlineObject;
31 typedef struct IDWriteLocalizedStrings IDWriteLocalizedStrings;
32 typedef struct IDWritePixelSnapping IDWritePixelSnapping;
33 typedef struct IDWriteTextFormat IDWriteTextFormat;
34 typedef struct IDWriteTextLayout IDWriteTextLayout;
35 typedef struct IDWriteTextRenderer IDWriteTextRenderer;
36 typedef struct IDWriteGdiInterop IDWriteGdiInterop;
37 
38 #include <dcommon.h>
39 
40 typedef enum DWRITE_INFORMATIONAL_STRING_ID {
41   DWRITE_INFORMATIONAL_STRING_NONE = 0,
42   DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE,
43   DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS,
44   DWRITE_INFORMATIONAL_STRING_TRADEMARK,
45   DWRITE_INFORMATIONAL_STRING_MANUFACTURER,
46   DWRITE_INFORMATIONAL_STRING_DESIGNER,
47   DWRITE_INFORMATIONAL_STRING_DESIGNER_URL,
48   DWRITE_INFORMATIONAL_STRING_DESCRIPTION,
49   DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL,
50   DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION,
51   DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL,
52   DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES,
53   DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES,
54   DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES,
55   DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES,
56   DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT,
57   DWRITE_INFORMATIONAL_STRING_FULL_NAME,
58   DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME,
59   DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME
60 } DWRITE_INFORMATIONAL_STRING_ID;
61 
62 typedef enum DWRITE_FACTORY_TYPE {
63   DWRITE_FACTORY_TYPE_SHARED = 0,
64   DWRITE_FACTORY_TYPE_ISOLATED
65 } DWRITE_FACTORY_TYPE;
66 
67 typedef enum DWRITE_FONT_FACE_TYPE {
68   DWRITE_FONT_FACE_TYPE_CFF = 0,
69   DWRITE_FONT_FACE_TYPE_TRUETYPE,
70   DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION,
71   DWRITE_FONT_FACE_TYPE_TYPE1,
72   DWRITE_FONT_FACE_TYPE_VECTOR,
73   DWRITE_FONT_FACE_TYPE_BITMAP,
74   DWRITE_FONT_FACE_TYPE_UNKNOWN,
75   DWRITE_FONT_FACE_TYPE_RAW_CFF
76 } DWRITE_FONT_FACE_TYPE;
77 
78 typedef enum DWRITE_FONT_PROPERTY_ID {
79   DWRITE_FONT_PROPERTY_ID_NONE = 0,
80   DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FAMILY_NAME,
81   DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FAMILY_NAME,
82   DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FACE_NAME,
83   DWRITE_FONT_PROPERTY_ID_FULL_NAME,
84   DWRITE_FONT_PROPERTY_ID_WIN32_FAMILY_NAME,
85   DWRITE_FONT_PROPERTY_ID_POSTSCRIPT_NAME,
86   DWRITE_FONT_PROPERTY_ID_DESIGN_SCRIPT_LANGUAGE_TAG,
87   DWRITE_FONT_PROPERTY_ID_SUPPORTED_SCRIPT_LANGUAGE_TAG,
88   DWRITE_FONT_PROPERTY_ID_SEMANTIC_TAG,
89   DWRITE_FONT_PROPERTY_ID_WEIGHT,
90   DWRITE_FONT_PROPERTY_ID_STRETCH,
91   DWRITE_FONT_PROPERTY_ID_STYLE,
92   DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FACE_NAME,
93   /* rest dropped */
94 } DWRITE_FONT_PROPERTY_ID;
95 
96 typedef enum DWRITE_FONT_SIMULATIONS {
97   DWRITE_FONT_SIMULATIONS_NONE      = 0x0000,
98   DWRITE_FONT_SIMULATIONS_BOLD      = 0x0001,
99   DWRITE_FONT_SIMULATIONS_OBLIQUE   = 0x0002
100 } DWRITE_FONT_SIMULATIONS;
101 
102 typedef enum DWRITE_FONT_STRETCH {
103   DWRITE_FONT_STRETCH_UNDEFINED         = 0,
104   DWRITE_FONT_STRETCH_ULTRA_CONDENSED   = 1,
105   DWRITE_FONT_STRETCH_EXTRA_CONDENSED   = 2,
106   DWRITE_FONT_STRETCH_CONDENSED         = 3,
107   DWRITE_FONT_STRETCH_SEMI_CONDENSED    = 4,
108   DWRITE_FONT_STRETCH_NORMAL            = 5,
109   DWRITE_FONT_STRETCH_MEDIUM            = 5,
110   DWRITE_FONT_STRETCH_SEMI_EXPANDED     = 6,
111   DWRITE_FONT_STRETCH_EXPANDED          = 7,
112   DWRITE_FONT_STRETCH_EXTRA_EXPANDED    = 8,
113   DWRITE_FONT_STRETCH_ULTRA_EXPANDED    = 9
114 } DWRITE_FONT_STRETCH;
115 
116 typedef enum DWRITE_FONT_STYLE {
117   DWRITE_FONT_STYLE_NORMAL = 0,
118   DWRITE_FONT_STYLE_OBLIQUE,
119   DWRITE_FONT_STYLE_ITALIC
120 } DWRITE_FONT_STYLE;
121 
122 typedef enum DWRITE_FONT_WEIGHT {
123   DWRITE_FONT_WEIGHT_MEDIUM        = 500,
124   /* rest dropped */
125 } DWRITE_FONT_WEIGHT;
126 
127 typedef enum DWRITE_LOCALITY {
128   DWRITE_LOCALITY_REMOTE = 0,
129   DWRITE_LOCALITY_PARTIAL,
130   DWRITE_LOCALITY_LOCAL
131 } DWRITE_LOCALITY;
132 
133 typedef struct DWRITE_FONT_METRICS {
134   UINT16 designUnitsPerEm;
135   UINT16 ascent;
136   UINT16 descent;
137   INT16  lineGap;
138   UINT16 capHeight;
139   UINT16 xHeight;
140   INT16  underlinePosition;
141   UINT16 underlineThickness;
142   INT16  strikethroughPosition;
143   UINT16 strikethroughThickness;
144 } DWRITE_FONT_METRICS;
145 
146 typedef struct DWRITE_FONT_PROPERTY {
147   DWRITE_FONT_PROPERTY_ID propertyId;
148   const WCHAR *propertyValue;
149   const WCHAR *localeName;
150 } DWRITE_FONT_PROPERTY;
151 
152 typedef struct DWRITE_GLYPH_OFFSET DWRITE_GLYPH_OFFSET;
153 
154 typedef struct DWRITE_GLYPH_RUN {
155   IDWriteFontFace           *fontFace;
156   FLOAT                     fontEmSize;
157   UINT32                    glyphCount;
158   const UINT16              *glyphIndices;
159   const FLOAT               *glyphAdvances;
160   const DWRITE_GLYPH_OFFSET *glyphOffsets;
161   BOOL                      isSideways;
162   UINT32                    bidiLevel;
163 } DWRITE_GLYPH_RUN;
164 
165 typedef struct DWRITE_GLYPH_RUN_DESCRIPTION DWRITE_GLYPH_RUN_DESCRIPTION;
166 typedef struct DWRITE_HIT_TEST_METRICS DWRITE_HIT_TEST_METRICS;
167 typedef struct DWRITE_LINE_METRICS DWRITE_LINE_METRICS;
168 typedef struct DWRITE_MATRIX DWRITE_MATRIX;
169 typedef struct DWRITE_STRIKETHROUGH DWRITE_STRIKETHROUGH;
170 typedef struct DWRITE_TEXT_METRICS DWRITE_TEXT_METRICS;
171 
172 typedef struct DWRITE_TEXT_RANGE {
173   UINT32 startPosition;
174   UINT32 length;
175 } DWRITE_TEXT_RANGE;
176 
177 typedef struct DWRITE_TRIMMING DWRITE_TRIMMING;
178 typedef struct DWRITE_UNDERLINE DWRITE_UNDERLINE;
179 
180 #ifndef __MINGW_DEF_ARG_VAL
181 #ifdef __cplusplus
182 #define __MINGW_DEF_ARG_VAL(x) = x
183 #else
184 #define __MINGW_DEF_ARG_VAL(x)
185 #endif
186 #endif
187 
188 #undef  INTERFACE
189 #define INTERFACE IDWriteFactory
DECLARE_INTERFACE_(IDWriteFactory,IUnknown)190 DECLARE_INTERFACE_(IDWriteFactory,IUnknown)
191 {
192     BEGIN_INTERFACE
193 
194 #ifndef __cplusplus
195     /* IUnknown methods */
196     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
197     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
198     STDMETHOD_(ULONG, Release)(THIS) PURE;
199 #endif
200 
201     /* IDWriteFactory methods */
202     STDMETHOD(GetSystemFontCollection)(THIS_
203         IDWriteFontCollection **fontCollection,
204         BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
205 
206     STDMETHOD(dummy1)(THIS);
207     STDMETHOD(dummy2)(THIS);
208     STDMETHOD(dummy3)(THIS);
209     STDMETHOD(dummy4)(THIS);
210     STDMETHOD(dummy5)(THIS);
211     STDMETHOD(dummy6)(THIS);
212     STDMETHOD(dummy7)(THIS);
213     STDMETHOD(dummy8)(THIS);
214     STDMETHOD(dummy9)(THIS);
215     STDMETHOD(dummy10)(THIS);
216     STDMETHOD(dummy11)(THIS);
217 
218     STDMETHOD(CreateTextFormat)(THIS_
219         WCHAR const *fontFamilyName,
220         IDWriteFontCollection *fontCollection,
221         DWRITE_FONT_WEIGHT fontWeight,
222         DWRITE_FONT_STYLE fontStyle,
223         DWRITE_FONT_STRETCH fontStretch,
224         FLOAT fontSize,
225         WCHAR const *localeName,
226         IDWriteTextFormat **textFormat) PURE;
227 
228     STDMETHOD(dummy12)(THIS);
229 
230     STDMETHOD(GetGdiInterop)(THIS_
231         IDWriteGdiInterop **gdiInterop) PURE;
232 
233     STDMETHOD(CreateTextLayout)(THIS_
234         WCHAR const *string,
235         UINT32 stringLength,
236         IDWriteTextFormat *textFormat,
237         FLOAT maxWidth,
238         FLOAT maxHeight,
239         IDWriteTextLayout **textLayout) PURE;
240 
241     /* remainder dropped */
242     END_INTERFACE
243 };
244 #ifdef COBJMACROS
245 #define IDWriteFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
246 #define IDWriteFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
247 #define IDWriteFactory_Release(This) (This)->lpVtbl->Release(This)
248 #define IDWriteFactory_GetSystemFontCollection(This,fontCollection,checkForUpdates) (This)->lpVtbl->GetSystemFontCollection(This,fontCollection,checkForUpdates)
249 #define IDWriteFactory_CreateTextFormat(This,fontFamilyName,fontCollection,fontWeight,fontStyle,fontStretch,fontSize,localeName,textFormat) (This)->lpVtbl->CreateTextFormat(This,fontFamilyName,fontCollection,fontWeight,fontStyle,fontStretch,fontSize,localeName,textFormat)
250 #define IDWriteFactory_CreateTextLayout(This,string,stringLength,textFormat,maxWidth,maxHeight,textLayout) (This)->lpVtbl->CreateTextLayout(This,string,stringLength,textFormat,maxWidth,maxHeight,textLayout)
251 #define IDWriteFactory_GetGdiInterop(This,gdiInterop) (This)->lpVtbl->GetGdiInterop(This,gdiInterop)
252 #endif /*COBJMACROS*/
253 
254 #undef  INTERFACE
255 #define INTERFACE IDWriteFactory3
DECLARE_INTERFACE_(IDWriteFactory3,IDWriteFactory)256 DECLARE_INTERFACE_(IDWriteFactory3,IDWriteFactory)
257 {
258     BEGIN_INTERFACE
259 
260 #ifndef __cplusplus
261     /* IUnknown methods */
262     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
263     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
264     STDMETHOD_(ULONG, Release)(THIS) PURE;
265 
266     /* IDWriteFactory methods */
267     STDMETHOD(GetSystemFontCollection)(THIS_
268         IDWriteFontCollection **fontCollection,
269         BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
270 
271     STDMETHOD(dummy1)(THIS);
272     STDMETHOD(dummy2)(THIS);
273     STDMETHOD(dummy3)(THIS);
274     STDMETHOD(dummy4)(THIS);
275     STDMETHOD(dummy5)(THIS);
276     STDMETHOD(dummy6)(THIS);
277     STDMETHOD(dummy7)(THIS);
278     STDMETHOD(dummy8)(THIS);
279     STDMETHOD(dummy9)(THIS);
280     STDMETHOD(dummy10)(THIS);
281     STDMETHOD(dummy11)(THIS);
282 
283     STDMETHOD(CreateTextFormat)(THIS_
284         WCHAR const *fontFamilyName,
285         IDWriteFontCollection *fontCollection,
286         DWRITE_FONT_WEIGHT fontWeight,
287         DWRITE_FONT_STYLE fontStyle,
288         DWRITE_FONT_STRETCH fontStretch,
289         FLOAT fontSize,
290         WCHAR const *localeName,
291         IDWriteTextFormat **textFormat) PURE;
292 
293     STDMETHOD(dummy12)(THIS);
294 
295     STDMETHOD(GetGdiInterop)(THIS_
296         IDWriteGdiInterop **gdiInterop) PURE;
297 
298     STDMETHOD(CreateTextLayout)(THIS_
299         WCHAR const *string,
300         UINT32 stringLength,
301         IDWriteTextFormat *textFormat,
302         FLOAT maxWidth,
303         FLOAT maxHeight,
304         IDWriteTextLayout **textLayout) PURE;
305 #endif
306 
307     STDMETHOD(dummy13)(THIS);
308     STDMETHOD(dummy14)(THIS);
309     STDMETHOD(dummy15)(THIS);
310     STDMETHOD(dummy16)(THIS);
311     STDMETHOD(dummy17)(THIS);
312 
313     /* IDWriteFactory1 methods */
314     STDMETHOD(dummy18)(THIS);
315     STDMETHOD(dummy19)(THIS);
316 
317     /* IDWriteFactory2 methods */
318     STDMETHOD(dummy20)(THIS);
319     STDMETHOD(dummy21)(THIS);
320     STDMETHOD(dummy22)(THIS);
321     STDMETHOD(dummy23)(THIS);
322     STDMETHOD(dummy24)(THIS);
323 
324     /* IDWriteFactory3 methods */
325     STDMETHOD(dummy25)(THIS);
326     STDMETHOD(dummy26)(THIS);
327     STDMETHOD(dummy27)(THIS);
328     STDMETHOD(dummy28)(THIS);
329 
330     STDMETHOD(GetSystemFontSet)(THIS_
331         IDWriteFontSet **fontSet) PURE;
332 
333     /* rest dropped */
334     END_INTERFACE
335 };
336 #ifdef COBJMACROS
337 #define IDWriteFactory3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
338 #define IDWriteFactory3_AddRef(This) (This)->lpVtbl->AddRef(This)
339 #define IDWriteFactory3_Release(This) (This)->lpVtbl->Release(This)
340 #define IDWriteFactory3_GetSystemFontCollection(This,fontCollection,checkForUpdates) (This)->lpVtbl->GetSystemFontCollection(This,fontCollection,checkForUpdates)
341 #define IDWriteFactory3_CreateTextFormat(This,fontFamilyName,fontCollection,fontWeight,fontStyle,fontStretch,fontSize,localeName,textFormat) (This)->lpVtbl->CreateTextFormat(This,fontFamilyName,fontCollection,fontWeight,fontStyle,fontStretch,fontSize,localeName,textFormat)
342 #define IDWriteFactory3_CreateTextLayout(This,string,stringLength,textFormat,maxWidth,maxHeight,textLayout) (This)->lpVtbl->CreateTextLayout(This,string,stringLength,textFormat,maxWidth,maxHeight,textLayout)
343 #define IDWriteFactory3_GetGdiInterop(This,gdiInterop) (This)->lpVtbl->GetGdiInterop(This,gdiInterop)
344 #define IDWriteFactory3_GetSystemFontSet(This,fontSet) (This)->lpVtbl->GetSystemFontSet(This,fontSet)
345 #endif /*COBJMACROS*/
346 
347 #undef  INTERFACE
348 #define INTERFACE IDWriteFont
DECLARE_INTERFACE_(IDWriteFont,IUnknown)349 DECLARE_INTERFACE_(IDWriteFont,IUnknown)
350 {
351     BEGIN_INTERFACE
352 
353 #ifndef __cplusplus
354     /* IUnknown methods */
355     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
356     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
357     STDMETHOD_(ULONG, Release)(THIS) PURE;
358 #endif
359 
360     /* IDWriteFont methods */
361     STDMETHOD(GetFontFamily)(THIS_
362         IDWriteFontFamily **fontFamily) PURE;
363 
364     STDMETHOD_(DWRITE_FONT_WEIGHT, GetWeight)(THIS) PURE;
365     STDMETHOD_(DWRITE_FONT_STRETCH, GetStretch)(THIS) PURE;
366     STDMETHOD_(DWRITE_FONT_STYLE, GetStyle)(THIS) PURE;
367     STDMETHOD_(BOOL, IsSymbolFont)(THIS) PURE;
368 
369     STDMETHOD(GetFaceNames)(THIS_
370         IDWriteLocalizedStrings **names) PURE;
371 
372     STDMETHOD(GetInformationalStrings)(THIS_
373         DWRITE_INFORMATIONAL_STRING_ID informationalStringID,
374         IDWriteLocalizedStrings **informationalStrings,
375         BOOL *exists) PURE;
376 
377     STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
378 
379     STDMETHOD_(void, GetMetrics)(THIS_
380         DWRITE_FONT_METRICS *fontMetrics) PURE;
381 
382     STDMETHOD(HasCharacter)(THIS_
383         UINT32 unicodeValue,
384         BOOL *exists) PURE;
385 
386     STDMETHOD(CreateFontFace)(THIS_
387         IDWriteFontFace **fontFace) PURE;
388 
389     END_INTERFACE
390 };
391 #ifdef COBJMACROS
392 #define IDWriteFont_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
393 #define IDWriteFont_AddRef(This) (This)->lpVtbl->AddRef(This)
394 #define IDWriteFont_Release(This) (This)->lpVtbl->Release(This)
395 #define IDWriteFont_CreateFontFace(This,fontFace) (This)->lpVtbl->CreateFontFace(This,fontFace)
396 #define IDWriteFont_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
397 #define IDWriteFont_GetFontFamily(This,fontFamily) (This)->lpVtbl->GetFontFamily(This,fontFamily)
398 #define IDWriteFont_GetInformationalStrings(This,informationalStringID,informationalStrings,exists) (This)->lpVtbl->GetInformationalStrings(This,informationalStringID,informationalStrings,exists)
399 #define IDWriteFont_GetMetrics(This,fontMetrics) (This)->lpVtbl->GetMetrics(This,fontMetrics)
400 #define IDWriteFont_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
401 #define IDWriteFont_GetStretch(This) (This)->lpVtbl->GetStretch(This)
402 #define IDWriteFont_GetStyle(This) (This)->lpVtbl->GetStyle(This)
403 #define IDWriteFont_GetWeight(This) (This)->lpVtbl->GetWeight(This)
404 #define IDWriteFont_HasCharacter(This,unicodeValue,exists) (This)->lpVtbl->HasCharacter(This,unicodeValue,exists)
405 #define IDWriteFont_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
406 #endif /*COBJMACROS*/
407 
408 #undef  INTERFACE
409 #define INTERFACE IDWriteFontCollection
DECLARE_INTERFACE_(IDWriteFontCollection,IUnknown)410 DECLARE_INTERFACE_(IDWriteFontCollection,IUnknown)
411 {
412     BEGIN_INTERFACE
413 
414 #ifndef __cplusplus
415     /* IUnknown methods */
416     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
417     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
418     STDMETHOD_(ULONG, Release)(THIS) PURE;
419 #endif
420 
421     /* IDWriteFontCollection methods */
422     STDMETHOD_(UINT32, GetFontFamilyCount)(THIS) PURE;
423 
424     STDMETHOD(GetFontFamily)(THIS_
425         UINT32 index,
426         IDWriteFontFamily **fontFamily) PURE;
427 
428     STDMETHOD(FindFamilyName)(THIS_
429         WCHAR const *familyName,
430         UINT32 *index,
431         BOOL *exists) PURE;
432 
433     STDMETHOD(GetFontFromFontFace)(THIS_
434         IDWriteFontFace* fontFace,
435         IDWriteFont **font) PURE;
436 
437     END_INTERFACE
438 };
439 #ifdef COBJMACROS
440 #define IDWriteFontCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
441 #define IDWriteFontCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
442 #define IDWriteFontCollection_Release(This) (This)->lpVtbl->Release(This)
443 #define IDWriteFontCollection_FindFamilyName(This,familyName,index,exists) (This)->lpVtbl->FindFamilyName(This,familyName,index,exists)
444 #define IDWriteFontCollection_GetFontFamily(This,index,fontFamily) (This)->lpVtbl->GetFontFamily(This,index,fontFamily)
445 #define IDWriteFontCollection_GetFontFamilyCount(This) (This)->lpVtbl->GetFontFamilyCount(This)
446 #define IDWriteFontCollection_GetFontFromFontFace(This,fontFace,font) (This)->lpVtbl->GetFontFromFontFace(This,fontFace,font)
447 #endif /*COBJMACROS*/
448 
449 #undef  INTERFACE
450 #define INTERFACE IDWriteFontFace
DECLARE_INTERFACE_(IDWriteFontFace,IUnknown)451 DECLARE_INTERFACE_(IDWriteFontFace,IUnknown)
452 {
453     BEGIN_INTERFACE
454 
455 #ifndef __cplusplus
456     /* IUnknown methods */
457     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
458     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
459     STDMETHOD_(ULONG, Release)(THIS) PURE;
460 #endif
461 
462     /* IDWriteFontFace methods */
463     STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
464 
465     STDMETHOD(GetFiles)(THIS_
466         UINT32 *numberOfFiles,
467         IDWriteFontFile **fontFiles) PURE;
468 
469     STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
470 
471     STDMETHOD(dummy1)(THIS);
472     STDMETHOD(dummy2)(THIS);
473     STDMETHOD(dummy3)(THIS);
474     STDMETHOD(dummy4)(THIS);
475     STDMETHOD(dummy5)(THIS);
476 
477     STDMETHOD(GetGlyphIndices)(THIS_
478         UINT32 const *codePoints,
479         UINT32 codePointCount,
480         UINT16 *glyphIndices) PURE;
481 
482     /* rest dropped */
483     END_INTERFACE
484 };
485 #ifdef COBJMACROS
486 #define IDWriteFontFace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
487 #define IDWriteFontFace_AddRef(This) (This)->lpVtbl->AddRef(This)
488 #define IDWriteFontFace_Release(This) (This)->lpVtbl->Release(This)
489 #define IDWriteFontFace_GetType(This) (This)->lpVtbl->GetType(This)
490 #define IDWriteFontFace_GetFiles(This,numberOfFiles,fontFiles) (This)->lpVtbl->GetFiles(This,numberOfFiles,fontFiles)
491 #define IDWriteFontFace_GetIndex(This) (This)->lpVtbl->GetIndex(This)
492 #define IDWriteFontFace_GetGlyphIndices(This,codePoints,codePointCount,glyphIndices) (This)->lpVtbl->GetGlyphIndices(This,codePoints,codePointCount,glyphIndices)
493 #endif /*COBJMACROS*/
494 
495 #undef  INTERFACE
496 #define INTERFACE IDWriteFontFace3
DECLARE_INTERFACE_(IDWriteFontFace3,IDWriteFontFace)497 DECLARE_INTERFACE_(IDWriteFontFace3,IDWriteFontFace)
498 {
499     BEGIN_INTERFACE
500 
501 #ifndef __cplusplus
502     /* IUnknown methods */
503     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
504     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
505     STDMETHOD_(ULONG, Release)(THIS) PURE;
506 
507     /* IDWriteFontFace methods */
508     STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
509 
510     STDMETHOD(GetFiles)(THIS_
511         UINT32 *numberOfFiles,
512         IDWriteFontFile **fontFiles) PURE;
513 
514     STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
515 
516     STDMETHOD(dummy1)(THIS);
517     STDMETHOD(dummy2)(THIS);
518     STDMETHOD(dummy3)(THIS);
519     STDMETHOD(dummy4)(THIS);
520     STDMETHOD(dummy5)(THIS);
521 
522     STDMETHOD(GetGlyphIndices)(THIS_
523         UINT32 const *codePoints,
524         UINT32 codePointCount,
525         UINT16 *glyphIndices) PURE;
526 
527     STDMETHOD(dummy6)(THIS);
528     STDMETHOD(dummy7)(THIS);
529     STDMETHOD(dummy8)(THIS);
530     STDMETHOD(dummy9)(THIS);
531     STDMETHOD(dummy10)(THIS);
532     STDMETHOD(dummy11)(THIS);
533 #endif
534 
535     /* IDWriteFontFace1 methods */
536     STDMETHOD(dummy12)(THIS);
537     STDMETHOD(dummy13)(THIS);
538     STDMETHOD(dummy14)(THIS);
539     STDMETHOD(dummy15)(THIS);
540     STDMETHOD(dummy16)(THIS);
541     STDMETHOD(dummy17)(THIS);
542     STDMETHOD(dummy18)(THIS);
543     STDMETHOD(dummy19)(THIS);
544     STDMETHOD(dummy20)(THIS);
545     STDMETHOD(dummy21)(THIS);
546     STDMETHOD(dummy22)(THIS);
547     STDMETHOD(dummy23)(THIS);
548 
549     /* IDWriteFontFace2 methods */
550     STDMETHOD(dummy24)(THIS);
551     STDMETHOD(dummy25)(THIS);
552     STDMETHOD(dummy26)(THIS);
553     STDMETHOD(dummy27)(THIS);
554     STDMETHOD(dummy28)(THIS);
555 
556     /* IDWriteFontFace3 methods */
557     STDMETHOD(dummy29)(THIS);
558     STDMETHOD(dummy30)(THIS);
559 
560     STDMETHOD_(DWRITE_FONT_WEIGHT, GetWeight)(THIS) PURE;
561     STDMETHOD_(DWRITE_FONT_STRETCH, GetStretch)(THIS) PURE;
562     STDMETHOD_(DWRITE_FONT_STYLE, GetStyle)(THIS) PURE;
563 
564     STDMETHOD(GetFamilyNames)(THIS_
565         IDWriteLocalizedStrings **names) PURE;
566 
567     STDMETHOD(dummy31)(THIS);
568 
569     STDMETHOD(GetInformationalStrings)(THIS_
570         DWRITE_INFORMATIONAL_STRING_ID informationalStringID,
571         IDWriteLocalizedStrings **informationalStrings,
572         BOOL *exists) PURE;
573 
574     /* rest dropped */
575     END_INTERFACE
576 };
577 #ifdef COBJMACROS
578 #define IDWriteFontFace3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
579 #define IDWriteFontFace3_AddRef(This) (This)->lpVtbl->AddRef(This)
580 #define IDWriteFontFace3_Release(This) (This)->lpVtbl->Release(This)
581 #define IDWriteFontFace3_GetType(This) (This)->lpVtbl->GetType(This)
582 #define IDWriteFontFace3_GetFiles(This,numberOfFiles,fontFiles) (This)->lpVtbl->GetFiles(This,numberOfFiles,fontFiles)
583 #define IDWriteFontFace3_GetIndex(This) (This)->lpVtbl->GetIndex(This)
584 #define IDWriteFontFace3_GetGlyphIndices(This,codePoints,codePointCount,glyphIndices) (This)->lpVtbl->GetGlyphIndices(This,codePoints,codePointCount,glyphIndices)
585 #define IDWriteFontFace3_GetWeight(This) (This)->lpVtbl->GetWeight(This)
586 #define IDWriteFontFace3_GetStretch(This) (This)->lpVtbl->GetStretch(This)
587 #define IDWriteFontFace3_GetStyle(This) (This)->lpVtbl->GetStyle(This)
588 #define IDWriteFontFace3_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
589 #define IDWriteFontFace3_GetInformationalStrings(This,informationalStringID,informationalStrings,exists) (This)->lpVtbl->GetInformationalStrings(This,informationalStringID,informationalStrings,exists)
590 #endif /*COBJMACROS*/
591 
592 #undef  INTERFACE
593 #define INTERFACE IDWriteFontFaceReference
DECLARE_INTERFACE_(IDWriteFontFaceReference,IUnknown)594 DECLARE_INTERFACE_(IDWriteFontFaceReference,IUnknown)
595 {
596     BEGIN_INTERFACE
597 
598 #ifndef __cplusplus
599     /* IUnknown methods */
600     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
601     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
602     STDMETHOD_(ULONG, Release)(THIS) PURE;
603 #endif
604 
605     STDMETHOD(CreateFontFace)(THIS_
606         IDWriteFontFace3 **fontFace) PURE;
607 
608     STDMETHOD(dummy1)(THIS);
609     STDMETHOD(dummy2)(THIS);
610     STDMETHOD(dummy3)(THIS);
611 
612     STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
613 
614     STDMETHOD(dummy4)(THIS);
615     STDMETHOD(dummy5)(THIS);
616     STDMETHOD(dummy6)(THIS);
617     STDMETHOD(dummy7)(THIS);
618 
619     STDMETHOD_(DWRITE_LOCALITY, GetLocality)(THIS) PURE;
620 
621     /* rest dropped */
622     END_INTERFACE
623 };
624 #ifdef COBJMACROS
625 #define IDWriteFontFaceReference_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
626 #define IDWriteFontFaceReference_AddRef(This) (This)->lpVtbl->AddRef(This)
627 #define IDWriteFontFaceReference_Release(This) (This)->lpVtbl->Release(This)
628 #define IDWriteFontFaceReference_CreateFontFace(This,fontFace) (This)->lpVtbl->CreateFontFace(This,fontFace)
629 #define IDWriteFontFaceReference_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
630 #define IDWriteFontFaceReference_GetLocality(This) (This)->lpVtbl->GetLocality(This)
631 #endif /*COBJMACROS*/
632 
633 #undef  INTERFACE
634 #define INTERFACE IDWriteFontFamily
DECLARE_INTERFACE_(IDWriteFontFamily,IDWriteFontList)635 DECLARE_INTERFACE_(IDWriteFontFamily,IDWriteFontList)
636 {
637     BEGIN_INTERFACE
638 
639 #ifndef __cplusplus
640     /* IUnknown methods */
641     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
642     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
643     STDMETHOD_(ULONG, Release)(THIS) PURE;
644 
645     /* IDWriteFontList methods */
646     STDMETHOD(GetFontCollection)(THIS_
647         IDWriteFontCollection** fontCollection) PURE;
648 
649     STDMETHOD_(UINT32, GetFontCount)(THIS) PURE;
650 
651     STDMETHOD(GetFont)(THIS_
652         UINT32 index,
653         IDWriteFont **font) PURE;
654 #endif
655 
656     /* IDWriteFontFamily methods */
657     STDMETHOD(GetFamilyNames)(THIS_
658         IDWriteLocalizedStrings **names) PURE;
659 
660     /* rest dropped */
661     END_INTERFACE
662 };
663 #ifdef COBJMACROS
664 #define IDWriteFontFamily_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
665 #define IDWriteFontFamily_AddRef(This) (This)->lpVtbl->AddRef(This)
666 #define IDWriteFontFamily_Release(This) (This)->lpVtbl->Release(This)
667 #define IDWriteFontFamily_GetFont(This,index,font) (This)->lpVtbl->GetFont(This,index,font)
668 #define IDWriteFontFamily_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
669 #define IDWriteFontFamily_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
670 #endif /*COBJMACROS*/
671 
672 #undef  INTERFACE
673 #define INTERFACE IDWriteFontFile
DECLARE_INTERFACE_(IDWriteFontFile,IUnknown)674 DECLARE_INTERFACE_(IDWriteFontFile,IUnknown)
675 {
676     BEGIN_INTERFACE
677 
678 #ifndef __cplusplus
679     /* IUnknown methods */
680     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
681     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
682     STDMETHOD_(ULONG, Release)(THIS) PURE;
683 #endif
684 
685     /* IDWriteFontFile methods */
686     STDMETHOD(GetReferenceKey)(THIS_
687         void const **fontFileReferenceKey,
688         UINT32 *fontFileReferenceKeySize) PURE;
689 
690     STDMETHOD(GetLoader)(THIS_
691         IDWriteFontFileLoader **fontFileLoader) PURE;
692 
693     /* rest dropped */
694     END_INTERFACE
695 };
696 #ifdef COBJMACROS
697 #define IDWriteFontFile_Release(This) (This)->lpVtbl->Release(This)
698 #define IDWriteFontFile_GetLoader(This,fontFileLoader) (This)->lpVtbl->GetLoader(This,fontFileLoader)
699 #define IDWriteFontFile_GetReferenceKey(This,fontFileReferenceKey,fontFileReferenceKeySize) (This)->lpVtbl->GetReferenceKey(This,fontFileReferenceKey,fontFileReferenceKeySize)
700 #endif /*COBJMACROS*/
701 
702 #undef  INTERFACE
703 #define INTERFACE IDWriteFontFileLoader
DECLARE_INTERFACE_(IDWriteFontFileLoader,IUnknown)704 DECLARE_INTERFACE_(IDWriteFontFileLoader,IUnknown)
705 {
706     BEGIN_INTERFACE
707 
708 #ifndef __cplusplus
709     /* IUnknown methods */
710     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
711     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
712     STDMETHOD_(ULONG, Release)(THIS) PURE;
713 #endif
714 
715     /* IDWriteFontFileLoader methods */
716     STDMETHOD(CreateStreamFromKey)(THIS_
717         void const *fontFileReferenceKey,
718         UINT32 fontFileReferenceKeySize,
719         IDWriteFontFileStream **fontFileStream) PURE;
720 
721     END_INTERFACE
722 };
723 #ifdef COBJMACROS
724 #define IDWriteFontFileLoader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
725 #define IDWriteFontFileLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
726 #define IDWriteFontFileLoader_Release(This) (This)->lpVtbl->Release(This)
727 #define IDWriteFontFileLoader_CreateStreamFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,fontFileStream) (This)->lpVtbl->CreateStreamFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,fontFileStream)
728 #endif /*COBJMACROS*/
729 
730 #undef  INTERFACE
731 #define INTERFACE IDWriteFontFileStream
DECLARE_INTERFACE_(IDWriteFontFileStream,IUnknown)732 DECLARE_INTERFACE_(IDWriteFontFileStream,IUnknown)
733 {
734     BEGIN_INTERFACE
735 
736 #ifndef __cplusplus
737     /* IUnknown methods */
738     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
739     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
740     STDMETHOD_(ULONG, Release)(THIS) PURE;
741 #endif
742 
743     /* IDWriteFontFileStream methods */
744     STDMETHOD(ReadFileFragment)(THIS_
745         void const **fragmentStart,
746         UINT64 fileOffset,
747         UINT64 fragmentSize,
748         void** fragmentContext) PURE;
749 
750     STDMETHOD_(void, ReleaseFileFragment)(THIS_
751         void *fragmentContext) PURE;
752 
753     STDMETHOD(GetFileSize)(THIS_
754         UINT64 *fileSize) PURE;
755 
756     STDMETHOD(GetLastWriteTime)(THIS_
757         UINT64 *lastWriteTime) PURE;
758 
759     END_INTERFACE
760 };
761 #ifdef COBJMACROS
762 #define IDWriteFontFileStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
763 #define IDWriteFontFileStream_AddRef(This) (This)->lpVtbl->AddRef(This)
764 #define IDWriteFontFileStream_Release(This) (This)->lpVtbl->Release(This)
765 #define IDWriteFontFileStream_GetFileSize(This,fileSize) (This)->lpVtbl->GetFileSize(This,fileSize)
766 #define IDWriteFontFileStream_ReadFileFragment(This,fragmentStart,fileOffset,fragmentSize,fragmentContext) (This)->lpVtbl->ReadFileFragment(This,fragmentStart,fileOffset,fragmentSize,fragmentContext)
767 #define IDWriteFontFileStream_ReleaseFileFragment(This,fragmentContext) (This)->lpVtbl->ReleaseFileFragment(This,fragmentContext)
768 #endif /*COBJMACROS*/
769 
770 #undef  INTERFACE
771 #define INTERFACE IDWriteFontSet
DECLARE_INTERFACE_(IDWriteFontSet,IUnknown)772 DECLARE_INTERFACE_(IDWriteFontSet,IUnknown)
773 {
774     BEGIN_INTERFACE
775 
776 #ifndef __cplusplus
777     /* IUnknown methods */
778     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
779     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
780     STDMETHOD_(ULONG, Release)(THIS) PURE;
781 #endif
782 
783     /* IDWriteFontSet methods */
784     STDMETHOD_(UINT32, GetFontCount)(THIS) PURE;
785 
786     STDMETHOD(GetFontFaceReference)(THIS_
787         UINT32 listIndex,
788         IDWriteFontFaceReference **fontFaceReference) PURE;
789 
790     STDMETHOD(dummy1)(THIS);
791     STDMETHOD(dummy2)(THIS);
792     STDMETHOD(dummy3)(THIS);
793     STDMETHOD(dummy4)(THIS);
794     STDMETHOD(dummy5)(THIS);
795     STDMETHOD(dummy6)(THIS);
796     STDMETHOD(dummy7)(THIS);
797 
798     STDMETHOD(GetMatchingFonts)(THIS_
799         DWRITE_FONT_PROPERTY const *properties,
800         UINT32 propertyCount,
801         IDWriteFontSet **filteredSet) PURE;
802 
803     /* rest dropped */
804     END_INTERFACE
805 };
806 #ifdef COBJMACROS
807 #define IDWriteFontSet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
808 #define IDWriteFontSet_AddRef(This) (This)->lpVtbl->AddRef(This)
809 #define IDWriteFontSet_Release(This) (This)->lpVtbl->Release(This)
810 #define IDWriteFontSet_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
811 #define IDWriteFontSet_GetFontFaceReference(This,listIndex,fontFaceReference) (This)->lpVtbl->GetFontFaceReference(This,listIndex,fontFaceReference)
812 #define IDWriteFontSet_GetMatchingFonts(This,properties,propertyCount,filteredSet) (This)->lpVtbl->GetMatchingFonts(This,properties,propertyCount,filteredSet)
813 #endif /*COBJMACROS*/
814 
815 #undef  INTERFACE
816 #define INTERFACE IDWriteLocalizedStrings
DECLARE_INTERFACE_(IDWriteLocalizedStrings,IUnknown)817 DECLARE_INTERFACE_(IDWriteLocalizedStrings,IUnknown)
818 {
819     BEGIN_INTERFACE
820 
821 #ifndef __cplusplus
822     /* IUnknown methods */
823     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
824     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
825     STDMETHOD_(ULONG, Release)(THIS) PURE;
826 #endif
827 
828     /* IDWriteLocalizedStrings methods */
829     STDMETHOD_(UINT32, GetCount)(THIS) PURE;
830 
831     STDMETHOD(dummy1)(THIS);
832     STDMETHOD(dummy2)(THIS);
833     STDMETHOD(dummy3)(THIS);
834 
835     STDMETHOD(GetStringLength)(THIS_
836         UINT32 index,
837         UINT32 *length) PURE;
838     STDMETHOD(GetString)(THIS_
839         UINT32 index,
840         WCHAR *stringBuffer,
841         UINT32 size) PURE;
842 
843     END_INTERFACE
844 };
845 #ifdef COBJMACROS
846 #define IDWriteLocalizedStrings_Release(This) (This)->lpVtbl->Release(This)
847 #define IDWriteLocalizedStrings_GetCount(This) (This)->lpVtbl->GetCount(This)
848 #define IDWriteLocalizedStrings_GetStringLength(This,index,length) (This)->lpVtbl->GetStringLength(This,index,length)
849 #define IDWriteLocalizedStrings_GetString(This,index,stringBuffer,size) (This)->lpVtbl->GetString(This,index,stringBuffer,size)
850 #endif /*COBJMACROS*/
851 
852 #undef  INTERFACE
853 #define INTERFACE IDWriteTextFormat
DECLARE_INTERFACE_(IDWriteTextFormat,IUnknown)854 DECLARE_INTERFACE_(IDWriteTextFormat,IUnknown)
855 {
856     BEGIN_INTERFACE
857 
858 #ifndef __cplusplus
859     /* IUnknown methods */
860     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
861     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
862     STDMETHOD_(ULONG, Release)(THIS) PURE;
863 #endif
864 
865     /* IDWriteTextFormat methods */
866     /* rest dropped */
867     END_INTERFACE
868 };
869 #ifdef COBJMACROS
870 #define IDWriteTextFormat_Release(This) (This)->lpVtbl->Release(This)
871 #endif /*COBJMACROS*/
872 
873 #undef  INTERFACE
874 #define INTERFACE IDWriteTextLayout
DECLARE_INTERFACE_(IDWriteTextLayout,IDWriteTextFormat)875 DECLARE_INTERFACE_(IDWriteTextLayout,IDWriteTextFormat)
876 {
877     BEGIN_INTERFACE
878 
879 #ifndef __cplusplus
880     /* IUnknown methods */
881     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
882     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
883     STDMETHOD_(ULONG, Release)(THIS) PURE;
884 
885     /* IDWriteTextFormat methods */
886     STDMETHOD(dummy1)(THIS);
887     STDMETHOD(dummy2)(THIS);
888     STDMETHOD(dummy3)(THIS);
889     STDMETHOD(dummy4)(THIS);
890     STDMETHOD(dummy5)(THIS);
891     STDMETHOD(dummy6)(THIS);
892     STDMETHOD(dummy7)(THIS);
893     STDMETHOD(dummy8)(THIS);
894     STDMETHOD(dummy9)(THIS);
895     STDMETHOD(dummy10)(THIS);
896     STDMETHOD(dummy11)(THIS);
897     STDMETHOD(dummy12)(THIS);
898     STDMETHOD(dummy13)(THIS);
899     STDMETHOD(dummy14)(THIS);
900     STDMETHOD(dummy15)(THIS);
901     STDMETHOD(dummy16)(THIS);
902     STDMETHOD(dummy17)(THIS);
903     STDMETHOD(dummy18)(THIS);
904     STDMETHOD(dummy19)(THIS);
905     STDMETHOD(dummy20)(THIS);
906     STDMETHOD(dummy21)(THIS);
907     STDMETHOD(dummy22)(THIS);
908     STDMETHOD(dummy23)(THIS);
909     STDMETHOD(dummy24)(THIS);
910     STDMETHOD(dummy25)(THIS);
911 #endif
912 
913     /* IDWriteTextLayout methods */
914     STDMETHOD(dummy26)(THIS);
915     STDMETHOD(dummy27)(THIS);
916     STDMETHOD(dummy28)(THIS);
917     STDMETHOD(dummy29)(THIS);
918     STDMETHOD(dummy30)(THIS);
919     STDMETHOD(dummy31)(THIS);
920     STDMETHOD(dummy32)(THIS);
921     STDMETHOD(dummy33)(THIS);
922     STDMETHOD(dummy34)(THIS);
923     STDMETHOD(dummy35)(THIS);
924     STDMETHOD(dummy36)(THIS);
925     STDMETHOD(dummy37)(THIS);
926     STDMETHOD(dummy38)(THIS);
927     STDMETHOD(dummy39)(THIS);
928     STDMETHOD(dummy40)(THIS);
929     STDMETHOD(dummy41)(THIS);
930     STDMETHOD(dummy42)(THIS);
931     STDMETHOD(dummy43)(THIS);
932     STDMETHOD(dummy44)(THIS);
933     STDMETHOD(dummy45)(THIS);
934     STDMETHOD(dummy46)(THIS);
935     STDMETHOD(dummy47)(THIS);
936     STDMETHOD(dummy48)(THIS);
937     STDMETHOD(dummy49)(THIS);
938     STDMETHOD(dummy50)(THIS);
939     STDMETHOD(dummy51)(THIS);
940     STDMETHOD(dummy52)(THIS);
941     STDMETHOD(dummy53)(THIS);
942     STDMETHOD(dummy54)(THIS);
943     STDMETHOD(dummy55)(THIS);
944     STDMETHOD(Draw)(THIS_
945             void *clientDrawingContext,
946             IDWriteTextRenderer *renderer,
947             FLOAT originX,
948             FLOAT originY) PURE;
949     /* rest dropped */
950     END_INTERFACE
951 };
952 #ifdef COBJMACROS
953 #define IDWriteTextLayout_Release(This) (This)->lpVtbl->Release(This)
954 #define IDWriteTextLayout_Draw(This,clientDrawingContext,renderer,originX,originY) (This)->lpVtbl->Draw(This,clientDrawingContext,renderer,originX,originY)
955 #endif /*COBJMACROS*/
956 
957 #undef  INTERFACE
958 #define INTERFACE IDWriteTextRenderer
DECLARE_INTERFACE_(IDWriteTextRenderer,IDWritePixelSnapping)959 DECLARE_INTERFACE_(IDWriteTextRenderer,IDWritePixelSnapping)
960 {
961     BEGIN_INTERFACE
962 
963 #ifndef __cplusplus
964     /* IUnknown methods */
965     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
966     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
967     STDMETHOD_(ULONG, Release)(THIS) PURE;
968 
969     /* IDWritePixelSnapping methods */
970     STDMETHOD(IsPixelSnappingDisabled)(THIS_
971             void *clientDrawingContext,
972             BOOL *isDisabled) PURE;
973     STDMETHOD(GetCurrentTransform)(THIS_
974             void *clientDrawingContext,
975             DWRITE_MATRIX *transform) PURE;
976     STDMETHOD(GetPixelsPerDip)(THIS_
977             void *clientDrawingContext,
978             FLOAT *pixelsPerDip) PURE;
979 #endif
980 
981     /* IDWriteTextRenderer methods */
982     STDMETHOD(DrawGlyphRun)(THIS_
983             void *clientDrawingContext,
984             FLOAT baselineOriginX,
985             FLOAT baselineOriginY,
986             DWRITE_MEASURING_MODE measuringMode,
987             DWRITE_GLYPH_RUN const *glyphRun,
988             DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
989             IUnknown* clientDrawingEffect) PURE;
990     STDMETHOD(DrawUnderline)(THIS_
991             void *clientDrawingContext,
992             FLOAT baselineOriginX,
993             FLOAT baselineOriginY,
994             DWRITE_UNDERLINE const *underline,
995             IUnknown *clientDrawingEffect) PURE;
996     STDMETHOD(DrawStrikethrough)(THIS_
997             void *clientDrawingContext,
998             FLOAT baselineOriginX,
999             FLOAT baselineOriginY,
1000             DWRITE_STRIKETHROUGH const *strikethrough,
1001             IUnknown* clientDrawingEffect) PURE;
1002     STDMETHOD(DrawInlineObject)(THIS_
1003             void *clientDrawingContext,
1004             FLOAT originX,
1005             FLOAT originY,
1006             IDWriteInlineObject *inlineObject,
1007             BOOL isSideways,
1008             BOOL isRightToLeft,
1009             IUnknown *clientDrawingEffect) PURE;
1010 
1011     END_INTERFACE
1012 };
1013 
1014 #undef  INTERFACE
1015 #define INTERFACE IDWriteGdiInterop
DECLARE_INTERFACE_(IDWriteGdiInterop,IUnknown)1016 DECLARE_INTERFACE_(IDWriteGdiInterop,IUnknown)
1017 {
1018     BEGIN_INTERFACE
1019 
1020 #ifndef __cplusplus
1021     /* IUnknown methods */
1022     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
1023     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
1024     STDMETHOD_(ULONG, Release)(THIS) PURE;
1025 #endif
1026 
1027     STDMETHOD(CreateFontFromLOGFONT)(THIS_
1028                                      LOGFONTW const *logFont,
1029                                      IDWriteFont **font) PURE;
1030 
1031     STDMETHOD(dummy1)(THIS);
1032     STDMETHOD(dummy2)(THIS);
1033 
1034     STDMETHOD(CreateFontFaceFromHdc)(THIS_
1035                                      HDC hdc,
1036                                      IDWriteFontFace **fontFace) PURE;
1037     /* rest dropped */
1038     END_INTERFACE
1039 };
1040 #ifdef COBJMACROS
1041 #define IDWriteGdiInterop_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1042 #define IDWriteGdiInterop_AddRef(This) (This)->lpVtbl->AddRef(This)
1043 #define IDWriteGdiInterop_Release(This) (This)->lpVtbl->Release(This)
1044 #define IDWriteGdiInterop_CreateFontFromLOGFONT(This,logFont,font) (This)->lpVtbl->CreateFontFromLOGFONT(This,logFont,font)
1045 #define IDWriteGdiInterop_CreateFontFaceFromHdc(This,hdc,fontFace) (This)->lpVtbl->CreateFontFaceFromHdc(This,hdc,fontFace)
1046 #endif /*COBJMACROS*/
1047 
1048 DEFINE_GUID(IID_IDWriteFactory, 0xb859ee5a,0xd838,0x4b5b,0xa2,0xe8,0x1a,0xdc,0x7d,0x93,0xdb,0x48);
1049 DEFINE_GUID(IID_IDWriteFactory3, 0x9a1b41c3,0xd3bb,0x466a,0x87,0xfc,0xfe,0x67,0x55,0x6a,0x3b,0x65);
1050 DEFINE_GUID(IID_IDWriteFontFace3, 0xd37d7598,0x09be,0x4222,0xa2,0x36,0x20,0x81,0x34,0x1c,0xc1,0xf2);
1051 DEFINE_GUID(IID_IDWritePixelSnapping, 0xeaf3a2da,0xecf4,0x4d24,0xb6,0x44,0xb3,0x4f,0x68,0x42,0x02,0x4b);
1052 DEFINE_GUID(IID_IDWriteTextRenderer, 0xef8a8135,0x5cc6,0x45fe,0x88,0x25,0xc5,0xa0,0x72,0x4e,0xb8,0x19);
1053 
1054 #endif /* __INC_DWRITE__ */
1055