// Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only // Qt-Security score:significant reason:default #ifndef QQUICKTEXTDOCUMENT_P_H #define QQUICKTEXTDOCUMENT_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include "qquicktextdocument.h" #include #include #include #include #include #include #if QT_CONFIG(mimetype) #include #endif QT_BEGIN_NAMESPACE class QQuickPixmap; class QQuickTextEdit; /*! \internal QTextImageHandler would attempt to resolve relative paths, and load the image itself if the document returns an invalid image from loadResource(). We replace it with this version instead, because Qt Quick's text resources are resolved against the Text item's context, and because we override intrinsicSize(). drawObject() is empty because we don't need to use this handler to paint images: they get put into scene graph nodes instead. */ class QQuickTextImageHandler : public QObject, public QTextObjectInterface { Q_OBJECT Q_INTERFACES(QTextObjectInterface) public: QQuickTextImageHandler(QObject *parent = nullptr); ~QQuickTextImageHandler() override = default; QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) override; void drawObject(QPainter *, const QRectF &, QTextDocument *, int, const QTextFormat &) override { } }; class QQuickTextDocumentPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QQuickTextDocument) public: static QQuickTextDocumentPrivate *get(QQuickTextDocument *doc) { return doc->d_func(); } static const QQuickTextDocumentPrivate *get(const QQuickTextDocument *doc) { return doc->d_func(); } void load(); void writeTo(const QUrl &fileUrl); QTextDocument *document() const; void setDocument(QTextDocument *doc); void setStatus(QQuickTextDocument::Status s, const QString &err); // so far the QQuickItem given to the QQuickTextDocument ctor is always a QQuickTextEdit QQuickTextEdit *editor = nullptr; QUrl url; QString errorString; Qt::TextFormat detectedFormat = Qt::AutoText; // url's extension, independent of TextEdit.textFormat std::optional encoding; // only relevant for HTML (Qt::RichText) QQuickTextDocument::Status status = QQuickTextDocument::Status::Null; }; namespace QtPrivate { class ProtectedLayoutAccessor: public QAbstractTextDocumentLayout { public: inline QTextCharFormat formatAccessor(int pos) { return format(pos); } }; } // namespace QtPrivate QT_END_NAMESPACE #endif // QQUICKTEXTDOCUMENT_P_H