aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktext.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-11-03 13:27:13 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-11-03 13:27:13 +0100
commitf2244103ff7a9b61fc7bcb7e920d8cc6b2f5f226 (patch)
tree8fe753743c46d4a652f582a7a2a49e5709eaa6e0 /src/quick/items/qquicktext.cpp
parent57430b2bdad32150e0ed8ceb6893430363ee6670 (diff)
parent164af37710e5721cbc7d79a0af20f2387181c59c (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: tools/qmlprofiler/qmlprofilerclient.cpp Change-Id: I1de8832fefd0e45fea16ca072b6c7ae44fa376d4
Diffstat (limited to 'src/quick/items/qquicktext.cpp')
-rw-r--r--src/quick/items/qquicktext.cpp148
1 files changed, 1 insertions, 147 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
index b89cfe8c04..d32b194803 100644
--- a/src/quick/items/qquicktext.cpp
+++ b/src/quick/items/qquicktext.cpp
@@ -40,6 +40,7 @@
#include "qquicktextnode_p.h"
#include "qquickimage_p_p.h"
#include "qquicktextutil_p.h"
+#include "qquicktextdocument_p.h"
#include <QtQuick/private/qsgtexture_p.h>
@@ -117,153 +118,6 @@ void QQuickTextPrivate::init()
q->setFlag(QQuickItem::ItemHasContents);
}
-QQuickTextDocumentWithImageResources::QQuickTextDocumentWithImageResources(QQuickItem *parent)
-: QTextDocument(parent), outstanding(0)
-{
- setUndoRedoEnabled(false);
- documentLayout()->registerHandler(QTextFormat::ImageObject, this);
- connect(this, SIGNAL(baseUrlChanged(QUrl)), this, SLOT(reset()));
-}
-
-QQuickTextDocumentWithImageResources::~QQuickTextDocumentWithImageResources()
-{
- if (!m_resources.isEmpty())
- qDeleteAll(m_resources);
-}
-
-QVariant QQuickTextDocumentWithImageResources::loadResource(int type, const QUrl &name)
-{
- QQmlContext *context = qmlContext(parent());
-
- if (type == QTextDocument::ImageResource) {
- QQuickPixmap *p = loadPixmap(context, name);
- return p->image();
- }
-
- return QTextDocument::loadResource(type, name);
-}
-
-void QQuickTextDocumentWithImageResources::requestFinished()
-{
- outstanding--;
- if (outstanding == 0) {
- markContentsDirty(0, characterCount());
- emit imagesLoaded();
- }
-}
-
-QSizeF QQuickTextDocumentWithImageResources::intrinsicSize(
- QTextDocument *, int, const QTextFormat &format)
-{
- if (format.isImageFormat()) {
- QTextImageFormat imageFormat = format.toImageFormat();
-
- const int width = qRound(imageFormat.width());
- const bool hasWidth = imageFormat.hasProperty(QTextFormat::ImageWidth) && width > 0;
- const int height = qRound(imageFormat.height());
- const bool hasHeight = imageFormat.hasProperty(QTextFormat::ImageHeight) && height > 0;
-
- QSizeF size(width, height);
- if (!hasWidth || !hasHeight) {
- QQmlContext *context = qmlContext(parent());
- QUrl url = baseUrl().resolved(QUrl(imageFormat.name()));
-
- QQuickPixmap *p = loadPixmap(context, url);
- if (!p->isReady()) {
- if (!hasWidth)
- size.setWidth(16);
- if (!hasHeight)
- size.setHeight(16);
- return size;
- }
- QSize implicitSize = p->implicitSize();
-
- if (!hasWidth) {
- if (!hasHeight)
- size.setWidth(implicitSize.width());
- else
- size.setWidth(qRound(height * (implicitSize.width() / (qreal) implicitSize.height())));
- }
- if (!hasHeight) {
- if (!hasWidth)
- size.setHeight(implicitSize.height());
- else
- size.setHeight(qRound(width * (implicitSize.height() / (qreal) implicitSize.width())));
- }
- }
- return size;
- }
- return QSizeF();
-}
-
-void QQuickTextDocumentWithImageResources::drawObject(
- QPainter *, const QRectF &, QTextDocument *, int, const QTextFormat &)
-{
-}
-
-QImage QQuickTextDocumentWithImageResources::image(const QTextImageFormat &format)
-{
- QQmlContext *context = qmlContext(parent());
- QUrl url = baseUrl().resolved(QUrl(format.name()));
-
- QQuickPixmap *p = loadPixmap(context, url);
- return p->image();
-}
-
-void QQuickTextDocumentWithImageResources::reset()
-{
- clearResources();
- markContentsDirty(0, characterCount());
-}
-
-QQuickPixmap *QQuickTextDocumentWithImageResources::loadPixmap(
- QQmlContext *context, const QUrl &url)
-{
-
- QHash<QUrl, QQuickPixmap *>::Iterator iter = m_resources.find(url);
-
- if (iter == m_resources.end()) {
- QQuickPixmap *p = new QQuickPixmap(context->engine(), url);
- iter = m_resources.insert(url, p);
-
- if (p->isLoading()) {
- p->connectFinished(this, SLOT(requestFinished()));
- outstanding++;
- }
- }
-
- QQuickPixmap *p = *iter;
- if (p->isError()) {
- if (!errors.contains(url)) {
- errors.insert(url);
- qmlInfo(parent()) << p->error();
- }
- }
- return p;
-}
-
-void QQuickTextDocumentWithImageResources::clearResources()
-{
- foreach (QQuickPixmap *pixmap, m_resources)
- pixmap->clear(this);
- qDeleteAll(m_resources);
- m_resources.clear();
- outstanding = 0;
-}
-
-void QQuickTextDocumentWithImageResources::setText(const QString &text)
-{
- clearResources();
-
-#ifndef QT_NO_TEXTHTMLPARSER
- setHtml(text);
-#else
- setPlainText(text);
-#endif
-}
-
-QSet<QUrl> QQuickTextDocumentWithImageResources::errors;
-
QQuickTextPrivate::~QQuickTextPrivate()
{
delete elideLayout;