Revision control
Copy as Markdown
// Copyright (C) 2023 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 QSGTEXTNODE_H
#define QSGTEXTNODE_H
#include <QtGui/qtextlayout.h>
#include <QtQuick/qsgnode.h>
#include <QtQuick/qsgtexture.h>
QT_BEGIN_NAMESPACE
class Q_QUICK_EXPORT QSGTextNode : public QSGTransformNode
{
public:
~QSGTextNode() override;
// Should match the TextStyle in qquicktext_p.h
enum TextStyle : quint8
{
Normal,
Outline,
Raised,
Sunken
};
// Should match the RenderType in qquicktext_p.h
enum RenderType: quint8
{
QtRendering,
NativeRendering,
CurveRendering
};
virtual void setColor(QColor color) = 0;
virtual QColor color() const = 0;
virtual void setTextStyle(TextStyle textStyle) = 0;
virtual TextStyle textStyle() = 0;
virtual void setStyleColor(QColor styleColor) = 0;
virtual QColor styleColor() const = 0;
virtual void setLinkColor(QColor linkColor) = 0;
virtual QColor linkColor() const = 0;
virtual void setSelectionColor(QColor selectionColor) = 0;
virtual QColor selectionColor() const = 0;
virtual void setSelectionTextColor(QColor selectionTextColor) = 0;
virtual QColor selectionTextColor() const = 0;
virtual void setRenderType(RenderType renderType) = 0;
virtual RenderType renderType() const = 0;
virtual void setRenderTypeQuality(int renderTypeQuality) = 0;
virtual int renderTypeQuality() const = 0;
virtual void setFiltering(QSGTexture::Filtering) = 0;
virtual QSGTexture::Filtering filtering() const = 0;
virtual void clear() = 0;
virtual void setViewport(const QRectF &viewport) = 0;
virtual QRectF viewport() const = 0;
// ### Qt 7: add color as an optional argument; think about what else might be missing
void addTextLayout(QPointF position,
QTextLayout *layout,
int selectionStart = -1,
int selectionCount = -1,
int lineStart = 0,
int lineCount = -1)
{
doAddTextLayout(position, layout, selectionStart, selectionCount, lineStart, lineCount);
}
void addTextDocument(QPointF position,
QTextDocument *document,
int selectionStart = -1,
int selectionCount = -1)
{
doAddTextDocument(position, document, selectionStart, selectionCount);
}
private:
virtual void doAddTextLayout(QPointF position,
QTextLayout *layout,
int selectionStart,
int selectionCount,
int lineStart,
int lineCount) = 0;
virtual void doAddTextDocument(QPointF position,
QTextDocument *document,
int selectionStart,
int selectionCount) = 0;
};
QT_END_NAMESPACE
#endif // QSGTEXTNODE_H