|  | /* | 
|  | * Copyright 2014 Nikolay Sivov for CodeWeavers | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | import "dwrite_1.idl"; | 
|  |  | 
|  | typedef enum DWRITE_OPTICAL_ALIGNMENT | 
|  | { | 
|  | DWRITE_OPTICAL_ALIGNMENT_NONE, | 
|  | DWRITE_OPTICAL_ALIGNMENT_NO_SIDE_BEARINGS | 
|  | } DWRITE_OPTICAL_ALIGNMENT; | 
|  |  | 
|  | typedef enum DWRITE_GRID_FIT_MODE | 
|  | { | 
|  | DWRITE_GRID_FIT_MODE_DEFAULT, | 
|  | DWRITE_GRID_FIT_MODE_DISABLED, | 
|  | DWRITE_GRID_FIT_MODE_ENABLED | 
|  | } DWRITE_GRID_FIT_MODE; | 
|  |  | 
|  | typedef struct DWRITE_TEXT_METRICS1 | 
|  | { | 
|  | /* DWRITE_TEXT_METRICS fields */ | 
|  | FLOAT left; | 
|  | FLOAT top; | 
|  | FLOAT width; | 
|  | FLOAT widthIncludingTrailingWhitespace; | 
|  | FLOAT height; | 
|  | FLOAT layoutWidth; | 
|  | FLOAT layoutHeight; | 
|  | UINT32 maxBidiReorderingDepth; | 
|  | UINT32 lineCount; | 
|  | /* DWRITE_TEXT_METRICS1 fields */ | 
|  | FLOAT heightIncludingTrailingWhitespace; | 
|  | } DWRITE_TEXT_METRICS1; | 
|  |  | 
|  | cpp_quote("#ifndef D3DCOLORVALUE_DEFINED") | 
|  | typedef struct _D3DCOLORVALUE | 
|  | { | 
|  | union { | 
|  | FLOAT r; | 
|  | FLOAT dvR; | 
|  | }; | 
|  | union { | 
|  | FLOAT g; | 
|  | FLOAT dvG; | 
|  | }; | 
|  | union { | 
|  | FLOAT b; | 
|  | FLOAT dvB; | 
|  | }; | 
|  | union { | 
|  | FLOAT a; | 
|  | FLOAT dvA; | 
|  | }; | 
|  | } D3DCOLORVALUE; | 
|  | cpp_quote("#define D3DCOLORVALUE_DEFINED") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | typedef D3DCOLORVALUE DWRITE_COLOR_F; | 
|  |  | 
|  | typedef struct DWRITE_COLOR_GLYPH_RUN | 
|  | { | 
|  | DWRITE_GLYPH_RUN glyphRun; | 
|  | DWRITE_GLYPH_RUN_DESCRIPTION* glyphRunDescription; | 
|  | FLOAT baselineOriginX; | 
|  | FLOAT baselineOriginY; | 
|  | DWRITE_COLOR_F runColor; | 
|  | UINT16 paletteIndex; | 
|  | } DWRITE_COLOR_GLYPH_RUN; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(d3e0e934-22a0-427e-aae4-7d9574b59db1) | 
|  | ] | 
|  | interface IDWriteTextRenderer1 : IDWriteTextRenderer | 
|  | { | 
|  | HRESULT DrawGlyphRun(void *context, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | DWRITE_GLYPH_ORIENTATION_ANGLE angle, | 
|  | DWRITE_MEASURING_MODE mode, | 
|  | DWRITE_GLYPH_RUN const *run, | 
|  | DWRITE_GLYPH_RUN_DESCRIPTION const *rundescr, | 
|  | IUnknown *effect); | 
|  |  | 
|  | HRESULT DrawUnderline(void *context, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | DWRITE_GLYPH_ORIENTATION_ANGLE angle, | 
|  | DWRITE_UNDERLINE const *underline, | 
|  | IUnknown *effect); | 
|  |  | 
|  | HRESULT DrawStrikethrough(void *context, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | DWRITE_GLYPH_ORIENTATION_ANGLE angle, | 
|  | DWRITE_STRIKETHROUGH const *strikethrough, | 
|  | IUnknown *effect | 
|  | ); | 
|  |  | 
|  | HRESULT DrawInlineObject(void *context, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | DWRITE_GLYPH_ORIENTATION_ANGLE angle, | 
|  | IDWriteInlineObject *inlineObject, | 
|  | BOOL is_sideways, | 
|  | BOOL is_rtl, | 
|  | IUnknown *effect | 
|  | ); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(efa008f9-f7a1-48bf-b05c-f224713cc0ff) | 
|  | ] | 
|  | interface IDWriteFontFallback : IUnknown | 
|  | { | 
|  | HRESULT MapCharacters(IDWriteTextAnalysisSource *source, | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | IDWriteFontCollection *basecollection, | 
|  | const WCHAR *baseFamilyName, | 
|  | DWRITE_FONT_WEIGHT baseWeight, | 
|  | DWRITE_FONT_STYLE baseStyle, | 
|  | DWRITE_FONT_STRETCH baseStretch, | 
|  | UINT32 *mappedLength, | 
|  | IDWriteFont **mappedFont, | 
|  | FLOAT *scale | 
|  | ); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(5f174b49-0d8b-4cfb-8bca-f1cce9d06c67) | 
|  | ] | 
|  | interface IDWriteTextFormat1 : IDWriteTextFormat | 
|  | { | 
|  | HRESULT SetVerticalGlyphOrientation(DWRITE_VERTICAL_GLYPH_ORIENTATION orientation); | 
|  | DWRITE_VERTICAL_GLYPH_ORIENTATION GetVerticalGlyphOrientation(); | 
|  | HRESULT SetLastLineWrapping(BOOL lastline_wrapping_enabled); | 
|  | BOOL GetLastLineWrapping(); | 
|  | HRESULT SetOpticalAlignment(DWRITE_OPTICAL_ALIGNMENT alignment); | 
|  | DWRITE_OPTICAL_ALIGNMENT GetOpticalAlignment(); | 
|  | HRESULT SetFontFallback(IDWriteFontFallback *fallback); | 
|  | HRESULT GetFontFallback(IDWriteFontFallback **fallback); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(1093c18f-8d5e-43f0-b064-0917311b525e) | 
|  | ] | 
|  | interface IDWriteTextLayout2 : IDWriteTextLayout1 | 
|  | { | 
|  | HRESULT GetMetrics(DWRITE_TEXT_METRICS1 *metrics); | 
|  | HRESULT SetVerticalGlyphOrientation(DWRITE_VERTICAL_GLYPH_ORIENTATION orientation); | 
|  | DWRITE_VERTICAL_GLYPH_ORIENTATION GetVerticalGlyphOrientation(); | 
|  | HRESULT SetLastLineWrapping(BOOL lastline_wrapping_enabled); | 
|  | BOOL GetLastLineWrapping(); | 
|  | HRESULT SetOpticalAlignment(DWRITE_OPTICAL_ALIGNMENT alignment); | 
|  | DWRITE_OPTICAL_ALIGNMENT GetOpticalAlignment(); | 
|  | HRESULT SetFontFallback(IDWriteFontFallback *fallback); | 
|  | HRESULT GetFontFallback(IDWriteFontFallback **fallback); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(553a9ff3-5693-4df7-b52b-74806f7f2eb9) | 
|  | ] | 
|  | interface IDWriteTextAnalyzer2 : IDWriteTextAnalyzer1 | 
|  | { | 
|  | HRESULT GetGlyphOrientationTransform(DWRITE_GLYPH_ORIENTATION_ANGLE angle, | 
|  | BOOL is_sideways, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | DWRITE_MATRIX *transform | 
|  | ); | 
|  | HRESULT GetTypographicFeatures(IDWriteFontFace *fontface, | 
|  | DWRITE_SCRIPT_ANALYSIS analysis, | 
|  | const WCHAR *localeName, | 
|  | UINT32 max_tagcount, | 
|  | UINT32 *actual_tagcount, | 
|  | DWRITE_FONT_FEATURE_TAG *tags | 
|  | ); | 
|  |  | 
|  | HRESULT CheckTypographicFeature(IDWriteFontFace *fontface, | 
|  | DWRITE_SCRIPT_ANALYSIS analysis, | 
|  | const WCHAR *localeName, | 
|  | DWRITE_FONT_FEATURE_TAG feature, | 
|  | UINT32 glyph_count, | 
|  | const UINT16 *indices, | 
|  | UINT8 *feature_applies | 
|  | ); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(fd882d06-8aba-4fb8-b849-8be8b73e14de) | 
|  | ] | 
|  | interface IDWriteFontFallbackBuilder : IUnknown | 
|  | { | 
|  | HRESULT AddMapping(const DWRITE_UNICODE_RANGE *ranges, | 
|  | UINT32 rangesCount, | 
|  | WCHAR const **targetFamilyNames, | 
|  | UINT32 targetFamilyNamesCount, | 
|  | [defaultvalue(NULL)] IDWriteFontCollection *collection, | 
|  | [defaultvalue(NULL)] WCHAR const *localeName, | 
|  | [defaultvalue(NULL)] WCHAR const *baseFamilyName, | 
|  | [defaultvalue(1)] FLOAT scale | 
|  | ); | 
|  | HRESULT AddMappings(IDWriteFontFallback *fallback); | 
|  | HRESULT CreateFontFallback(IDWriteFontFallback **fallback); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(29748ed6-8c9c-4a6a-be0b-d912e8538944) | 
|  | ] | 
|  | interface IDWriteFont2 : IDWriteFont1 | 
|  | { | 
|  | BOOL IsColorFont(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(d8b768ff-64bc-4e66-982b-ec8e87f693f7) | 
|  | ] | 
|  | interface IDWriteFontFace2 : IDWriteFontFace1 | 
|  | { | 
|  | BOOL IsColorFont(); | 
|  | UINT32 GetColorPaletteCount(); | 
|  | UINT32 GetPaletteEntryCount(); | 
|  | HRESULT GetPaletteEntries(UINT32 palette_index, | 
|  | UINT32 first_entry_index, | 
|  | UINT32 entry_count, | 
|  | DWRITE_COLOR_F *entries | 
|  | ); | 
|  | HRESULT GetRecommendedRenderingMode(FLOAT fontEmSize, | 
|  | FLOAT dpiX, | 
|  | FLOAT dpiY, | 
|  | DWRITE_MATRIX const *transform, | 
|  | BOOL is_sideways, | 
|  | DWRITE_OUTLINE_THRESHOLD threshold, | 
|  | DWRITE_MEASURING_MODE measuringmode, | 
|  | IDWriteRenderingParams *params, | 
|  | DWRITE_RENDERING_MODE *renderingmode, | 
|  | DWRITE_GRID_FIT_MODE *gridfitmode | 
|  | ); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(d31fbe17-f157-41a2-8d24-cb779e0560e8) | 
|  | ] | 
|  | interface IDWriteColorGlyphRunEnumerator : IUnknown | 
|  | { | 
|  | HRESULT MoveNext(BOOL *hasRun); | 
|  | HRESULT GetCurrentRun(DWRITE_COLOR_GLYPH_RUN const **run); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(f9d711c3-9777-40ae-87e8-3e5aF9bf0948) | 
|  | ] | 
|  | interface IDWriteRenderingParams2 : IDWriteRenderingParams1 | 
|  | { | 
|  | DWRITE_GRID_FIT_MODE GetGridFitMode(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(0439fc60-ca44-4994-8dee-3a9af7b732ec) | 
|  | ] | 
|  | interface IDWriteFactory2 : IDWriteFactory1 | 
|  | { | 
|  | HRESULT GetSystemFontFallback(IDWriteFontFallback **fallback); | 
|  | HRESULT CreateFontFallbackBuilder(IDWriteFontFallbackBuilder **fallbackbuilder); | 
|  | HRESULT TranslateColorGlyphRun(FLOAT originX, | 
|  | FLOAT originY, | 
|  | const DWRITE_GLYPH_RUN *run, | 
|  | const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr, | 
|  | DWRITE_MEASURING_MODE mode, | 
|  | const DWRITE_MATRIX *transform, | 
|  | UINT32 palette_index, | 
|  | IDWriteColorGlyphRunEnumerator **colorlayers | 
|  | ); | 
|  |  | 
|  | HRESULT CreateCustomRenderingParams(FLOAT gamma, | 
|  | FLOAT contrast, | 
|  | FLOAT grayscalecontrast, | 
|  | FLOAT cleartypeLevel, | 
|  | DWRITE_PIXEL_GEOMETRY pixelGeometry, | 
|  | DWRITE_RENDERING_MODE renderingMode, | 
|  | DWRITE_GRID_FIT_MODE gridFitMode, | 
|  | IDWriteRenderingParams2 **params | 
|  | ); | 
|  |  | 
|  | HRESULT CreateGlyphRunAnalysis(const DWRITE_GLYPH_RUN *run, | 
|  | const DWRITE_MATRIX *transform, | 
|  | DWRITE_RENDERING_MODE renderingMode, | 
|  | DWRITE_MEASURING_MODE measuringMode, | 
|  | DWRITE_GRID_FIT_MODE gridFitMode, | 
|  | DWRITE_TEXT_ANTIALIAS_MODE antialiasMode, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | IDWriteGlyphRunAnalysis **analysis | 
|  | ); | 
|  | } |