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 preferTypoLineMetrics() const;
152 bool isColorFont() const { return glyphFormat == Format_ARGB; }
153 static bool isIgnorableChar(char32_t ucs4)
154 {
155 return ucs4 == QChar::LineSeparator
156 || ucs4 == QChar::LineFeed
157 || ucs4 == QChar::CarriageReturn
158 || ucs4 == QChar::ParagraphSeparator
159 || QChar::category(ucs4) == QChar::Other_Control;
160 }
161
162 virtual QFixed emSquareSize() const { return ascent(); }
163
164 /* returns 0 as glyph index for non existent glyphs */
165 virtual glyph_t glyphIndex(uint ucs4) const = 0;
166 virtual int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const = 0;
167 virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const {}
168 virtual void doKerning(QGlyphLayout *, ShaperFlags) const;
169
170 virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
171 QPainterPath *path, QTextItem::RenderFlags flags);
172
173 void getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags,
174 QVarLengthArray<glyph_t> &glyphs_out, QVarLengthArray<QFixedPoint> &positions);
175
176 virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
177 void addBitmapFontToPath(qreal x, qreal y, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags);
182 // ### Refactor this into a smaller and more flexible API.
183 virtual QImage alphaMapForGlyph(glyph_t);
184 virtual QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition);
185 virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
186 virtual QImage alphaMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t);
187 virtual QImage alphaRGBMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t);
188 virtual QImage bitmapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t, const QColor &color = QColor());
189 virtual Glyph *glyphData(glyph_t glyph, const QFixedPoint &subPixelPosition, GlyphFormat neededFormat, const QTransform &t);
190 virtual bool hasInternalCaching() const { return false; }
191
192 virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QFixedPoint &/*subPixelPosition*/, const QTransform &matrix, GlyphFormat /*format*/)
193 {
194 return boundingBox(glyph, matrix);
195 }
196
197 virtual void removeGlyphFromCache(glyph_t);
198
199 virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
201 virtual glyph_metrics_t boundingBox(glyph_t glyph, const QTransform &matrix);
202 glyph_metrics_t tightBoundingBox(const QGlyphLayout &glyphs);
203
204 virtual QFixed ascent() const;
205 virtual QFixed capHeight() const = 0;
206 virtual QFixed descent() const;
207 virtual QFixed leading() const;
208 virtual QFixed xHeight() const;
209 virtual QFixed averageCharWidth() const;
210
211 virtual QFixed lineThickness() const;
212 virtual QFixed underlinePosition() const;
213
214 virtual qreal maxCharWidth() const = 0;
215 virtual qreal minLeftBearing() const;
216 virtual qreal minRightBearing() const;
217
218 virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = nullptr, qreal *rightBearing = nullptr);
219
220 inline bool canRender(uint ucs4) const { return glyphIndex(ucs4) != 0; }
221 virtual bool canRender(const QChar *str, int len) const;
222
223 virtual bool supportsTransformation(const QTransform &transform) const;
224
225 virtual int glyphCount() const;
226 virtual int glyphMargin(GlyphFormat format) { return format == Format_A32 ? 2 : 0; }
227
228 virtual QFontEngine *cloneWithSize(qreal /*pixelSize*/) const { return nullptr; }
229
230 virtual Qt::HANDLE handle() const;
231
232 void *harfbuzzFont() const;
233 void *harfbuzzFace() const;
234 bool supportsScript(QChar::Script script) const;
235
236 inline static bool scriptRequiresOpenType(QChar::Script script)
237 {
238 return ((script >= QChar::Script_Syriac && script <= QChar::Script_Sinhala)
239 || script == QChar::Script_Khmer || script == QChar::Script_Nko);
240 }
241
242 virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints);
243
244 void clearGlyphCache(const void *key);
245 void setGlyphCache(const void *key, QFontEngineGlyphCache *data);
246 QFontEngineGlyphCache *glyphCache(const void *key, GlyphFormat format, const QTransform &transform, const QColor &color = QColor()) const;
247
248 static const uchar *getCMap(const uchar *table, uint tableSize, bool *isSymbolFont, int *cmapSize);
249 static quint32 getTrueTypeGlyphIndex(const uchar *cmap, int cmapSize, uint unicode);
250
251 static QByteArray convertToPostscriptFontFamilyName(const QByteArray &fontFamily);
252
253 virtual bool hasUnreliableGlyphOutline() const;
254 virtual bool expectsGammaCorrectedBlending() const;
255
263
271
272private:
273 const Type m_type;
274
275public:
278
279 class Holder { // replace by std::unique_ptr once available
280 void *ptr;
281 qt_destroy_func_t destroy_func;
282 public:
283 Holder() : ptr(nullptr), destroy_func(nullptr) {}
284 explicit Holder(void *p, qt_destroy_func_t d) : ptr(p), destroy_func(d) {}
285 ~Holder() { if (ptr && destroy_func) destroy_func(ptr); }
286 Holder(Holder &&other) noexcept
287 : ptr(std::exchange(other.ptr, nullptr)),
288 destroy_func(std::exchange(other.destroy_func, nullptr))
289 {
290 }
291 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(Holder)
292
294 {
295 qSwap(ptr, other.ptr);
296 qSwap(destroy_func, other.destroy_func);
297 }
298
299 void *get() const noexcept { return ptr; }
300 void *release() noexcept {
301 void *result = ptr;
302 ptr = nullptr;
303 destroy_func = nullptr;
304 return result;
305 }
306 void reset() noexcept { Holder().swap(*this); }
307 qt_destroy_func_t get_deleter() const noexcept { return destroy_func; }
308
309 bool operator!() const noexcept { return !ptr; }
310 };
311
312 mutable Holder font_; // \ NOTE: Declared before m_glyphCaches, so font_, face_
313 mutable Holder face_; // / are destroyed _after_ m_glyphCaches is destroyed.
314
319
320 uint cache_cost; // amount of mem used in bytes by the font
322 bool symbol;
324 struct KernPair {
327
328 inline bool operator<(const KernPair &other) const
329 {
330 return left_right < other.left_right;
331 }
332 };
333 QList<KernPair> kerning_pairs;
334 void loadKerningPairs(QFixed scalingFactor);
335
337 int m_subPixelPositionCount; // Number of positions within a single pixel for this cache
338
339protected:
340 explicit QFontEngine(Type type);
341
342 QFixed firstLeftBearing(const QGlyphLayout &glyphs);
343 QFixed lastRightBearing(const QGlyphLayout &glyphs);
344
345 QFixed calculatedCapHeight() const;
346
351
352 virtual void initializeHeightMetrics() const;
353 bool processHheaTable() const;
354 bool processOS2Table() const;
355
356private:
357 struct GlyphCacheEntry {
358 GlyphCacheEntry();
359 GlyphCacheEntry(const GlyphCacheEntry &);
360 ~GlyphCacheEntry();
361
362 GlyphCacheEntry &operator=(const GlyphCacheEntry &);
363
364 QExplicitlySharedDataPointer<QFontEngineGlyphCache> cache;
365 bool operator==(const GlyphCacheEntry &other) const { return cache == other.cache; }
366 };
367 typedef std::list<GlyphCacheEntry> GlyphCaches;
368 mutable QHash<const void *, GlyphCaches> m_glyphCaches;
369
370private:
371 mutable qreal m_minLeftBearing;
372 mutable qreal m_minRightBearing;
373};
375
376Q_DECLARE_OPERATORS_FOR_FLAGS(QFontEngine::ShaperFlags)
377
378inline bool operator ==(const QFontEngine::FaceId &f1, const QFontEngine::FaceId &f2)
379{
380 return f1.index == f2.index
381 && f1.encoding == f2.encoding
382 && f1.filename == f2.filename
383 && f1.uuid == f2.uuid
384 && f1.instanceIndex == f2.instanceIndex
385 && f1.variableAxes == f2.variableAxes;
386}
387
388inline size_t qHash(const QFontEngine::FaceId &f, size_t seed = 0)
389 noexcept(noexcept(qHash(f.filename)))
390{
391 return qHashMulti(seed, f.filename, f.uuid, f.index, f.instanceIndex, f.encoding, f.variableAxes.keys(), f.variableAxes.values());
392}
393
394
395class QGlyph;
396
397
398
400{
401public:
402 QFontEngineBox(int size);
404
405 virtual glyph_t glyphIndex(uint ucs4) const override;
406 virtual int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override;
407 virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const override;
408
409 void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si);
410 virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) override;
411
412 virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override;
413 virtual glyph_metrics_t boundingBox(glyph_t glyph) override;
414 virtual QFontEngine *cloneWithSize(qreal pixelSize) const override;
415
416 virtual QFixed ascent() const override;
417 virtual QFixed capHeight() const override;
418 virtual QFixed descent() const override;
419 virtual QFixed leading() const override;
420 virtual qreal maxCharWidth() const override;
421 virtual qreal minLeftBearing() const override { return 0; }
422 virtual qreal minRightBearing() const override { return 0; }
423 virtual QImage alphaMapForGlyph(glyph_t) override;
424
425 virtual bool canRender(const QChar *string, int len) const override;
426
427 inline int size() const { return _size; }
428
429protected:
430 explicit QFontEngineBox(Type type, int size);
431
432private:
433 friend class QFontPrivate;
434 int _size;
435};
436
437class Q_GUI_EXPORT QFontEngineMulti : public QFontEngine
438{
439public:
440 explicit QFontEngineMulti(QFontEngine *engine, int script, const QStringList &fallbackFamilies = QStringList());
442
443 virtual glyph_t glyphIndex(uint ucs4) const override;
444 virtual int stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const override;
445
446 virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) override;
447 virtual glyph_metrics_t boundingBox(glyph_t glyph) override;
448
449 virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const override;
450 virtual void doKerning(QGlyphLayout *, ShaperFlags) const override;
451 virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags) override;
452 virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = nullptr, qreal *rightBearing = nullptr) override;
453
454 virtual QFixed ascent() const override;
455 virtual QFixed capHeight() const override;
456 virtual QFixed descent() const override;
457 virtual QFixed leading() const override;
458 virtual QFixed xHeight() const override;
459 virtual QFixed averageCharWidth() const override;
460 virtual QImage alphaMapForGlyph(glyph_t) override;
461 virtual QImage alphaMapForGlyph(glyph_t glyph, const QFixedPoint &subPixelPosition) override;
462 virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t) override;
463 virtual QImage alphaMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t) override;
464 virtual QImage alphaRGBMapForGlyph(glyph_t, const QFixedPoint &subPixelPosition, const QTransform &t) override;
465
466 virtual QFixed lineThickness() const override;
467 virtual QFixed underlinePosition() const override;
468 virtual qreal maxCharWidth() const override;
469 virtual qreal minLeftBearing() const override;
470 virtual qreal minRightBearing() const override;
471
472 virtual bool canRender(const QChar *string, int len) const override;
473
474 inline int fallbackFamilyCount() const { return m_fallbackFamilies.size(); }
475 inline QString fallbackFamilyAt(int at) const { return m_fallbackFamilies.at(at); }
476
477 void setFallbackFamiliesList(const QStringList &fallbackFamilies);
478
479 static uchar highByte(glyph_t glyph); // Used for determining engine
480
481 inline QFontEngine *engine(int at) const
482 { Q_ASSERT(at < m_engines.size()); return m_engines.at(at); }
483
484 void ensureEngineAt(int at);
485
486 static QFontEngine *createMultiFontEngine(QFontEngine *fe, int script);
487
488protected:
489 virtual void ensureFallbackFamiliesQueried();
490 virtual bool shouldLoadFontEngineForCharacter(int at, uint ucs4) const;
491 virtual QFontEngine *loadEngine(int at);
492
493private:
494 QList<QFontEngine *> m_engines;
495 QStringList m_fallbackFamilies;
496 const int m_script;
497 bool m_fallbackFamiliesQueried;
498};
499
501{
502public:
504};
505
507
508
509
510#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.
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:154
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
Definition qtypeinfo.h:177
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