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, KoShape *textPath=nullptr)
 
 ~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
 
QString textPathId
 The textpath's name, if any.
 
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.

39 , text(rhs.text)
42 {
43
44 }
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 textPathId
The textpath's name, if any.
QString text
Plain text of the current node. Use insertText and removeText to manipulate it.
KoSvgText::LengthAdjust lengthAdjust
the value 'lengthAdjust' attribute of the associated dom element
KoSvgText::TextOnPathInfo textPathInfo
Text path info for the text-on-path algorithm.

◆ ~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 436 of file KoSvgTextContentElement.cpp.

437{
438 KoSvgText::TextTransformInfo textTransformInfo =
440 QString lang = resolvedProps.property(KoSvgTextProperties::TextLanguage).toString().toUtf8();
441 return transformText(text, textTransformInfo, lang, positions);
442}
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 426 of file KoSvgTextContentElement.cpp.

427{
428 if (start >= text.size()) {
429 text.append(insertText);
430 } else {
431 text.insert(start, insertText);
432 }
433}
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
@ 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.
@ Visibility
Bool, CSS visibility.
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::Visibility.

◆ 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 406 of file KoSvgTextContentElement.cpp.

407{
408 int result = 0;
409 if (withControls) {
412 KoSvgText::TextTransformInfo textTransformInfo =
414 QString lang = resolvedProps.property(KoSvgTextProperties::TextLanguage).toString().toUtf8();
415 QVector<QPair<int, int>> positions;
416
417 result = KoCssTextUtils::getBidiOpening(direction == KoSvgText::DirectionLeftToRight, bidi).size();
418 result += transformText(text, textTransformInfo, lang, positions).size();
419 result += KoCssTextUtils::getBidiClosing(bidi).size();
420 } else {
421 result = text.size();
422 }
423 return result;
424}
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 444 of file KoSvgTextContentElement.cpp.

445{
447}
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,
KoShape * textPath = nullptr )

Definition at line 268 of file KoSvgTextContentElement.cpp.

273{
274 if (textPath) {
275 if (textPath) {
276 // we'll always save as an embedded shape as "path" is an svg 2.0
277 // feature.
278 QString id = textPath->isVisible(false) && !context.strippedTextMode()? context.getID(textPath): SvgStyleWriter::embedShape(textPath, context);
279 // inkscape can only read 'xlink:href'
280 if (!id.isEmpty()) {
281 context.shapeWriter().addAttribute("xlink:href", "#" + id);
282 }
283 }
284 if (textPathInfo.startOffset != 0) {
287 offset += "%";
288 }
289 context.shapeWriter().addAttribute("startOffset", offset);
290 }
292 context.shapeWriter().addAttribute("method", KoSvgText::writeTextPathMethod(textPathInfo.method));
293 }
295 context.shapeWriter().addAttribute("side", KoSvgText::writeTextPathSide(textPathInfo.side));
296 }
298 context.shapeWriter().addAttribute("spacing", KoSvgText::writeTextPathSpacing(textPathInfo.spacing));
299 }
300 }
301
302 if (!localTransformations.isEmpty()) {
303
304 QVector<qreal> xPos;
305 QVector<qreal> yPos;
306 QVector<qreal> dxPos;
307 QVector<qreal> dyPos;
308 QVector<qreal> rotate;
309
310 fillTransforms(&xPos, &yPos, &dxPos, &dyPos, &rotate, localTransformations);
311
312 for (int i = 0; i < rotate.size(); i++) {
313 rotate[i] = kisRadiansToDegrees(rotate[i]);
314 }
315
316 writeTextListAttribute("x", xPos, context.shapeWriter());
317 writeTextListAttribute("y", yPos, context.shapeWriter());
318 writeTextListAttribute("dx", dxPos, context.shapeWriter());
319 writeTextListAttribute("dy", dyPos, context.shapeWriter());
320 writeTextListAttribute("rotate", rotate, context.shapeWriter());
321 }
322
323 if (!textLength.isAuto) {
324 context.shapeWriter().addAttribute("textLength", KisDomUtils::toString(textLength.customValue));
325
327 context.shapeWriter().addAttribute("lengthAdjust", "spacingAndGlyphs");
328 }
329 }
330
332
333 ownProperties = adjustPropertiesForFontSizeWorkaround(ownProperties);
334
335 // we write down stroke/fill if they are different from the parent's value
336 if (!rootText) {
337 if (ownProperties.hasProperty(KoSvgTextProperties::FillId)) {
339 false,
340 this->associatedOutline.boundingRect(),
341 associatedOutline.boundingRect().size(),
342 QTransform(),
343 context);
344 }
345
346 if (ownProperties.hasProperty(KoSvgTextProperties::StrokeId)) {
348 }
349 }
350
351 QMap<QString, QString> attributes = ownProperties.convertToSvgTextAttributes();
352 QStringList allowedAttributes = properties.supportedXmlAttributes();
353 QString styleString;
354
355 for (auto it = shapeSpecificAttributes.constBegin(); it != shapeSpecificAttributes.constEnd(); ++it) {
356 styleString.append(it.key().toLatin1().data()).append(": ").append(it.value()).append(";");
357 }
358 for (auto it = attributes.constBegin(); it != attributes.constEnd(); ++it) {
359 if (allowedAttributes.contains(it.key())) {
360 context.shapeWriter().addAttribute(it.key().toLatin1().data(), it.value());
361 } else {
362 styleString.append(it.key().toLatin1().data()).append(": ").append(it.value()).append(";");
363 }
364 }
365 if (!styleString.isEmpty()) {
366 context.shapeWriter().addAttribute("style", styleString);
367 }
368
370 context.shapeWriter().addAttribute(TEXT_STYLE_TYPE.toLatin1().data(), properties.property(KoSvgTextProperties::KraTextStyleType).toString());
372 context.shapeWriter().addAttribute(TEXT_STYLE_RES.toLatin1().data(), QString::number(properties.property(KoSvgTextProperties::KraTextStyleResolution).toInt())+"dpi");
373 }
374 }
375
376 if (saveText) {
377 context.shapeWriter().addTextNode(text);
378 }
379 return true;
380}
bool isVisible(bool recursive=true) const
Definition KoShape.cpp:802
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
QString getID(const KoShape *obj)
Returns the unique id for the given shape.
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, SvgSavingContext::getID(), KoSvgTextProperties::hasProperty(), KoSvgText::AutoValue::isAuto, KoShape::isVisible(), 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, SvgSavingContext::strippedTextMode, KoSvgTextProperties::stroke(), KoSvgTextProperties::StrokeId, KoSvgTextProperties::supportedXmlAttributes(), text, TEXT_STYLE_RES, TEXT_STYLE_TYPE, textLength, 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 77 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 74 of file KoSvgTextContentElement.h.

◆ lengthAdjust

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

the value 'lengthAdjust' attribute of the associated dom element

Definition at line 63 of file KoSvgTextContentElement.h.

◆ localTransformations

QVector<KoSvgText::CharTransformation> KoSvgTextContentElement::localTransformations

Local SVG char transforms.

Definition at line 52 of file KoSvgTextContentElement.h.

◆ properties

KoSvgTextProperties KoSvgTextContentElement::properties

The textProperties. This includes.

Definition at line 49 of file KoSvgTextContentElement.h.

◆ text

QString KoSvgTextContentElement::text

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

Definition at line 69 of file KoSvgTextContentElement.h.

◆ textDecorations

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

Cached text decorations to be used by the painting function.

Definition at line 66 of file KoSvgTextContentElement.h.

◆ textLength

KoSvgText::AutoValue KoSvgTextContentElement::textLength

the value 'textLength' attribute of the associated dom element

Definition at line 61 of file KoSvgTextContentElement.h.

◆ textPathId

QString KoSvgTextContentElement::textPathId

The textpath's name, if any.

Definition at line 58 of file KoSvgTextContentElement.h.

◆ textPathInfo

KoSvgText::TextOnPathInfo KoSvgTextContentElement::textPathInfo

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

Definition at line 55 of file KoSvgTextContentElement.h.


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