18#include <QtGui/private/qtguiglobal_p.h>
19#include "QtGui/qpaintengine.h"
20#include "QtGui/qtextcursor.h"
21#include "QtGui/qtextobject.h"
22#include "QtGui/qtextoption.h"
23#include "QtGui/qtextlayout.h"
25#include "QtCore/qdebug.h"
26#include "QtCore/qlist.h"
27#include "QtCore/qnamespace.h"
28#include "QtCore/qset.h"
29#include "QtCore/qstring.h"
30#include "QtCore/qvarlengtharray.h"
32#include "private/qfixed_p.h"
33#include "private/qfont_p.h"
34#include "private/qtextformat_p.h"
35#include "private/qunicodetools_p.h"
36#ifndef QT_BUILD_COMPAT_LIB
37#include "private/qtextdocument_p.h"
63 :
x(100000),
y(100000) {}
80 inline bool isValid()
const {
return x != 100000 &&
y != 100000;}
107 LineOrParagraphSeparator = 4,
117 BidiMaybeResetToParagraphLevel = 2,
118 BidiResetToParagraphLevel = 4,
225 return reinterpret_cast<char *
>(
offsets);
325 : from(0), trailingSpaces(0),
length(0),
326 justified(0), gridfitted(0),
327 hasTrailingSpaces(0), leadingIncluded(0) {}
390 bool reallocate(
int totalGlyphs);
415 void clearLineData();
417 void validate()
const;
418 void itemize()
const;
420 bool isRightToLeft()
const;
421 static void bidiReorder(
int numRuns,
const quint8 *
levels,
int *visualOrder);
425 void shape(
int item)
const;
438 return (item < layoutData->
items.
size() ? layoutData->items[
item].position : layoutData->string.size()) - from;
442 if (si + 1 < layoutData->items.constData()+ layoutData->items.size())
445 end = layoutData->string.size();
462 {
return layoutData->logClustersPtr+si->
position; }
484 if (layoutData->glyphLayout.numGlyphs - layoutData->used < nGlyphs)
485 return layoutData->reallocate((((layoutData->used + nGlyphs)*3/2 + 15) >> 4) << 4);
491 int findItem(
int strPos,
int firstItem = 0)
const;
495 return specialData ? specialData->formatCollection.data() :
nullptr;
510 struct FontEngineCache {
514 mutable int prevScript;
515 mutable int prevPosition;
516 mutable int prevLength;
517 inline void reset() {
518 prevFontEngine =
nullptr;
519 prevScaledFontEngine =
nullptr;
525 mutable FontEngineCache feCache;
582 SpecialData *specialData;
585 void resolveFormats()
const;
588 bool atWordSeparator(
int position)
const;
597 int previousLogicalPosition(
int oldPos)
const;
598 int nextLogicalPosition(
int oldPos)
const;
599 int lineNumberForTextPosition(
int pos);
601 std::vector<int> insertionPointsForLine(
int lineNum);
602 void resetFontEngineCache();
611 void clearDecorations();
612 void adjustUnderlines();
616 void adjustUnderlines(ItemDecorationList::iterator
start,
617 ItemDecorationList::iterator
end,
619 void drawItemDecorationList(
QPainter *
painter,
const ItemDecorationList &decorationList);
620 void setBoundary(
int strPos)
const;
621 void addRequiredBoundaries()
const;
622 void shapeText(
int item)
const;
623#if QT_CONFIG(harfbuzz)
630 bool hasLetterSpacing,
634 int endOfLine(
int lineNum);
635 int beginningOfLine(
int lineNum);
636 int getClusterLength(
unsigned short *logClusters,
const QCharAttributes *attributes,
int from,
int to,
int glyph_pos,
int *
start);
641 enum { MemSize = 256*40/
sizeof(
void *) };
644 void *_memory[MemSize];
Direction
This enum type defines the Unicode direction attributes.
qsizetype size() const noexcept
The QPainter class performs low-level painting on widgets and other paint devices.
\inmodule QtCore\reentrant
The QRawFont class provides access to a single physical instance of a font.
\macro QT_RESTRICTED_CAST_FROM_ASCII
UnderlineStyle
This enum describes the different ways drawing underlined text.
MoveOperation
\value NoMove Keep the cursor where it is
QTextFormatCollection * formatCollection()
QTextDocument * document()
static const QTextDocumentPrivate * get(const QTextDocument *document)
Qt::CursorMoveStyle defaultCursorMoveStyle
QAbstractTextDocumentLayout * documentLayout() const
Returns the document layout for this document.
QList< ItemDecoration > ItemDecorationList
QList< QTextLayout::FormatRange > formats() const
ItemDecorationList strikeOutList
unsigned short * logClusters(const QScriptItem *si) const
ItemDecorationList underlineList
QGlyphLayout shapedGlyphs(const QScriptItem *si) const
int preeditAreaPosition() const
void enableDelayDecorations(bool enable=true)
bool ensureSpace(int nGlyphs) const
QString preeditAreaText() const
bool visualCursorMovement() const
QGlyphLayout availableGlyphs(const QScriptItem *si) const
int length(const QScriptItem *si) const
int length(int item) const
QTextFormatCollection * formatCollection() const
QAbstractTextDocumentLayout * docLayout() const
ItemDecorationList overlineList
void initWithScriptItem(const QScriptItem &si)
const QTextCharFormat charFormat
QTextItemInt midItem(QFontEngine *fontEngine, int firstGlyphIndex, int numGlyphs) const
const unsigned short * logClusters
QTextCharFormat::UnderlineStyle underlineStyle
QFont font() const
Returns the font that should be used to draw the text.
constexpr size_type size() const noexcept
void resize(qsizetype sz)
QVarLengthGlyphLayoutArray(int totalGlyphs)
void resize(int totalGlyphs)
Combined button and popup list for selecting options.
static jboolean copy(JNIEnv *, jobject)
constexpr timespec & operator+=(timespec &t1, const timespec &t2)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
constexpr const T & qMax(const T &a, const T &b)
GLint GLint GLint GLint GLint x
[0]
GLint GLsizei GLsizei height
GLboolean GLboolean GLboolean GLboolean a
[7]
GLuint GLfloat GLfloat GLfloat x1
GLenum GLuint GLenum GLsizei length
GLenum GLenum GLsizei count
GLenum const void GLbitfield GLsizei numGlyphs
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLint GLsizei GLsizei GLenum format
GLenum const void GLbitfield GLuint firstGlyphIndex
GLuint GLsizei const GLuint const GLintptr * offsets
GLuint GLuint64EXT address
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
#define Q_AUTOTEST_EXPORT
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
QList< QScriptItem > QScriptItemArray
QList< QScriptLine > QScriptLineArray
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
static constexpr QFixed fromFixed(int fixed)
QGlyphJustification * justifications
void grow(char *address, int totalGlyphs)
QFixed effectiveAdvance(int item) const
QGlyphLayout(char *address, int totalGlyphs)
void clear(int first=0, int last=-1)
QGlyphAttributes * attributes
QGlyphLayout mid(int position, int n=-1) const
QChar::Direction bidiDirection
constexpr QScriptItem(int p, QScriptAnalysis a) noexcept
constexpr QFixed height() const noexcept
unsigned short num_glyphs
void operator+=(const QScriptLine &other)
unsigned short trailingSpaces
ItemDecoration(qreal x1, qreal x2, qreal y, const QPen &pen)
unsigned short * logClustersPtr
bool getSelectionBounds(QFixed *selectionX, QFixed *selectionWidth) const
const QTextLayout::FormatRange * selection
QVarLengthArray< int > visualOrder
bool isOutsideSelection() const
QFixed rightBearing() const
QFixed leftBearing() const
glyph_metrics_t(QFixed _x, QFixed _y, QFixed _width, QFixed _height, QFixed _xoff, QFixed _yoff)