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:
123
126
128 KoSvgTextProperties& operator=(const KoSvgTextProperties &rhs);
129 bool operator==(const KoSvgTextProperties &rhs) const;
130
134 void setProperty(PropertyId id, const QVariant &value);
135
139 bool hasProperty(PropertyId id) const;
140
145 QVariant property(PropertyId id, const QVariant &defaultValue = QVariant()) const;
146
150 void removeProperty(PropertyId id);
151
156 QVariant propertyOrDefault(PropertyId id) const;
157
161 QList<PropertyId> properties() const;
162
166 bool isEmpty() const;
167
173 void resetNonInheritableToDefault();
174
175
181 void inheritFrom(const KoSvgTextProperties &parentProperties, bool resolve = false);
182
189 void resolveRelativeValues(const KoSvgText::FontMetrics metrics = KoSvgText::FontMetrics(12.0, true), const qreal fontSize = 12.0);
190
197 bool inheritsProperty(PropertyId id, const KoSvgTextProperties &parentProperties) const;
198
200 bool hasNonInheritableProperties() const;
201
203 void setAllButNonInheritableProperties(const KoSvgTextProperties &properties);
204
215 void scaleAbsoluteValues(const double scaleInline = 1.0, const double scaleBlock = 1.0);
216
226 KoSvgTextProperties ownProperties(const KoSvgTextProperties &parentProperties, bool keepFontSize = false) const;
227
236 void parseSvgTextAttribute(const SvgLoadingContext &context, const QString &command, const QString &value);
237
242 QMap<QString, QString> convertToSvgTextAttributes() const;
243
249 QMap<QString, QString> convertParagraphProperties() const;
250
251 QFont generateFont() const;
252
253 qreal xHeight() const;
254
261 KoSvgText::FontMetrics metrics(const bool withResolvedLineHeight = true) const;
262
269 KoSvgText::FontMetrics applyLineHeight(KoSvgText::FontMetrics metrics) const;
270
280 QStringList fontFeaturesForText(int start, int length) const;
281
287 KoCSSFontInfo cssFontInfo() const;
288
289 QSharedPointer<KoShapeBackground> background() const;
290 KoShapeStrokeModelSP stroke() const;
291
292 KoSvgText::CssLengthPercentage fontSize() const;
293 void setFontSize(const KoSvgText::CssLengthPercentage length);
294
298 static QStringList supportedXmlAttributes();
299
304 static const KoSvgTextProperties& defaultProperties();
305
312 static bool propertyIsBlockOnly(KoSvgTextProperties::PropertyId id);
313
317 bool propertyIsInheritable(KoSvgTextProperties::PropertyId id) const;
318
319private:
320 struct Private;
321 const QScopedPointer<Private> m_d;
322};
323
324#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)
@ Visiblity
Bool, CSS visibility.
@ 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.
@ 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