• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KHTML

  • khtml
  • svg
SVGTextPathElement.cpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
3
4 This file is part of the KDE project
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21
22#include "config.h"
23#include "wtf/Platform.h"
24
25#if ENABLE(SVG)
26#include "SVGTextPathElement.h"
27
28#include "AffineTransform.h"
29#include "FloatRect.h"
30#include "RenderSVGTextPath.h"
31#include "SVGLengthList.h"
32#include "SVGPathElement.h"
33#include "SVGRenderStyle.h"
34#include "SVGTextPathElement.h"
35#include "SVGTransformList.h"
36
37namespace WebCore {
38
39SVGTextPathElement::SVGTextPathElement(const QualifiedName& tagName, Document* doc)
40 : SVGTextContentElement(tagName, doc)
41 , SVGURIReference()
42 , m_startOffset(this, LengthModeOther)
43 , m_method(SVG_TEXTPATH_METHODTYPE_ALIGN)
44 , m_spacing(SVG_TEXTPATH_SPACINGTYPE_EXACT)
45{
46}
47
48SVGTextPathElement::~SVGTextPathElement()
49{
50}
51
52ANIMATED_PROPERTY_DEFINITIONS(SVGTextPathElement, SVGLength, Length, length, StartOffset, startOffset, SVGNames::startOffsetAttr, m_startOffset)
53ANIMATED_PROPERTY_DEFINITIONS(SVGTextPathElement, int, Enumeration, enumeration, Method, method, SVGNames::methodAttr, m_method)
54ANIMATED_PROPERTY_DEFINITIONS(SVGTextPathElement, int, Enumeration, enumeration, Spacing, spacing, SVGNames::spacingAttr, m_spacing)
55
56void SVGTextPathElement::parseMappedAttribute(MappedAttribute* attr)
57{
58 const String& value = attr->value();
59
60 if (attr->name() == SVGNames::startOffsetAttr)
61 setStartOffsetBaseValue(SVGLength(this, LengthModeOther, value));
62 else if (attr->name() == SVGNames::methodAttr) {
63 if (value == "align")
64 setSpacingBaseValue(SVG_TEXTPATH_METHODTYPE_ALIGN);
65 else if(value == "stretch")
66 setSpacingBaseValue(SVG_TEXTPATH_METHODTYPE_STRETCH);
67 } else if (attr->name() == SVGNames::spacingAttr) {
68 if (value == "auto")
69 setMethodBaseValue(SVG_TEXTPATH_SPACINGTYPE_AUTO);
70 else if (value == "exact")
71 setMethodBaseValue(SVG_TEXTPATH_SPACINGTYPE_EXACT);
72 } else {
73 if (SVGURIReference::parseMappedAttribute(attr))
74 return;
75 SVGTextContentElement::parseMappedAttribute(attr);
76 }
77}
78
79RenderObject* SVGTextPathElement::createRenderer(RenderArena* arena, RenderStyle* style)
80{
81 Q_UNUSED(style);
82 return new (arena) RenderSVGTextPath(this);
83}
84
85bool SVGTextPathElement::childShouldCreateRenderer(Node* child) const
86{
87 if (child->isTextNode()
88#if ENABLE(SVG_FONTS)
89 || child->hasTagName(SVGNames::altGlyphTag)
90#endif
91 || child->hasTagName(SVGNames::trefTag) || child->hasTagName(SVGNames::tspanTag) || child->hasTagName(SVGNames::textPathTag))
92 return true;
93
94 return false;
95}
96
97void SVGTextPathElement::insertedIntoDocument()
98{
99 SVGElement::insertedIntoDocument();
100
101 String id = SVGURIReference::getTarget(href());
102 Element* targetElement = ownerDocument()->getElementById(id);
103 if (!targetElement) {
104 document()->accessSVGExtensions()->addPendingResource(id, this);
105 return;
106 }
107}
108
109}
110
111#endif // ENABLE(SVG)
112
113// vim:ts=4:noet
AffineTransform.h
FloatRect.h
SVGLengthList.h
SVGPathElement.h
SVGTextPathElement.h
SVGTransformList.h
WebCore
Definition: CSSHelper.h:7
WebCore::String
DOM::DOMString String
Definition: PlatformString.h:8
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KHTML

Skip menu "KHTML"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal