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
qfontengine_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 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 QFONTENGINE_P_H
5#define QFONTENGINE_P_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/private/qtguiglobal_p.h>
19#include "QtCore/qatomic.h"
20#include <QtCore/qvarlengtharray.h>
21#include <QtCore/qhashfunctions.h>
22#include "private/qtextengine_p.h"
23#include "private/qfont_p.h"
24
26
27class QPainterPath;
29
30struct QGlyphLayout;
31
32// ### this only used in getPointInOutline(), refactor it and then remove these magic numbers
40
41typedef void (*qt_destroy_func_t) (void *user_data);
43
44class Q_GUI_EXPORT QFontEngine
45{
46public:
47 enum Type {
50
51 // MS Windows types
53
54 // Apple Mac OS types
56
57 // QWS types
62
64
65 TestFontEngine = 0x1000
66 };
67
70 Format_Render = Format_None,
74 Format_ARGB
75 };
76
78 DesignMetrics = 0x0002,
79 GlyphIndicesOnly = 0x0004,
80 FullStringFallback = 0x008
81 };
82 Q_DECLARE_FLAGS(ShaperFlags, ShaperFlag)
83
84 /* Used with the Freetype font engine. */
85 struct Glyph {
86 Glyph() = default;
87 ~Glyph() { delete [] data; }
88 short linearAdvance = 0;
89 unsigned short width = 0;
90 unsigned short height = 0;
91 short x = 0;
92 short y = 0;
93 short advance = 0;
94 signed char format = 0;
95 uchar *data = nullptr;
96 private:
97 Q_DISABLE_COPY(Glyph)
98 };
99
100 virtual ~QFontEngine();
101
102 inline Type type() const { return m_type; }
103
104 // all of these are in unscaled metrics if the engine supports uncsaled metrics,
105 // otherwise in design metrics
118 virtual Properties properties() const;
119 virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics);
120 QByteArray getSfntTable(uint tag) const;
121 virtual bool getSfntTableData(uint tag, uchar *buffer, uint *length) const;
122
123 struct FaceId {
124 FaceId() : index(0), instanceIndex(-1), encoding(0) {}
127 int index;
130 QMap<QFont::Tag, float> variableAxes;
131 };
132 virtual FaceId faceId() const { return FaceId(); }
134 SynthesizedItalic = 0x1,
135 SynthesizedBold = 0x2,
136 SynthesizedStretch = 0x4
137 };
138 virtual int synthesized() const { return 0; }
139 inline bool supportsSubPixelPositions() const
140 {
141 return supportsHorizontalSubPixelPositions() || supportsVerticalSubPixelPositions();
142 }
143 virtual bool supportsHorizontalSubPixelPositions() const { return false; }
144 virtual bool supportsVerticalSubPixelPositions() const { return false; }
145 virtual QFixedPoint subPixelPositionFor(const QFixedPoint &position) const;
147 {
148 return subPixelPositionFor(QFixedPoint(x, 0)).x;
149 }
150
151 bool isColorFont() const { return glyphFormat == Format_ARGB; }
152 static bool isIgnorableChar(char32_t ucs4)
153 {
154 return ucs4 == QChar::LineSeparator
155 || ucs4 == QChar::LineFeed
156 || ucs4 == QChar::CarriageReturn
157 || ucs4 == QChar::ParagraphSeparator
158 || QChar::category(ucs4) == QChar::Other_Control;
159 }
160
161 virtual QFixed emSquareSize() const { return ascent(); }
162
163 /* returns 0 as glyph index for non existent glyphs */
164 virtual glyph_t glyphIndex(uint ucs4) const = 0;
165 virtual int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const = 0;
166 virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const {}
167 virtual void doKerning(QGlyphLayout *, ShaperFlags) const;
168
169 virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
170 QPainterPath *path, QTextItem::RenderFlags flags);
171
172 void getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags,
173 QVarLengthArray<glyph_t> &glyphs_out, QVarLengthArray<QFixedPoint> &positions);
174
175 virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
176 void addBitmapFontToPath(qreal x, qreal y, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags);
181 // ### Refactor this into a smaller and more flexible API.
182 virtual QImage alphaMapForGlyph(glyph_t);
183 virtual QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition);
184 virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
185 virtual QImage alphaMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t);
186 virtual QImage alphaRGBMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t);
187 virtual QImage bitmapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t, const QColor &color = QColor());
188 virtual Glyph *glyphData(glyph_t glyph, const QFixedPoint &subPixelPosition, GlyphFormat neededFormat, const QTransform &t);
189 virtual bool hasInternalCaching() const { return false; }
190
191 virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QFixedPoint &/*subPixelPosition*/, const QTransform &matrix, GlyphFormat /*format*/)
192 {
193 return boundingBox(glyph, matrix);
194 }
195
196 virtual void removeGlyphFromCache(glyph_t);
197
198 virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
200 virtual glyph_metrics_t boundingBox(glyph_t glyph, const QTransform &matrix);
201 glyph_metrics_t tightBoundingBox(const QGlyphLayout &glyphs);
202
203 virtual QFixed ascent() const;
204 virtual QFixed capHeight() const = 0;
205 virtual QFixed descent() const;
206 virtual QFixed leading() const;
207 virtual QFixed xHeight() const;
208 virtual QFixed averageCharWidth() const;
209
210 virtual QFixed lineThickness() const;
211 virtual QFixed underlinePosition() const;
212
213 virtual qreal maxCharWidth() const = 0;
214 virtual qreal minLeftBearing() const;
215 virtual qreal minRightBearing() const;
216
217 virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = nullptr, qreal *rightBearing = nullptr);
218
219 inline bool canRender(uint ucs4) const { return glyphIndex(ucs4) != 0; }
220 virtual bool canRender(const QChar *str, int len) const;
221
222 virtual bool supportsTransformation(const QTransform &transform) const;
223
224 virtual int glyphCount() const;
225 virtual int glyphMargin(GlyphFormat format) { return format == Format_A32 ? 2 : 0; }
226
227 virtual QFontEngine *cloneWithSize(qreal /*pixelSize*/) const { return nullptr; }
228
229 virtual Qt::HANDLE handle() const;
230
231 void *harfbuzzFont() const;
232 void *harfbuzzFace() const;
233 bool supportsScript(QChar::Script script) const;
234
235 inline static bool scriptRequiresOpenType(QChar::Script script)
236 {
237 return ((script >= QChar::Script_Syriac && script <= QChar::Script_Sinhala)
238 || script == QChar::Script_Khmer || script == QChar::Script_Nko);
239 }
240
241 virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints);
242
243 void clearGlyphCache(const void *key);
244 void setGlyphCache(const void *key, QFontEngineGlyphCache *data);
245 QFontEngineGlyphCache *glyphCache(const void *key, GlyphFormat format, const QTransform &transform, const QColor &color = QColor()) const;
246
247 static const uchar *getCMap(const uchar *table, uint tableSize, bool *isSymbolFont, int *cmapSize);
248 static quint32 getTrueTypeGlyphIndex(const uchar *cmap, int cmapSize, uint unicode);
249
250 static QByteArray convertToPostscriptFontFamilyName(const QByteArray &fontFamily);
251
252 virtual bool hasUnreliableGlyphOutline() const;
253 virtual bool expectsGammaCorrectedBlending() const;
254
262
270
271private:
272 const Type m_type;
273
274public:
277
278 class Holder { // replace by std::unique_ptr once available
279 void *ptr;
280 qt_destroy_func_t destroy_func;
281 public:
282 Holder() : ptr(nullptr), destroy_func(nullptr) {}
283 explicit Holder(void *p, qt_destroy_func_t d) : ptr(p), destroy_func(d) {}
284 ~Holder() { if (ptr && destroy_func) destroy_func(ptr); }
285 Holder(Holder &&other) noexcept
286 : ptr(std::exchange(other.ptr, nullptr)),
287 destroy_func(std::exchange(other.destroy_func, nullptr))
288 {
289 }
290 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(Holder)
291
293 {
294 qSwap(ptr, other.ptr);
295 qSwap(destroy_func, other.destroy_func);
296 }
297
298 void *get() const noexcept { return ptr; }
299 void *release() noexcept {
300 void *result = ptr;
301 ptr = nullptr;
302 destroy_func = nullptr;
303 return result;
304 }
305 void reset() noexcept { Holder().swap(*this); }
306 qt_destroy_func_t get_deleter() const noexcept { return destroy_func; }
307
308 bool operator!() const noexcept { return !ptr; }
309 };
310
311 mutable Holder font_; // \ NOTE: Declared before m_glyphCaches, so font_, face_
312 mutable Holder face_; // / are destroyed _after_ m_glyphCaches is destroyed.
313
318
319 uint cache_cost; // amount of mem used in bytes by the font
321 bool symbol;
323 struct KernPair {
326
327 inline bool operator<(const KernPair &other) const
328 {
329 return left_right < other.left_right;
330 }
331 };
332 QList<KernPair> kerning_pairs;
333 void loadKerningPairs(QFixed scalingFactor);
334
336 int m_subPixelPositionCount; // Number of positions within a single pixel for this cache
337
338protected:
339 explicit QFontEngine(Type type);
340
341 QFixed firstLeftBearing(const QGlyphLayout &glyphs);
342 QFixed lastRightBearing(const QGlyphLayout &glyphs);
343
344 QFixed calculatedCapHeight() const;
345
350
351 virtual void initializeHeightMetrics() const;
352 bool processHheaTable() const;
353 bool processOS2Table() const;
354
355private:
356 struct GlyphCacheEntry {
357 GlyphCacheEntry();
358 GlyphCacheEntry(const GlyphCacheEntry &);
359 ~GlyphCacheEntry();
360
361 GlyphCacheEntry &operator=(const GlyphCacheEntry &);
362
363 QExplicitlySharedDataPointer<QFontEngineGlyphCache> cache;
364 bool operator==(const GlyphCacheEntry &other) const { return cache == other.cache; }
365 };
366 typedef std::list<GlyphCacheEntry> GlyphCaches;
367 mutable QHash<const void *, GlyphCaches> m_glyphCaches;
368
369private:
370 mutable qreal m_minLeftBearing;
371 mutable qreal m_minRightBearing;
372};
374
375Q_DECLARE_OPERATORS_FOR_FLAGS(QFontEngine::ShaperFlags)
376
377inline bool operator ==(const QFontEngine::FaceId &f1, const QFontEngine::FaceId &f2)
378{
379 return f1.index == f2.index
380 && f1.encoding == f2.encoding
381 && f1.filename == f2.filename
382 && f1.uuid == f2.uuid
383 && f1.instanceIndex == f2.instanceIndex
384 && f1.variableAxes == f2.variableAxes;
385}
386
387inline size_t qHash(const QFontEngine::FaceId &f, size_t seed = 0)
388 noexcept(noexcept(qHash(f.filename)))
389{
390 return qHashMulti(seed, f.filename, f.uuid, f.index, f.instanceIndex, f.encoding, f.variableAxes.keys(), f.variableAxes.values());
391}
392
393
394class QGlyph;
395
396
397
399{
400public:
401 QFontEngineBox(int size);
403
404 virtual glyph_t glyphIndex(uint ucs4) const override;
405 virtual int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override;
406 virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const override;
407
408 void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si);
409 virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) override;
410
411 virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override;
412 virtual glyph_metrics_t boundingBox(glyph_t glyph) override;
413 virtual QFontEngine *cloneWithSize(qreal pixelSize) const override;
414
415 virtual QFixed ascent() const override;
416 virtual QFixed capHeight() const override;
417 virtual QFixed descent() const override;
418 virtual QFixed leading() const override;
419 virtual qreal maxCharWidth() const override;
420 virtual qreal minLeftBearing() const override { return 0; }
421 virtual qreal minRightBearing() const override { return 0; }
422 virtual QImage alphaMapForGlyph(glyph_t) override;
423
424 virtual bool canRender(const QChar *string, int len) const override;
425
426 inline int size() const { return _size; }
427
428protected:
429 explicit QFontEngineBox(Type type, int size);
430
431private:
432 friend class QFontPrivate;
433 int _size;
434};
435
436class Q_GUI_EXPORT QFontEngineMulti : public QFontEngine
437{
438public:
439 explicit QFontEngineMulti(QFontEngine *engine, int script, const QStringList &fallbackFamilies = QStringList());
441
442 virtual glyph_t glyphIndex(uint ucs4) const override;
443 virtual int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override;
444
445 virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override;
446 virtual glyph_metrics_t boundingBox(glyph_t glyph) override;
447
448 virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const override;
449 virtual void doKerning(QGlyphLayout *, ShaperFlags) const override;
450 virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags) override;
451 virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = nullptr, qreal *rightBearing = nullptr) override;
452
453 virtual QFixed ascent() const override;
454 virtual QFixed capHeight() const override;
455 virtual QFixed descent() const override;
456 virtual QFixed leading() const override;
457 virtual QFixed xHeight() const override;
458 virtual QFixed averageCharWidth() const override;
459 virtual QImage alphaMapForGlyph(glyph_t) override;
460 virtual QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition) override;
461 virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t) override;
462 virtual QImage alphaMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t) override;
463 virtual QImage alphaRGBMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t) override;
464
465 virtual QFixed lineThickness() const override;
466 virtual QFixed underlinePosition() const override;
467 virtual qreal maxCharWidth() const override;
468 virtual qreal minLeftBearing() const override;
469 virtual qreal minRightBearing() const override;
470
471 virtual bool canRender(const QChar *string, int len) const override;
472
473 inline int fallbackFamilyCount() const { return m_fallbackFamilies.size(); }
474 inline QString fallbackFamilyAt(int at) const { return m_fallbackFamilies.at(at); }
475
476 void setFallbackFamiliesList(const QStringList &fallbackFamilies);
477
478 static uchar highByte(glyph_t glyph); // Used for determining engine
479
480 inline QFontEngine *engine(int at) const
481 { Q_ASSERT(at < m_engines.size()); return m_engines.at(at); }
482
483 void ensureEngineAt(int at);
484
485 static QFontEngine *createMultiFontEngine(QFontEngine *fe, int script);
486
487protected:
488 virtual void ensureFallbackFamiliesQueried();
489 virtual bool shouldLoadFontEngineForCharacter(int at, uint ucs4) const;
490 virtual QFontEngine *loadEngine(int at);
491
492private:
493 QList<QFontEngine *> m_engines;
494 QStringList m_fallbackFamilies;
495 const int m_script;
496 bool m_fallbackFamiliesQueried;
497};
498
500{
501public:
503};
504
506
507
508
509#endif // QFONTENGINE_P_H
\inmodule QtCore
Definition qatomic.h:112
\inmodule QtCore
Definition qbytearray.h:57
\inmodule QtCore
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si)
virtual QImage alphaMapForGlyph(glyph_t) override
virtual qreal maxCharWidth() const override
virtual QFontEngine * cloneWithSize(qreal pixelSize) const override
int size() const
virtual qreal minLeftBearing() const override
virtual int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override
virtual QFixed leading() const override
virtual bool canRender(const QChar *string, int len) const override
virtual glyph_t glyphIndex(uint ucs4) const override
virtual QFixed descent() const override
virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const override
virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override
virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) override
virtual QFixed ascent() const override
virtual QFixed capHeight() const override
virtual qreal minRightBearing() const override
QFontEngineBox(int size)
QString fallbackFamilyAt(int at) const
int fallbackFamilyCount() const
QFontEngine * engine(int at) const
qt_destroy_func_t get_deleter() const noexcept
void * get() const noexcept
void reset() noexcept
Holder(void *p, qt_destroy_func_t d)
void swap(Holder &other) noexcept
bool operator!() const noexcept
void * release() noexcept
Holder(Holder &&other) noexcept
virtual bool supportsHorizontalSubPixelPositions() const
virtual QFixed capHeight() const =0
virtual glyph_metrics_t boundingBox(glyph_t glyph)=0
virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QFixedPoint &, const QTransform &matrix, GlyphFormat)
int m_subPixelPositionCount
virtual int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const =0
bool m_heightMetricsQueried
virtual FaceId faceId() const
bool isColorFont() const
static bool isIgnorableChar(char32_t ucs4)
virtual qreal maxCharWidth() const =0
QFontDef fontDef
virtual int glyphMargin(GlyphFormat format)
virtual QFontEngine * cloneWithSize(qreal) const
bool canRender(uint ucs4) const
virtual void setDefaultHintStyle(HintStyle)
virtual bool supportsVerticalSubPixelPositions() const
static bool scriptRequiresOpenType(QChar::Script script)
Type type() const
virtual glyph_t glyphIndex(uint ucs4) const =0
bool isSmoothlyScalable
bool supportsSubPixelPositions() const
QFixed subPixelPositionForX(QFixed x) const
QAtomicInt ref
GlyphFormat glyphFormat
virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const
QList< KernPair > kerning_pairs
virtual int synthesized() const
virtual bool hasInternalCaching() const
virtual QFixed emSquareSize() const
\inmodule QtGui
Definition qimage.h:37
\inmodule QtGui
\inmodule QtGui
\inmodule QtCore\reentrant
Definition qrect.h:484
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
const QChar at(qsizetype i) const
Returns the character at the given index position in the string.
Definition qstring.h:1226
QTestFontEngine(int size)
Internal QTextItem.
The QTransform class specifies 2D transformations of a coordinate system.
Definition qtransform.h:20
QString str
[2]
QCache< int, Employee > cache
[0]
Combined button and popup list for selecting options.
void * HANDLE
QList< QString > QStringList
Constructs a string list that contains the given string, str.
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 return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void * user_data
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
bool(* qt_get_font_table_func_t)(void *user_data, uint tag, uchar *buffer, uint *length)
void(* qt_destroy_func_t)(void *user_data)
size_t qHash(const QFontEngine::FaceId &f, size_t seed=0) noexcept(noexcept(qHash(f.filename)))
HB_Compat_Error
@ Err_Invalid_SubTable_Format
@ Err_Invalid_SubTable
@ Err_Invalid_Argument
@ Err_Ok
@ Err_Not_Covered
constexpr QtPrivate::QHashMultiReturnType< T... > qHashMulti(size_t seed, const T &... args) noexcept(std::conjunction_v< QtPrivate::QNothrowHashable< T >... >)
static ControlElement< T > * ptr(QWidget *widget)
GLuint64 GLenum void * handle
GLint GLint GLint GLint GLint x
[0]
GLuint64 key
GLint GLsizei GLsizei height
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint index
[2]
GLenum GLuint GLenum GLsizei length
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLfloat GLfloat f
GLsizei GLenum const void GLuint GLsizei GLfloat * metrics
GLenum GLuint buffer
GLint GLsizei width
GLuint color
[2]
GLenum type
GLbitfield flags
GLint GLsizei GLsizei GLenum format
GLint y
GLuint GLenum GLenum transform
GLuint GLenum matrix
GLdouble GLdouble t
Definition qopenglext.h:243
GLsizei const GLchar *const * path
GLuint64EXT * result
[6]
GLfloat GLfloat p
[1]
GLenum GLsizei len
GLenum GLenum GLsizei void * table
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
Definition qrandom.cpp:196
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
Definition qrandom.cpp:1220
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
QT_BEGIN_NAMESPACE constexpr void qSwap(T &value1, T &value2) noexcept(std::is_nothrow_swappable_v< T >)
Definition qswap.h:20
unsigned int glyph_t
@ Q_PRIMITIVE_TYPE
Definition qtypeinfo.h:157
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
Definition qtypeinfo.h:180
unsigned int quint32
Definition qtypes.h:50
unsigned char uchar
Definition qtypes.h:32
unsigned int uint
Definition qtypes.h:34
double qreal
Definition qtypes.h:187
QObject::connect nullptr
QSharedPointer< T > other(t)
[5]
this swap(other)
QAction * at
QJSEngine engine
[0]
qt_get_font_table_func_t get_font_table
QMap< QFont::Tag, float > variableAxes
bool operator<(const KernPair &other) const
Definition moc.h:23