Qt 6.x
The Qt SDK
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
26struct IDWriteFont;
27struct IDWriteFontFace;
28struct IDWriteFontFile;
29struct IDWriteFactory;
30struct IDWriteBitmapRenderTarget;
31struct IDWriteGdiInterop;
32struct IDWriteGlyphRunAnalysis;
33
35
37
38class Q_GUI_EXPORT QWindowsFontEngineDirectWrite : public QFontEngine
39{
40 Q_DISABLE_COPY_MOVE(QWindowsFontEngineDirectWrite)
41public:
42 explicit QWindowsFontEngineDirectWrite(IDWriteFontFace *directWriteFontFace,
43 qreal pixelSize,
46
47 void initFontInfo(const QFontDef &request, int dpi);
48
49 QFixed lineThickness() const override;
50 QFixed underlinePosition() const override;
51 bool getSfntTableData(uint tag, uchar *buffer, uint *length) const override;
52 QFixed emSquareSize() const override;
53
54 glyph_t glyphIndex(uint ucs4) const override;
55 bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs,
56 ShaperFlags flags) const override;
57 void recalcAdvances(QGlyphLayout *glyphs, ShaperFlags) const override;
58
59 void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
60 QPainterPath *path, QTextItem::RenderFlags flags) override;
61
62 glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override;
65 const QTransform &matrix, GlyphFormat) override;
66
67 QFixed capHeight() const override;
68 QFixed xHeight() const override;
69 qreal maxCharWidth() const override;
70 FaceId faceId() const override;
71
72 bool supportsHorizontalSubPixelPositions() const override;
73
74 HFONT createHFONT() const;
75
76 QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition) override;
78 const QFixedPoint &subPixelPosition,
79 const QTransform &t) override;
81 const QFixedPoint &subPixelPosition,
82 const QTransform &xform) override;
84 const QFixedPoint &subPixelPosition,
85 const QTransform &t,
86 const QColor &color) override;
87
88 QFontEngine *cloneWithSize(qreal pixelSize) const override;
89 Qt::HANDLE handle() const override;
90
91 const QSharedPointer<QWindowsFontEngineData> &fontEngineData() const { return m_fontEngineData; }
92
93 static QString fontNameSubstitute(const QString &familyName);
94
95 IDWriteFontFace *directWriteFontFace() const { return m_directWriteFontFace; }
96
97 void setUniqueFamilyName(const QString &newName) { m_uniqueFamilyName = newName; }
98
99 void initializeHeightMetrics() const override;
100
101 Properties properties() const override;
103
104private:
105 QImage imageForGlyph(glyph_t t,
106 const QFixedPoint &subPixelPosition,
107 int margin,
108 const QTransform &xform,
109 const QColor &color = QColor());
110 void collectMetrics();
111 void renderGlyphRun(QImage *destination, float r, float g, float b, float a, IDWriteGlyphRunAnalysis *glyphAnalysis, const QRect &boundingRect);
112 static QString filenameFromFontFile(IDWriteFontFile *fontFile);
113
114 const QSharedPointer<QWindowsFontEngineData> m_fontEngineData;
115
116 IDWriteFontFace *m_directWriteFontFace;
117 IDWriteBitmapRenderTarget *m_directWriteBitmapRenderTarget;
118
119 QFixed m_lineThickness;
120 QFixed m_underlinePosition;
121 int m_unitsPerEm;
122 QFixed m_capHeight;
123 QFixed m_xHeight;
124 QFixed m_maxAdvanceWidth;
125 FaceId m_faceId;
126 QString m_uniqueFamilyName;
127};
128
130
131#endif // QWINDOWSFONTENGINEDIRECTWRITE_H
\inmodule QtCore
Definition qchar.h:48
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
virtual bool supportsHorizontalSubPixelPositions() const
virtual QFixed capHeight() const =0
virtual Properties properties() const
virtual Qt::HANDLE handle() const
virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs, QPainterPath *path, QTextItem::RenderFlags flags)
virtual FaceId faceId() const
virtual qreal maxCharWidth() const =0
virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics)
virtual QFontEngine * cloneWithSize(qreal) const
virtual QImage alphaMapForGlyph(glyph_t)
virtual QImage alphaRGBMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t)
virtual void initializeHeightMetrics() const
virtual glyph_t glyphIndex(uint ucs4) const =0
virtual QFixed lineThickness() const
virtual QFixed underlinePosition() const
virtual bool getSfntTableData(uint tag, uchar *buffer, uint *length) const
Returns true if the font table idetified by tag exists in the font; returns false otherwise.
virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs)
virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const
virtual QFixed xHeight() const
virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const =0
virtual QFixed emSquareSize() const
\inmodule QtGui
Definition qimage.h:37
\inmodule QtGui
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
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]
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
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
GLbitfield flags
GLboolean GLboolean g
GLenum GLsizei len
GLuint GLenum matrix
GLdouble GLdouble t
Definition qopenglext.h:243
GLsizei const GLchar *const * path
static const QRectF boundingRect(const QPointF *points, int pointCount)
#define QT_REQUIRE_CONFIG(feature)
unsigned int glyph_t
unsigned char uchar
Definition qtypes.h:27
unsigned int uint
Definition qtypes.h:29
double qreal
Definition qtypes.h:92
QNetworkRequest request(url)