Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qwindowsfontenginedirectwrite_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QWINDOWSFONTENGINEDIRECTWRITE_H
5#define QWINDOWSFONTENGINEDIRECTWRITE_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtGui/qtguiglobal.h>
19#include <QtGui/private/qtgui-config_p.h>
20
21QT_REQUIRE_CONFIG(directwrite);
22
23#include <QtGui/private/qfontengine_p.h>
24#include <QtCore/QSharedPointer>
25#include <dwrite.h>
26
27struct IDWriteFont;
28struct IDWriteFontFace;
29struct IDWriteFontFile;
30struct IDWriteFactory;
31struct IDWriteBitmapRenderTarget;
32struct IDWriteGdiInterop;
33struct IDWriteGlyphRunAnalysis;
34
36
38
39class Q_GUI_EXPORT QWindowsFontEngineDirectWrite : public QFontEngine
40{
41 Q_DISABLE_COPY_MOVE(QWindowsFontEngineDirectWrite)
42public:
43 explicit QWindowsFontEngineDirectWrite(IDWriteFontFace *directWriteFontFace,
44 qreal pixelSize,
45 const QSharedPointer<QWindowsFontEngineData> &d);
47
48 void initFontInfo(const QFontDef &request, int dpi);
49
50 QFixed lineThickness() const override;
51 QFixed underlinePosition() const override;
52 bool getSfntTableData(uint tag, uchar *buffer, uint *length) const override;
53 QFixed emSquareSize() const override;
54
55 glyph_t glyphIndex(uint ucs4) const override;
56 int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs,
57 ShaperFlags flags) const override;
58 void recalcAdvances(QGlyphLayout *glyphs, ShaperFlags) const override;
59
60 void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
61 QPainterPath *path, QTextItem::RenderFlags flags) override;
62
63 glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override;
64 glyph_metrics_t boundingBox(glyph_t g) override;
66 const QTransform &matrix, GlyphFormat) override;
67
68 QFixed capHeight() const override;
69 QFixed xHeight() const override;
70 qreal maxCharWidth() const override;
71 FaceId faceId() const override;
72
73 bool supportsHorizontalSubPixelPositions() const override;
74
75 HFONT createHFONT() const;
76
77 QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition) override;
78 QImage alphaMapForGlyph(glyph_t glyph,
79 const QFixedPoint &subPixelPosition,
80 const QTransform &t) override;
81 QImage alphaRGBMapForGlyph(glyph_t t,
82 const QFixedPoint &subPixelPosition,
83 const QTransform &xform) override;
85 const QFixedPoint &subPixelPosition,
86 const QTransform &t,
87 const QColor &color) override;
88
89 QFontEngine *cloneWithSize(qreal pixelSize) const override;
90 Qt::HANDLE handle() const override;
91
92 const QSharedPointer<QWindowsFontEngineData> &fontEngineData() const { return m_fontEngineData; }
93
94 static QString fontNameSubstitute(const QString &familyName);
95
96 IDWriteFontFace *directWriteFontFace() const { return m_directWriteFontFace; }
97
98 void setUniqueFamilyName(const QString &newName) { m_uniqueFamilyName = newName; }
99
100 void initializeHeightMetrics() const override;
101
102 Properties properties() const override;
103 void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics) override;
104
105private:
106 QImage imageForGlyph(glyph_t t,
107 const QFixedPoint &subPixelPosition,
108 int margin,
109 const QTransform &xform,
110 const QColor &color = QColor());
111 void collectMetrics();
112 void renderGlyphRun(QImage *destination,
113 float r,
114 float g,
115 float b,
116 float a,
117 IDWriteGlyphRunAnalysis *glyphAnalysis,
118 const QRect &boundingRect,
119 DWRITE_RENDERING_MODE renderMode);
120 static QString filenameFromFontFile(IDWriteFontFile *fontFile);
121 DWRITE_RENDERING_MODE hintingPreferenceToRenderingMode(const QFontDef &fontDef) const;
122
123 const QSharedPointer<QWindowsFontEngineData> m_fontEngineData;
124
125 IDWriteFontFace *m_directWriteFontFace;
126 IDWriteBitmapRenderTarget *m_directWriteBitmapRenderTarget;
127
128 QFixed m_lineThickness;
129 QFixed m_underlinePosition;
130 int m_unitsPerEm;
131 QFixed m_capHeight;
132 QFixed m_xHeight;
133 QFixed m_maxAdvanceWidth;
134 FaceId m_faceId;
135 QString m_uniqueFamilyName;
136};
137
139
140#endif // QWINDOWSFONTENGINEDIRECTWRITE_H
\inmodule QtCore
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
\inmodule QtGui
Definition qimage.h:37
\inmodule QtGui
\inmodule QtCore\reentrant
Definition qrect.h:30
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
The QTransform class specifies 2D transformations of a coordinate system.
Definition qtransform.h:20
Static constant data shared by the font engines.
Windows font engine using Direct Write.
void setUniqueFamilyName(const QString &newName)
glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QFixedPoint &, const QTransform &matrix, GlyphFormat) override
QImage bitmapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t, const QColor &color) override
const QSharedPointer< QWindowsFontEngineData > & fontEngineData() const
QString str
[2]
Combined button and popup list for selecting options.
void * HANDLE
AudioChannelLayoutTag tag
static const QCssKnownValue positions[NumKnownPositionModes - 1]
static const QCssKnownValue properties[NumProperties - 1]
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char * destination
GLboolean GLboolean GLboolean b
GLuint64 GLenum void * handle
GLboolean GLboolean GLboolean GLboolean a
[7]
GLboolean r
[2]
GLenum GLuint GLenum GLsizei length
GLsizei GLenum const void GLuint GLsizei GLfloat * metrics
GLenum GLuint buffer
GLuint color
[2]
GLbitfield flags
GLboolean GLboolean g
GLuint GLenum matrix
GLdouble GLdouble t
Definition qopenglext.h:243
GLsizei const GLchar *const * path
GLenum GLsizei len
static const QRectF boundingRect(const QPointF *points, int pointCount)
#define QT_REQUIRE_CONFIG(feature)
unsigned int glyph_t
unsigned char uchar
Definition qtypes.h:32
unsigned int uint
Definition qtypes.h:34
double qreal
Definition qtypes.h:187
QNetworkRequest request(url)