1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 * New DirectWrite interfaces based on Win10 Fall Creators Update versions
8 * of dwrite_3.h and dcommon.h (from SDK 10.0.17061.0). This particular
9 * subset of declarations is intended to be just sufficient to compile the
10 * Gecko DirectWrite font code; it omits many other new interfaces, etc.
13 #ifndef DWRITE_EXTRA_H
14 #define DWRITE_EXTRA_H
18 interface IDWriteFontResource
;
19 interface IDWriteFontFaceReference1
;
21 enum DWRITE_GLYPH_IMAGE_FORMATS
{
22 DWRITE_GLYPH_IMAGE_FORMATS_NONE
= 0x00000000,
23 DWRITE_GLYPH_IMAGE_FORMATS_TRUETYPE
= 0x00000001,
24 DWRITE_GLYPH_IMAGE_FORMATS_CFF
= 0x00000002,
25 DWRITE_GLYPH_IMAGE_FORMATS_COLR
= 0x00000004,
26 DWRITE_GLYPH_IMAGE_FORMATS_SVG
= 0x00000008,
27 DWRITE_GLYPH_IMAGE_FORMATS_PNG
= 0x00000010,
28 DWRITE_GLYPH_IMAGE_FORMATS_JPEG
= 0x00000020,
29 DWRITE_GLYPH_IMAGE_FORMATS_TIFF
= 0x00000040,
30 DWRITE_GLYPH_IMAGE_FORMATS_PREMULTIPLIED_B8G8R8A8
= 0x00000080,
33 #ifdef DEFINE_ENUM_FLAG_OPERATORS
34 DEFINE_ENUM_FLAG_OPERATORS(DWRITE_GLYPH_IMAGE_FORMATS
);
37 #define DWRITE_MAKE_FONT_AXIS_TAG(a, b, c, d) \
38 (static_cast<DWRITE_FONT_AXIS_TAG>(DWRITE_MAKE_OPENTYPE_TAG(a, b, c, d)))
40 enum DWRITE_FONT_AXIS_TAG
: UINT32
{
41 DWRITE_FONT_AXIS_TAG_WEIGHT
= DWRITE_MAKE_FONT_AXIS_TAG('w', 'g', 'h', 't'),
42 DWRITE_FONT_AXIS_TAG_WIDTH
= DWRITE_MAKE_FONT_AXIS_TAG('w', 'd', 't', 'h'),
43 DWRITE_FONT_AXIS_TAG_SLANT
= DWRITE_MAKE_FONT_AXIS_TAG('s', 'l', 'n', 't'),
44 DWRITE_FONT_AXIS_TAG_OPTICAL_SIZE
=
45 DWRITE_MAKE_FONT_AXIS_TAG('o', 'p', 's', 'z'),
46 DWRITE_FONT_AXIS_TAG_ITALIC
= DWRITE_MAKE_FONT_AXIS_TAG('i', 't', 'a', 'l'),
49 enum DWRITE_FONT_AXIS_ATTRIBUTES
{
50 DWRITE_FONT_AXIS_ATTRIBUTES_NONE
= 0x0000,
51 DWRITE_FONT_AXIS_ATTRIBUTES_VARIABLE
= 0x0001,
52 DWRITE_FONT_AXIS_ATTRIBUTES_HIDDEN
= 0x0002,
55 struct DWRITE_FONT_AXIS_VALUE
{
56 DWRITE_FONT_AXIS_TAG axisTag
;
60 struct DWRITE_FONT_AXIS_RANGE
{
61 DWRITE_FONT_AXIS_TAG axisTag
;
66 struct DWRITE_GLYPH_IMAGE_DATA
{
67 const void* imageData
;
71 D2D1_SIZE_U pixelSize
;
72 D2D1_POINT_2L horizontalLeftOrigin
;
73 D2D1_POINT_2L horizontalRightOrigin
;
74 D2D1_POINT_2L verticalTopOrigin
;
75 D2D1_POINT_2L verticalBottomOrigin
;
78 interface
DWRITE_DECLARE_INTERFACE("27F2A904-4EB8-441D-9678-0563F53E3E2F")
79 IDWriteFontFace4
: public IDWriteFontFace3
{
80 STDMETHOD_(DWRITE_GLYPH_IMAGE_FORMATS
, GetGlyphImageFormats
)() PURE
;
81 STDMETHOD(GetGlyphImageFormats
)
82 (UINT16 glyphId
, UINT32 pixelsPerEmFirst
, UINT32 pixelsPerEmLast
,
83 _Out_ DWRITE_GLYPH_IMAGE_FORMATS
* glyphImageFormats
) PURE
;
84 STDMETHOD(GetGlyphImageData
)
85 (_In_ UINT16 glyphId
, UINT32 pixelsPerEm
,
86 DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat
,
87 _Out_ DWRITE_GLYPH_IMAGE_DATA
* glyphData
,
88 _Outptr_result_maybenull_
void** glyphDataContext
) PURE
;
89 STDMETHOD_(void, ReleaseGlyphImageData
)(void* glyphDataContext
) PURE
;
92 interface
DWRITE_DECLARE_INTERFACE("98EFF3A5-B667-479A-B145-E2FA5B9FDC29")
93 IDWriteFontFace5
: public IDWriteFontFace4
{
94 STDMETHOD_(UINT32
, GetFontAxisValueCount
)() PURE
;
95 STDMETHOD(GetFontAxisValues
)
96 (_Out_writes_(fontAxisValueCount
) DWRITE_FONT_AXIS_VALUE
* fontAxisValues
,
97 UINT32 fontAxisValueCount
) PURE
;
98 STDMETHOD_(BOOL
, HasVariations
)() PURE
;
99 STDMETHOD(GetFontResource
)
100 (_COM_Outptr_ IDWriteFontResource
** fontResource
) PURE
;
101 STDMETHOD_(BOOL
, Equals
)(IDWriteFontFace
* fontFace
) PURE
;
104 interface
DWRITE_DECLARE_INTERFACE("1F803A76-6871-48E8-987F-B975551C50F2")
105 IDWriteFontResource
: public IUnknown
{
106 STDMETHOD(GetFontFile
)(_COM_Outptr_ IDWriteFontFile
** fontFile
) PURE
;
107 STDMETHOD_(UINT32
, GetFontFaceIndex
)() PURE
;
108 STDMETHOD_(UINT32
, GetFontAxisCount
)() PURE
;
109 STDMETHOD(GetDefaultFontAxisValues
)
110 (_Out_writes_(fontAxisValueCount
) DWRITE_FONT_AXIS_VALUE
* fontAxisValues
,
111 UINT32 fontAxisValueCount
) PURE
;
112 STDMETHOD(GetFontAxisRanges
)
113 (_Out_writes_(fontAxisRangeCount
) DWRITE_FONT_AXIS_RANGE
* fontAxisRanges
,
114 UINT32 fontAxisRangeCount
) PURE
;
115 STDMETHOD_(DWRITE_FONT_AXIS_ATTRIBUTES
, GetFontAxisAttributes
)
116 (UINT32 axisIndex
) PURE
;
117 STDMETHOD(GetAxisNames
)
118 (UINT32 axisIndex
, _COM_Outptr_ IDWriteLocalizedStrings
** names
) PURE
;
119 STDMETHOD_(UINT32
, GetAxisValueNameCount
)(UINT32 axisIndex
) PURE
;
120 STDMETHOD(GetAxisValueNames
)
121 (UINT32 axisIndex
, UINT32 axisValueIndex
,
122 _Out_ DWRITE_FONT_AXIS_RANGE
* fontAxisRange
,
123 _COM_Outptr_ IDWriteLocalizedStrings
** names
) PURE
;
124 STDMETHOD_(BOOL
, HasVariations
)() PURE
;
125 STDMETHOD(CreateFontFace
)
126 (DWRITE_FONT_SIMULATIONS fontSimulations
,
127 _In_reads_(fontAxisValueCount
) DWRITE_FONT_AXIS_VALUE
const* fontAxisValues
,
128 UINT32 fontAxisValueCount
, _COM_Outptr_ IDWriteFontFace5
** fontFace
) PURE
;
129 STDMETHOD(CreateFontFaceReference
)
130 (DWRITE_FONT_SIMULATIONS fontSimulations
,
131 _In_reads_(fontAxisValueCount
) DWRITE_FONT_AXIS_VALUE
const* fontAxisValues
,
132 UINT32 fontAxisValueCount
,
133 _COM_Outptr_ IDWriteFontFaceReference1
** fontFaceReference
) PURE
;
136 #endif /* DWRITE_EXTRA_H */