[pango/win32-font-language: 2/3] pango: Add a C-compatible DirectWrite header




commit f7f6e0edcd8020cccfde232cb91751d2f73249c2
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Wed Nov 11 20:12:47 2020 +0800

    pango: Add a C-compatible DirectWrite header
    
    This is adapted from the one in libass, which was released into the
    public domain without a CopyRight attached.

 pango/dwrite_c.h | 736 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 736 insertions(+)
---
diff --git a/pango/dwrite_c.h b/pango/dwrite_c.h
new file mode 100644
index 00000000..bdb4e07a
--- /dev/null
+++ b/pango/dwrite_c.h
@@ -0,0 +1,736 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+/**
+ * Stripped version. Only definitions needed by libass. Contains fixes to
+ * make it compile with C. Also needed on MSVC.
+ */
+#ifndef __INC_DWRITE__
+#define __INC_DWRITE__
+
+#define DWRITEAPI DECLSPEC_IMPORT
+
+#include <unknwn.h>
+
+typedef struct IDWriteFactory IDWriteFactory;
+typedef struct IDWriteFont IDWriteFont;
+typedef struct IDWriteFontCollection IDWriteFontCollection;
+typedef struct IDWriteFontFace IDWriteFontFace;
+typedef struct IDWriteFontFamily IDWriteFontFamily;
+typedef struct IDWriteFontList IDWriteFontList;
+typedef struct IDWriteFontFile IDWriteFontFile;
+typedef struct IDWriteFontFileLoader IDWriteFontFileLoader;
+typedef struct IDWriteFontFileStream IDWriteFontFileStream;
+typedef struct IDWriteInlineObject IDWriteInlineObject;
+typedef struct IDWriteLocalizedStrings IDWriteLocalizedStrings;
+typedef struct IDWritePixelSnapping IDWritePixelSnapping;
+typedef struct IDWriteTextFormat IDWriteTextFormat;
+typedef struct IDWriteTextLayout IDWriteTextLayout;
+typedef struct IDWriteTextRenderer IDWriteTextRenderer;
+typedef struct IDWriteGdiInterop IDWriteGdiInterop;
+
+#include <dcommon.h>
+
+typedef enum DWRITE_INFORMATIONAL_STRING_ID {
+  DWRITE_INFORMATIONAL_STRING_NONE = 0,
+  DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE,
+  DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS,
+  DWRITE_INFORMATIONAL_STRING_TRADEMARK,
+  DWRITE_INFORMATIONAL_STRING_MANUFACTURER,
+  DWRITE_INFORMATIONAL_STRING_DESIGNER,
+  DWRITE_INFORMATIONAL_STRING_DESIGNER_URL,
+  DWRITE_INFORMATIONAL_STRING_DESCRIPTION,
+  DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL,
+  DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION,
+  DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL,
+  DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES,
+  DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES,
+  DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES,
+  DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES,
+  DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT,
+  DWRITE_INFORMATIONAL_STRING_FULL_NAME,
+  DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME,
+  DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME,
+  DWRITE_INFORMATIONAL_STRING_WWS_FAMILY_NAME,
+  DWRITE_INFORMATIONAL_STRING_DESIGN_SCRIPT_LANGUAGE_TAG,
+  DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG,
+} DWRITE_INFORMATIONAL_STRING_ID;
+
+typedef enum DWRITE_FACTORY_TYPE {
+  DWRITE_FACTORY_TYPE_SHARED = 0,
+  DWRITE_FACTORY_TYPE_ISOLATED
+} DWRITE_FACTORY_TYPE;
+
+typedef enum DWRITE_FONT_FACE_TYPE {
+  DWRITE_FONT_FACE_TYPE_CFF = 0,
+  DWRITE_FONT_FACE_TYPE_TRUETYPE,
+  DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION,
+  DWRITE_FONT_FACE_TYPE_TYPE1,
+  DWRITE_FONT_FACE_TYPE_VECTOR,
+  DWRITE_FONT_FACE_TYPE_BITMAP,
+  DWRITE_FONT_FACE_TYPE_UNKNOWN,
+  DWRITE_FONT_FACE_TYPE_RAW_CFF
+} DWRITE_FONT_FACE_TYPE;
+
+typedef enum DWRITE_FONT_SIMULATIONS {
+  DWRITE_FONT_SIMULATIONS_NONE      = 0x0000,
+  DWRITE_FONT_SIMULATIONS_BOLD      = 0x0001,
+  DWRITE_FONT_SIMULATIONS_OBLIQUE   = 0x0002
+} DWRITE_FONT_SIMULATIONS;
+
+typedef enum DWRITE_FONT_STRETCH {
+  DWRITE_FONT_STRETCH_UNDEFINED         = 0,
+  DWRITE_FONT_STRETCH_ULTRA_CONDENSED   = 1,
+  DWRITE_FONT_STRETCH_EXTRA_CONDENSED   = 2,
+  DWRITE_FONT_STRETCH_CONDENSED         = 3,
+  DWRITE_FONT_STRETCH_SEMI_CONDENSED    = 4,
+  DWRITE_FONT_STRETCH_NORMAL            = 5,
+  DWRITE_FONT_STRETCH_MEDIUM            = 5,
+  DWRITE_FONT_STRETCH_SEMI_EXPANDED     = 6,
+  DWRITE_FONT_STRETCH_EXPANDED          = 7,
+  DWRITE_FONT_STRETCH_EXTRA_EXPANDED    = 8,
+  DWRITE_FONT_STRETCH_ULTRA_EXPANDED    = 9
+} DWRITE_FONT_STRETCH;
+
+typedef enum DWRITE_FONT_STYLE {
+  DWRITE_FONT_STYLE_NORMAL = 0,
+  DWRITE_FONT_STYLE_OBLIQUE,
+  DWRITE_FONT_STYLE_ITALIC
+} DWRITE_FONT_STYLE;
+
+typedef enum DWRITE_FONT_WEIGHT {
+  DWRITE_FONT_WEIGHT_MEDIUM        = 500,
+  /* rest dropped */
+} DWRITE_FONT_WEIGHT;
+
+typedef struct DWRITE_FONT_METRICS {
+  UINT16 designUnitsPerEm;
+  UINT16 ascent;
+  UINT16 descent;
+  INT16  lineGap;
+  UINT16 capHeight;
+  UINT16 xHeight;
+  INT16  underlinePosition;
+  UINT16 underlineThickness;
+  INT16  strikethroughPosition;
+  UINT16 strikethroughThickness;
+} DWRITE_FONT_METRICS;
+
+typedef struct DWRITE_GLYPH_OFFSET DWRITE_GLYPH_OFFSET;
+
+typedef struct DWRITE_GLYPH_RUN {
+  IDWriteFontFace           *fontFace;
+  FLOAT                     fontEmSize;
+  UINT32                    glyphCount;
+  const UINT16              *glyphIndices;
+  const FLOAT               *glyphAdvances;
+  const DWRITE_GLYPH_OFFSET *glyphOffsets;
+  BOOL                      isSideways;
+  UINT32                    bidiLevel;
+} DWRITE_GLYPH_RUN;
+
+typedef struct DWRITE_GLYPH_RUN_DESCRIPTION DWRITE_GLYPH_RUN_DESCRIPTION;
+typedef struct DWRITE_HIT_TEST_METRICS DWRITE_HIT_TEST_METRICS;
+typedef struct DWRITE_LINE_METRICS DWRITE_LINE_METRICS;
+typedef struct DWRITE_MATRIX DWRITE_MATRIX;
+typedef struct DWRITE_STRIKETHROUGH DWRITE_STRIKETHROUGH;
+typedef struct DWRITE_TEXT_METRICS DWRITE_TEXT_METRICS;
+
+typedef struct DWRITE_TEXT_RANGE {
+  UINT32 startPosition;
+  UINT32 length;
+} DWRITE_TEXT_RANGE;
+
+typedef struct DWRITE_TRIMMING DWRITE_TRIMMING;
+typedef struct DWRITE_UNDERLINE DWRITE_UNDERLINE;
+
+#ifndef __MINGW_DEF_ARG_VAL
+#ifdef __cplusplus
+#define __MINGW_DEF_ARG_VAL(x) = x
+#else
+#define __MINGW_DEF_ARG_VAL(x)
+#endif
+#endif
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFactory
+DECLARE_INTERFACE_(IDWriteFactory,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFactory methods */
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(dummy1)(THIS);
+    STDMETHOD(dummy2)(THIS);
+    STDMETHOD(dummy3)(THIS);
+    STDMETHOD(dummy4)(THIS);
+    STDMETHOD(dummy5)(THIS);
+    STDMETHOD(dummy6)(THIS);
+    STDMETHOD(dummy7)(THIS);
+    STDMETHOD(dummy8)(THIS);
+    STDMETHOD(dummy9)(THIS);
+    STDMETHOD(dummy10)(THIS);
+    STDMETHOD(dummy11)(THIS);
+
+    STDMETHOD(CreateTextFormat)(THIS_
+        WCHAR const *fontFamilyName,
+        IDWriteFontCollection *fontCollection,
+        DWRITE_FONT_WEIGHT fontWeight,
+        DWRITE_FONT_STYLE fontStyle,
+        DWRITE_FONT_STRETCH fontStretch,
+        FLOAT fontSize,
+        WCHAR const *localeName,
+        IDWriteTextFormat **textFormat) PURE;
+
+    STDMETHOD(dummy12)(THIS);
+    STDMETHOD(GetGdiInterop)(THIS_
+        IDWriteGdiInterop** gdiInterop) PURE;
+
+    STDMETHOD(CreateTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT maxWidth,
+        FLOAT maxHeight,
+        IDWriteTextLayout **textLayout) PURE;
+
+    /* remainder dropped */
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteFactory_QueryInterface(This,riid,ppvObject) 
(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDWriteFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDWriteFactory_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteFactory_GetSystemFontCollection(This,fontCollection,checkForUpdates) 
(This)->lpVtbl->GetSystemFontCollection(This,fontCollection,checkForUpdates)
+#define 
IDWriteFactory_CreateTextFormat(This,fontFamilyName,fontCollection,fontWeight,fontStyle,fontStretch,fontSize,localeName,textFormat)
 
(This)->lpVtbl->CreateTextFormat(This,fontFamilyName,fontCollection,fontWeight,fontStyle,fontStretch,fontSize,localeName,textFormat)
+#define IDWriteFactory_GetGdiInterop(This,gdiInterop) (This)->lpVtbl->GetGdiInterop(This,gdiInterop)
+#define IDWriteFactory_CreateTextLayout(This,string,stringLength,textFormat,maxWidth,maxHeight,textLayout) 
(This)->lpVtbl->CreateTextLayout(This,string,stringLength,textFormat,maxWidth,maxHeight,textLayout)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFont
+DECLARE_INTERFACE_(IDWriteFont,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFont methods */
+    STDMETHOD(GetFontFamily)(THIS_
+        IDWriteFontFamily **fontFamily) PURE;
+
+    STDMETHOD_(DWRITE_FONT_WEIGHT, GetWeight)(THIS) PURE;
+    STDMETHOD_(DWRITE_FONT_STRETCH, GetStretch)(THIS) PURE;
+    STDMETHOD_(DWRITE_FONT_STYLE, GetStyle)(THIS) PURE;
+    STDMETHOD_(BOOL, IsSymbolFont)(THIS) PURE;
+
+    STDMETHOD(GetFaceNames)(THIS_
+        IDWriteLocalizedStrings **names) PURE;
+
+    STDMETHOD(GetInformationalStrings)(THIS_
+        DWRITE_INFORMATIONAL_STRING_ID informationalStringID,
+        IDWriteLocalizedStrings **informationalStrings,
+        BOOL *exists) PURE;
+
+    STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
+
+    STDMETHOD_(void, GetMetrics)(THIS_
+        DWRITE_FONT_METRICS *fontMetrics) PURE;
+
+    STDMETHOD(HasCharacter)(THIS_
+        UINT32 unicodeValue,
+        BOOL *exists) PURE;
+
+    STDMETHOD(CreateFontFace)(THIS_
+        IDWriteFontFace **fontFace) PURE;
+
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteFont_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDWriteFont_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDWriteFont_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteFont_CreateFontFace(This,fontFace) (This)->lpVtbl->CreateFontFace(This,fontFace)
+#define IDWriteFont_GetFaceNames(This,names) (This)->lpVtbl->GetFaceNames(This,names)
+#define IDWriteFont_GetFontFamily(This,fontFamily) (This)->lpVtbl->GetFontFamily(This,fontFamily)
+#define IDWriteFont_GetInformationalStrings(This,informationalStringID,informationalStrings,exists) 
(This)->lpVtbl->GetInformationalStrings(This,informationalStringID,informationalStrings,exists)
+#define IDWriteFont_GetMetrics(This,fontMetrics) (This)->lpVtbl->GetMetrics(This,fontMetrics)
+#define IDWriteFont_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
+#define IDWriteFont_GetStretch(This) (This)->lpVtbl->GetStretch(This)
+#define IDWriteFont_GetStyle(This) (This)->lpVtbl->GetStyle(This)
+#define IDWriteFont_GetWeight(This) (This)->lpVtbl->GetWeight(This)
+#define IDWriteFont_HasCharacter(This,unicodeValue,exists) 
(This)->lpVtbl->HasCharacter(This,unicodeValue,exists)
+#define IDWriteFont_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontCollection
+DECLARE_INTERFACE_(IDWriteFontCollection,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontCollection methods */
+    STDMETHOD_(UINT32, GetFontFamilyCount)(THIS) PURE;
+
+    STDMETHOD(GetFontFamily)(THIS_
+        UINT32 index,
+        IDWriteFontFamily **fontFamily) PURE;
+
+    STDMETHOD(FindFamilyName)(THIS_
+        WCHAR const *familyName,
+        UINT32 *index,
+        BOOL *exists) PURE;
+
+    STDMETHOD(GetFontFromFontFace)(THIS_
+        IDWriteFontFace* fontFace,
+        IDWriteFont **font) PURE;
+
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteFontCollection_QueryInterface(This,riid,ppvObject) 
(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDWriteFontCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDWriteFontCollection_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteFontCollection_FindFamilyName(This,familyName,index,exists) 
(This)->lpVtbl->FindFamilyName(This,familyName,index,exists)
+#define IDWriteFontCollection_GetFontFamily(This,index,fontFamily) 
(This)->lpVtbl->GetFontFamily(This,index,fontFamily)
+#define IDWriteFontCollection_GetFontFamilyCount(This) (This)->lpVtbl->GetFontFamilyCount(This)
+#define IDWriteFontCollection_GetFontFromFontFace(This,fontFace,font) 
(This)->lpVtbl->GetFontFromFontFace(This,fontFace,font)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontFace
+DECLARE_INTERFACE_(IDWriteFontFace,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontFace methods */
+    STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
+
+    STDMETHOD(GetFiles)(THIS_
+        UINT32 *numberOfFiles,
+        IDWriteFontFile **fontFiles) PURE;
+
+    STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
+
+    /* rest dropped */
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteFontFace_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteFontFace_GetType(This) (This)->lpVtbl->GetType(This)
+#define IDWriteFontFace_GetFiles(This,fontFiles,b) (This)->lpVtbl->GetFiles(This,fontFiles,b)
+#define IDWriteFontFace_GetIndex(This) (This)->lpVtbl->GetIndex(This)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontFamily
+DECLARE_INTERFACE_(IDWriteFontFamily,IDWriteFontList)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFontList methods */
+    STDMETHOD(GetFontCollection)(THIS_
+        IDWriteFontCollection** fontCollection) PURE;
+
+    STDMETHOD_(UINT32, GetFontCount)(THIS) PURE;
+
+    STDMETHOD(GetFont)(THIS_
+        UINT32 index,
+        IDWriteFont **font) PURE;
+#endif
+
+    /* IDWriteFontFamily methods */
+    STDMETHOD(GetFamilyNames)(THIS_
+        IDWriteLocalizedStrings **names) PURE;
+
+    /* rest dropped */
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteFontFamily_QueryInterface(This,riid,ppvObject) 
(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDWriteFontFamily_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDWriteFontFamily_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteFontFamily_GetFont(This,index,font) (This)->lpVtbl->GetFont(This,index,font)
+#define IDWriteFontFamily_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
+#define IDWriteFontFamily_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontFile
+DECLARE_INTERFACE_(IDWriteFontFile,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontFile methods */
+    STDMETHOD(GetReferenceKey)(THIS_
+        void const **fontFileReferenceKey,
+        UINT32 *fontFileReferenceKeySize) PURE;
+
+    STDMETHOD(GetLoader)(THIS_
+        IDWriteFontFileLoader **fontFileLoader) PURE;
+
+    /* rest dropped */
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteFontFile_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteFontFile_GetLoader(This,fontFileLoader) (This)->lpVtbl->GetLoader(This,fontFileLoader)
+#define IDWriteFontFile_GetReferenceKey(This,fontFileReferenceKey,fontFileReferenceKeySize) 
(This)->lpVtbl->GetReferenceKey(This,fontFileReferenceKey,fontFileReferenceKeySize)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontFileLoader
+DECLARE_INTERFACE_(IDWriteFontFileLoader,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontFileLoader methods */
+    STDMETHOD(CreateStreamFromKey)(THIS_
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteFontFileStream **fontFileStream) PURE;
+
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteFontFileLoader_QueryInterface(This,riid,ppvObject) 
(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDWriteFontFileLoader_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDWriteFontFileLoader_Release(This) (This)->lpVtbl->Release(This)
+#define 
IDWriteFontFileLoader_CreateStreamFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,fontFileStream) 
(This)->lpVtbl->CreateStreamFromKey(This,fontFileReferenceKey,fontFileReferenceKeySize,fontFileStream)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontFileStream
+DECLARE_INTERFACE_(IDWriteFontFileStream,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontFileStream methods */
+    STDMETHOD(ReadFileFragment)(THIS_
+        void const **fragmentStart,
+        UINT64 fileOffset,
+        UINT64 fragmentSize,
+        void** fragmentContext) PURE;
+
+    STDMETHOD_(void, ReleaseFileFragment)(THIS_
+        void *fragmentContext) PURE;
+
+    STDMETHOD(GetFileSize)(THIS_
+        UINT64 *fileSize) PURE;
+
+    STDMETHOD(GetLastWriteTime)(THIS_
+        UINT64 *lastWriteTime) PURE;
+
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteFontFileStream_QueryInterface(This,riid,ppvObject) 
(This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDWriteFontFileStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDWriteFontFileStream_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteFontFileStream_GetFileSize(This,fileSize) (This)->lpVtbl->GetFileSize(This,fileSize)
+#define IDWriteFontFileStream_ReadFileFragment(This,fragmentStart,fileOffset,fragmentSize,fragmentContext) 
(This)->lpVtbl->ReadFileFragment(This,fragmentStart,fileOffset,fragmentSize,fragmentContext)
+#define IDWriteFontFileStream_ReleaseFileFragment(This,fragmentContext) 
(This)->lpVtbl->ReleaseFileFragment(This,fragmentContext)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteLocalizedStrings
+DECLARE_INTERFACE_(IDWriteLocalizedStrings,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteLocalizedStrings methods */
+    STDMETHOD_(UINT32, GetCount)(THIS) PURE;
+
+    STDMETHOD(dummy1)(THIS);
+    STDMETHOD(dummy2)(THIS);
+    STDMETHOD(dummy3)(THIS);
+
+    STDMETHOD(GetStringLength)(THIS_
+        UINT32 index,
+        UINT32* length
+        ) PURE;
+
+    STDMETHOD(GetString)(THIS_
+        UINT32 index,
+        WCHAR *stringBuffer,
+        UINT32 size) PURE;
+
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteLocalizedStrings_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteLocalizedStrings_GetCount(This) (This)->lpVtbl->GetCount(This)
+#define IDWriteLocalizedStrings_GetString(This,index,stringBuffer,size) 
(This)->lpVtbl->GetString(This,index,stringBuffer,size)
+#define IDWriteLocalizedStrings_GetStringLength(This,index,length) 
(This)->lpVtbl->GetStringLength(This,index,length)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteTextFormat
+DECLARE_INTERFACE_(IDWriteTextFormat,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteTextFormat methods */
+    /* rest dropped */
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteTextFormat_Release(This) (This)->lpVtbl->Release(This)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteTextLayout
+DECLARE_INTERFACE_(IDWriteTextLayout,IDWriteTextFormat)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteTextFormat methods */
+    STDMETHOD(dummy1)(THIS);
+    STDMETHOD(dummy2)(THIS);
+    STDMETHOD(dummy3)(THIS);
+    STDMETHOD(dummy4)(THIS);
+    STDMETHOD(dummy5)(THIS);
+    STDMETHOD(dummy6)(THIS);
+    STDMETHOD(dummy7)(THIS);
+    STDMETHOD(dummy8)(THIS);
+    STDMETHOD(dummy9)(THIS);
+    STDMETHOD(dummy10)(THIS);
+    STDMETHOD(dummy11)(THIS);
+    STDMETHOD(dummy12)(THIS);
+    STDMETHOD(dummy13)(THIS);
+    STDMETHOD(dummy14)(THIS);
+    STDMETHOD(dummy15)(THIS);
+    STDMETHOD(dummy16)(THIS);
+    STDMETHOD(dummy17)(THIS);
+    STDMETHOD(dummy18)(THIS);
+    STDMETHOD(dummy19)(THIS);
+    STDMETHOD(dummy20)(THIS);
+    STDMETHOD(dummy21)(THIS);
+    STDMETHOD(dummy22)(THIS);
+    STDMETHOD(dummy23)(THIS);
+    STDMETHOD(dummy24)(THIS);
+    STDMETHOD(dummy25)(THIS);
+#endif
+
+    /* IDWriteTextLayout methods */
+    STDMETHOD(dummy26)(THIS);
+    STDMETHOD(dummy27)(THIS);
+    STDMETHOD(dummy28)(THIS);
+    STDMETHOD(dummy29)(THIS);
+    STDMETHOD(dummy30)(THIS);
+    STDMETHOD(dummy31)(THIS);
+    STDMETHOD(dummy32)(THIS);
+    STDMETHOD(dummy33)(THIS);
+    STDMETHOD(dummy34)(THIS);
+    STDMETHOD(dummy35)(THIS);
+    STDMETHOD(dummy36)(THIS);
+    STDMETHOD(dummy37)(THIS);
+    STDMETHOD(dummy38)(THIS);
+    STDMETHOD(dummy39)(THIS);
+    STDMETHOD(dummy40)(THIS);
+    STDMETHOD(dummy41)(THIS);
+    STDMETHOD(dummy42)(THIS);
+    STDMETHOD(dummy43)(THIS);
+    STDMETHOD(dummy44)(THIS);
+    STDMETHOD(dummy45)(THIS);
+    STDMETHOD(dummy46)(THIS);
+    STDMETHOD(dummy47)(THIS);
+    STDMETHOD(dummy48)(THIS);
+    STDMETHOD(dummy49)(THIS);
+    STDMETHOD(dummy50)(THIS);
+    STDMETHOD(dummy51)(THIS);
+    STDMETHOD(dummy52)(THIS);
+    STDMETHOD(dummy53)(THIS);
+    STDMETHOD(dummy54)(THIS);
+    STDMETHOD(dummy55)(THIS);
+    STDMETHOD(Draw)(THIS_
+            void *clientDrawingContext,
+            IDWriteTextRenderer *renderer,
+            FLOAT originX,
+            FLOAT originY) PURE;
+    /* rest dropped */
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDWriteTextLayout_Release(This) (This)->lpVtbl->Release(This)
+#define IDWriteTextLayout_Draw(This,clientDrawingContext,renderer,originX,originY) 
(This)->lpVtbl->Draw(This,clientDrawingContext,renderer,originX,originY)
+#endif /*COBJMACROS*/
+
+#undef  INTERFACE
+#define INTERFACE IDWriteTextRenderer
+DECLARE_INTERFACE_(IDWriteTextRenderer,IDWritePixelSnapping)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWritePixelSnapping methods */
+    STDMETHOD(IsPixelSnappingDisabled)(THIS_
+            void *clientDrawingContext,
+            BOOL *isDisabled) PURE;
+    STDMETHOD(GetCurrentTransform)(THIS_
+            void *clientDrawingContext,
+            DWRITE_MATRIX *transform) PURE;
+    STDMETHOD(GetPixelsPerDip)(THIS_
+            void *clientDrawingContext,
+            FLOAT *pixelsPerDip) PURE;
+#endif
+
+    /* IDWriteTextRenderer methods */
+    STDMETHOD(DrawGlyphRun)(THIS_
+            void *clientDrawingContext,
+            FLOAT baselineOriginX,
+            FLOAT baselineOriginY,
+            DWRITE_MEASURING_MODE measuringMode,
+            DWRITE_GLYPH_RUN const *glyphRun,
+            DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
+            IUnknown* clientDrawingEffect) PURE;
+    STDMETHOD(DrawUnderline)(THIS_
+            void *clientDrawingContext,
+            FLOAT baselineOriginX,
+            FLOAT baselineOriginY,
+            DWRITE_UNDERLINE const *underline,
+            IUnknown *clientDrawingEffect) PURE;
+    STDMETHOD(DrawStrikethrough)(THIS_
+            void *clientDrawingContext,
+            FLOAT baselineOriginX,
+            FLOAT baselineOriginY,
+            DWRITE_STRIKETHROUGH const *strikethrough,
+            IUnknown* clientDrawingEffect) PURE;
+    STDMETHOD(DrawInlineObject)(THIS_
+            void *clientDrawingContext,
+            FLOAT originX,
+            FLOAT originY,
+            IDWriteInlineObject *inlineObject,
+            BOOL isSideways,
+            BOOL isRightToLeft,
+            IUnknown *clientDrawingEffect) PURE;
+
+    END_INTERFACE
+};
+
+#undef  INTERFACE
+#define INTERFACE IDWriteGdiInterop
+DECLARE_INTERFACE_(IDWriteGdiInterop,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteGdiInterop methods */
+    STDMETHOD(CreateFontFromLOGFONT)(THIS_
+        LOGFONTW const* logFont,
+        IDWriteFont** font
+        ) PURE;
+
+    /* others excluded for now */
+    END_INTERFACE
+};
+#ifdef COBJMACROS
+#define IDGdiInterop_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDGdiInterop_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDGdiInterop_Release(This) (This)->lpVtbl->Release(This)
+#define IDGdiInterop_CreateFontFromLOGFONT(This,logfont,font) 
(This)->lpVtbl->CreateFontFromLOGFONT(This,logfont,font)
+#endif /*COBJMACROS*/
+
+DEFINE_GUID(IID_IDWriteFactory, 0xb859ee5a,0xd838,0x4b5b,0xa2,0xe8,0x1a,0xdc,0x7d,0x93,0xdb,0x48);
+DEFINE_GUID(IID_IDWritePixelSnapping, 0xeaf3a2da,0xecf4,0x4d24,0xb6,0x44,0xb3,0x4f,0x68,0x42,0x02,0x4b);
+DEFINE_GUID(IID_IDWriteTextRenderer, 0xef8a8135,0x5cc6,0x45fe,0x88,0x25,0xc5,0xa0,0x72,0x4e,0xb8,0x19);
+DEFINE_GUID(IID_IDWriteGdiInterop, 0x1edd9491,0x9853,0x4299,0x89,0x8f,0x64,0x32,0x98,0x3b,0x6f,0x3a);
+DEFINE_GUID(IID_IDWriteFont, 0xacd16696,0x8c14,0x4f5d,0x87,0x7e,0xfe,0x3f,0xc1,0xd3,0x27,0x37);
+DEFINE_GUID(IID_IDWriteLocalizedStrings, 0x08256209,0x099a,0x4b34,0xb8,0x6d,0xc2,0x2b,0x11,0x0e,0x77,0x71);
+
+/* This is from MS's dwrite.h, which is only usable in C++ */
+HRESULT DWRITEAPI WINAPI
+DWriteCreateFactory                         (DWRITE_FACTORY_TYPE factoryType,
+                                             REFIID              iid,
+                                             IUnknown          **factory);
+
+#endif /* __INC_DWRITE__ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]