Krita Source Code Documentation
Loading...
Searching...
No Matches
KoSvgTextShapeMarkupConverter.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KOSVGTEXTSHAPEMARKUPCONVERTER_H
8#define KOSVGTEXTSHAPEMARKUPCONVERTER_H
9
10#include "kritaflake_export.h"
11
12#include <QScopedPointer>
13#include <QTextDocument>
14#include <QTextCharFormat>
15
16#include <optional>
17
18class QRectF;
19class KoSvgTextShape;
20class KoShape;
21class KoColorSpace;
22
31class KRITAFLAKE_EXPORT KoSvgTextShapeMarkupConverter
32{
33public:
36
44 bool convertToSvg(QString *svgText, QString *stylesText);
45
55 bool convertFromSvg(const QString &svgText, const QString &stylesText, const QRectF &boundsInPixels, qreal pixelsPerInch);
56
62 bool convertToHtml(QString *htmlText);
63
71 bool convertFromHtml(const QString &htmlText, QString *svgText, QString *styles);
72
79 bool convertDocumentToSvg(const QTextDocument *doc, QString *svgText);
80
87 bool convertSvgToDocument(const QString &svgText, QTextDocument *doc);
88
89
93 QStringList errors() const;
97 QStringList warnings() const;
98
108 QString style(QTextCharFormat format, QTextBlockFormat blockFormat, QTextCharFormat mostCommon = QTextCharFormat(), bool includeLineHeight = false);
109
110 struct ExtraStyles;
111
123 static QVector<QTextFormat> stylesFromString(QStringList styles, QTextCharFormat currentCharFormat, QTextBlockFormat currentBlockFormat, ExtraStyles &extraStyles);
131 QTextFormat formatDifference(QTextFormat test, QTextFormat reference);
132
133private:
134 struct Private;
135 const QScopedPointer<Private> d;
136
137public:
138 /*
139 * Members for dealing with special document-level properties not supported
140 * by Qt: We abuse QTextFormat a bit to store our special properties in the
141 * top-level root QTextFrame of the QTextDocument.
142 */
143
147 enum class WrappingMode {
152 QtLegacy = 0,
156 WhiteSpacePre,
161 WhiteSpacePreWrap,
162 };
163
164 static constexpr QTextFormat::Property WrappingModeProperty =
165 static_cast<QTextFormat::Property>(QTextFormat::UserProperty + 56784);
166 static constexpr QTextFormat::Property InlineSizeProperty =
167 static_cast<QTextFormat::Property>(WrappingModeProperty + 1);
168
176 static WrappingMode getWrappingMode(const QTextFrameFormat &frameFormat);
184 static void setWrappingMode(QTextFrameFormat *frameFormat, WrappingMode wrappingMode);
185
193 static std::optional<double> getInlineSize(const QTextFrameFormat &frameFormat);
202 static void setInlineSize(QTextFrameFormat *frameFormat, double inlineSize);
203};
204
205#endif // KOSVGTEXTSHAPEMARKUPCONVERTER_H