edbee - Qt Editor Library v0.11.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
textlayout.h
Go to the documentation of this file.
1// edbee - Copyright (c) 2012-2025 by Rick Blommers and contributors
2// SPDX-License-Identifier: MIT
3
4#pragma once
5
6#include "edbee/exports.h"
7
8#include <QRectF>
9#include <QTextLine>
10#include <QTextLayout>
11
13
14class QTextLayout;
15
16namespace edbee {
17
18class TextLayout;
19
28{
29public:
30 TextLayout(TextDocument* document);
31 virtual ~TextLayout();
32
33 void setCacheEnabled(bool enable);
34 QTextLayout* qTextLayout() const;
35 QRectF boundingRect() const;
36
37
38 void buildLayout();
39
40 int toVirtualCursorPosition(int cursor) const;
41 int fromVirtualCursorPosition(int cursor) const;
42
43
44 void draw(QPainter *p, const QPointF &pos, const QVector<QTextLayout::FormatRange> &selections = QVector<QTextLayout::FormatRange>(), const QRectF &clip = QRectF()) const;
45 void drawCursor(QPainter *painter, const QPointF &position, int cursorPosition, int width) const;
46
47 void setFormats(const QVector<QTextLayout::FormatRange> &formats);
48 void setText(const QString &string);
49
52 void addSingleCharRange(int index, int length);
53
54
57 qreal cursorToX(int cursorPos, QTextLine::Edge edge = QTextLine::Leading) const;
58 int xToCursor(qreal x, QTextLine::CursorPosition cpos = QTextLine::CursorBetweenCharacters) const;
59
60protected:
61 QTextLayout *qtextLayout_;
64 QTextLine qtextLine_;
65};
66
67
68//=================================================
69
71{
72public:
73 TextLayoutBuilder(TextLayout* textLayout, QString & baseString, QVector<QTextLayout::FormatRange> & baseFormatRanges);
74
75 void replace(int index, int length, const QString replacement, QTextCharFormat format);
76
77
78protected:
80 QString & baseString_;
81 QVector<QTextLayout::FormatRange> & baseFormatRanges_;
82};
83
84} // edbee
This is the base and abstract class of a text document A TextDocument is the model part of the editor...
Definition textdocument.h:42
TextLayout * textLayoutRef_
A reference to the textlayout.
Definition textlayout.h:79
QString & baseString_
A reference to the base-string. (This string is modified!)
Definition textlayout.h:80
QVector< QTextLayout::FormatRange > & baseFormatRanges_
A reference to the baseFormat range (This list is modified!)
Definition textlayout.h:81
void replace(int index, int length, const QString replacement, QTextCharFormat format)
Definition textlayout.cpp:155
TextLayoutBuilder(TextLayout *textLayout, QString &baseString, QVector< QTextLayout::FormatRange > &baseFormatRanges)
Definition textlayout.cpp:147
A virtual textlayout.
Definition textlayout.h:28
qreal cursorToX(int cursorPos, QTextLine::Edge edge=QTextLine::Leading) const
These calculations manipulate the cursor position. ..
Definition textlayout.cpp:130
void drawCursor(QPainter *painter, const QPointF &position, int cursorPosition, int width) const
Definition textlayout.cpp:94
void setText(const QString &string)
Definition textlayout.cpp:105
void draw(QPainter *p, const QPointF &pos, const QVector< QTextLayout::FormatRange > &selections=QVector< QTextLayout::FormatRange >(), const QRectF &clip=QRectF()) const
Definition textlayout.cpp:89
void buildLayout()
Definition textlayout.cpp:43
TextLayout(TextDocument *document)
Definition textlayout.cpp:15
QTextLayout * qtextLayout_
Definition textlayout.h:61
void useSingleCharRanges()
Definition textlayout.cpp:110
TextDocument * textDocumentRef_
Definition textlayout.h:62
void addSingleCharRange(int index, int length)
Definition textlayout.cpp:122
int toVirtualCursorPosition(int cursor) const
Converts the document cursorPosition to a virtual cursorposition.
Definition textlayout.cpp:52
QTextLayout * qTextLayout() const
Definition textlayout.cpp:33
int xToCursor(qreal x, QTextLine::CursorPosition cpos=QTextLine::CursorBetweenCharacters) const
Definition textlayout.cpp:138
QTextLine qtextLine_
Definition textlayout.h:64
void setFormats(const QVector< QTextLayout::FormatRange > &formats)
Definition textlayout.cpp:100
int fromVirtualCursorPosition(int cursor) const
Converts the virtual cursorPosition to a docuemnt cursorposition.
Definition textlayout.cpp:69
TextRangeSet * singleCharRanges_
A list textRanges_ used by TextLayout. Every range in this list is treatet as a single character for ...
Definition textlayout.h:63
virtual ~TextLayout()
Definition textlayout.cpp:22
void setCacheEnabled(bool enable)
Definition textlayout.cpp:28
TextRangeSet * singleCharRanges() const
Definition textlayout.cpp:117
QRectF boundingRect() const
Definition textlayout.cpp:38
The basic textrange class. A simple class of textrange with a simple vector implementation.
Definition textrange.h:202
QT Acessibility has an issue with reporting blank lines between elements lines. defining 'WINDOWS_EMP...
Definition commentcommand.cpp:20