Krita Source Code Documentation
Loading...
Searching...
No Matches
KoSvgTextProperties.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 KOSVGTEXTPROPERTIES_H
8#define KOSVGTEXTPROPERTIES_H
9
10#include "kritaflake_export.h"
11#include "KoFlakeTypes.h"
12#include "KoSvgText.h"
13
14#include <QScopedPointer>
15#include <QVariant>
16#include <QList>
17
18#include <boost/operators.hpp>
19
20#include "KoCSSFontInfo.h"
21
24
43class KRITAFLAKE_EXPORT KoSvgTextProperties : public boost::equality_comparable<KoSvgTextProperties>
44{
45public:
125
128
130 KoSvgTextProperties& operator=(const KoSvgTextProperties &rhs);
131 bool operator==(const KoSvgTextProperties &rhs) const;
132
136 void setProperty(PropertyId id, const QVariant &value);
137
141 bool hasProperty(PropertyId id) const;
142
147 QVariant property(PropertyId id, const QVariant &defaultValue = QVariant()) const;
148
152 void removeProperty(PropertyId id);
153
158 QVariant propertyOrDefault(PropertyId id) const;
159
163 QList<PropertyId> properties() const;
164
168 bool isEmpty() const;
169
175 void resetNonInheritableToDefault();
176
177
183 void inheritFrom(const KoSvgTextProperties &parentProperties, bool resolve = false);
184
191 void resolveRelativeValues(const KoSvgText::FontMetrics metrics = KoSvgText::FontMetrics(12.0, true), const qreal fontSize = 12.0);
192
199 bool inheritsProperty(PropertyId id, const KoSvgTextProperties &parentProperties) const;
200
202 bool hasNonInheritableProperties() const;
203
205 void setAllButNonInheritableProperties(const KoSvgTextProperties &properties);
206
217 void scaleAbsoluteValues(const double scaleInline = 1.0, const double scaleBlock = 1.0);
218
228 KoSvgTextProperties ownProperties(const KoSvgTextProperties &parentProperties, bool keepFontSize = false) const;
229
238 void parseSvgTextAttribute(const SvgLoadingContext &context, const QString &command, const QString &value);
239
244 QMap<QString, QString> convertToSvgTextAttributes() const;
245
251 QMap<QString, QString> convertParagraphProperties() const;
252
253 QFont generateFont() const;
254
255 qreal xHeight() const;
256
264 KoSvgText::FontMetrics metrics(const bool withResolvedLineHeight = true, const bool offsetByBaseline = false) const;
265
272 KoSvgText::FontMetrics applyLineHeight(KoSvgText::FontMetrics metrics) const;
273
283 QStringList fontFeaturesForText(int start, int length) const;
284
290 KoCSSFontInfo cssFontInfo() const;
291
292 QSharedPointer<KoShapeBackground> background() const;
293 KoShapeStrokeModelSP stroke() const;
294
295 KoSvgText::CssLengthPercentage fontSize() const;
296 void setFontSize(const KoSvgText::CssLengthPercentage length);
297
301 static QStringList supportedXmlAttributes();
302
307 static const KoSvgTextProperties& defaultProperties();
308
315 static bool propertyIsBlockOnly(KoSvgTextProperties::PropertyId id);
316
320 bool propertyIsInheritable(KoSvgTextProperties::PropertyId id) const;
321
322private:
323 struct Private;
324 const QScopedPointer<Private> m_d;
325};
326
327#endif // KOSVGTEXTPROPERTIES_H
qreal length(const QPointF &vec)
Definition Ellipse.cc:82
float value(const T *src, size_t ch)
bool operator==(const KisRegion &lhs, const KisRegion &rhs)
@ TextAnchorId
KoSvgText::TextAnchor.
@ InlineSizeId
KoSvgText::AutoValue.
@ UnicodeBidiId
KoSvgText::UnicodeBidi.
@ PaintOrder
QVector<KoShape::PaintOrder>
@ KraTextStyleResolution
Int, used to scale style presets to be pixel-relative.
@ KraTextVersionId
Int, used for handling incorrectly saved files.
@ DominantBaselineId
KoSvgText::Baseline.
@ Opacity
Double, SVG shape opacity.
@ TextTrimId
Flags, KoSvgText::TextSpaceTrims.
@ AlignmentBaselineId
KoSvgText::Baseline.
@ LineHeightId
KoSvgText::AutoValue.
@ KraTextStyleType
string, used to identify the style preset type (character or paragraph).
@ WordSpacingId
KoSvgText::AutoLengthPercentage.
@ LineBreakId
KoSvgText::LineBreak.
@ FontSizeAdjustId
KoSvgText::AutoValue.
@ LetterSpacingId
KoSvgText::AutoLengthPercentage.
@ TextOrientationId
KoSvgText::TextOrientation.
@ TextAlignAllId
KoSvgText::TextAlign.
@ TextCollapseId
KoSvgText::TextSpaceCollapse.
@ StrokeId
KoSvgText::StrokeProperty.
@ TextDecorationStyleId
KoSvgText::TextDecorationStyle.
@ TextOverFlowId
KoSvgText::WordBreak.
@ TextTransformId
KoSvgText::TextTransformInfo Struct.
@ FillId
KoSvgText::BackgroundProperty.
@ FontStyleId
KoSvgText::CssSlantData.
@ FontFeatureSettingsId
QStringList.
@ WritingModeId
KoSvgText::WritingMode.
@ DirectionId
KoSvgText::Direction.
@ TextWrapId
KoSvgText::TextWrap.
@ HangingPunctuationId
Flags, KoSvgText::HangingPunctuations.
@ Visibility
Bool, CSS visibility.
@ BaselineShiftModeId
KoSvgText::BaselineShiftMode.
@ TextAlignLastId
KoSvgText::TextAlign.
@ FontVariantLigatureId
KoSvgText::FontVariantFeature.
@ TextDecorationPositionId
KoSvgText::TextDecorationUnderlinePosition.
@ TextIndentId
KoSvgText::TextIndentInfo Struct.
@ FontVariationSettingsId
QStringList.
@ WordBreakId
KoSvgText::WordBreak.
@ TextLanguage
a language string.
@ TextDecorationLineId
Flags, KoSvgText::TextDecorations.
@ KerningId
KoSvgText::AutoValue.
const QScopedPointer< Private > m_d
Contains data used for loading svg.
The KoCSSFontInfo class Convenience struct to make it easier to use KoFontRegistry....
The FontMetrics class A class to keep track of a variety of font metrics. Note that values are in Fre...
Definition KoSvgText.h:327