summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac8
-rw-r--r--dwrite.diff293
-rw-r--r--libass/Makefile.am2
-rw-r--r--libass/ass_directwrite.c (renamed from libass/ass_directwrite.cpp)429
-rw-r--r--libass/dwrite.h668
5 files changed, 1205 insertions, 195 deletions
diff --git a/configure.ac b/configure.ac
index 61a8533..4c7e37d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,6 @@ AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
-AC_PROG_CXX
AC_PROG_CPP
AM_PROG_CC_C_O
AM_PROG_AS
@@ -178,14 +177,12 @@ fi
if test x$enable_directwrite != xno; then
-AC_LANG_PUSH([C++])
-CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions"
# Linking to DirectWrite directly only works from Windows
AC_MSG_CHECKING([for DIRECTWRITE])
AC_LINK_IFELSE([
AC_LANG_PROGRAM(
- [[#include <dwrite.h>]],
- [[DWRITE_FACTORY_TYPE_SHARED;]],)
+ [[#include <windows.h>]],
+ [[;]],)
], [
AC_DEFINE(CONFIG_DIRECTWRITE, 1, [found DirectWrite])
directwrite=true
@@ -194,7 +191,6 @@ AC_LINK_IFELSE([
directwrite=false
AC_MSG_RESULT([no])
])
-AC_LANG_POP([C++])
fi
AM_CONDITIONAL([DIRECTWRITE], [test x$directwrite = xtrue])
diff --git a/dwrite.diff b/dwrite.diff
new file mode 100644
index 0000000..99ee65b
--- /dev/null
+++ b/dwrite.diff
@@ -0,0 +1,293 @@
+--- /mnt/ssd/mxe/./usr/i686-w64-mingw32.static/include/dwrite.h 2015-06-24 14:42:38.197360516 +0200
++++ libass/dwrite.h 2015-07-11 21:29:54.004831430 +0200
+@@ -662,8 +662,8 @@
+ #define IDWriteBitmapRenderTarget_Release(This) (This)->lpVtbl->Release(This)
+ #define IDWriteBitmapRenderTarget_DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuringMode,glyphRun,renderingParams,textColor,blackBoxRect) (This)->lpVtbl->DrawGlyphRun(This,baselineOriginX,baselineOriginY,measuringMode,glyphRun,renderingParams,textColor,blackBoxRect)
+ #define IDWriteBitmapRenderTarget_GetCurrentTransform(This,transform) (This)->lpVtbl->GetCurrentTransform(This,transform)
+-#define IDWriteBitmapRenderTarget_GetMemoryDC() (This)->lpVtbl->GetMemoryDC(This)
+-#define IDWriteBitmapRenderTarget_GetPixelsPerDip() (This)->lpVtbl->GetPixelsPerDip(This)
++#define IDWriteBitmapRenderTarget_GetMemoryDC(This) (This)->lpVtbl->GetMemoryDC(This)
++#define IDWriteBitmapRenderTarget_GetPixelsPerDip(This) (This)->lpVtbl->GetPixelsPerDip(This)
+ #define IDWriteBitmapRenderTarget_GetSize(This,size) (This)->lpVtbl->GetSize(This,size)
+ #define IDWriteBitmapRenderTarget_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
+ #define IDWriteBitmapRenderTarget_SetCurrentTransform(This,transform) (This)->lpVtbl->SetCurrentTransform(This,transform)
+@@ -880,12 +880,12 @@
+ #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)->lpVtbl->GetSimulations(This)
+-#define IDWriteFont_GetStretch() (This)->lpVtbl->GetStretch(This)
+-#define IDWriteFont_GetStyle() (This)->lpVtbl->GetStyle(This)
+-#define IDWriteFont_GetWeight() (This)->lpVtbl->GetWeight(This)
++#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)->lpVtbl->IsSymbolFont(This)
++#define IDWriteFont_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
+ #endif /*COBJMACROS*/
+
+ #undef INTERFACE
+@@ -925,7 +925,7 @@
+ #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)->lpVtbl->GetFontFamilyCount(This)
++#define IDWriteFontCollection_GetFontFamilyCount(This) (This)->lpVtbl->GetFontFamilyCount(This)
+ #define IDWriteFontCollection_GetFontFromFontFace(This,fontFace,font) (This)->lpVtbl->GetFontFromFontFace(This,fontFace,font)
+ #endif /*COBJMACROS*/
+
+@@ -1020,18 +1020,18 @@
+ #define IDWriteFontFace_AddRef(This) (This)->lpVtbl->AddRef(This)
+ #define IDWriteFontFace_Release(This) (This)->lpVtbl->Release(This)
+ #define IDWriteFontFace_GetDesignGlyphMetrics(This,glyphIndices,glyphCount,glyphMetrics,isSideways) (This)->lpVtbl->GetDesignGlyphMetrics(This,glyphIndices,glyphCount,glyphMetrics,isSideways)
+-#define IDWriteFontFace_GetFiles(This,fontFiles) (This)->lpVtbl->GetFiles(This,fontFiles)
++#define IDWriteFontFace_GetFiles(This,fontFiles,b) (This)->lpVtbl->GetFiles(This,fontFiles,b)
+ #define IDWriteFontFace_GetGdiCompatibleMetrics(This,emSize,pixelsPerDip,transform,fontFaceMetrics) (This)->lpVtbl->GetGdiCompatibleMetrics(This,emSize,pixelsPerDip,transform,fontFaceMetrics)
+ #define IDWriteFontFace_GetGdiCompatibleGlyphMetrics(This,emSize,pixelsPerDip,transform,useGdiNatural,glyphIndices,glyphCount,glyphMetrics,isSideways) (This)->lpVtbl->GetGdiCompatibleGlyphMetrics(This,emSize,pixelsPerDip,transform,useGdiNatural,glyphIndices,glyphCount,glyphMetrics,isSideways)
+-#define IDWriteFontFace_GetGlyphCount() (This)->lpVtbl->GetGlyphCount(This)
++#define IDWriteFontFace_GetGlyphCount(This) (This)->lpVtbl->GetGlyphCount(This)
+ #define IDWriteFontFace_GetGlyphIndices(This,codePoints,codePointCount,glyphIndices) (This)->lpVtbl->GetGlyphIndices(This,codePoints,codePointCount,glyphIndices)
+ #define IDWriteFontFace_GetGlyphRunOutline(This,emSize,glyphIndices,glyphOffsets,glyphCount,isSideways,isRightToLeft,geometrySink) (This)->lpVtbl->GetGlyphRunOutline(This,emSize,glyphIndices,glyphOffsets,glyphCount,isSideways,isRightToLeft,geometrySink)
+-#define IDWriteFontFace_GetIndex() (This)->lpVtbl->GetIndex(This)
++#define IDWriteFontFace_GetIndex(This) (This)->lpVtbl->GetIndex(This)
+ #define IDWriteFontFace_GetMetrics(This,fontFaceMetrics) (This)->lpVtbl->GetMetrics(This,fontFaceMetrics)
+ #define IDWriteFontFace_GetRecommendedRenderingMode(This,emSize,pixelsPerDip,measuringMode,renderingParams,renderingMode) (This)->lpVtbl->GetRecommendedRenderingMode(This,emSize,pixelsPerDip,measuringMode,renderingParams,renderingMode)
+-#define IDWriteFontFace_GetSimulations() (This)->lpVtbl->GetSimulations(This)
+-#define IDWriteFontFace_GetType() (This)->lpVtbl->GetType(This)
+-#define IDWriteFontFace_IsSymbolFont() (This)->lpVtbl->IsSymbolFont(This)
++#define IDWriteFontFace_GetSimulations(This) (This)->lpVtbl->GetSimulations(This)
++#define IDWriteFontFace_GetType(This) (This)->lpVtbl->GetType(This)
++#define IDWriteFontFace_IsSymbolFont(This) (This)->lpVtbl->IsSymbolFont(This)
+ #define IDWriteFontFace_ReleaseFontTable(This,tableContext) (This)->lpVtbl->ReleaseFontTable(This,tableContext)
+ #define IDWriteFontFace_TryGetFontTable(This,openTypeTableTag,tableData,tableSize,tableContext,exists) (This)->lpVtbl->TryGetFontTable(This,openTypeTableTag,tableData,tableSize,tableContext,exists)
+ #endif /*COBJMACROS*/
+@@ -1067,7 +1067,7 @@
+ #define IDWriteFontList_Release(This) (This)->lpVtbl->Release(This)
+ #define IDWriteFontList_GetFont(This,index,font) (This)->lpVtbl->GetFont(This,index,font)
+ #define IDWriteFontList_GetFontCollection(This,fontCollection) (This)->lpVtbl->GetFontCollection(This,fontCollection)
+-#define IDWriteFontList_GetFontCount() (This)->lpVtbl->GetFontCount(This)
++#define IDWriteFontList_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
+ #endif /*COBJMACROS*/
+
+ #undef INTERFACE
+@@ -1117,7 +1117,7 @@
+ #define IDWriteFontFamily_Release(This) (This)->lpVtbl->Release(This)
+ #define IDWriteFontFamily_GetFont(This,index,font) (This)->lpVtbl->GetFont(This,index,font)
+ #define IDWriteFontFamily_GetFontCollection(This,fontCollection) (This)->lpVtbl->GetFontCollection(This,fontCollection)
+-#define IDWriteFontFamily_GetFontCount() (This)->lpVtbl->GetFontCount(This)
++#define IDWriteFontFamily_GetFontCount(This) (This)->lpVtbl->GetFontCount(This)
+ #define IDWriteFontFamily_GetFamilyNames(This,names) (This)->lpVtbl->GetFamilyNames(This,names)
+ #define IDWriteFontFamily_GetFirstMatchingFont(This,weight,stretch,style,matchingFont) (This)->lpVtbl->GetFirstMatchingFont(This,weight,stretch,style,matchingFont)
+ #define IDWriteFontFamily_GetMatchingFonts(This,weight,stretch,style,matchingFonts) (This)->lpVtbl->GetMatchingFonts(This,weight,stretch,style,matchingFonts)
+@@ -1175,7 +1175,7 @@
+ #endif
+
+ /* IDWriteFontFileLoader methods */
+- STDMETHOD(CreateStreamFromKey)(
++ STDMETHOD(CreateStreamFromKey)(THIS_
+ void const *fontFileReferenceKey,
+ UINT32 fontFileReferenceKeySize,
+ IDWriteFontFileStream **fontFileStream) PURE;
+@@ -1490,7 +1490,7 @@
+ #define IDWriteLocalizedStrings_AddRef(This) (This)->lpVtbl->AddRef(This)
+ #define IDWriteLocalizedStrings_Release(This) (This)->lpVtbl->Release(This)
+ #define IDWriteLocalizedStrings_FindLocaleName(This,localeName,index,exists) (This)->lpVtbl->FindLocaleName(This,localeName,index,exists)
+-#define IDWriteLocalizedStrings_GetCount() (This)->lpVtbl->GetCount(This)
++#define IDWriteLocalizedStrings_GetCount(This) (This)->lpVtbl->GetCount(This)
+ #define IDWriteLocalizedStrings_GetLocaleName(This,index,localeName,size) (This)->lpVtbl->GetLocaleName(This,index,localeName,size)
+ #define IDWriteLocalizedStrings_GetLocaleNameLength(This,index,length) (This)->lpVtbl->GetLocaleNameLength(This,index,length)
+ #define IDWriteLocalizedStrings_GetString(This,index,stringBuffer,size) (This)->lpVtbl->GetString(This,index,stringBuffer,size)
+@@ -1581,11 +1581,11 @@
+ #define IDWriteRenderingParams_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+ #define IDWriteRenderingParams_AddRef(This) (This)->lpVtbl->AddRef(This)
+ #define IDWriteRenderingParams_Release(This) (This)->lpVtbl->Release(This)
+-#define IDWriteRenderingParams_GetClearTypeLevel() (This)->lpVtbl->GetClearTypeLevel(This)
+-#define IDWriteRenderingParams_GetEnhancedContrast() (This)->lpVtbl->GetEnhancedContrast(This)
+-#define IDWriteRenderingParams_GetGamma() (This)->lpVtbl->GetGamma(This)
+-#define IDWriteRenderingParams_GetPixelGeometry() (This)->lpVtbl->GetPixelGeometry(This)
+-#define IDWriteRenderingParams_GetRenderingMode() (This)->lpVtbl->GetRenderingMode(This)
++#define IDWriteRenderingParams_GetClearTypeLevel(This) (This)->lpVtbl->GetClearTypeLevel(This)
++#define IDWriteRenderingParams_GetEnhancedContrast(This) (This)->lpVtbl->GetEnhancedContrast(This)
++#define IDWriteRenderingParams_GetGamma(This) (This)->lpVtbl->GetGamma(This)
++#define IDWriteRenderingParams_GetPixelGeometry(This) (This)->lpVtbl->GetPixelGeometry(This)
++#define IDWriteRenderingParams_GetRenderingMode(This) (This)->lpVtbl->GetRenderingMode(This)
+ #endif /*COBJMACROS*/
+
+ #undef INTERFACE
+@@ -1679,7 +1679,7 @@
+ #define IDWriteTextAnalysisSource_Release(This) (This)->lpVtbl->Release(This)
+ #define IDWriteTextAnalysisSource_GetLocaleName(This,textPosition,textLength,localeName) (This)->lpVtbl->GetLocaleName(This,textPosition,textLength,localeName)
+ #define IDWriteTextAnalysisSource_GetNumberSubstitution(This,textPosition,textLength,numberSubstitution) (This)->lpVtbl->GetNumberSubstitution(This,textPosition,textLength,numberSubstitution)
+-#define IDWriteTextAnalysisSource_GetParagraphReadingDirection() (This)->lpVtbl->GetParagraphReadingDirection(This)
++#define IDWriteTextAnalysisSource_GetParagraphReadingDirection(This) (This)->lpVtbl->GetParagraphReadingDirection(This)
+ #define IDWriteTextAnalysisSource_GetTextAtPosition(This,textPosition,textString,textLength) (This)->lpVtbl->GetTextAtPosition(This,textPosition,textString,textLength)
+ #define IDWriteTextAnalysisSource_GetTextBeforePosition(This,textPosition,textString,textLength) (This)->lpVtbl->GetTextBeforePosition(This,textPosition,textString,textLength)
+ #endif /*COBJMACROS*/
+@@ -1866,23 +1866,23 @@
+ #define IDWriteTextFormat_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+ #define IDWriteTextFormat_AddRef(This) (This)->lpVtbl->AddRef(This)
+ #define IDWriteTextFormat_Release(This) (This)->lpVtbl->Release(This)
+-#define IDWriteTextFormat_GetFlowDirection() (This)->lpVtbl->GetFlowDirection(This)
++#define IDWriteTextFormat_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
+ #define IDWriteTextFormat_GetFontCollection(This,fontCollection) (This)->lpVtbl->GetFontCollection(This,fontCollection)
+ #define IDWriteTextFormat_GetFontFamilyName(This,fontFamilyName,nameSize) (This)->lpVtbl->GetFontFamilyName(This,fontFamilyName,nameSize)
+-#define IDWriteTextFormat_GetFontFamilyNameLength() (This)->lpVtbl->GetFontFamilyNameLength(This)
+-#define IDWriteTextFormat_GetFontSize() (This)->lpVtbl->GetFontSize(This)
+-#define IDWriteTextFormat_GetFontStretch() (This)->lpVtbl->GetFontStretch(This)
+-#define IDWriteTextFormat_GetFontStyle() (This)->lpVtbl->GetFontStyle(This)
+-#define IDWriteTextFormat_GetFontWeight() (This)->lpVtbl->GetFontWeight(This)
+-#define IDWriteTextFormat_GetIncrementalTabStop() (This)->lpVtbl->GetIncrementalTabStop(This)
++#define IDWriteTextFormat_GetFontFamilyNameLength(This) (This)->lpVtbl->GetFontFamilyNameLength(This)
++#define IDWriteTextFormat_GetFontSize(This) (This)->lpVtbl->GetFontSize(This)
++#define IDWriteTextFormat_GetFontStretch(This) (This)->lpVtbl->GetFontStretch(This)
++#define IDWriteTextFormat_GetFontStyle(This) (This)->lpVtbl->GetFontStyle(This)
++#define IDWriteTextFormat_GetFontWeight(This) (This)->lpVtbl->GetFontWeight(This)
++#define IDWriteTextFormat_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
+ #define IDWriteTextFormat_GetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline) (This)->lpVtbl->GetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline)
+ #define IDWriteTextFormat_GetLocaleName(This,localeName,nameSize) (This)->lpVtbl->GetLocaleName(This,localeName,nameSize)
+-#define IDWriteTextFormat_GetLocaleNameLength() (This)->lpVtbl->GetLocaleNameLength(This)
+-#define IDWriteTextFormat_GetParagraphAlignment() (This)->lpVtbl->GetParagraphAlignment(This)
+-#define IDWriteTextFormat_GetReadingDirection() (This)->lpVtbl->GetReadingDirection(This)
+-#define IDWriteTextFormat_GetTextAlignment() (This)->lpVtbl->GetTextAlignment(This)
++#define IDWriteTextFormat_GetLocaleNameLength(This) (This)->lpVtbl->GetLocaleNameLength(This)
++#define IDWriteTextFormat_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
++#define IDWriteTextFormat_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
++#define IDWriteTextFormat_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
+ #define IDWriteTextFormat_GetTrimming(This,trimmingOptions,trimmingSign) (This)->lpVtbl->GetTrimming(This,trimmingOptions,trimmingSign)
+-#define IDWriteTextFormat_GetWordWrapping() (This)->lpVtbl->GetWordWrapping(This)
++#define IDWriteTextFormat_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
+ #define IDWriteTextFormat_SetFlowDirection(This,flowDirection) (This)->lpVtbl->SetFlowDirection(This,flowDirection)
+ #define IDWriteTextFormat_SetIncrementalTabStop(This,incrementalTabStop) (This)->lpVtbl->SetIncrementalTabStop(This,incrementalTabStop)
+ #define IDWriteTextFormat_SetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline) (This)->lpVtbl->SetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline)
+@@ -1997,32 +1997,32 @@
+ DWRITE_TEXT_RANGE textRange) PURE;
+ STDMETHOD_(FLOAT, GetMaxWidth)(THIS) PURE;
+ STDMETHOD_(FLOAT, GetMaxHeight)(THIS) PURE;
+- STDMETHOD(GetFontCollection)(THIS_
++ STDMETHOD(GetFontCollection2)(THIS_
+ UINT32 currentPosition,
+ IDWriteFontCollection** fontCollection,
+ DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+- STDMETHOD(GetFontFamilyNameLength)(THIS_
++ STDMETHOD(GetFontFamilyNameLength2)(THIS_
+ UINT32 currentPosition,
+ UINT32 *nameLength,
+ DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+- STDMETHOD(GetFontFamilyName)(THIS_
++ STDMETHOD(GetFontFamilyName2)(THIS_
+ UINT32 currentPosition,
+ WCHAR *fontFamilyName,
+ UINT32 nameSize,
+ DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+- STDMETHOD(GetFontWeight)(THIS_
++ STDMETHOD(GetFontWeight2)(THIS_
+ UINT32 currentPosition,
+ DWRITE_FONT_WEIGHT *fontWeight,
+ DWRITE_TEXT_RANGE* textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+- STDMETHOD(GetFontStyle)(THIS_
++ STDMETHOD(GetFontStyle2)(THIS_
+ UINT32 currentPosition,
+ DWRITE_FONT_STYLE *fontStyle,
+ DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+- STDMETHOD(GetFontStretch)(THIS_
++ STDMETHOD(GetFontStretch2)(THIS_
+ UINT32 currentPosition,
+ DWRITE_FONT_STRETCH* fontStretch,
+ DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+- STDMETHOD(GetFontSize)(THIS_
++ STDMETHOD(GetFontSize2)(THIS_
+ UINT32 currentPosition,
+ FLOAT *fontSize,
+ DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+@@ -2046,11 +2046,11 @@
+ UINT32 currentPosition,
+ IDWriteTypography **typography,
+ DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+- STDMETHOD(GetLocaleNameLength)(THIS_
++ STDMETHOD(GetLocaleNameLength2)(THIS_
+ UINT32 currentPosition,
+ UINT32 *nameLength,
+ DWRITE_TEXT_RANGE *textRange __MINGW_DEF_ARG_VAL(NULL)) PURE;
+- STDMETHOD(GetLocaleName)(THIS_
++ STDMETHOD(GetLocaleName2)(THIS_
+ UINT32 currentPosition,
+ WCHAR *localeName,
+ UINT32 nameSize,
+@@ -2101,23 +2101,23 @@
+ #define IDWriteTextLayout_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+ #define IDWriteTextLayout_AddRef(This) (This)->lpVtbl->AddRef(This)
+ #define IDWriteTextLayout_Release(This) (This)->lpVtbl->Release(This)
+-#define IDWriteTextLayout_GetFlowDirection() (This)->lpVtbl->GetFlowDirection(This)
++#define IDWriteTextLayout_GetFlowDirection(This) (This)->lpVtbl->GetFlowDirection(This)
+ #define IDWriteTextLayout_GetFontCollection(This,fontCollection) (This)->lpVtbl->GetFontCollection(This,fontCollection)
+ #define IDWriteTextLayout_GetFontFamilyName(This,fontFamilyName,nameSize) (This)->lpVtbl->GetFontFamilyName(This,fontFamilyName,nameSize)
+-#define IDWriteTextLayout_GetFontFamilyNameLength() (This)->lpVtbl->GetFontFamilyNameLength(This)
+-#define IDWriteTextLayout_GetFontSize() (This)->lpVtbl->GetFontSize(This)
+-#define IDWriteTextLayout_GetFontStretch() (This)->lpVtbl->GetFontStretch(This)
+-#define IDWriteTextLayout_GetFontStyle() (This)->lpVtbl->GetFontStyle(This)
+-#define IDWriteTextLayout_GetFontWeight() (This)->lpVtbl->GetFontWeight(This)
+-#define IDWriteTextLayout_GetIncrementalTabStop() (This)->lpVtbl->GetIncrementalTabStop(This)
++#define IDWriteTextLayout_GetFontFamilyNameLength(This) (This)->lpVtbl->GetFontFamilyNameLength(This)
++#define IDWriteTextLayout_GetFontSize(This) (This)->lpVtbl->GetFontSize(This)
++#define IDWriteTextLayout_GetFontStretch(This) (This)->lpVtbl->GetFontStretch(This)
++#define IDWriteTextLayout_GetFontStyle(This) (This)->lpVtbl->GetFontStyle(This)
++#define IDWriteTextLayout_GetFontWeight(This) (This)->lpVtbl->GetFontWeight(This)
++#define IDWriteTextLayout_GetIncrementalTabStop(This) (This)->lpVtbl->GetIncrementalTabStop(This)
+ #define IDWriteTextLayout_GetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline) (This)->lpVtbl->GetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline)
+ #define IDWriteTextLayout_GetLocaleName(This,localeName,nameSize) (This)->lpVtbl->GetLocaleName(This,localeName,nameSize)
+-#define IDWriteTextLayout_GetLocaleNameLength() (This)->lpVtbl->GetLocaleNameLength(This)
+-#define IDWriteTextLayout_GetParagraphAlignment() (This)->lpVtbl->GetParagraphAlignment(This)
+-#define IDWriteTextLayout_GetReadingDirection() (This)->lpVtbl->GetReadingDirection(This)
+-#define IDWriteTextLayout_GetTextAlignment() (This)->lpVtbl->GetTextAlignment(This)
++#define IDWriteTextLayout_GetLocaleNameLength(This) (This)->lpVtbl->GetLocaleNameLength(This)
++#define IDWriteTextLayout_GetParagraphAlignment(This) (This)->lpVtbl->GetParagraphAlignment(This)
++#define IDWriteTextLayout_GetReadingDirection(This) (This)->lpVtbl->GetReadingDirection(This)
++#define IDWriteTextLayout_GetTextAlignment(This) (This)->lpVtbl->GetTextAlignment(This)
+ #define IDWriteTextLayout_GetTrimming(This,trimmingOptions,trimmingSign) (This)->lpVtbl->GetTrimming(This,trimmingOptions,trimmingSign)
+-#define IDWriteTextLayout_GetWordWrapping() (This)->lpVtbl->GetWordWrapping(This)
++#define IDWriteTextLayout_GetWordWrapping(This) (This)->lpVtbl->GetWordWrapping(This)
+ #define IDWriteTextLayout_SetFlowDirection(This,flowDirection) (This)->lpVtbl->SetFlowDirection(This,flowDirection)
+ #define IDWriteTextLayout_SetIncrementalTabStop(This,incrementalTabStop) (This)->lpVtbl->SetIncrementalTabStop(This,incrementalTabStop)
+ #define IDWriteTextLayout_SetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline) (This)->lpVtbl->SetLineSpacing(This,lineSpacingMethod,lineSpacing,baseline)
+@@ -2130,19 +2130,19 @@
+ #define IDWriteTextLayout_GetClusterMetrics(This,clusterMetrics,maxClusterCount,actualClusterCount) (This)->lpVtbl->GetClusterMetrics(This,clusterMetrics,maxClusterCount,actualClusterCount)
+ #define IDWriteTextLayout_DetermineMinWidth(This,minWidth) (This)->lpVtbl->DetermineMinWidth(This,minWidth)
+ #define IDWriteTextLayout_GetDrawingEffect(This,currentPosition,drawingEffect,textRange) (This)->lpVtbl->GetDrawingEffect(This,currentPosition,drawingEffect,textRange)
+-#define IDWriteTextLayout_GetFontCollection(This,currentPosition,fontCollection,textRange) (This)->lpVtbl->GetFontCollection(This,currentPosition,fontCollection,textRange)
+-#define IDWriteTextLayout_GetFontFamilyName(This,currentPosition,fontFamilyName,nameSize,textRange) (This)->lpVtbl->GetFontFamilyName(This,currentPosition,fontFamilyName,nameSize,textRange)
+-#define IDWriteTextLayout_GetFontFamilyNameLength(This,currentPosition,nameLength,textRange) (This)->lpVtbl->GetFontFamilyNameLength(This,currentPosition,nameLength,textRange)
+-#define IDWriteTextLayout_GetFontSize(This,currentPosition,fontSize,textRange) (This)->lpVtbl->GetFontSize(This,currentPosition,fontSize,textRange)
+-#define IDWriteTextLayout_GetFontStretch(This,currentPosition,fontStretch,textRange) (This)->lpVtbl->GetFontStretch(This,currentPosition,fontStretch,textRange)
+-#define IDWriteTextLayout_GetFontStyle(This,currentPosition,fontStyle,textRange) (This)->lpVtbl->GetFontStyle(This,currentPosition,fontStyle,textRange)
+-#define IDWriteTextLayout_GetFontWeight(This,currentPosition,fontWeight,textRange) (This)->lpVtbl->GetFontWeight(This,currentPosition,fontWeight,textRange)
++#define IDWriteTextLayout_GetFontCollection2(This,currentPosition,fontCollection,textRange) (This)->lpVtbl->GetFontCollection(This,currentPosition,fontCollection,textRange)
++#define IDWriteTextLayout_GetFontFamilyName2(This,currentPosition,fontFamilyName,nameSize,textRange) (This)->lpVtbl->GetFontFamilyName2(This,currentPosition,fontFamilyName,nameSize,textRange)
++#define IDWriteTextLayout_GetFontFamilyNameLength2(This,currentPosition,nameLength,textRange) (This)->lpVtbl->GetFontFamilyNameLength2(This,currentPosition,nameLength,textRange)
++#define IDWriteTextLayout_GetFontSize2(This,currentPosition,fontSize,textRange) (This)->lpVtbl->GetFontSize2(This,currentPosition,fontSize,textRange)
++#define IDWriteTextLayout_GetFontStretch2(This,currentPosition,fontStretch,textRange) (This)->lpVtbl->GetFontStretch2(This,currentPosition,fontStretch,textRange)
++#define IDWriteTextLayout_GetFontStyle2(This,currentPosition,fontStyle,textRange) (This)->lpVtbl->GetFontStyle2(This,currentPosition,fontStyle,textRange)
++#define IDWriteTextLayout_GetFontWeight2(This,currentPosition,fontWeight,textRange) (This)->lpVtbl->GetFontWeight2(This,currentPosition,fontWeight,textRange)
+ #define IDWriteTextLayout_GetInlineObject(This,currentPosition,inlineObject,textRange) (This)->lpVtbl->GetInlineObject(This,currentPosition,inlineObject,textRange)
+ #define IDWriteTextLayout_GetLineMetrics(This,lineMetrics,maxLineCount,actualLineCount) (This)->lpVtbl->GetLineMetrics(This,lineMetrics,maxLineCount,actualLineCount)
+-#define IDWriteTextLayout_GetLocaleName(This,currentPosition,localeName,nameSize,textRange) (This)->lpVtbl->GetLocaleName(This,currentPosition,localeName,nameSize,textRange)
+-#define IDWriteTextLayout_GetLocaleNameLength(This,currentPosition,nameLength,textRange) (This)->lpVtbl->GetLocaleNameLength(This,currentPosition,nameLength,textRange)
+-#define IDWriteTextLayout_GetMaxHeight() (This)->lpVtbl->GetMaxHeight(This)
+-#define IDWriteTextLayout_GetMaxWidth() (This)->lpVtbl->GetMaxWidth(This)
++#define IDWriteTextLayout_GetLocaleName2(This,currentPosition,localeName,nameSize,textRange) (This)->lpVtbl->GetLocaleName2(This,currentPosition,localeName,nameSize,textRange)
++#define IDWriteTextLayout_GetLocaleNameLength2(This,currentPosition,nameLength,textRange) (This)->lpVtbl->GetLocaleNameLength2(This,currentPosition,nameLength,textRange)
++#define IDWriteTextLayout_GetMaxHeight(This) (This)->lpVtbl->GetMaxHeight(This)
++#define IDWriteTextLayout_GetMaxWidth(This) (This)->lpVtbl->GetMaxWidth(This)
+ #define IDWriteTextLayout_GetMetrics(This,textMetrics) (This)->lpVtbl->GetMetrics(This,textMetrics)
+ #define IDWriteTextLayout_GetOverhangMetrics(This,overhangs) (This)->lpVtbl->GetOverhangMetrics(This,overhangs)
+ #define IDWriteTextLayout_GetStrikethrough(This,currentPosition,hasStrikethrough,textRange) (This)->lpVtbl->GetStrikethrough(This,currentPosition,hasStrikethrough,textRange)
+@@ -2262,7 +2262,7 @@
+ #define IDWriteTypography_Release(This) (This)->lpVtbl->Release(This)
+ #define IDWriteTypography_AddFontFeature(This,fontFeature) (This)->lpVtbl->AddFontFeature(This,fontFeature)
+ #define IDWriteTypography_GetFontFeature(This,fontFeatureIndex,fontFeature) (This)->lpVtbl->GetFontFeature(This,fontFeatureIndex,fontFeature)
+-#define IDWriteTypography_GetFontFeatureCount() (This)->lpVtbl->GetFontFeatureCount(This)
++#define IDWriteTypography_GetFontFeatureCount(This) (This)->lpVtbl->GetFontFeatureCount(This)
+ #endif /*COBJMACROS*/
+
+ #ifdef __cplusplus
diff --git a/libass/Makefile.am b/libass/Makefile.am
index 4e266f1..2d7bc44 100644
--- a/libass/Makefile.am
+++ b/libass/Makefile.am
@@ -19,7 +19,7 @@ SRC_INTEL_RASTERIZER = x86/rasterizer.asm
SRC_RASTERIZER = ass_rasterizer.h ass_rasterizer.c ass_rasterizer_c.c
-SRC_DIRECTWRITE = ass_directwrite.cpp ass_directwrite.h
+SRC_DIRECTWRITE = ass_directwrite.c ass_directwrite.h dwrite.h
lib_LTLIBRARIES = libass.la
libass_la_SOURCES = ass.c ass_cache.c ass_font.c ass_fontselect.c ass_render.c \
diff --git a/libass/ass_directwrite.cpp b/libass/ass_directwrite.c
index 062aa31..483af50 100644
--- a/libass/ass_directwrite.cpp
+++ b/libass/ass_directwrite.c
@@ -15,15 +15,22 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#define COBJMACROS
#include "config.h"
-#include <dwrite.h>
+#include <initguid.h>
+#include <ole2.h>
+#include <shobjidl.h>
+
+#include "dwrite.h"
+
+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);
-extern "C" {
#include "ass_directwrite.h"
#include "ass_utils.h"
-}
#define NAME_MAX_LENGTH 256
#define FALLBACK_DEFAULT_FONT L"Arial"
@@ -45,137 +52,173 @@ typedef struct {
* Custom text renderer class for logging the fonts used. It does not
* actually render anything or do anything apart from that.
*/
-class FallbackLogTextRenderer : public IDWriteTextRenderer {
-public:
- FallbackLogTextRenderer(IDWriteFactory *factory)
- : dw_factory(factory), ref_count(0)
- {}
-
- IFACEMETHOD(IsPixelSnappingDisabled)(
- _In_opt_ void* clientDrawingContext,
- _Out_ BOOL* isDisabled
- )
- {
- *isDisabled = true;
- return S_OK;
- }
- IFACEMETHOD(GetCurrentTransform)(
- _In_opt_ void* clientDrawingContext,
- _Out_ DWRITE_MATRIX* transform
- )
- {
- return E_NOTIMPL;
- }
+typedef struct FallbackLogTextRenderer {
+ IDWriteTextRenderer iface;
+ IDWriteTextRendererVtbl vtbl;
+ IDWriteFactory *dw_factory;
+ LONG ref_count;
+} FallbackLogTextRenderer;
+
+static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_IsPixelSnappingDisabled(
+ IDWriteTextRenderer *This,
+ _In_opt_ void* clientDrawingContext,
+ _Out_ BOOL* isDisabled
+ )
+{
+ *isDisabled = true;
+ return S_OK;
+}
- IFACEMETHOD(GetPixelsPerDip)(
- _In_opt_ void* clientDrawingContext,
- _Out_ FLOAT* pixelsPerDip
- )
- {
- return E_NOTIMPL;
- }
+static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_GetCurrentTransform(
+ IDWriteTextRenderer *This,
+ _In_opt_ void* clientDrawingContext,
+ _Out_ DWRITE_MATRIX* transform
+ )
+{
+ return E_NOTIMPL;
+}
- IFACEMETHOD(DrawGlyphRun)(
- _In_opt_ void* clientDrawingContext,
- FLOAT baselineOriginX,
- FLOAT baselineOriginY,
- DWRITE_MEASURING_MODE measuringMode,
- _In_ DWRITE_GLYPH_RUN const* glyphRun,
- _In_ DWRITE_GLYPH_RUN_DESCRIPTION const* glyphRunDescription,
- IUnknown* clientDrawingEffect
- )
- {
- HRESULT hr;
- IDWriteFontCollection *font_coll = NULL;
- IDWriteFont **font = static_cast<IDWriteFont **>(clientDrawingContext);
-
- hr = dw_factory->GetSystemFontCollection(&font_coll);
- if (FAILED(hr))
- return E_FAIL;
+static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_GetPixelsPerDip(
+ IDWriteTextRenderer *This,
+ _In_opt_ void* clientDrawingContext,
+ _Out_ FLOAT* pixelsPerDip
+ )
+{
+ return E_NOTIMPL;
+}
- hr = font_coll->GetFontFromFontFace(glyphRun->fontFace, font);
- if (FAILED(hr))
- return E_FAIL;
+static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_DrawGlyphRun(
+ IDWriteTextRenderer *This,
+ _In_opt_ void* clientDrawingContext,
+ FLOAT baselineOriginX,
+ FLOAT baselineOriginY,
+ DWRITE_MEASURING_MODE measuringMode,
+ _In_ DWRITE_GLYPH_RUN const* glyphRun,
+ _In_ DWRITE_GLYPH_RUN_DESCRIPTION const* glyphRunDescription,
+ IUnknown* clientDrawingEffect
+ )
+{
+ FallbackLogTextRenderer *this = (FallbackLogTextRenderer *)This;
+ HRESULT hr;
+ IDWriteFontCollection *font_coll = NULL;
+ IDWriteFont **font = (IDWriteFont **)clientDrawingContext;
- return S_OK;
- }
+ hr = IDWriteFactory_GetSystemFontCollection(this->dw_factory, &font_coll, FALSE);
+ if (FAILED(hr))
+ return E_FAIL;
- IFACEMETHOD(DrawUnderline)(
- _In_opt_ void* clientDrawingContext,
- FLOAT baselineOriginX,
- FLOAT baselineOriginY,
- _In_ DWRITE_UNDERLINE const* underline,
- IUnknown* clientDrawingEffect
- )
- {
- return S_OK;
- }
+ hr = IDWriteFontCollection_GetFontFromFontFace(font_coll, glyphRun->fontFace,
+ font);
+ if (FAILED(hr))
+ return E_FAIL;
- IFACEMETHOD(DrawStrikethrough)(
- _In_opt_ void* clientDrawingContext,
- FLOAT baselineOriginX,
- FLOAT baselineOriginY,
- _In_ DWRITE_STRIKETHROUGH const* strikethrough,
- IUnknown* clientDrawingEffect
- )
- {
- return S_OK;
- }
+ return S_OK;
+}
- IFACEMETHOD(DrawInlineObject)(
- _In_opt_ void* clientDrawingContext,
- FLOAT originX,
- FLOAT originY,
- IDWriteInlineObject* inlineObject,
- BOOL isSideways,
- BOOL isRightToLeft,
- IUnknown* clientDrawingEffect
- )
- {
- return S_OK;
- }
+static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_DrawUnderline(
+ IDWriteTextRenderer *This,
+ _In_opt_ void* clientDrawingContext,
+ FLOAT baselineOriginX,
+ FLOAT baselineOriginY,
+ _In_ DWRITE_UNDERLINE const* underline,
+ IUnknown* clientDrawingEffect
+ )
+{
+ return S_OK;
+}
- // IUnknown methods
+static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_DrawStrikethrough(
+ IDWriteTextRenderer *This,
+ _In_opt_ void* clientDrawingContext,
+ FLOAT baselineOriginX,
+ FLOAT baselineOriginY,
+ _In_ DWRITE_STRIKETHROUGH const* strikethrough,
+ IUnknown* clientDrawingEffect
+ )
+{
+ return S_OK;
+}
- IFACEMETHOD_(unsigned long, AddRef)()
- {
- return InterlockedIncrement(&ref_count);
- }
+static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_DrawInlineObject(
+ IDWriteTextRenderer *This,
+ void *clientDrawingContext,
+ FLOAT originX,
+ FLOAT originY,
+ IDWriteInlineObject *inlineObject,
+ WINBOOL isSideways,
+ WINBOOL isRightToLeft,
+ IUnknown *clientDrawingEffect
+ )
+{
+ return S_OK;
+}
- IFACEMETHOD_(unsigned long, Release)()
- {
- unsigned long new_count = InterlockedDecrement(&ref_count);
- if (new_count == 0) {
- free(this);
- return 0;
- }
+// IUnknown methods
+
+static ULONG STDMETHODCALLTYPE FallbackLogTextRenderer_AddRef(
+ IDWriteTextRenderer *This
+ )
+{
+ FallbackLogTextRenderer *this = (FallbackLogTextRenderer *)This;
+ return InterlockedIncrement(&this->ref_count);
+}
- return new_count;
+static ULONG STDMETHODCALLTYPE FallbackLogTextRenderer_Release(
+ IDWriteTextRenderer *This
+ )
+{
+ FallbackLogTextRenderer *this = (FallbackLogTextRenderer *)This;
+ unsigned long new_count = InterlockedDecrement(&this->ref_count);
+ if (new_count == 0) {
+ free(this);
+ return 0;
}
- IFACEMETHOD(QueryInterface)(
- IID const& riid,
- void** ppvObject
- )
- {
- if (__uuidof(IDWriteTextRenderer) == riid
- || __uuidof(IDWritePixelSnapping) == riid
- || __uuidof(IUnknown) == riid) {
- *ppvObject = this;
- } else {
- *ppvObject = NULL;
- return E_FAIL;
- }
+ return new_count;
+}
- this->AddRef();
- return S_OK;
+static HRESULT STDMETHODCALLTYPE FallbackLogTextRenderer_QueryInterface(
+ IDWriteTextRenderer *This,
+ REFIID riid,
+ void **ppvObject
+ )
+{
+ if (IsEqualGUID(riid, &IID_IDWriteTextRenderer)
+ || IsEqualGUID(riid, &IID_IDWritePixelSnapping)
+ || IsEqualGUID(riid, &IID_IUnknown)) {
+ *ppvObject = This;
+ } else {
+ *ppvObject = NULL;
+ return E_FAIL;
}
-private:
- IDWriteFactory * const dw_factory;
- unsigned long ref_count;
-};
+ This->lpVtbl->AddRef(This);
+ return S_OK;
+}
+
+static void init_FallbackLogTextRenderer(FallbackLogTextRenderer *r,
+ IDWriteFactory *factory)
+{
+ *r = (FallbackLogTextRenderer){
+ .iface = {
+ .lpVtbl = &r->vtbl,
+ },
+ .vtbl = {
+ FallbackLogTextRenderer_QueryInterface,
+ FallbackLogTextRenderer_AddRef,
+ FallbackLogTextRenderer_Release,
+ FallbackLogTextRenderer_IsPixelSnappingDisabled,
+ FallbackLogTextRenderer_GetCurrentTransform,
+ FallbackLogTextRenderer_GetPixelsPerDip,
+ FallbackLogTextRenderer_DrawGlyphRun,
+ FallbackLogTextRenderer_DrawUnderline,
+ FallbackLogTextRenderer_DrawStrikethrough,
+ FallbackLogTextRenderer_DrawInlineObject,
+ },
+ .dw_factory = factory,
+ };
+}
/*
* This function is called whenever a font is used for the first
@@ -197,41 +240,41 @@ static bool init_font_private(FontPrivate *priv)
if (priv->stream != NULL)
return true;
- hr = font->CreateFontFace(&face);
+ hr = IDWriteFont_CreateFontFace(font, &face);
if (FAILED(hr) || !face)
return false;
/* DirectWrite only supports one file per face */
- hr = face->GetFiles(&n_files, &file);
+ hr = IDWriteFontFace_GetFiles(face, &n_files, &file);
if (FAILED(hr) || !file) {
- face->Release();
+ IDWriteFontFace_Release(face);
return false;
}
- hr = file->GetReferenceKey(&refKey, &keySize);
+ hr = IDWriteFontFile_GetReferenceKey(file, &refKey, &keySize);
if (FAILED(hr)) {
- file->Release();
- face->Release();
+ IDWriteFontFile_Release(file);
+ IDWriteFontFace_Release(face);
return false;
}
- hr = file->GetLoader(&loader);
+ hr = IDWriteFontFile_GetLoader(file, &loader);
if (FAILED(hr) || !loader) {
- file->Release();
- face->Release();
+ IDWriteFontFile_Release(file);
+ IDWriteFontFace_Release(face);
return false;
}
- hr = loader->CreateStreamFromKey(refKey, keySize, &stream);
+ hr = IDWriteFontFileLoader_CreateStreamFromKey(loader, refKey, keySize, &stream);
if (FAILED(hr) || !stream) {
- file->Release();
- face->Release();
+ IDWriteFontFile_Release(file);
+ IDWriteFontFace_Release(face);
return false;
}
priv->stream = stream;
- file->Release();
- face->Release();
+ IDWriteFontFile_Release(file);
+ IDWriteFontFace_Release(face);
return true;
}
@@ -256,21 +299,22 @@ static size_t get_data(void *data, unsigned char *buf, size_t offset,
if (buf == NULL) {
UINT64 fileSize;
- hr = priv->stream->GetFileSize(&fileSize);
+ hr = IDWriteFontFileStream_GetFileSize(priv->stream, &fileSize);
if (FAILED(hr))
return 0;
return fileSize;
}
- hr = priv->stream->ReadFileFragment(&fileBuf, offset, length, &fragContext);
+ hr = IDWriteFontFileStream_ReadFileFragment(priv->stream, &fileBuf, offset,
+ length, &fragContext);
if (FAILED(hr) || !fileBuf)
return 0;
memcpy(buf, fileBuf, length);
- priv->stream->ReleaseFileFragment(fragContext);
+ IDWriteFontFileStream_ReleaseFileFragment(priv->stream, fragContext);
return length;
}
@@ -288,7 +332,7 @@ static int check_glyph(void *data, uint32_t code)
if (code == 0)
return 1;
- priv->font->HasCharacter(code, &exists);
+ IDWriteFont_HasCharacter(priv->font, code, &exists);
if (FAILED(hr))
return 0;
@@ -301,7 +345,7 @@ static int check_glyph(void *data, uint32_t code)
static void destroy_provider(void *priv)
{
ProviderPrivate *provider_priv = (ProviderPrivate *)priv;