blob: c77990640e6f2ebf6b6503ec538f8461663d8f11 [file] [log] [blame]
/*
* 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(
[in] void *context,
[in] FLOAT originX,
[in] FLOAT originY,
[in] DWRITE_GLYPH_ORIENTATION_ANGLE angle,
[in] DWRITE_MEASURING_MODE mode,
[in] DWRITE_GLYPH_RUN const *run,
[in] DWRITE_GLYPH_RUN_DESCRIPTION const *rundescr,
[in] IUnknown *effect
);
HRESULT DrawUnderline(
[in] void *context,
[in] FLOAT originX,
[in] FLOAT originY,
[in] DWRITE_GLYPH_ORIENTATION_ANGLE angle,
[in] DWRITE_UNDERLINE const *underline,
[in] IUnknown *effect
);
HRESULT DrawStrikethrough(
[in] void *context,
[in] FLOAT originX,
[in] FLOAT originY,
[in] DWRITE_GLYPH_ORIENTATION_ANGLE angle,
[in] DWRITE_STRIKETHROUGH const *strikethrough,
[in] IUnknown *effect
);
HRESULT DrawInlineObject(
[in] void *context,
[in] FLOAT originX,
[in] FLOAT originY,
[in] DWRITE_GLYPH_ORIENTATION_ANGLE angle,
[in] IDWriteInlineObject *inlineObject,
[in] BOOL is_sideways,
[in] BOOL is_rtl,
[in] IUnknown *effect
);
}
[
local,
object,
uuid(efa008f9-f7a1-48bf-b05c-f224713cc0ff)
]
interface IDWriteFontFallback : IUnknown
{
HRESULT MapCharacters(
[in] IDWriteTextAnalysisSource *source,
[in] UINT32 position,
[in] UINT32 length,
[in] IDWriteFontCollection *basecollection,
[in] const WCHAR *baseFamilyName,
[in] DWRITE_FONT_WEIGHT baseWeight,
[in] DWRITE_FONT_STYLE baseStyle,
[in] DWRITE_FONT_STRETCH baseStretch,
[out] UINT32 *mappedLength,
[out] IDWriteFont **mappedFont,
[out] FLOAT *scale
);
}
[
local,
object,
uuid(5f174b49-0d8b-4cfb-8bca-f1cce9d06c67)
]
interface IDWriteTextFormat1 : IDWriteTextFormat
{
HRESULT SetVerticalGlyphOrientation(
[in] DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
DWRITE_VERTICAL_GLYPH_ORIENTATION GetVerticalGlyphOrientation();
HRESULT SetLastLineWrapping(
[in] BOOL lastline_wrapping_enabled
);
BOOL GetLastLineWrapping();
HRESULT SetOpticalAlignment(
[in] DWRITE_OPTICAL_ALIGNMENT alignment
);
DWRITE_OPTICAL_ALIGNMENT GetOpticalAlignment();
HRESULT SetFontFallback(
[in] IDWriteFontFallback *fallback
);
HRESULT GetFontFallback(
[in] IDWriteFontFallback **fallback
);
}
[
local,
object,
uuid(1093c18f-8d5e-43f0-b064-0917311b525e)
]
interface IDWriteTextLayout2 : IDWriteTextLayout1
{
HRESULT GetMetrics(
[out] DWRITE_TEXT_METRICS1 *metrics
);
HRESULT SetVerticalGlyphOrientation(
[in] DWRITE_VERTICAL_GLYPH_ORIENTATION orientation
);
DWRITE_VERTICAL_GLYPH_ORIENTATION GetVerticalGlyphOrientation();
HRESULT SetLastLineWrapping(
[in] BOOL lastline_wrapping_enabled
);
BOOL GetLastLineWrapping();
HRESULT SetOpticalAlignment(
[in] DWRITE_OPTICAL_ALIGNMENT alignment
);
DWRITE_OPTICAL_ALIGNMENT GetOpticalAlignment();
HRESULT SetFontFallback(
[in] IDWriteFontFallback *fallback
);
HRESULT GetFontFallback(
[out] IDWriteFontFallback **fallback
);
}
[
local,
object,
uuid(553a9ff3-5693-4df7-b52b-74806f7f2eb9)
]
interface IDWriteTextAnalyzer2 : IDWriteTextAnalyzer1
{
HRESULT GetGlyphOrientationTransform(
[in] DWRITE_GLYPH_ORIENTATION_ANGLE angle,
[in] BOOL is_sideways,
[in] FLOAT originX,
[in] FLOAT originY,
[out] DWRITE_MATRIX *transform
);
HRESULT GetTypographicFeatures(
[in] IDWriteFontFace *fontface,
[in] DWRITE_SCRIPT_ANALYSIS analysis,
[in] const WCHAR *localeName,
[in] UINT32 max_tagcount,
[out] UINT32 *actual_tagcount,
[out] DWRITE_FONT_FEATURE_TAG *tags
);
HRESULT CheckTypographicFeature(
[in] IDWriteFontFace *fontface,
[in] DWRITE_SCRIPT_ANALYSIS analysis,
[in] const WCHAR *localeName,
[in] DWRITE_FONT_FEATURE_TAG feature,
[in] UINT32 glyph_count,
[in] const UINT16 *indices,
[out] UINT8 *feature_applies
);
}
[
local,
object,
uuid(fd882d06-8aba-4fb8-b849-8be8b73e14de)
]
interface IDWriteFontFallbackBuilder : IUnknown
{
HRESULT AddMapping(
[in] const DWRITE_UNICODE_RANGE *ranges,
[in] UINT32 rangesCount,
[in] WCHAR const **targetFamilyNames,
[in] UINT32 targetFamilyNamesCount,
[in, defaultvalue(NULL)] IDWriteFontCollection *collection,
[in, defaultvalue(NULL)] WCHAR const *localeName,
[in, defaultvalue(NULL)] WCHAR const *baseFamilyName,
[in, defaultvalue(1)] FLOAT scale
);
HRESULT AddMappings(
[in] IDWriteFontFallback *fallback
);
HRESULT CreateFontFallback(
[out] 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(
[in] UINT32 palette_index,
[in] UINT32 first_entry_index,
[in] UINT32 entry_count,
[out] DWRITE_COLOR_F *entries
);
HRESULT GetRecommendedRenderingMode(
[in] FLOAT fontEmSize,
[in] FLOAT dpiX,
[in] FLOAT dpiY,
[in] DWRITE_MATRIX const *transform,
[in] BOOL is_sideways,
[in] DWRITE_OUTLINE_THRESHOLD threshold,
[in] DWRITE_MEASURING_MODE measuringmode,
[in] IDWriteRenderingParams *params,
[out] DWRITE_RENDERING_MODE *renderingmode,
[out] DWRITE_GRID_FIT_MODE *gridfitmode
);
}
[
local,
object,
uuid(d31fbe17-f157-41a2-8d24-cb779e0560e8)
]
interface IDWriteColorGlyphRunEnumerator : IUnknown
{
HRESULT MoveNext(
[out] BOOL *hasRun
);
HRESULT GetCurrentRun(
[out] 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(
[out] IDWriteFontFallback **fallback
);
HRESULT CreateFontFallbackBuilder(
[out] IDWriteFontFallbackBuilder **fallbackbuilder
);
HRESULT TranslateColorGlyphRun(
[in] FLOAT originX,
[in] FLOAT originY,
[in] const DWRITE_GLYPH_RUN *run,
[in] const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
[in] DWRITE_MEASURING_MODE mode,
[in] const DWRITE_MATRIX *transform,
[in] UINT32 palette_index,
[out] IDWriteColorGlyphRunEnumerator **colorlayers
);
HRESULT CreateCustomRenderingParams(
[in] FLOAT gamma,
[in] FLOAT contrast,
[in] FLOAT grayscalecontrast,
[in] FLOAT cleartypeLevel,
[in] DWRITE_PIXEL_GEOMETRY pixelGeometry,
[in] DWRITE_RENDERING_MODE renderingMode,
[in] DWRITE_GRID_FIT_MODE gridFitMode,
[out] IDWriteRenderingParams2 **params
);
HRESULT CreateGlyphRunAnalysis(
[in] const DWRITE_GLYPH_RUN *run,
[in] const DWRITE_MATRIX *transform,
[in] DWRITE_RENDERING_MODE renderingMode,
[in] DWRITE_MEASURING_MODE measuringMode,
[in] DWRITE_GRID_FIT_MODE gridFitMode,
[in] DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
[in] FLOAT originX,
[in] FLOAT originY,
[out] IDWriteGlyphRunAnalysis **analysis
);
}