• 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
SVGStyledElement.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3  2004, 2005, 2007 Rob Buis <buis@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public License
16  along with this library; see the file COPYING.LIB. If not, write to
17  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  Boston, MA 02110-1301, USA.
19 */
20 
21 #include "config.h"
22 #include "wtf/Platform.h"
23 
24 #if ENABLE(SVG)
25 #include "SVGStyledElement.h"
26 
27 /*#include "Attr.h"
28 #include "CSSParser.h"
29 #include "CSSStyleSelector.h"
30 #include "CString.h"*/
31 #include "cssstyleselector.h"
32 #include "Document.h"
33 /*#include "HTMLNames.h"*/
34 #include "PlatformString.h"
35 #include "SVGElement.h"
36 /*#include "SVGElementInstance.h"*/
37 #include "SVGNames.h"
38 #include "RenderObject.h"
39 #include "SVGRenderStyle.h"
40 /*#include "SVGResource.h"*/
41 #include "SVGSVGElement.h"
42 #include <wtf/Assertions.h>
43 
44 // khtml
45 #include "css_base.h"
46 
47 
48 namespace WebCore {
49 
50 using namespace SVGNames;
51 using namespace DOM;
52 
53 static HashSet<const SVGStyledElement*>* gElementsWithInstanceUpdatesBlocked = 0;
54 
55 SVGStyledElement::SVGStyledElement(const QualifiedName& tagName, Document* doc)
56  : SVGElement(tagName, doc)
57 {
58 }
59 
60 SVGStyledElement::~SVGStyledElement()
61 {
62 // SVGResource::removeClient(this);
63 }
64 
65 ANIMATED_PROPERTY_DEFINITIONS(SVGStyledElement, String, String, string, ClassName, className, HTMLNames::classAttr, m_className)
66 
67 bool SVGStyledElement::rendererIsNeeded(RenderStyle* style)
68 {
69  // http://www.w3.org/TR/SVG/extend.html#PrivateData
70  // Prevent anything other than SVG renderers from appearing in our render tree
71  // Spec: SVG allows inclusion of elements from foreign namespaces anywhere
72  // with the SVG content. In general, the SVG user agent will include the unknown
73  // elements in the DOM but will otherwise ignore unknown elements.
74  if (!parentNode() || parentNode()->isSVGElement())
75  return StyledElement::rendererIsNeeded(style);
76 
77  return false;
78 }
79 
80 static void mapAttributeToCSSProperty(HashMap<DOMStringImpl*, int>* propertyNameToIdMap, const QualifiedName& attrName)
81 {
82  /*int propertyId = cssPropertyID(attrName.localName());*/
83  QString propName = attrName.localName().string();
84  int propertyId = DOM::getPropertyID(propName.toLatin1(), propName.length());
85  ASSERT(propertyId > 0);
86  propertyNameToIdMap->set(attrName.localName().implementation(), propertyId);
87 }
88 
89 int SVGStyledElement::cssPropertyIdForSVGAttributeName(const QualifiedName& attrName)
90 {
91  if (!attrName.namespaceURI().isEmpty()/*khtml fix, was isNull()*/)
92  return 0;
93 
94  // ### I think this is better redone as a switch.
95  static HashMap<DOMStringImpl*, int>* propertyNameToIdMap = 0;
96  if (!propertyNameToIdMap) {
97  propertyNameToIdMap = new HashMap<DOMStringImpl*, int>;
98  // This is a list of all base CSS and SVG CSS properties which are exposed as SVG XML attributes
99  mapAttributeToCSSProperty(propertyNameToIdMap, alignment_baselineAttr);
100  mapAttributeToCSSProperty(propertyNameToIdMap, baseline_shiftAttr);
101  mapAttributeToCSSProperty(propertyNameToIdMap, clipAttr);
102  mapAttributeToCSSProperty(propertyNameToIdMap, clip_pathAttr);
103  mapAttributeToCSSProperty(propertyNameToIdMap, clip_ruleAttr);
104  mapAttributeToCSSProperty(propertyNameToIdMap, colorAttr);
105  mapAttributeToCSSProperty(propertyNameToIdMap, color_interpolationAttr);
106  mapAttributeToCSSProperty(propertyNameToIdMap, color_interpolation_filtersAttr);
107  mapAttributeToCSSProperty(propertyNameToIdMap, color_profileAttr);
108  mapAttributeToCSSProperty(propertyNameToIdMap, color_renderingAttr);
109  mapAttributeToCSSProperty(propertyNameToIdMap, cursorAttr);
110  mapAttributeToCSSProperty(propertyNameToIdMap, directionAttr);
111  mapAttributeToCSSProperty(propertyNameToIdMap, displayAttr);
112  mapAttributeToCSSProperty(propertyNameToIdMap, dominant_baselineAttr);
113  mapAttributeToCSSProperty(propertyNameToIdMap, enable_backgroundAttr);
114  mapAttributeToCSSProperty(propertyNameToIdMap, fillAttr);
115  mapAttributeToCSSProperty(propertyNameToIdMap, fill_opacityAttr);
116  mapAttributeToCSSProperty(propertyNameToIdMap, fill_ruleAttr);
117  mapAttributeToCSSProperty(propertyNameToIdMap, filterAttr);
118  mapAttributeToCSSProperty(propertyNameToIdMap, flood_colorAttr);
119  mapAttributeToCSSProperty(propertyNameToIdMap, flood_opacityAttr);
120  mapAttributeToCSSProperty(propertyNameToIdMap, font_familyAttr);
121  mapAttributeToCSSProperty(propertyNameToIdMap, font_sizeAttr);
122  mapAttributeToCSSProperty(propertyNameToIdMap, font_stretchAttr);
123  mapAttributeToCSSProperty(propertyNameToIdMap, font_styleAttr);
124  mapAttributeToCSSProperty(propertyNameToIdMap, font_variantAttr);
125  mapAttributeToCSSProperty(propertyNameToIdMap, font_weightAttr);
126  mapAttributeToCSSProperty(propertyNameToIdMap, glyph_orientation_horizontalAttr);
127  mapAttributeToCSSProperty(propertyNameToIdMap, glyph_orientation_verticalAttr);
128  mapAttributeToCSSProperty(propertyNameToIdMap, image_renderingAttr);
129  mapAttributeToCSSProperty(propertyNameToIdMap, kerningAttr);
130  mapAttributeToCSSProperty(propertyNameToIdMap, letter_spacingAttr);
131  mapAttributeToCSSProperty(propertyNameToIdMap, lighting_colorAttr);
132  mapAttributeToCSSProperty(propertyNameToIdMap, marker_endAttr);
133  mapAttributeToCSSProperty(propertyNameToIdMap, marker_midAttr);
134  mapAttributeToCSSProperty(propertyNameToIdMap, marker_startAttr);
135  mapAttributeToCSSProperty(propertyNameToIdMap, maskAttr);
136  mapAttributeToCSSProperty(propertyNameToIdMap, opacityAttr);
137  mapAttributeToCSSProperty(propertyNameToIdMap, overflowAttr);
138  mapAttributeToCSSProperty(propertyNameToIdMap, pointer_eventsAttr);
139  mapAttributeToCSSProperty(propertyNameToIdMap, shape_renderingAttr);
140  mapAttributeToCSSProperty(propertyNameToIdMap, stop_colorAttr);
141  mapAttributeToCSSProperty(propertyNameToIdMap, stop_opacityAttr);
142  mapAttributeToCSSProperty(propertyNameToIdMap, strokeAttr);
143  mapAttributeToCSSProperty(propertyNameToIdMap, stroke_dasharrayAttr);
144  mapAttributeToCSSProperty(propertyNameToIdMap, stroke_dashoffsetAttr);
145  mapAttributeToCSSProperty(propertyNameToIdMap, stroke_linecapAttr);
146  mapAttributeToCSSProperty(propertyNameToIdMap, stroke_linejoinAttr);
147  mapAttributeToCSSProperty(propertyNameToIdMap, stroke_miterlimitAttr);
148  mapAttributeToCSSProperty(propertyNameToIdMap, stroke_opacityAttr);
149  mapAttributeToCSSProperty(propertyNameToIdMap, stroke_widthAttr);
150  mapAttributeToCSSProperty(propertyNameToIdMap, text_anchorAttr);
151  mapAttributeToCSSProperty(propertyNameToIdMap, text_decorationAttr);
152  mapAttributeToCSSProperty(propertyNameToIdMap, text_renderingAttr);
153  mapAttributeToCSSProperty(propertyNameToIdMap, unicode_bidiAttr);
154  mapAttributeToCSSProperty(propertyNameToIdMap, visibilityAttr);
155  mapAttributeToCSSProperty(propertyNameToIdMap, word_spacingAttr);
156  mapAttributeToCSSProperty(propertyNameToIdMap, writing_modeAttr);
157  }
158  return propertyNameToIdMap->get(attrName.localName().implementation());
159 }
160 
161 /*bool SVGStyledElement::mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const
162 {
163  if (SVGStyledElement::cssPropertyIdForSVGAttributeName(attrName) > 0) {
164  result = eSVG;
165  return false;
166  }
167  return SVGElement::mapToEntry(attrName, result);
168 }*/
169 
170 void SVGStyledElement::parseMappedAttribute(MappedAttribute* attr)
171 {
172  // NOTE: Any subclass which overrides parseMappedAttribute for a property handled by
173  // cssPropertyIdForSVGAttributeName will also have to override mapToEntry to disable the default eSVG mapping
174  int id = attr->id();
175  if (id == ATTR_STYLE) {
176  if (inlineStyleDecls()) {
177  inlineStyleDecls()->clear();
178  } else {
179  createInlineDecl();
180  }
181  inlineStyleDecls()->setProperty(attr->value());
182  setChanged();
183  return;
184  }
185  int propId = SVGStyledElement::cssPropertyIdForSVGAttributeName(attr->name());
186  if (propId > 0) {
187  addCSSProperty(attr, propId, attr->value());
188  setChanged();
189  return;
190  }
191 
192  // id and class are handled by StyledElement
193  SVGElement::parseMappedAttribute(attr);
194 }
195 
196 bool SVGStyledElement::isKnownAttribute(const QualifiedName& attrName)
197 {
198  // Recognize all style related SVG CSS properties
199  int propId = SVGStyledElement::cssPropertyIdForSVGAttributeName(attrName);
200  if (propId > 0)
201  return true;
202  return (attrName.id() == ATTR_ID || attrName.id() == ATTR_STYLE);
203  /*return (attrName == HTMLNames::idAttr || attrName == HTMLNames::styleAttr); */
204 }
205 
206 void SVGStyledElement::svgAttributeChanged(const QualifiedName& attrName)
207 {
208  SVGElement::svgAttributeChanged(attrName);
209 
210  // If we're the child of a resource element, be sure to invalidate it.
211  invalidateResourcesInAncestorChain();
212 
213  SVGDocumentExtensions* extensions = document()->accessSVGExtensions();
214  if (!extensions)
215  return;
216 
217  // TODO: Fix bug http://bugs.webkit.org/show_bug.cgi?id=15430 (SVGElementInstances should rebuild themselves lazily)
218 
219  // In case we're referenced by a <use> element, we have element instances registered
220  // to us in the SVGDocumentExtensions. If notifyAttributeChange() is called, we need
221  // to recursively update all children including ourselves.
222  updateElementInstance(extensions);
223 }
224 
225 void SVGStyledElement::invalidateResourcesInAncestorChain() const
226 {
227  Node* node = parentNode();
228  while (node) {
229  if (!node->isSVGElement())
230  break;
231 
232  SVGElement* element = static_cast<SVGElement*>(node);
233  if (SVGStyledElement* styledElement = static_cast<SVGStyledElement*>(element->isStyled() ? element : 0)) {
234  /*if (SVGResource* resource = styledElement->canvasResource())
235  resource->invalidate();*/
236  }
237 
238  node = node->parentNode();
239  }
240 }
241 
242 void SVGStyledElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
243 {
244  Q_UNUSED(changedByParser);
245  Q_UNUSED(beforeChange);
246  Q_UNUSED(afterChange);
247  Q_UNUSED(childCountDelta);
248  SVGElement::childrenChanged();
249  /*SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
250  if (document()->parsing())
251  return;
252 
253  SVGDocumentExtensions* extensions = document()->accessSVGExtensions();
254  if (!extensions)
255  return;
256 
257  // TODO: Fix bug http://bugs.webkit.org/show_bug.cgi?id=15430 (SVGElementInstances should rebuild themselves lazily)
258 
259  // In case we're referenced by a <use> element, we have element instances registered
260  // to us in the SVGDocumentExtensions. If childrenChanged() is called, we need
261  // to recursively update all children including ourselves.
262  updateElementInstance(extensions);*/
263 }
264 
265 void SVGStyledElement::updateElementInstance(SVGDocumentExtensions* extensions) const
266 {
267  Q_UNUSED(extensions);
268  /*if (gElementsWithInstanceUpdatesBlocked && gElementsWithInstanceUpdatesBlocked->contains(this))
269  return;
270 
271  SVGStyledElement* nonConstThis = const_cast<SVGStyledElement*>(this);
272  HashSet<SVGElementInstance*>* set = extensions->instancesForElement(nonConstThis);
273  if (!set || set->isEmpty())
274  return;
275 
276  // We need to be careful here, as the instancesForElement
277  // hash set may be modified after we call updateInstance!
278  HashSet<SVGElementInstance*> localCopy;
279 
280  // First create a local copy of the hashset
281  HashSet<SVGElementInstance*>::const_iterator it1 = set->begin();
282  const HashSet<SVGElementInstance*>::const_iterator end1 = set->end();
283 
284  for (; it1 != end1; ++it1)
285  localCopy.add(*it1);
286 
287  // Actually nofify instances to update
288  HashSet<SVGElementInstance*>::const_iterator it2 = localCopy.begin();
289  const HashSet<SVGElementInstance*>::const_iterator end2 = localCopy.end();
290 
291  for (; it2 != end2; ++it2)
292  (*it2)->updateInstance(nonConstThis);*/
293 }
294 
295 RenderStyle* SVGStyledElement::resolveStyle(RenderStyle* parentStyle)
296 {
297  Q_UNUSED(parentStyle);
298  if (renderer()) {
299  RenderStyle* renderStyle = renderer()->style();
300  renderStyle->ref();
301  return renderStyle;
302  }
303 
304  return document()->styleSelector()->styleForElement(this/*, parentStyle*/);
305 }
306 
307 PassRefPtr<DOM::CSSValueImpl> SVGStyledElement::getPresentationAttribute(const String& name)
308 {
309  Q_UNUSED(name);
310  /*MappedAttribute* cssSVGAttr = mappedAttributes()->getAttributeItem(name);
311  if (!cssSVGAttr || !cssSVGAttr->style())
312  return 0;
313  return cssSVGAttr->style()->getPropertyCSSValue(name);*/
314  Q_ASSERT(false);
315  return new CSSPrimitiveValueImpl(0);
316 }
317 
318 void SVGStyledElement::detach()
319 {
320  /*SVGResource::removeClient(this);*/
321  SVGElement::detach();
322 }
323 
324 void SVGStyledElement::setInstanceUpdatesBlocked(bool blockUpdates)
325 {
326  if (blockUpdates) {
327  if (!gElementsWithInstanceUpdatesBlocked)
328  gElementsWithInstanceUpdatesBlocked = new HashSet<const SVGStyledElement*>;
329  gElementsWithInstanceUpdatesBlocked->add(this);
330  } else {
331  ASSERT(gElementsWithInstanceUpdatesBlocked);
332  ASSERT(gElementsWithInstanceUpdatesBlocked->contains(this));
333  gElementsWithInstanceUpdatesBlocked->remove(this);
334  }
335 }
336 
337 }
338 
339 #endif // ENABLE(SVG)
WebCore::SVGNames::image_renderingAttr
DOM::QualifiedName image_renderingAttr
Definition: SVGNames.cpp:191
WebCore::SVGNames::text_renderingAttr
DOM::QualifiedName text_renderingAttr
Definition: SVGNames.cpp:308
WebCore::SVGNames::flood_opacityAttr
DOM::QualifiedName flood_opacityAttr
Definition: SVGNames.cpp:165
DOM::Node
The Node interface is the primary datatype for the entire Document Object Model.
Definition: dom_node.h:270
WebCore::SVGNames::glyph_orientation_verticalAttr
DOM::QualifiedName glyph_orientation_verticalAttr
Definition: SVGNames.cpp:181
WebCore::SVGNames::fill_ruleAttr
DOM::QualifiedName fill_ruleAttr
Definition: SVGNames.cpp:160
DOM::QualifiedName
Definition: QualifiedName.h:36
WebCore::SVGNames::letter_spacingAttr
DOM::QualifiedName letter_spacingAttr
Definition: SVGNames.cpp:208
WebCore::SVGNames::fill_opacityAttr
DOM::QualifiedName fill_opacityAttr
Definition: SVGNames.cpp:159
WebCore::SVGNames::stroke_dasharrayAttr
DOM::QualifiedName stroke_dasharrayAttr
Definition: SVGNames.cpp:292
DOM::QualifiedName::id
unsigned id() const
Definition: QualifiedName.cpp:90
WebCore::SVGNames::baseline_shiftAttr
DOM::QualifiedName baseline_shiftAttr
Definition: SVGNames.cpp:115
WebCore::SVGNames::displayAttr
DOM::QualifiedName displayAttr
Definition: SVGNames.cpp:141
WebCore::SVGNames::font_familyAttr
DOM::QualifiedName font_familyAttr
Definition: SVGNames.cpp:166
DOM::DOMString::string
QString string() const
Definition: dom_string.cpp:236
WebCore::SVGNames::alignment_baselineAttr
DOM::QualifiedName alignment_baselineAttr
Definition: SVGNames.cpp:105
QString
WebCore::SVGNames::stroke_dashoffsetAttr
DOM::QualifiedName stroke_dashoffsetAttr
Definition: SVGNames.cpp:293
WebCore::SVGNames::colorAttr
DOM::QualifiedName colorAttr
Definition: SVGNames.cpp:127
WebCore::SVGNames::marker_startAttr
DOM::QualifiedName marker_startAttr
Definition: SVGNames.cpp:214
WebCore::SVGNames::writing_modeAttr
DOM::QualifiedName writing_modeAttr
Definition: SVGNames.cpp:337
WebCore::SVGNames::font_variantAttr
DOM::QualifiedName font_variantAttr
Definition: SVGNames.cpp:171
DOM::DOMString::isEmpty
bool isEmpty() const
Definition: dom_string.cpp:315
WebCore::SVGNames::stroke_opacityAttr
DOM::QualifiedName stroke_opacityAttr
Definition: SVGNames.cpp:297
WebCore::SVGNames::stroke_linejoinAttr
DOM::QualifiedName stroke_linejoinAttr
Definition: SVGNames.cpp:295
WebCore::SVGNames::marker_endAttr
DOM::QualifiedName marker_endAttr
Definition: SVGNames.cpp:212
WebCore::SVGNames::clipAttr
DOM::QualifiedName clipAttr
Definition: SVGNames.cpp:123
WebCore::SVGNames::kerningAttr
DOM::QualifiedName kerningAttr
Definition: SVGNames.cpp:202
WebCore::SVGNames::color_renderingAttr
DOM::QualifiedName color_renderingAttr
Definition: SVGNames.cpp:131
SVGSVGElement.h
WebCore::SVGNames::stop_opacityAttr
DOM::QualifiedName stop_opacityAttr
Definition: SVGNames.cpp:288
WebCore::SVGNames::enable_backgroundAttr
DOM::QualifiedName enable_backgroundAttr
Definition: SVGNames.cpp:149
DOM::Node::parentNode
Node parentNode() const
The parent of this node.
Definition: dom_node.cpp:199
WebCore::SVGNames::maskAttr
DOM::QualifiedName maskAttr
Definition: SVGNames.cpp:218
DOM::QualifiedName::localName
DOMString localName() const
Definition: QualifiedName.cpp:109
WebCore::SVGNames::color_interpolation_filtersAttr
DOM::QualifiedName color_interpolation_filtersAttr
Definition: SVGNames.cpp:129
WebCore::SVGNames::stroke_widthAttr
DOM::QualifiedName stroke_widthAttr
Definition: SVGNames.cpp:298
WebCore::HTMLNames::classAttr
DOM::QualifiedName classAttr
Definition: SVGNames.cpp:7
DOM::Document
The Document interface represents the entire HTML or XML document.
Definition: dom_doc.h:245
WebCore::SVGNames::visibilityAttr
DOM::QualifiedName visibilityAttr
Definition: SVGNames.cpp:333
WebCore::SVGNames::filterAttr
DOM::QualifiedName filterAttr
Definition: SVGNames.cpp:161
WebCore::SVGNames::glyph_orientation_horizontalAttr
DOM::QualifiedName glyph_orientation_horizontalAttr
Definition: SVGNames.cpp:180
WebCore::SVGNames::marker_midAttr
DOM::QualifiedName marker_midAttr
Definition: SVGNames.cpp:213
WebCore::SVGNames::font_styleAttr
DOM::QualifiedName font_styleAttr
Definition: SVGNames.cpp:170
WebCore::SVGNames::fillAttr
DOM::QualifiedName fillAttr
Definition: SVGNames.cpp:158
SVGNames.h
SVGElement.h
WebCore::SVGNames::shape_renderingAttr
DOM::QualifiedName shape_renderingAttr
Definition: SVGNames.cpp:276
WebCore::SVGNames::opacityAttr
DOM::QualifiedName opacityAttr
Definition: SVGNames.cpp:237
WebCore::SVGNames::flood_colorAttr
DOM::QualifiedName flood_colorAttr
Definition: SVGNames.cpp:164
WebCore::SVGNames::directionAttr
DOM::QualifiedName directionAttr
Definition: SVGNames.cpp:140
WebCore::SVGNames::stroke_miterlimitAttr
DOM::QualifiedName stroke_miterlimitAttr
Definition: SVGNames.cpp:296
WebCore::SVGNames::dominant_baselineAttr
DOM::QualifiedName dominant_baselineAttr
Definition: SVGNames.cpp:143
WebCore::SVGNames::stop_colorAttr
DOM::QualifiedName stop_colorAttr
Definition: SVGNames.cpp:287
WebCore::SVGNames::lighting_colorAttr
DOM::QualifiedName lighting_colorAttr
Definition: SVGNames.cpp:209
WebCore::SVGNames::text_anchorAttr
DOM::QualifiedName text_anchorAttr
Definition: SVGNames.cpp:306
WebCore::SVGNames::color_profileAttr
DOM::QualifiedName color_profileAttr
Definition: SVGNames.cpp:130
WebCore::SVGNames::clip_ruleAttr
DOM::QualifiedName clip_ruleAttr
Definition: SVGNames.cpp:125
WebCore::SVGNames::font_weightAttr
DOM::QualifiedName font_weightAttr
Definition: SVGNames.cpp:172
SVGStyledElement.h
WebCore::SVGNames::font_stretchAttr
DOM::QualifiedName font_stretchAttr
Definition: SVGNames.cpp:169
bool
WebCore::SVGNames::overflowAttr
DOM::QualifiedName overflowAttr
Definition: SVGNames.cpp:243
WebCore::SVGNames::pointer_eventsAttr
DOM::QualifiedName pointer_eventsAttr
Definition: SVGNames.cpp:252
DOM::QualifiedName::namespaceURI
DOMString namespaceURI() const
Definition: QualifiedName.cpp:114
DOM::DOMString::implementation
DOMStringImpl * implementation() const
Definition: dom_string.h:131
WebCore::SVGNames::text_decorationAttr
DOM::QualifiedName text_decorationAttr
Definition: SVGNames.cpp:307
WebCore::SVGNames::stroke_linecapAttr
DOM::QualifiedName stroke_linecapAttr
Definition: SVGNames.cpp:294
WebCore::SVGNames::word_spacingAttr
DOM::QualifiedName word_spacingAttr
Definition: SVGNames.cpp:336
WebCore::SVGNames::clip_pathAttr
DOM::QualifiedName clip_pathAttr
Definition: SVGNames.cpp:124
WebCore::SVGNames::color_interpolationAttr
DOM::QualifiedName color_interpolationAttr
Definition: SVGNames.cpp:128
WebCore::String
DOM::DOMString String
Definition: PlatformString.h:8
RenderObject.h
WebCore::SVGNames::unicode_bidiAttr
DOM::QualifiedName unicode_bidiAttr
Definition: SVGNames.cpp:319
PlatformString.h
WebCore::SVGNames::cursorAttr
DOM::QualifiedName cursorAttr
Definition: SVGNames.cpp:134
WebCore::SVGNames::font_sizeAttr
DOM::QualifiedName font_sizeAttr
Definition: SVGNames.cpp:167
WebCore::SVGNames::strokeAttr
DOM::QualifiedName strokeAttr
Definition: SVGNames.cpp:291
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