Krita Source Code Documentation
Loading...
Searching...
No Matches
SvgUtil.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2009 Jan Hambrecht <jaham@gmx.net>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7#ifndef SVGUTIL_H
8#define SVGUTIL_H
9
10#include "kritaflake_export.h"
11#include <QRectF>
12#include <KoSvgText.h>
13#include <KisQStringListFwd.h>
14
15class QString;
16class QTransform;
17class KoXmlWriter;
19
20#include <QDomDocument>
21
23
24class KRITAFLAKE_EXPORT SvgUtil
25{
26public:
27
28 // remove later! pixels *are* user coordinates
29 static double fromUserSpace(double value);
30 static double toUserSpace(double value);
31
32 static double ptToPx(SvgGraphicsContext *gc, double value);
33
35 static QPointF toUserSpace(const QPointF &point);
36
38 static QRectF toUserSpace(const QRectF &rect);
39
41 static QSizeF toUserSpace(const QSizeF &size);
42
48 static QString toPercentage(qreal value);
49
56 static double fromPercentage(QString s, bool *ok=nullptr);
57
61 static QPointF objectToUserSpace(const QPointF &position, const QRectF &objectBound);
62
66 static QSizeF objectToUserSpace(const QSizeF &size, const QRectF &objectBound);
67
71 static QPointF userSpaceToObject(const QPointF &position, const QRectF &objectBound);
72
76 static QSizeF userSpaceToObject(const QSizeF &size, const QRectF &objectBound);
77
79 static QString transformToString(const QTransform &transform);
80
82 static void writeTransformAttributeLazy(const QString &name, const QTransform &transform, KoXmlWriter &shapeWriter);
83
85 static bool parseViewBox(const QDomElement &e, const QRectF &elementBounds, QRectF *_viewRect, QTransform *_viewTransform);
86
88 static void parseAspectRatio(const PreserveAspectRatioParser &p, const QRectF &elementBounds, const QRectF &viewRect, QTransform *_viewTransform);
89
91 static qreal parseUnit(SvgGraphicsContext *gc,
92 const KoSvgTextProperties &resolved,
93 QStringView,
94 bool horiz = false,
95 bool vert = false,
96 const QRectF &bbox = QRectF());
98 static KoSvgText::CssLengthPercentage parseUnitStruct(SvgGraphicsContext *gc,
99 QStringView unit,
100 bool horiz = false,
101 bool vert = false,
102 const QRectF &bbox = QRectF());
103
105 static KoSvgText::CssLengthPercentage parseTextUnitStruct(SvgGraphicsContext *gc, QStringView unit);
106
108 static KoSvgText::CssLengthPercentage parseUnitStructImpl(SvgGraphicsContext *gc,
109 QStringView,
110 bool horiz = false,
111 bool vert = false,
112 const QRectF &bbox = QRectF(),
113 bool percentageViewBox = false);
114
116 static qreal parseUnitX(SvgGraphicsContext *gc, const KoSvgTextProperties &resolved, const QString &unit);
117
119 static qreal parseUnitY(SvgGraphicsContext *gc, const KoSvgTextProperties &resolved, const QString &unit);
120
122 static qreal parseUnitXY(SvgGraphicsContext *gc, const KoSvgTextProperties &resolved, const QString &unit);
123
125 static qreal parseUnitAngular(SvgGraphicsContext *gc, const QString &unit);
126
128 static const char * parseNumber(const char *ptr, qreal &number);
129
130 static qreal parseNumber(const QString &string);
131
132 static QString mapExtendedShapeTag(const QString &tagName, const QDomElement &element);
133
134 static QStringList simplifyList(const QString &str);
135
136 struct KRITAFLAKE_EXPORT PreserveAspectRatioParser
137 {
138 PreserveAspectRatioParser(const QString &str);
139
143 Max
144 };
145
146 bool defer = false;
147 Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio;
148 Alignment xAlignment = Min;
149 Alignment yAlignment = Min;
150
151 QPointF rectAnchorPoint(const QRectF &rc) const;
152
153 QString toString() const;
154
155 private:
156 Alignment alignmentFromString(const QString &str) const;
157 QString alignmentToString(Alignment alignment) const;
158 static qreal alignedValue(qreal min, qreal max, Alignment alignment);
159 };
160};
161
162#endif // SVGUTIL_H
float value(const T *src, size_t ch)
const Params2D p
bool parseNumber(QIODevice &dev, QVariant &val)