| /* | 
 |  * 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 | 
 |                                   ); | 
 | } |