35 Q_DECLARE_PUBLIC(QQuickText)
41 void updateBaseline(qreal baseline, qreal dy);
43 void signalSizeChange(
const QSizeF &previousSize);
45 bool determineHorizontalAlignment();
46 bool setHAlign(QQuickText::HAlignment,
bool forceAlign =
false);
47 void mirrorChange() override;
48 bool isLineLaidOutConnected();
49 void setLineGeometry(QTextLine &line, qreal lineWidth, qreal &height);
50 void positionInlineImages(
const QTextLine &line,
const QList<QTextLayout::FormatRange> &formats);
52 int lineHeightOffset()
const;
53 QString elidedText(qreal lineWidth,
const QTextLine &line)
const;
54 void elideFormats(
int start,
int length,
int offset, QList<QTextLayout::FormatRange> *elidedFormats);
57 void processHoverEvent(QHoverEvent *event);
58 bool transformChanged(QQuickItem *transformedItem) override;
60 QRectF layedOutTextRect;
71 bool explicitTopPadding : 1;
72 bool explicitLeftPadding : 1;
73 bool explicitRightPadding : 1;
74 bool explicitBottomPadding : 1;
77 QQuickTextImageHandler *imageHandler =
nullptr;
80 QString hoveredToolTip;
84 int renderTypeQuality;
85 bool lineHeightValid : 1;
86 QQuickText::LineHeightMode lineHeightMode;
87 QQuickText::FontSizeMode fontSizeMode;
88 QList<QQuickStyledTextImgTag*> imgTags;
89 QList<QQuickStyledTextImgTag*> visibleImgTags;
90 QList<QQuickPixmap *> pixmapsInProgress;
93 QLazilyAllocated<ExtraData> extra;
101 QScopedPointer<QTextLayout> elideLayout;
102 QScopedPointer<QQuickTextLine> textLine;
119 QQuickText::TextElideMode elideMode;
120 QQuickText::HAlignment hAlign;
121 QQuickText::VAlignment vAlign;
122 QQuickText::TextFormat format;
123 QQuickText::WrapMode wrapMode;
124 QQuickText::TextStyle style;
125 QQuickText::RenderType renderType;
126 UpdateType updateType;
128 QString assignedFont;
130 bool maximumLineCountValid:1;
131 bool updateOnComponentComplete:1;
135 bool widthExceeded:1;
136 bool heightExceeded:1;
137 bool internalWidthUpdate:1;
138 bool requireImplicitSize:1;
139 bool implicitWidthValid:1;
140 bool implicitHeightValid:1;
142 bool hAlignImplicit:1;
143 bool rightToLeftText:1;
144 bool layoutTextElided:1;
145 bool textHasChanged:1;
146 bool needToUpdateLayout:1;
147 bool formatModifiesFontSize:1;
149 bool updateSizeRecursionGuard:1;
150 bool containsUnscalableGlyphs:1;
152 static const QChar elideChar;
153 static const int largeTextSizeThreshold;
155 qreal getImplicitWidth()
const override;
156 qreal getImplicitHeight()
const override;
158 qreal availableWidth()
const;
159 qreal availableHeight()
const;
161 inline qreal padding()
const {
return extra.isAllocated() ? extra->padding : 0.0; }
162 void setTopPadding(qreal value,
bool reset =
false);
163 void setLeftPadding(qreal value,
bool reset =
false);
164 void setRightPadding(qreal value,
bool reset =
false);
165 void setBottomPadding(qreal value,
bool reset =
false);
168 void updateDocumentText();
170 QRectF setupTextLayout(qreal *
const baseline);
171 void setupCustomLineGeometry(QTextLine &line, qreal &height,
int fullLayoutTextLength,
int lineOffset = 0);
172 bool isLinkActivatedConnected();
173 bool isLinkHoveredConnected();
174 bool isHoveredToolTipChangedConnected();
175 QStringList links()
const;
179 QString m_anchorTarget;
185 QList<LinkDesc> getLinks()
const;
187 static QString anchorAt(
const QTextLayout *layout,
const QPointF &mousePos);
188 QString anchorAt(
const QPointF &pos)
const;
189 static QString toolTipAt(
const QTextLayout *layout,
const QPointF &mousePos);
190 QString toolTipAt(
const QPointF &pos)
const;
192 inline qreal lineHeight()
const {
return extra.isAllocated() ? extra->lineHeight : 1.0; }
193 inline int maximumLineCount()
const {
return extra.isAllocated() ? extra->maximumLineCount : INT_MAX; }
194 inline int renderTypeQuality()
const {
return extra.isAllocated() ? extra->renderTypeQuality : QQuickText::DefaultRenderTypeQuality; }
195 inline QQuickText::LineHeightMode lineHeightMode()
const {
return extra.isAllocated() ? extra->lineHeightMode : QQuickText::ProportionalHeight; }
196 inline QQuickText::FontSizeMode fontSizeMode()
const {
return extra.isAllocated() ? extra->fontSizeMode : QQuickText::FixedSize; }
197 inline int minimumPixelSize()
const {
return extra.isAllocated() ? extra->minimumPixelSize : 12; }
198 inline int minimumPointSize()
const {
return extra.isAllocated() ? extra->minimumPointSize : 12; }
199 static inline QQuickTextPrivate *get(QQuickText *t) {
return t->d_func(); }
#define QQUICKTEXT_LARGETEXT_THRESHOLD
static void positionInlineImage(QQuickStyledTextImgTag *image, int textPos, const QTextLine &line)
static void getLinks_helper(const QTextLayout *layout, QList< QQuickTextPrivate::LinkDesc > *links)