Krita Source Code Documentation
Loading...
Searching...
No Matches
KoSvgTextContentElement Struct Reference

The KoSvgTextContentElement struct. More...

#include <KoSvgTextContentElement.h>

Public Member Functions

QString getTransformedString (QVector< QPair< int, int > > &positions, KoSvgTextProperties resolvedProps=KoSvgTextProperties()) const
 
void insertText (int start, QString insertText)
 insertText
 
 KoSvgTextContentElement ()
 
 KoSvgTextContentElement (const KoSvgTextContentElement &rhs)
 
bool loadSvg (const QDomElement &element, SvgLoadingContext &context, bool rootNode=false)
 loadSvg load SVG style data into the current content element.
 
bool loadSvgTextNode (const QDomText &text, SvgLoadingContext &context)
 
int numChars (bool withControls=false, KoSvgTextProperties resolvedProps=KoSvgTextProperties()) const
 
void removeText (int &start, int length)
 removeText removes text,
 
bool saveSvg (SvgSavingContext &context, bool rootText, bool saveText, QMap< QString, QString > shapeSpecificAttributes)
 
 ~KoSvgTextContentElement ()=default
 

Public Attributes

QPainterPath associatedOutline
 The associated outline. Currently only a bounding box.
 
int finalResultIndex = -1
 
KoSvgText::LengthAdjust lengthAdjust = KoSvgText::LengthAdjustSpacing
 the value 'lengthAdjust' attribute of the associated dom element
 
QVector< KoSvgText::CharTransformationlocalTransformations
 Local SVG char transforms.
 
KoSvgTextProperties properties
 The textProperties. This includes.
 
QString text
 Plain text of the current node. Use insertText and removeText to manipulate it.
 
QMap< KoSvgText::TextDecoration, QPainterPath > textDecorations
 Cached text decorations to be used by the painting function.
 
KoSvgText::AutoValue textLength
 the value 'textLength' attribute of the associated dom element
 
QScopedPointer< KoShapetextPath {nullptr}
 The textpath, if any. Defaults to null.
 
KoSvgText::TextOnPathInfo textPathInfo
 Text path info for the text-on-path algorithm.
 

Detailed Description

The KoSvgTextContentElement struct.

Replacing KoSvgTextChunkShape, KoSvgTextContentElement represents a formatted span of text. This can be a SVG <text >, <tspan > or <textPath > node. This struct is used to represent the internal data of KoSvgTextShape.

Definition at line 27 of file KoSvgTextContentElement.h.

Constructor & Destructor Documentation

◆ KoSvgTextContentElement() [1/2]

KoSvgTextContentElement::KoSvgTextContentElement ( )

Definition at line 20 of file KoSvgTextContentElement.cpp.

21{
22
23}

◆ KoSvgTextContentElement() [2/2]

KoSvgTextContentElement::KoSvgTextContentElement ( const KoSvgTextContentElement & rhs)
inline

Definition at line 31 of file KoSvgTextContentElement.h.

38 , text(rhs.text)
41 {
42 if (rhs.textPath) {
43 textPath.reset(rhs.textPath.data()->cloneShape());
44 }
45 }
KoSvgText::AutoValue textLength
the value 'textLength' attribute of the associated dom element
QVector< KoSvgText::CharTransformation > localTransformations
Local SVG char transforms.
QMap< KoSvgText::TextDecoration, QPainterPath > textDecorations
Cached text decorations to be used by the painting function.
KoSvgTextProperties properties
The textProperties. This includes.
QPainterPath associatedOutline
The associated outline. Currently only a bounding box.
QString text
Plain text of the current node. Use insertText and removeText to manipulate it.
QScopedPointer< KoShape > textPath
The textpath, if any. Defaults to null.
KoSvgText::LengthAdjust lengthAdjust
the value 'lengthAdjust' attribute of the associated dom element
KoSvgText::TextOnPathInfo textPathInfo
Text path info for the text-on-path algorithm.

References textPath.

◆ ~KoSvgTextContentElement()

KoSvgTextContentElement::~KoSvgTextContentElement ( )
default

Member Function Documentation

◆ getTransformedString()

QString KoSvgTextContentElement::getTransformedString ( QVector< QPair< int, int > > & positions,
KoSvgTextProperties resolvedProps = KoSvgTextProperties() ) const

Get the text with transformations applied.

Parameters
positionsthe text positions which may have changed due the uppercase transform.

Definition at line 435 of file KoSvgTextContentElement.cpp.

436{
437 KoSvgText::TextTransformInfo textTransformInfo =
439 QString lang = resolvedProps.property(KoSvgTextProperties::TextLanguage).toString().toUtf8();
440 return transformText(text, textTransformInfo, lang, positions);
441}
static QString transformText(QString text, KoSvgText::TextTransformInfo textTransformInfo, const QString &lang, QVector< QPair< int, int > > &positions)
@ TextTransformId
KoSvgText::TextTransformInfo Struct.
@ TextLanguage
a language string.
QVariant property(PropertyId id, const QVariant &defaultValue=QVariant()) const
QVariant propertyOrDefault(PropertyId id) const

References KoSvgTextProperties::property(), KoSvgTextProperties::propertyOrDefault(), text, KoSvgTextProperties::TextLanguage, KoSvgTextProperties::TextTransformId, and transformText().

◆ insertText()

void KoSvgTextContentElement::insertText ( int start,
QString insertText )

insertText

Parameters
start– start index.
insertText– text to insert.

Definition at line 425 of file KoSvgTextContentElement.cpp.

426{
427 if (start >= text.size()) {
428 text.append(insertText);
429 } else {
430 text.insert(start, insertText);
431 }
432}
void insertText(int start, QString insertText)
insertText

References insertText(), and text.

◆ loadSvg()

bool KoSvgTextContentElement::loadSvg ( const QDomElement & element,
SvgLoadingContext & context,
bool rootNode = false )

loadSvg load SVG style data into the current content element.

Parameters
element– xml element to load the data from.
context– loading context.
rootNode– whether this content element is a <text > node. During text layout, text properties are inherited dynamically. However, we can only start at the root text node, while SVG can have properties that are set on the document root and inherit. Therefore, when loading we inherit and resolve those properties dynamically for the root node only.
Returns
whether successful.

Definition at line 163 of file KoSvgTextContentElement.cpp.

164{
165 SvgGraphicsContext *gc = context.currentGC();
167
168 KoSvgTextProperties props = rootNode? context.resolvedProperties(): gc->textProperties;
169
170
176 for (int i = 0; i < generic.size(); i++) {
177 auto id = generic[i];
178 if (properties.hasProperty(id)) {
179 props.setProperty(id, properties.property(id));
180 }
181 }
182 properties = props;
183
184 textLength = KoSvgText::parseAutoValueXY(e.attribute("textLength", ""), context, "");
185 lengthAdjust = KoSvgText::parseLengthAdjust(e.attribute("lengthAdjust", "spacing"));
186
187 QVector<qreal> xPos = parseListAttributeX(e.attribute("x", ""), context);
188 QVector<qreal> yPos = parseListAttributeY(e.attribute("y", ""), context);
189 QVector<qreal> dxPos = parseListAttributeX(e.attribute("dx", ""), context);
190 QVector<qreal> dyPos = parseListAttributeY(e.attribute("dy", ""), context);
191 QVector<qreal> rotate = parseListAttributeAngular(e.attribute("rotate", ""), context);
192
193 const int numLocalTransformations =
194 std::max({xPos.size(), yPos.size(),
195 dxPos.size(), dyPos.size(),
196 rotate.size()});
197
198 localTransformations.resize(numLocalTransformations);
199 for (int i = 0; i < numLocalTransformations; i++) {
200 if (i < xPos.size()) {
201 localTransformations[i].xPos = xPos[i];
202 }
203 if (i < yPos.size()) {
204 localTransformations[i].yPos = yPos[i];
205 }
206 if (i < dxPos.size() && dxPos[i] != 0.0) {
207 localTransformations[i].dxPos = dxPos[i];
208 }
209 if (i < dyPos.size() && dyPos[i] != 0.0) {
210 localTransformations[i].dyPos = dyPos[i];
211 }
212 if (i < rotate.size()) {
213 localTransformations[i].rotate = rotate[i];
214 }
215 }
216
217 if (e.tagName() == "textPath") {
218 // we'll read the value 'path' later.
219
220 textPathInfo.side = KoSvgText::parseTextPathSide(e.attribute("side", "left"));
221 textPathInfo.method = KoSvgText::parseTextPathMethod(e.attribute("method", "align"));
222 textPathInfo.spacing = KoSvgText::parseTextPathSpacing(e.attribute("spacing", "auto"));
223 // This depends on pathLength;
224 if (e.hasAttribute("startOffset")) {
225 QString offset = e.attribute("startOffset", "0");
226 if (offset.endsWith("%")) {
227 textPathInfo.startOffset = SvgUtil::parseNumber(offset.left(offset.size() - 1));
229 } else {
231 }
232 }
233 }
234
235 if (e.hasAttribute(TEXT_STYLE_TYPE.toLatin1().data())) {
237 if (e.hasAttribute(TEXT_STYLE_RES.toLatin1().data())) {
238 QString resolution = e.attribute(TEXT_STYLE_RES.toLatin1().data()).toLower();
239 if (resolution.endsWith("dpi")) {
240 resolution.chop(3);
241 }
243 }
244 }
245
246 return true;
247}
const QString TEXT_STYLE_RES
const QString TEXT_STYLE_TYPE
@ Visiblity
Bool, CSS visibility.
@ PaintOrder
QVector<KoShape::PaintOrder>
@ KraTextStyleResolution
Int, used to scale style presets to be pixel-relative.
@ Opacity
Double, SVG shape opacity.
@ KraTextStyleType
string, used to identify the style preset type (character or paragraph).
@ StrokeId
KoSvgText::StrokeProperty.
@ FillId
KoSvgText::BackgroundProperty.
bool hasProperty(PropertyId id) const
void setProperty(PropertyId id, const QVariant &value)
KoSvgTextProperties textProperties
Stores textProperties.
SvgGraphicsContext * currentGC() const
Returns the current graphics context.
KoSvgTextProperties resolvedProperties() const
These are the text properties, completely resolved, ensuring that everything is inherited and the siz...
static const char * parseNumber(const char *ptr, qreal &number)
parses the number into parameter number
Definition SvgUtil.cpp:378
static qreal parseUnit(SvgGraphicsContext *gc, const KoSvgTextProperties &resolved, QStringView, bool horiz=false, bool vert=false, const QRectF &bbox=QRectF())
Parses a length attribute.
Definition SvgUtil.cpp:218
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129
int toInt(const QString &str, bool *ok=nullptr)
TextPathSide parseTextPathSide(const QString &value)
TextPathSpacing parseTextPathSpacing(const QString &value)
LengthAdjust parseLengthAdjust(const QString &value)
AutoValue parseAutoValueXY(const QString &value, const SvgLoadingContext &context, const QString &autoKeyword)
TextPathMethod parseTextPathMethod(const QString &value)
TextPathMethod method
Definition KoSvgText.h:626
TextPathSpacing spacing
Definition KoSvgText.h:627

References SvgLoadingContext::currentGC(), KoSvgTextProperties::FillId, KoSvgTextProperties::hasProperty(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, KoSvgTextProperties::KraTextStyleResolution, KoSvgTextProperties::KraTextStyleType, lengthAdjust, localTransformations, KoSvgText::TextOnPathInfo::method, KoSvgTextProperties::Opacity, KoSvgTextProperties::PaintOrder, KoSvgText::parseAutoValueXY(), KoSvgText::parseLengthAdjust(), SvgUtil::parseNumber(), KoSvgText::parseTextPathMethod(), KoSvgText::parseTextPathSide(), KoSvgText::parseTextPathSpacing(), SvgUtil::parseUnit(), properties, KoSvgTextProperties::property(), SvgLoadingContext::resolvedProperties(), KoSvgTextProperties::setProperty(), KoSvgText::TextOnPathInfo::side, KoSvgText::TextOnPathInfo::spacing, KoSvgText::TextOnPathInfo::startOffset, KoSvgText::TextOnPathInfo::startOffsetIsPercentage, KoSvgTextProperties::StrokeId, TEXT_STYLE_RES, TEXT_STYLE_TYPE, textLength, textPathInfo, SvgGraphicsContext::textProperties, KisDomUtils::toInt(), and KoSvgTextProperties::Visiblity.

◆ loadSvgTextNode()

bool KoSvgTextContentElement::loadSvgTextNode ( const QDomText & text,
SvgLoadingContext & context )

Definition at line 249 of file KoSvgTextContentElement.cpp.

250{
251 SvgGraphicsContext *gc = context.currentGC();
253
254 // In theory, the XML spec requires XML parsers to normalize line endings to
255 // LF. However, QXmlInputSource + QXmlSimpleReader do not do this, so we can
256 // end up with CR in the text. The SVG spec explicitly calls out that all
257 // newlines in SVG are to be represented by a single LF (U+000A) character,
258 // so we can replace all CRLF and CR into LF here for simplicity.
259 static const QRegularExpression s_regexCrlf(R"==((?:\r\n|\r(?!\n)))==");
260 QString content = text.data();
261 content.replace(s_regexCrlf, QStringLiteral("\n"));
262
263 this->text = std::move(content);
264
265 return true;
266}

References SvgLoadingContext::currentGC(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, and text.

◆ numChars()

int KoSvgTextContentElement::numChars ( bool withControls = false,
KoSvgTextProperties resolvedProps = KoSvgTextProperties() ) const

The number of characters contained in the currentChunk.

Parameters
withControlsthis will enable the bidi controls to be counted as well.

Definition at line 405 of file KoSvgTextContentElement.cpp.

406{
407 int result = 0;
408 if (withControls) {
411 KoSvgText::TextTransformInfo textTransformInfo =
413 QString lang = resolvedProps.property(KoSvgTextProperties::TextLanguage).toString().toUtf8();
414 QVector<QPair<int, int>> positions;
415
416 result = KoCssTextUtils::getBidiOpening(direction == KoSvgText::DirectionLeftToRight, bidi).size();
417 result += transformText(text, textTransformInfo, lang, positions).size();
418 result += KoCssTextUtils::getBidiClosing(bidi).size();
419 } else {
420 result = text.size();
421 }
422 return result;
423}
static QString getBidiClosing(KoSvgText::UnicodeBidi bidi)
getBidiClosing Returns the bidi closing string associated with the given Css unicode-bidi value.
static QString getBidiOpening(bool ltr, KoSvgText::UnicodeBidi bidi)
getBidiOpening Get the bidi opening string associated with the given Css unicode-bidi value and direc...
@ UnicodeBidiId
KoSvgText::UnicodeBidi.
@ DirectionId
KoSvgText::Direction.
Direction
Base direction used by Bidi algorithm.
Definition KoSvgText.h:48
@ DirectionLeftToRight
Definition KoSvgText.h:49

References KoSvgTextProperties::DirectionId, KoSvgText::DirectionLeftToRight, KoCssTextUtils::getBidiClosing(), KoCssTextUtils::getBidiOpening(), KoSvgTextProperties::property(), KoSvgTextProperties::propertyOrDefault(), text, KoSvgTextProperties::TextLanguage, KoSvgTextProperties::TextTransformId, transformText(), and KoSvgTextProperties::UnicodeBidiId.

◆ removeText()

void KoSvgTextContentElement::removeText ( int & start,
int length )

removeText removes text,

See also
KoSvgTextShape::removeText and CssUtils::removeText
Parameters
start– start index, may be modified.
length– length of text to remove.

Definition at line 443 of file KoSvgTextContentElement.cpp.

444{
446}
qreal length(const QPointF &vec)
Definition Ellipse.cc:82
static void removeText(QString &text, int &start, int length)
removeText Special removal of text that takes a text, start and length and will modify these values s...

References length(), KoCssTextUtils::removeText(), and text.

◆ saveSvg()

bool KoSvgTextContentElement::saveSvg ( SvgSavingContext & context,
bool rootText,
bool saveText,
QMap< QString, QString > shapeSpecificAttributes )

Definition at line 268 of file KoSvgTextContentElement.cpp.

272{
273 if (textPath) {
274 if (textPath) {
275 // we'll always save as an embedded shape as "path" is an svg 2.0
276 // feature.
277 QString id = SvgStyleWriter::embedShape(textPath.data(), context);
278 // inkscape can only read 'xlink:href'
279 if (!id.isEmpty()) {
280 context.shapeWriter().addAttribute("xlink:href", "#" + id);
281 }
282 }
283 if (textPathInfo.startOffset != 0) {
286 offset += "%";
287 }
288 context.shapeWriter().addAttribute("startOffset", offset);
289 }
291 context.shapeWriter().addAttribute("method", KoSvgText::writeTextPathMethod(textPathInfo.method));
292 }
294 context.shapeWriter().addAttribute("side", KoSvgText::writeTextPathSide(textPathInfo.side));
295 }
297 context.shapeWriter().addAttribute("spacing", KoSvgText::writeTextPathSpacing(textPathInfo.spacing));
298 }
299 }
300
301 if (!localTransformations.isEmpty()) {
302
303 QVector<qreal> xPos;
304 QVector<qreal> yPos;
305 QVector<qreal> dxPos;
306 QVector<qreal> dyPos;
307 QVector<qreal> rotate;
308
309 fillTransforms(&xPos, &yPos, &dxPos, &dyPos, &rotate, localTransformations);
310
311 for (int i = 0; i < rotate.size(); i++) {
312 rotate[i] = kisRadiansToDegrees(rotate[i]);
313 }
314
315 writeTextListAttribute("x", xPos, context.shapeWriter());
316 writeTextListAttribute("y", yPos, context.shapeWriter());
317 writeTextListAttribute("dx", dxPos, context.shapeWriter());
318 writeTextListAttribute("dy", dyPos, context.shapeWriter());
319 writeTextListAttribute("rotate", rotate, context.shapeWriter());
320 }
321
322 if (!textLength.isAuto) {
323 context.shapeWriter().addAttribute("textLength", KisDomUtils::toString(textLength.customValue));
324
326 context.shapeWriter().addAttribute("lengthAdjust", "spacingAndGlyphs");
327 }
328 }
329
331
332 ownProperties = adjustPropertiesForFontSizeWorkaround(ownProperties);
333
334 // we write down stroke/fill if they are different from the parent's value
335 if (!rootText) {
336 if (ownProperties.hasProperty(KoSvgTextProperties::FillId)) {
338 false,
339 this->associatedOutline.boundingRect(),
340 associatedOutline.boundingRect().size(),
341 QTransform(),
342 context);
343 }
344
345 if (ownProperties.hasProperty(KoSvgTextProperties::StrokeId)) {
347 }
348 }
349
350 QMap<QString, QString> attributes = ownProperties.convertToSvgTextAttributes();
351 QStringList allowedAttributes = properties.supportedXmlAttributes();
352 QString styleString;
353
354 for (auto it = shapeSpecificAttributes.constBegin(); it != shapeSpecificAttributes.constEnd(); ++it) {
355 styleString.append(it.key().toLatin1().data()).append(": ").append(it.value()).append(";");
356 }
357 for (auto it = attributes.constBegin(); it != attributes.constEnd(); ++it) {
358 if (allowedAttributes.contains(it.key())) {
359 context.shapeWriter().addAttribute(it.key().toLatin1().data(), it.value());
360 } else {
361 styleString.append(it.key().toLatin1().data()).append(": ").append(it.value()).append(";");
362 }
363 }
364 if (!styleString.isEmpty()) {
365 context.shapeWriter().addAttribute("style", styleString);
366 }
367
369 context.shapeWriter().addAttribute(TEXT_STYLE_TYPE.toLatin1().data(), properties.property(KoSvgTextProperties::KraTextStyleType).toString());
371 context.shapeWriter().addAttribute(TEXT_STYLE_RES.toLatin1().data(), QString::number(properties.property(KoSvgTextProperties::KraTextStyleResolution).toInt())+"dpi");
372 }
373 }
374
375 if (saveText) {
376 context.shapeWriter().addTextNode(text);
377 }
378 return true;
379}
QSharedPointer< KoShapeBackground > background() const
KoShapeStrokeModelSP stroke() const
QMap< QString, QString > convertToSvgTextAttributes() const
static const KoSvgTextProperties & defaultProperties()
KoSvgTextProperties ownProperties(const KoSvgTextProperties &parentProperties, bool keepFontSize=false) const
static QStringList supportedXmlAttributes()
QScopedPointer< KoXmlWriter > shapeWriter
static void saveSvgFill(QSharedPointer< KoShapeBackground > background, const bool fillRuleEvenOdd, const QRectF outlineRect, const QSizeF size, const QTransform absoluteTransform, SvgSavingContext &context)
Saves fill style of specified shape.
static QString embedShape(const KoShape *shape, SvgSavingContext &context)
static void saveSvgStroke(KoShapeStrokeModelSP, SvgSavingContext &context)
Saves stroke style of specified shape.
T kisRadiansToDegrees(T radians)
Definition kis_global.h:181
QString toString(const QString &value)
QString writeTextPathSide(TextPathSide value)
@ LengthAdjustSpacingAndGlyphs
Stretches the glyphs as well.
Definition KoSvgText.h:252
QString writeTextPathMethod(TextPathMethod value)
@ TextPathSideLeft
Definition KoSvgText.h:302
QString writeTextPathSpacing(TextPathSpacing value)
@ TextPathAlign
Only align position and rotation of glyphs to the path.
Definition KoSvgText.h:287

References associatedOutline, KoSvgTextProperties::background(), KoSvgTextProperties::convertToSvgTextAttributes(), KoSvgText::AutoValue::customValue, KoSvgTextProperties::defaultProperties(), SvgStyleWriter::embedShape(), KoSvgTextProperties::FillId, KoSvgTextProperties::hasProperty(), KoSvgText::AutoValue::isAuto, kisRadiansToDegrees(), KoSvgTextProperties::KraTextStyleResolution, KoSvgTextProperties::KraTextStyleType, lengthAdjust, KoSvgText::LengthAdjustSpacingAndGlyphs, localTransformations, KoSvgText::TextOnPathInfo::method, KoSvgTextProperties::ownProperties(), properties, KoSvgTextProperties::property(), SvgStyleWriter::saveSvgFill(), SvgStyleWriter::saveSvgStroke(), SvgSavingContext::shapeWriter, KoSvgText::TextOnPathInfo::side, KoSvgText::TextOnPathInfo::spacing, KoSvgText::TextOnPathInfo::startOffset, KoSvgText::TextOnPathInfo::startOffsetIsPercentage, KoSvgTextProperties::stroke(), KoSvgTextProperties::StrokeId, KoSvgTextProperties::supportedXmlAttributes(), text, TEXT_STYLE_RES, TEXT_STYLE_TYPE, textLength, textPath, KoSvgText::TextPathAlign, KoSvgText::TextPathAuto, textPathInfo, KoSvgText::TextPathSideLeft, KisDomUtils::toString(), KoSvgText::writeTextPathMethod(), KoSvgText::writeTextPathSide(), and KoSvgText::writeTextPathSpacing().

Member Data Documentation

◆ associatedOutline

QPainterPath KoSvgTextContentElement::associatedOutline

The associated outline. Currently only a bounding box.

Definition at line 78 of file KoSvgTextContentElement.h.

◆ finalResultIndex

int KoSvgTextContentElement::finalResultIndex = -1

Set during layout, finalResultIndex determines the size of the iterator on result after going over this contentElement. Once layout has been set this is less fiddly than using numChars which requires resolving properties.

Definition at line 75 of file KoSvgTextContentElement.h.

◆ lengthAdjust

KoSvgText::LengthAdjust KoSvgTextContentElement::lengthAdjust = KoSvgText::LengthAdjustSpacing

the value 'lengthAdjust' attribute of the associated dom element

Definition at line 64 of file KoSvgTextContentElement.h.

◆ localTransformations

QVector<KoSvgText::CharTransformation> KoSvgTextContentElement::localTransformations

Local SVG char transforms.

Definition at line 53 of file KoSvgTextContentElement.h.

◆ properties

KoSvgTextProperties KoSvgTextContentElement::properties

The textProperties. This includes.

Definition at line 50 of file KoSvgTextContentElement.h.

◆ text

QString KoSvgTextContentElement::text

Plain text of the current node. Use insertText and removeText to manipulate it.

Definition at line 70 of file KoSvgTextContentElement.h.

◆ textDecorations

QMap<KoSvgText::TextDecoration, QPainterPath> KoSvgTextContentElement::textDecorations

Cached text decorations to be used by the painting function.

Definition at line 67 of file KoSvgTextContentElement.h.

◆ textLength

KoSvgText::AutoValue KoSvgTextContentElement::textLength

the value 'textLength' attribute of the associated dom element

Definition at line 62 of file KoSvgTextContentElement.h.

◆ textPath

QScopedPointer<KoShape> KoSvgTextContentElement::textPath {nullptr}

The textpath, if any. Defaults to null.

Definition at line 59 of file KoSvgTextContentElement.h.

59{nullptr};

◆ textPathInfo

KoSvgText::TextOnPathInfo KoSvgTextContentElement::textPathInfo

Text path info for the text-on-path algorithm.

Definition at line 56 of file KoSvgTextContentElement.h.


The documentation for this struct was generated from the following files: