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
qquicktext_p_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 QQUICKTEXT_P_P_H
5#define QQUICKTEXT_P_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 "qquicktext_p.h"
20
21#include <QtQml/qqml.h>
22#include <QtGui/qabstracttextdocumentlayout.h>
23#include <QtGui/qtextlayout.h>
24#include <private/qquickstyledtext_p.h>
25#include <private/qlazilyallocated_p.h>
26#include <private/qquicktextdocument_p.h>
27
29
30class QTextLayout;
31
33{
34 Q_DECLARE_PUBLIC(QQuickText)
35public:
38 void init();
39
40 void updateBaseline(qreal baseline, qreal dy);
41 void updateSize();
42 void signalSizeChange(const QSizeF &previousSize);
43 void updateLayout();
44 bool determineHorizontalAlignment();
45 bool setHAlign(QQuickText::HAlignment, bool forceAlign = false);
46 void mirrorChange() override;
47 bool isLineLaidOutConnected();
48 void setLineGeometry(QTextLine &line, qreal lineWidth, qreal &height);
49
50 int lineHeightOffset() const;
51 QString elidedText(qreal lineWidth, const QTextLine &line, const QTextLine *nextLine = nullptr) const;
52 void elideFormats(int start, int length, int offset, QVector<QTextLayout::FormatRange> *elidedFormats);
53 void clearFormats();
54
55 void processHoverEvent(QHoverEvent *event);
56 bool transformChanged(QQuickItem *transformedItem) override;
57
60
90 QLazilyAllocated<ExtraData> extra;
91
96
98 QScopedPointer<QTextLayout> elideLayout;
99 QScopedPointer<QQuickTextLine> textLine;
100
102
106
109
113 UpdatePaintNode
114 };
115
124
126
129 bool richText:1;
138 bool truncated:1;
145 bool polishSize:1; // Workaround for problem with polish called after updateSize (QTBUG-42636)
147
148 static const QChar elideChar;
149 static const int largeTextSizeThreshold;
150
151 qreal getImplicitWidth() const override;
152 qreal getImplicitHeight() const override;
153
154 qreal availableWidth() const;
155 qreal availableHeight() const;
156
157 inline qreal padding() const { return extra.isAllocated() ? extra->padding : 0.0; }
158 void setTopPadding(qreal value, bool reset = false);
159 void setLeftPadding(qreal value, bool reset = false);
160 void setRightPadding(qreal value, bool reset = false);
161 void setBottomPadding(qreal value, bool reset = false);
162
163 void ensureDoc();
164 void updateDocumentText();
165
166 qreal devicePixelRatio() const;
167
168 QRectF setupTextLayout(qreal * const baseline);
169 void setupCustomLineGeometry(QTextLine &line, qreal &height, int fullLayoutTextLength, int lineOffset = 0);
170 bool isLinkActivatedConnected();
171 bool isLinkHoveredConnected();
173
181
182 QVector<LinkDesc> getLinks() const;
183
184 static QString anchorAt(const QTextLayout *layout, const QPointF &mousePos);
185 QString anchorAt(const QPointF &pos) const;
186
187 inline qreal lineHeight() const { return extra.isAllocated() ? extra->lineHeight : 1.0; }
188 inline int maximumLineCount() const { return extra.isAllocated() ? extra->maximumLineCount : INT_MAX; }
189 inline int renderTypeQuality() const { return extra.isAllocated() ? extra->renderTypeQuality : QQuickText::DefaultRenderTypeQuality; }
190 inline QQuickText::LineHeightMode lineHeightMode() const { return extra.isAllocated() ? extra->lineHeightMode : QQuickText::ProportionalHeight; }
191 inline QQuickText::FontSizeMode fontSizeMode() const { return extra.isAllocated() ? extra->fontSizeMode : QQuickText::FixedSize; }
192 inline int minimumPixelSize() const { return extra.isAllocated() ? extra->minimumPixelSize : 12; }
193 inline int minimumPointSize() const { return extra.isAllocated() ? extra->minimumPointSize : 12; }
194 static inline QQuickTextPrivate *get(QQuickText *t) { return t->d_func(); }
195};
196
198
199#endif // QQUICKTEXT_P_P_H
\inmodule QtCore
\reentrant
Definition qfontinfo.h:16
\reentrant
Definition qfont.h:22
\inmodule QtGui
Definition qevent.h:246
\inmodule QtCore\reentrant
Definition qpoint.h:217
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
Definition qquickitem.h:63
QQuickText::LineHeightMode lineHeightMode() const
int minimumPixelSize() const
qreal padding() const
QLazilyAllocated< ExtraData > extra
static QQuickTextPrivate * get(QQuickText *t)
int minimumPointSize() const
QScopedPointer< QTextLayout > elideLayout
int maximumLineCount() const
QScopedPointer< QQuickTextLine > textLine
QQuickText::RenderType renderType
QQuickText::TextElideMode elideMode
QQuickText::WrapMode wrapMode
int renderTypeQuality() const
QQuickText::TextStyle style
QQuickText::VAlignment vAlign
static const int largeTextSizeThreshold
QQuickText::FontSizeMode fontSizeMode() const
static const QChar elideChar
qreal lineHeight() const
QStringList links() const
QQuickText::HAlignment hAlign
QQuickText::TextFormat format
@ DefaultRenderTypeQuality
\inmodule QtCore\reentrant
Definition qrect.h:484
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
Definition qsize.h:208
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\reentrant \inmodule QtGui
\reentrant
Definition qtextlayout.h:70
\reentrant
\inmodule QtCore
Definition qurl.h:94
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
static QRectF setupTextLayout(QTextLayout *layout)
GLint GLsizei GLsizei height
GLenum GLuint GLenum GLsizei length
GLuint start
GLenum GLuint GLintptr offset
struct _cl_event * event
GLboolean reset
GLdouble GLdouble t
Definition qopenglext.h:243
QT_BEGIN_NAMESPACE typedef unsigned int QRgb
Definition qrgb.h:13
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
double qreal
Definition qtypes.h:187
QVBoxLayout * layout
QList< QQuickStyledTextImgTag * > imgTags
QQuickText::LineHeightMode lineHeightMode
QList< QQuickPixmap * > pixmapsInProgress
QList< QQuickStyledTextImgTag * > visibleImgTags
QQuickText::FontSizeMode fontSizeMode