summaryrefslogtreecommitdiffstats
path: root/gfx/2d/dw-extra.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/2d/dw-extra.h')
-rw-r--r--gfx/2d/dw-extra.h136
1 files changed, 136 insertions, 0 deletions
diff --git a/gfx/2d/dw-extra.h b/gfx/2d/dw-extra.h
new file mode 100644
index 0000000000..15de36b1fc
--- /dev/null
+++ b/gfx/2d/dw-extra.h
@@ -0,0 +1,136 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * New DirectWrite interfaces based on Win10 Fall Creators Update versions
+ * of dwrite_3.h and dcommon.h (from SDK 10.0.17061.0). This particular
+ * subset of declarations is intended to be just sufficient to compile the
+ * Gecko DirectWrite font code; it omits many other new interfaces, etc.
+ */
+
+#ifndef DWRITE_EXTRA_H
+#define DWRITE_EXTRA_H
+
+#pragma once
+
+interface IDWriteFontResource;
+interface IDWriteFontFaceReference1;
+
+enum DWRITE_GLYPH_IMAGE_FORMATS {
+ DWRITE_GLYPH_IMAGE_FORMATS_NONE = 0x00000000,
+ DWRITE_GLYPH_IMAGE_FORMATS_TRUETYPE = 0x00000001,
+ DWRITE_GLYPH_IMAGE_FORMATS_CFF = 0x00000002,
+ DWRITE_GLYPH_IMAGE_FORMATS_COLR = 0x00000004,
+ DWRITE_GLYPH_IMAGE_FORMATS_SVG = 0x00000008,
+ DWRITE_GLYPH_IMAGE_FORMATS_PNG = 0x00000010,
+ DWRITE_GLYPH_IMAGE_FORMATS_JPEG = 0x00000020,
+ DWRITE_GLYPH_IMAGE_FORMATS_TIFF = 0x00000040,
+ DWRITE_GLYPH_IMAGE_FORMATS_PREMULTIPLIED_B8G8R8A8 = 0x00000080,
+};
+
+#ifdef DEFINE_ENUM_FLAG_OPERATORS
+DEFINE_ENUM_FLAG_OPERATORS(DWRITE_GLYPH_IMAGE_FORMATS);
+#endif
+
+#define DWRITE_MAKE_FONT_AXIS_TAG(a, b, c, d) \
+ (static_cast<DWRITE_FONT_AXIS_TAG>(DWRITE_MAKE_OPENTYPE_TAG(a, b, c, d)))
+
+enum DWRITE_FONT_AXIS_TAG : UINT32 {
+ DWRITE_FONT_AXIS_TAG_WEIGHT = DWRITE_MAKE_FONT_AXIS_TAG('w', 'g', 'h', 't'),
+ DWRITE_FONT_AXIS_TAG_WIDTH = DWRITE_MAKE_FONT_AXIS_TAG('w', 'd', 't', 'h'),
+ DWRITE_FONT_AXIS_TAG_SLANT = DWRITE_MAKE_FONT_AXIS_TAG('s', 'l', 'n', 't'),
+ DWRITE_FONT_AXIS_TAG_OPTICAL_SIZE =
+ DWRITE_MAKE_FONT_AXIS_TAG('o', 'p', 's', 'z'),
+ DWRITE_FONT_AXIS_TAG_ITALIC = DWRITE_MAKE_FONT_AXIS_TAG('i', 't', 'a', 'l'),
+};
+
+enum DWRITE_FONT_AXIS_ATTRIBUTES {
+ DWRITE_FONT_AXIS_ATTRIBUTES_NONE = 0x0000,
+ DWRITE_FONT_AXIS_ATTRIBUTES_VARIABLE = 0x0001,
+ DWRITE_FONT_AXIS_ATTRIBUTES_HIDDEN = 0x0002,
+};
+
+struct DWRITE_FONT_AXIS_VALUE {
+ DWRITE_FONT_AXIS_TAG axisTag;
+ FLOAT value;
+};
+
+struct DWRITE_FONT_AXIS_RANGE {
+ DWRITE_FONT_AXIS_TAG axisTag;
+ FLOAT minValue;
+ FLOAT maxValue;
+};
+
+struct DWRITE_GLYPH_IMAGE_DATA {
+ const void* imageData;
+ UINT32 imageDataSize;
+ UINT32 uniqueDataId;
+ UINT32 pixelsPerEm;
+ D2D1_SIZE_U pixelSize;
+ D2D1_POINT_2L horizontalLeftOrigin;
+ D2D1_POINT_2L horizontalRightOrigin;
+ D2D1_POINT_2L verticalTopOrigin;
+ D2D1_POINT_2L verticalBottomOrigin;
+};
+
+interface DWRITE_DECLARE_INTERFACE("27F2A904-4EB8-441D-9678-0563F53E3E2F")
+ IDWriteFontFace4 : public IDWriteFontFace3 {
+ STDMETHOD_(DWRITE_GLYPH_IMAGE_FORMATS, GetGlyphImageFormats)() PURE;
+ STDMETHOD(GetGlyphImageFormats)
+ (UINT16 glyphId, UINT32 pixelsPerEmFirst, UINT32 pixelsPerEmLast,
+ _Out_ DWRITE_GLYPH_IMAGE_FORMATS* glyphImageFormats) PURE;
+ STDMETHOD(GetGlyphImageData)
+ (_In_ UINT16 glyphId, UINT32 pixelsPerEm,
+ DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat,
+ _Out_ DWRITE_GLYPH_IMAGE_DATA* glyphData,
+ _Outptr_result_maybenull_ void** glyphDataContext) PURE;
+ STDMETHOD_(void, ReleaseGlyphImageData)(void* glyphDataContext) PURE;
+};
+
+interface DWRITE_DECLARE_INTERFACE("98EFF3A5-B667-479A-B145-E2FA5B9FDC29")
+ IDWriteFontFace5 : public IDWriteFontFace4 {
+ STDMETHOD_(UINT32, GetFontAxisValueCount)() PURE;
+ STDMETHOD(GetFontAxisValues)
+ (_Out_writes_(fontAxisValueCount) DWRITE_FONT_AXIS_VALUE* fontAxisValues,
+ UINT32 fontAxisValueCount) PURE;
+ STDMETHOD_(BOOL, HasVariations)() PURE;
+ STDMETHOD(GetFontResource)
+ (_COM_Outptr_ IDWriteFontResource** fontResource) PURE;
+ STDMETHOD_(BOOL, Equals)(IDWriteFontFace* fontFace) PURE;
+};
+
+interface DWRITE_DECLARE_INTERFACE("1F803A76-6871-48E8-987F-B975551C50F2")
+ IDWriteFontResource : public IUnknown {
+ STDMETHOD(GetFontFile)(_COM_Outptr_ IDWriteFontFile** fontFile) PURE;
+ STDMETHOD_(UINT32, GetFontFaceIndex)() PURE;
+ STDMETHOD_(UINT32, GetFontAxisCount)() PURE;
+ STDMETHOD(GetDefaultFontAxisValues)
+ (_Out_writes_(fontAxisValueCount) DWRITE_FONT_AXIS_VALUE* fontAxisValues,
+ UINT32 fontAxisValueCount) PURE;
+ STDMETHOD(GetFontAxisRanges)
+ (_Out_writes_(fontAxisRangeCount) DWRITE_FONT_AXIS_RANGE* fontAxisRanges,
+ UINT32 fontAxisRangeCount) PURE;
+ STDMETHOD_(DWRITE_FONT_AXIS_ATTRIBUTES, GetFontAxisAttributes)
+ (UINT32 axisIndex) PURE;
+ STDMETHOD(GetAxisNames)
+ (UINT32 axisIndex, _COM_Outptr_ IDWriteLocalizedStrings** names) PURE;
+ STDMETHOD_(UINT32, GetAxisValueNameCount)(UINT32 axisIndex) PURE;
+ STDMETHOD(GetAxisValueNames)
+ (UINT32 axisIndex, UINT32 axisValueIndex,
+ _Out_ DWRITE_FONT_AXIS_RANGE* fontAxisRange,
+ _COM_Outptr_ IDWriteLocalizedStrings** names) PURE;
+ STDMETHOD_(BOOL, HasVariations)() PURE;
+ STDMETHOD(CreateFontFace)
+ (DWRITE_FONT_SIMULATIONS fontSimulations,
+ _In_reads_(fontAxisValueCount) DWRITE_FONT_AXIS_VALUE const* fontAxisValues,
+ UINT32 fontAxisValueCount, _COM_Outptr_ IDWriteFontFace5** fontFace) PURE;
+ STDMETHOD(CreateFontFaceReference)
+ (DWRITE_FONT_SIMULATIONS fontSimulations,
+ _In_reads_(fontAxisValueCount) DWRITE_FONT_AXIS_VALUE const* fontAxisValues,
+ UINT32 fontAxisValueCount,
+ _COM_Outptr_ IDWriteFontFaceReference1** fontFaceReference) PURE;
+};
+
+#endif /* DWRITE_EXTRA_H */