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

KHTML

  • sources
  • kde-4.12
  • kdelibs
  • 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 
37 namespace WebCore {
38 
39 SVGTextPathElement::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 
48 SVGTextPathElement::~SVGTextPathElement()
49 {
50 }
51 
52 ANIMATED_PROPERTY_DEFINITIONS(SVGTextPathElement, SVGLength, Length, length, StartOffset, startOffset, SVGNames::startOffsetAttr, m_startOffset)
53 ANIMATED_PROPERTY_DEFINITIONS(SVGTextPathElement, int, Enumeration, enumeration, Method, method, SVGNames::methodAttr, m_method)
54 ANIMATED_PROPERTY_DEFINITIONS(SVGTextPathElement, int, Enumeration, enumeration, Spacing, spacing, SVGNames::spacingAttr, m_spacing)
55 
56 void 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 
79 RenderObject* SVGTextPathElement::createRenderer(RenderArena* arena, RenderStyle* style)
80 {
81  Q_UNUSED(style);
82  return new (arena) RenderSVGTextPath(this);
83 }
84 
85 bool 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 
97 void 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
WebCore::SVGNames::startOffsetAttr
DOM::QualifiedName startOffsetAttr
Definition: SVGNames.cpp:282
SVGTextPathElement.h
WebCore::SVGNames::textPathTag
DOM::QualifiedName textPathTag
Definition: SVGNames.cpp:95
WebCore::SVGNames::trefTag
DOM::QualifiedName trefTag
Definition: SVGNames.cpp:97
SVGPathElement.h
WebCore::SVGNames::spacingAttr
DOM::QualifiedName spacingAttr
Definition: SVGNames.cpp:278
WebCore::SVGNames::methodAttr
DOM::QualifiedName methodAttr
Definition: SVGNames.cpp:224
AffineTransform.h
FloatRect.h
SVGTransformList.h
WebCore::SVGNames::tspanTag
DOM::QualifiedName tspanTag
Definition: SVGNames.cpp:98
WebCore::SVGNames::altGlyphTag
DOM::QualifiedName altGlyphTag
Definition: SVGNames.cpp:22
SVGLengthList.h
WebCore::String
DOM::DOMString String
Definition: PlatformString.h:8
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:51:22 by doxygen 1.8.7 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 API Reference

Skip menu "kdelibs 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
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



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