aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktext_p_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquicktext_p_p.h')
-rw-r--r--src/quick/items/qquicktext_p_p.h46
1 files changed, 29 insertions, 17 deletions
diff --git a/src/quick/items/qquicktext_p_p.h b/src/quick/items/qquicktext_p_p.h
index 0f8c93a9e3..0425c37406 100644
--- a/src/quick/items/qquicktext_p_p.h
+++ b/src/quick/items/qquicktext_p_p.h
@@ -60,6 +60,7 @@
#include <QtGui/qabstracttextdocumentlayout.h>
#include <QtGui/qtextlayout.h>
#include <private/qquickstyledtext_p.h>
+#include <private/qlazilyallocated_p.h>
QT_BEGIN_NAMESPACE
@@ -79,17 +80,30 @@ public:
bool determineHorizontalAlignment();
bool setHAlign(QQuickText::HAlignment, bool forceAlign = false);
void mirrorChange();
- QTextDocument *textDocument();
bool isLineLaidOutConnected();
void setLineGeometry(QTextLine &line, qreal lineWidth, qreal &height);
- QString elidedText(int lineWidth, const QTextLine &line, QTextLine *nextLine = 0) const;
- QRect layedOutTextRect;
+ QString elidedText(qreal lineWidth, const QTextLine &line, QTextLine *nextLine = 0) const;
+ void elideFormats(int start, int length, int offset, QList<QTextLayout::FormatRange> *elidedFormats);
- qreal lineHeight;
+ QRectF layedOutTextRect;
+
+ struct ExtraData {
+ ExtraData();
+
+ qreal lineHeight;
+ QQuickTextDocumentWithImageResources *doc;
+ QString activeLink;
+ int minimumPixelSize;
+ int minimumPointSize;
+ int nbActiveDownloads;
+ int maximumLineCount;
+ QQuickText::LineHeightMode lineHeightMode;
+ QQuickText::FontSizeMode fontSizeMode;
+ };
+ QLazilyAllocated<ExtraData> extra;
QString text;
- QString activeLink;
QUrl baseUrl;
QFont font;
QFont sourceFont;
@@ -99,7 +113,6 @@ public:
QTextLayout layout;
QTextLayout *elideLayout;
QQuickTextLine *textLine;
- QQuickTextDocumentWithImageResources *doc;
#if defined(Q_OS_MAC)
QList<QRectF> linesRects;
@@ -112,11 +125,7 @@ public:
QRgb styleColor;
int lineCount;
- int maximumLineCount;
int multilengthEos;
- int minimumPixelSize;
- int minimumPointSize;
- int nbActiveDownloads;
enum UpdateType {
UpdateNone,
@@ -124,14 +133,12 @@ public:
UpdatePaintNode
};
+ QQuickText::TextElideMode elideMode;
QQuickText::HAlignment hAlign;
QQuickText::VAlignment vAlign;
- QQuickText::TextElideMode elideMode;
QQuickText::TextFormat format;
QQuickText::WrapMode wrapMode;
- QQuickText::LineHeightMode lineHeightMode;
QQuickText::TextStyle style;
- QQuickText::FontSizeMode fontSizeMode;
UpdateType updateType;
bool maximumLineCountValid:1;
@@ -148,6 +155,7 @@ public:
bool layoutTextElided:1;
bool textHasChanged:1;
bool needToUpdateLayout:1;
+ bool formatModifiesFontSize:1;
static const QChar elideChar;
@@ -155,14 +163,18 @@ public:
void ensureDoc();
- QRect setupTextLayout(qreal *const naturalWidth);
+ QRectF setupTextLayout(qreal *const naturalWidth);
void setupCustomLineGeometry(QTextLine &line, qreal &height, int lineOffset = 0);
bool isLinkActivatedConnected();
QString anchorAt(const QPointF &pos);
- static inline QQuickTextPrivate *get(QQuickText *t) {
- return t->d_func();
- }
+ inline qreal lineHeight() const { return extra.isAllocated() ? extra->lineHeight : 1.0; }
+ inline int maximumLineCount() const { return extra.isAllocated() ? extra->maximumLineCount : INT_MAX; }
+ inline QQuickText::LineHeightMode lineHeightMode() const { return extra.isAllocated() ? extra->lineHeightMode : QQuickText::ProportionalHeight; }
+ inline QQuickText::FontSizeMode fontSizeMode() const { return extra.isAllocated() ? extra->fontSizeMode : QQuickText::FixedSize; }
+ inline int minimumPixelSize() const { return extra.isAllocated() ? extra->minimumPixelSize : 12; }
+ inline int minimumPointSize() const { return extra.isAllocated() ? extra->minimumPointSize : 12; }
+ static inline QQuickTextPrivate *get(QQuickText *t) { return t->d_func(); }
};
class QQuickPixmap;