Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-11-04 10:23:01

0001 // Copyright (C) 2019 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 
0004 #ifndef QTEXTDOCUMENT_H
0005 #define QTEXTDOCUMENT_H
0006 
0007 #include <QtGui/qtguiglobal.h>
0008 #include <QtCore/qobject.h>
0009 #include <QtCore/qsize.h>
0010 #include <QtCore/qrect.h>
0011 #include <QtCore/qvariant.h>
0012 #include <QtGui/qfont.h>
0013 #include <QtCore/qurl.h>
0014 #include <QtCore/qcontainerfwd.h>
0015 Q_MOC_INCLUDE(<QtGui/qtextcursor.h>)
0016 
0017 QT_BEGIN_NAMESPACE
0018 
0019 
0020 class QTextFormatCollection;
0021 class QTextListFormat;
0022 class QRect;
0023 class QPainter;
0024 class QPagedPaintDevice;
0025 class QAbstractTextDocumentLayout;
0026 class QPoint;
0027 class QTextObject;
0028 class QTextFormat;
0029 class QTextFrame;
0030 class QTextBlock;
0031 class QVariant;
0032 class QRectF;
0033 class QTextOption;
0034 class QTextCursor;
0035 
0036 namespace Qt
0037 {
0038 #if QT_GUI_REMOVED_SINCE(6, 7)
0039     Q_GUI_EXPORT bool mightBeRichText(const QString&);
0040 #endif
0041     Q_GUI_EXPORT bool mightBeRichText(QAnyStringView);
0042     Q_GUI_EXPORT QString convertFromPlainText(const QString &plain, WhiteSpaceMode mode = WhiteSpacePre);
0043 }
0044 
0045 class Q_GUI_EXPORT QAbstractUndoItem
0046 {
0047 public:
0048     virtual ~QAbstractUndoItem();
0049     virtual void undo() = 0;
0050     virtual void redo() = 0;
0051 };
0052 
0053 class QTextDocumentPrivate;
0054 
0055 class Q_GUI_EXPORT QTextDocument : public QObject
0056 {
0057     Q_OBJECT
0058 
0059     Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled)
0060     Q_PROPERTY(bool modified READ isModified WRITE setModified DESIGNABLE false)
0061     Q_PROPERTY(QSizeF pageSize READ pageSize WRITE setPageSize)
0062     Q_PROPERTY(QFont defaultFont READ defaultFont WRITE setDefaultFont)
0063     Q_PROPERTY(bool useDesignMetrics READ useDesignMetrics WRITE setUseDesignMetrics)
0064     Q_PROPERTY(bool layoutEnabled READ isLayoutEnabled WRITE setLayoutEnabled)
0065     Q_PROPERTY(QSizeF size READ size)
0066     Q_PROPERTY(qreal textWidth READ textWidth WRITE setTextWidth)
0067     Q_PROPERTY(int blockCount READ blockCount)
0068     Q_PROPERTY(qreal indentWidth READ indentWidth WRITE setIndentWidth)
0069 #ifndef QT_NO_CSSPARSER
0070     Q_PROPERTY(QString defaultStyleSheet READ defaultStyleSheet WRITE setDefaultStyleSheet)
0071 #endif
0072     Q_PROPERTY(int maximumBlockCount READ maximumBlockCount WRITE setMaximumBlockCount)
0073     Q_PROPERTY(qreal documentMargin READ documentMargin WRITE setDocumentMargin)
0074     QDOC_PROPERTY(QTextOption defaultTextOption READ defaultTextOption WRITE setDefaultTextOption)
0075     Q_PROPERTY(QUrl baseUrl READ baseUrl WRITE setBaseUrl NOTIFY baseUrlChanged)
0076 
0077 public:
0078     explicit QTextDocument(QObject *parent = nullptr);
0079     explicit QTextDocument(const QString &text, QObject *parent = nullptr);
0080     ~QTextDocument();
0081 
0082     QTextDocument *clone(QObject *parent = nullptr) const;
0083 
0084     bool isEmpty() const;
0085     virtual void clear();
0086 
0087     void setUndoRedoEnabled(bool enable);
0088     bool isUndoRedoEnabled() const;
0089 
0090     bool isUndoAvailable() const;
0091     bool isRedoAvailable() const;
0092 
0093     int availableUndoSteps() const;
0094     int availableRedoSteps() const;
0095 
0096     int revision() const;
0097 
0098     void setDocumentLayout(QAbstractTextDocumentLayout *layout);
0099     QAbstractTextDocumentLayout *documentLayout() const;
0100 
0101     enum MetaInformation {
0102         DocumentTitle,
0103         DocumentUrl,
0104         CssMedia,
0105         FrontMatter,
0106     };
0107     void setMetaInformation(MetaInformation info, const QString &);
0108     QString metaInformation(MetaInformation info) const;
0109 
0110 #ifndef QT_NO_TEXTHTMLPARSER
0111     QString toHtml() const;
0112     void setHtml(const QString &html);
0113 #endif
0114 
0115 #if QT_CONFIG(textmarkdownwriter) || QT_CONFIG(textmarkdownreader)
0116     enum MarkdownFeature {
0117         MarkdownNoHTML = 0x0020 | 0x0040,
0118         MarkdownDialectCommonMark = 0,
0119         MarkdownDialectGitHub = 0x0004 | 0x0008 | 0x0400 | 0x0100 | 0x0200 | 0x0800 | 0x4000 | 0x100000
0120     };
0121     Q_DECLARE_FLAGS(MarkdownFeatures, MarkdownFeature)
0122     Q_FLAG(MarkdownFeatures)
0123 #endif
0124 
0125 #if QT_CONFIG(textmarkdownwriter)
0126     QString toMarkdown(MarkdownFeatures features = MarkdownDialectGitHub) const;
0127 #endif
0128 
0129 #if QT_CONFIG(textmarkdownreader)
0130     void setMarkdown(const QString &markdown, MarkdownFeatures features = MarkdownDialectGitHub);
0131 #endif
0132 
0133     QString toRawText() const;
0134     QString toPlainText() const;
0135     void setPlainText(const QString &text);
0136 
0137     QChar characterAt(int pos) const;
0138 
0139     enum FindFlag
0140     {
0141         FindBackward        = 0x00001,
0142         FindCaseSensitively = 0x00002,
0143         FindWholeWords      = 0x00004
0144     };
0145     Q_DECLARE_FLAGS(FindFlags, FindFlag)
0146 
0147     QTextCursor find(const QString &subString, int from = 0, FindFlags options = FindFlags()) const;
0148     QTextCursor find(const QString &subString, const QTextCursor &cursor, FindFlags options = FindFlags()) const;
0149 
0150 #if QT_CONFIG(regularexpression)
0151     QTextCursor find(const QRegularExpression &expr, int from = 0, FindFlags options = FindFlags()) const;
0152     QTextCursor find(const QRegularExpression &expr, const QTextCursor &cursor, FindFlags options = FindFlags()) const;
0153 #endif
0154 
0155     QTextFrame *frameAt(int pos) const;
0156     QTextFrame *rootFrame() const;
0157 
0158     QTextObject *object(int objectIndex) const;
0159     QTextObject *objectForFormat(const QTextFormat &) const;
0160 
0161     QTextBlock findBlock(int pos) const;
0162     QTextBlock findBlockByNumber(int blockNumber) const;
0163     QTextBlock findBlockByLineNumber(int blockNumber) const;
0164     QTextBlock begin() const;
0165     QTextBlock end() const;
0166 
0167     QTextBlock firstBlock() const;
0168     QTextBlock lastBlock() const;
0169 
0170     void setPageSize(const QSizeF &size);
0171     QSizeF pageSize() const;
0172 
0173     void setDefaultFont(const QFont &font);
0174     QFont defaultFont() const;
0175 
0176     void setSuperScriptBaseline(qreal baseline);
0177     qreal superScriptBaseline() const;
0178 
0179     void setSubScriptBaseline(qreal baseline);
0180     qreal subScriptBaseline() const;
0181 
0182     void setBaselineOffset(qreal baseline);
0183     qreal baselineOffset() const;
0184 
0185     int pageCount() const;
0186 
0187     bool isModified() const;
0188 
0189 #ifndef QT_NO_PRINTER
0190     void print(QPagedPaintDevice *printer) const;
0191 #endif
0192 
0193     enum ResourceType {
0194         UnknownResource = 0,
0195         HtmlResource  = 1,
0196         ImageResource = 2,
0197         StyleSheetResource = 3,
0198         MarkdownResource = 4,
0199 
0200         UserResource  = 100
0201     };
0202     Q_ENUM(ResourceType)
0203 
0204     QVariant resource(int type, const QUrl &name) const;
0205     void addResource(int type, const QUrl &name, const QVariant &resource);
0206 
0207     using ResourceProvider = std::function<QVariant(const QUrl&)>;
0208 
0209     QTextDocument::ResourceProvider resourceProvider() const;
0210     void setResourceProvider(const ResourceProvider &provider);
0211 
0212     static QTextDocument::ResourceProvider defaultResourceProvider();
0213     static void setDefaultResourceProvider(const ResourceProvider &provider);
0214 
0215     QList<QTextFormat> allFormats() const;
0216 
0217     void markContentsDirty(int from, int length);
0218 
0219     void setUseDesignMetrics(bool b);
0220     bool useDesignMetrics() const;
0221 
0222     void setLayoutEnabled(bool b);
0223     bool isLayoutEnabled() const;
0224 
0225     void drawContents(QPainter *painter, const QRectF &rect = QRectF());
0226 
0227     void setTextWidth(qreal width);
0228     qreal textWidth() const;
0229 
0230     qreal idealWidth() const;
0231 
0232     qreal indentWidth() const;
0233     void setIndentWidth(qreal width);
0234 
0235     qreal documentMargin() const;
0236     void setDocumentMargin(qreal margin);
0237 
0238     void adjustSize();
0239     QSizeF size() const;
0240 
0241     int blockCount() const;
0242     int lineCount() const;
0243     int characterCount() const;
0244 
0245 #ifndef QT_NO_CSSPARSER
0246     void setDefaultStyleSheet(const QString &sheet);
0247     QString defaultStyleSheet() const;
0248 #endif
0249 
0250     void undo(QTextCursor *cursor);
0251     void redo(QTextCursor *cursor);
0252 
0253     enum Stacks {
0254         UndoStack = 0x01,
0255         RedoStack = 0x02,
0256         UndoAndRedoStacks = UndoStack | RedoStack
0257     };
0258     void clearUndoRedoStacks(Stacks historyToClear = UndoAndRedoStacks);
0259 
0260     int maximumBlockCount() const;
0261     void setMaximumBlockCount(int maximum);
0262 
0263     QTextOption defaultTextOption() const;
0264     void setDefaultTextOption(const QTextOption &option);
0265 
0266     QUrl baseUrl() const;
0267     void setBaseUrl(const QUrl &url);
0268 
0269     Qt::CursorMoveStyle defaultCursorMoveStyle() const;
0270     void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style);
0271 
0272 Q_SIGNALS:
0273     void contentsChange(int from, int charsRemoved, int charsAdded);
0274     void contentsChanged();
0275     void undoAvailable(bool);
0276     void redoAvailable(bool);
0277     void undoCommandAdded();
0278     void modificationChanged(bool m);
0279     void cursorPositionChanged(const QTextCursor &cursor);
0280     void blockCountChanged(int newBlockCount);
0281     void baseUrlChanged(const QUrl &url);
0282     void documentLayoutChanged();
0283 
0284 public Q_SLOTS:
0285     void undo();
0286     void redo();
0287     void appendUndoItem(QAbstractUndoItem *);
0288     void setModified(bool m = true);
0289 
0290 protected:
0291     virtual QTextObject *createObject(const QTextFormat &f);
0292     Q_INVOKABLE virtual QVariant loadResource(int type, const QUrl &name);
0293 
0294     QTextDocument(QTextDocumentPrivate &dd, QObject *parent);
0295 private:
0296     Q_DISABLE_COPY(QTextDocument)
0297     Q_DECLARE_PRIVATE(QTextDocument)
0298     friend class QTextObjectPrivate;
0299 };
0300 
0301 Q_DECLARE_OPERATORS_FOR_FLAGS(QTextDocument::FindFlags)
0302 
0303 QT_END_NAMESPACE
0304 
0305 #endif // QTEXTDOCUMENT_H