summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qtextobject.h
blob: 875886f825d58a0012e745c0df477e6d1ed56e0e (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
// Copyright (C) 2016 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#ifndef QTEXTOBJECT_H#define QTEXTOBJECT_H#include <QtGui/qtguiglobal.h>#include <QtCore/qobject.h>#include <QtGui/qtextformat.h>#include <QtGui/qtextlayout.h>#include <QtGui/qglyphrun.h> QT_BEGIN_NAMESPACE class QTextObjectPrivate;class QTextDocument;class QTextDocumentPrivate;class QTextCursor;class QTextBlock;class QTextFragment;class QTextList;class Q_GUI_EXPORT QTextObject :public QObject { Q_OBJECT protected:explicitQTextObject(QTextDocument *doc);~QTextObject();voidsetFormat(const QTextFormat &format);public: QTextFormat format()const;intformatIndex()const; QTextDocument *document()const;intobjectIndex()const;protected:QTextObject(QTextObjectPrivate &p, QTextDocument *doc);private:Q_DECLARE_PRIVATE(QTextObject)Q_DISABLE_COPY(QTextObject)friend class QTextDocumentPrivate;};class QTextBlockGroupPrivate;class Q_GUI_EXPORT QTextBlockGroup :public QTextObject { Q_OBJECT protected:explicitQTextBlockGroup(QTextDocument *doc);~QTextBlockGroup();virtualvoidblockInserted(const QTextBlock &block);virtualvoidblockRemoved(const QTextBlock &block);virtualvoidblockFormatChanged(const QTextBlock &block); QList<QTextBlock>blockList()const;protected:QTextBlockGroup(QTextBlockGroupPrivate &p, QTextDocument *doc);private:Q_DECLARE_PRIVATE(QTextBlockGroup)Q_DISABLE_COPY(QTextBlockGroup)friend class QTextDocumentPrivate;};class Q_GUI_EXPORT QTextFrameLayoutData {public:virtual~QTextFrameLayoutData();};class QTextFramePrivate;class Q_GUI_EXPORT QTextFrame :public QTextObject { Q_OBJECT public:explicitQTextFrame(QTextDocument *doc);~QTextFrame();inlinevoidsetFrameFormat(const QTextFrameFormat &format); QTextFrameFormat frameFormat()const{returnQTextObject::format().toFrameFormat(); } QTextCursor firstCursorPosition()const; QTextCursor lastCursorPosition()const;intfirstPosition()const;intlastPosition()const; QTextFrameLayoutData *layoutData()const;voidsetLayoutData(QTextFrameLayoutData *data); QList<QTextFrame *>childFrames()const; QTextFrame *parentFrame()const;class iterator { QTextFrame *f =nullptr;int b =0;int e =0; QTextFrame *cf =nullptr;int cb =0;friend class QTextFrame;friend class QTextTableCell;friend class QTextDocumentLayoutPrivate;inlineiterator(QTextFrame *frame,int block,int begin,int end):f(frame),b(begin),e(end),cb(block){}public:constexpriterator() noexcept =default; QTextFrame *parentFrame()const{return f; } QTextFrame *currentFrame()const{return cf; } Q_GUI_EXPORT QTextBlock currentBlock()const;boolatEnd()const{return!cf && cb == e; }inlinebooloperator==(const iterator &o)const{return f == o.f && cf == o.cf && cb == o.cb; }inlinebooloperator!=(const iterator &o)const{return f != o.f || cf != o.cf || cb != o.cb; } Q_GUI_EXPORT iterator &operator++();inline iterator operator++(int) { iterator tmp = *this;operator++();return tmp; } Q_GUI_EXPORT iterator &operator--();inline iterator operator--(int) { iterator tmp = *this;operator--();return tmp; }};friend class iterator;// more Qttypedef iterator Iterator; iterator begin()const; iterator end()const;protected:QTextFrame(QTextFramePrivate &p, QTextDocument *doc);private:friend class QTextDocumentPrivate;Q_DECLARE_PRIVATE(QTextFrame)Q_DISABLE_COPY(QTextFrame)};Q_DECLARE_TYPEINFO(QTextFrame::iterator, Q_RELOCATABLE_TYPE);inlinevoidQTextFrame::setFrameFormat(const QTextFrameFormat &aformat){QTextObject::setFormat(aformat); }class Q_GUI_EXPORT QTextBlockUserData {public:virtual~QTextBlockUserData();};class Q_GUI_EXPORT QTextBlock {friend class QSyntaxHighlighter;public:inlineQTextBlock(QTextDocumentPrivate *priv,int b) :p(priv),n(b) {}inlineQTextBlock() :p(nullptr),n(0) {}inlineQTextBlock(const QTextBlock &o) :p(o.p),n(o.n) {}inline QTextBlock &operator=(const QTextBlock &o) { p = o.p; n = o.n;return*this; }boolisValid()const;inlinebooloperator==(const QTextBlock &o)const{return p == o.p && n == o.n; }inlinebooloperator!=(const QTextBlock &o)const{return p != o.p || n != o.n; }inlinebooloperator<(const QTextBlock &o)const{returnposition() < o.position(); }intposition()const;intlength()const;boolcontains(int position)const; QTextLayout *layout()const;voidclearLayout(); QTextBlockFormat blockFormat()const;intblockFormatIndex()const; QTextCharFormat charFormat()const;intcharFormatIndex()const;Qt::LayoutDirection textDirection()const; QString text()const; QList<QTextLayout::FormatRange>textFormats()const;const QTextDocument *document()const; QTextList *textList()const; QTextBlockUserData *userData()const;voidsetUserData(QTextBlockUserData *data);intuserState()const;voidsetUserState(int state);intrevision()const;voidsetRevision(int rev);boolisVisible()const;voidsetVisible(bool visible);intblockNumber()const;intfirstLineNumber()const;voidsetLineCount(int count);intlineCount()const;class iterator {const QTextDocumentPrivate *p =nullptr;int b =0;int e =0;int n =0;friend class QTextBlock;iterator(const QTextDocumentPrivate *priv,int begin,int end,int f):p(priv),b(begin),e(end),n(f) {}public:constexpriterator() =default; Q_GUI_EXPORT QTextFragment fragment()const;boolatEnd()const{return n == e; }inlinebooloperator==(const iterator &o)const{return p == o.p && n == o.n; }inlinebooloperator!=(const iterator &o)const{return p != o.p || n != o.n; } Q_GUI_EXPORT iterator &operator++();inline iterator operator++(int) { iterator tmp = *this;operator++();return tmp; } Q_GUI_EXPORT iterator &operator--();inline iterator operator--(int) { iterator tmp = *this;operator--();return tmp; }};// more Qttypedef iterator Iterator; iterator begin()const; iterator end()const; QTextBlock next()const; QTextBlock previous()const;inlineintfragmentIndex()const{return n; }private: QTextDocumentPrivate *p;int n;friend class QTextDocumentPrivate;friend class QTextLayout;};Q_DECLARE_TYPEINFO(QTextBlock, Q_RELOCATABLE_TYPE);Q_DECLARE_TYPEINFO(QTextBlock::iterator, Q_RELOCATABLE_TYPE);class Q_GUI_EXPORT QTextFragment {public:inlineQTextFragment(const QTextDocumentPrivate *priv,int f,int fe) :p(priv),n(f),ne(fe) {}inlineQTextFragment() :p(nullptr),n(0),ne(0) {}inlineQTextFragment(const QTextFragment &o) :p(o.p),n(o.n),ne(o.ne) {}inline QTextFragment &operator=(const QTextFragment &o) { p = o.p; n = o.n; ne = o.ne;return*this; }inlineboolisValid()const{return p && n; }inlinebooloperator==(const QTextFragment &o)const{return p == o.p && n == o.n; }inlinebooloperator!=(const QTextFragment &o)const{return p != o.p || n != o.n; }inlinebooloperator<(const QTextFragment &o)const{returnposition() < o.position(); }intposition()const;intlength()const;boolcontains(int position)const; QTextCharFormat charFormat()const;intcharFormatIndex()const; QString text()const;#if !defined(QT_NO_RAWFONT) QList<QGlyphRun>glyphRuns(int from = -1,int length = -1)const;#endifprivate:const QTextDocumentPrivate *p;int n;int ne;};Q_DECLARE_TYPEINFO(QTextFragment, Q_RELOCATABLE_TYPE); QT_END_NAMESPACE #endif// QTEXTOBJECT_H
close