1 /* 2 * DQt - D bindings for the Qt Toolkit 3 * 4 * GNU Lesser General Public License Usage 5 * This file may be used under the terms of the GNU Lesser 6 * General Public License version 3 as published by the Free Software 7 * Foundation and appearing in the file LICENSE.LGPL3 included in the 8 * packaging of this file. Please review the following information to 9 * ensure the GNU Lesser General Public License version 3 requirements 10 * will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 11 */ 12 module qt.gui.abstracttextdocumentlayout; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.list; 17 import qt.core.namespace; 18 import qt.core.object; 19 import qt.core.point; 20 import qt.core.rect; 21 import qt.core.size; 22 import qt.core.string; 23 import qt.gui.paintdevice; 24 import qt.gui.painter; 25 import qt.gui.palette; 26 import qt.gui.textcursor; 27 import qt.gui.textdocument; 28 import qt.gui.textformat; 29 import qt.gui.textlayout; 30 import qt.gui.textobject; 31 import qt.helpers; 32 33 extern(C++, class) struct QAbstractTextDocumentLayoutPrivate; 34 35 /// Binding for C++ class [QAbstractTextDocumentLayout](https://doc.qt.io/qt-6/qabstracttextdocumentlayout.html). 36 abstract class /+ Q_GUI_EXPORT +/ QAbstractTextDocumentLayout : QObject 37 { 38 mixin(Q_OBJECT); 39 /+ Q_DECLARE_PRIVATE(QAbstractTextDocumentLayout) +/ 40 41 public: 42 mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{ 43 /+ explicit +/this(QTextDocument doc); 44 })); 45 ~this(); 46 47 struct Selection 48 { 49 QTextCursor cursor; 50 QTextCharFormat format; 51 } 52 53 struct PaintContext 54 { 55 @disable this(this); 56 int cursorPosition = -1; 57 QPalette palette; 58 QRectF clip; 59 QList!(Selection) selections; 60 } 61 62 /+ virtual +/ abstract void draw(QPainter* painter, ref const(PaintContext) context); 63 /+ virtual +/ abstract int hitTest(ref const(QPointF) point, /+ Qt:: +/qt.core.namespace.HitTestAccuracy accuracy) const; 64 65 final QString anchorAt(ref const(QPointF) pos) const; 66 final QString imageAt(ref const(QPointF) pos) const; 67 final QTextFormat formatAt(ref const(QPointF) pos) const; 68 // final QTextBlock blockWithMarkerAt(ref const(QPointF) pos) const; 69 70 /+ virtual +/ abstract int pageCount() const; 71 /+ virtual +/ abstract QSizeF documentSize() const; 72 73 /+ virtual +/ abstract QRectF frameBoundingRect(QTextFrame frame) const; 74 /+ virtual +/ abstract QRectF blockBoundingRect(ref const(QTextBlock) block) const; 75 76 final void setPaintDevice(QPaintDevice device); 77 final QPaintDevice paintDevice() const; 78 79 final QTextDocument document() const; 80 81 final void registerHandler(int objectType, QObject component); 82 final void unregisterHandler(int objectType, QObject component = null); 83 final QTextObjectInterface handlerForObject(int objectType) const; 84 85 /+ Q_SIGNALS +/public: 86 @QSignal final void update(ref const(QRectF) /+ = QRectF(0., 0., 1000000000., 1000000000.) +/); 87 @QSignal final void updateBlock(ref const(QTextBlock) block); 88 @QSignal final void documentSizeChanged(ref const(QSizeF) newSize); 89 @QSignal final void pageCountChanged(int newPages); 90 91 protected: 92 mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{ 93 this(ref QAbstractTextDocumentLayoutPrivate , QTextDocument ); 94 })); 95 96 /+ virtual +/ abstract void documentChanged(int from, int charsRemoved, int charsAdded); 97 98 /+ virtual +/ void resizeInlineObject(QTextInlineObject item, int posInDocument, ref const(QTextFormat) format); 99 /+ virtual +/ void positionInlineObject(QTextInlineObject item, int posInDocument, ref const(QTextFormat) format); 100 /+ virtual +/ void drawInlineObject(QPainter* painter, ref const(QRectF) rect, QTextInlineObject object, int posInDocument, ref const(QTextFormat) format); 101 102 final int formatIndex(int pos); 103 final QTextCharFormat format(int pos); 104 105 private: 106 /+ friend class QWidgetTextControl; +/ 107 /+ friend class QTextDocument; +/ 108 /+ friend class QTextDocumentPrivate; +/ 109 /+ friend class QTextEngine; +/ 110 /+ friend class QTextLayout; +/ 111 /+ friend class QTextLine; +/ 112 /+ Q_PRIVATE_SLOT(d_func(), void _q_handlerDestroyed(QObject *obj)) 113 Q_PRIVATE_SLOT(d_func(), int _q_dynamicPageCountSlot()) 114 Q_PRIVATE_SLOT(d_func(), QSizeF _q_dynamicDocumentSizeSlot()) +/ 115 mixin(CREATE_CONVENIENCE_WRAPPERS); 116 } 117 /+ Q_DECLARE_TYPEINFO(QAbstractTextDocumentLayout::Selection, Q_RELOCATABLE_TYPE); 118 Q_DECLARE_TYPEINFO(QAbstractTextDocumentLayout::PaintContext, Q_RELOCATABLE_TYPE); +/ 119 120 /// Binding for C++ class [QTextObjectInterface](https://doc.qt.io/qt-6/qtextobjectinterface.html). 121 abstract class /+ Q_GUI_EXPORT +/ QTextObjectInterface 122 { 123 public: 124 /+ virtual +/~this(); 125 /+ virtual +/ abstract QSizeF intrinsicSize(QTextDocument doc, int posInDocument, ref const(QTextFormat) format); 126 /+ virtual +/ abstract void drawObject(QPainter* painter, ref const(QRectF) rect, QTextDocument doc, int posInDocument, ref const(QTextFormat) format); 127 mixin(CREATE_CONVENIENCE_WRAPPERS); 128 } 129 130 /+ #ifndef Q_CLANG_QDOC 131 Q_DECLARE_INTERFACE(QTextObjectInterface, "org.qt-project.Qt.QTextObjectInterface") 132 #endif +/ 133