[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
zimmermann at webkit.org
zimmermann at webkit.org
Wed Dec 22 14:17:10 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 767d9737993eb8e8b505d80a6f2c7da31113693d
Author: zimmermann at webkit.org <zimmermann at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Oct 6 12:29:59 2010 +0000
2010-10-06 Nikolas Zimmermann <nzimmermann at rim.com>
Reviewed by Dirk Schulze.
Only execute first SVG text layout phase if needed
https://bugs.webkit.org/show_bug.cgi?id=47254
The first SVG text layout phase which computes the per-character metrics and extracts
the x/y/dx/dy/rotate values from the SVG DOM is currently executed upon every RenderSVGText::layout() call.
Optimize this, by only calling it:
- if x/y/dx/dy/rotate value lists change
- the style of a RenderSVGInlineText changes (eg. font-size changes influence metrics)
- the text content of any of the children in the <text> subtree change
No change in layout tests, a pure performance change - covered by existing tests.
* rendering/RenderSVGResourceGradient.cpp:
(WebCore::createMaskAndSwapContextForTextGradient): Adapt to renames, use RenderSVGText::locateRenderSVGTextAncestor().
(WebCore::clipToTextMask): Ditto.
* rendering/SVGRenderSupport.cpp:
* rendering/SVGRenderSupport.h: Move findTreeRootObject to RenderSVGText::locateRenderSVGTextAncestor().
* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::objectBoundingBox): adapt to renames, use RenderSVGText::locateRenderSVGTextAncestor().
(WebCore::RenderSVGInline::strokeBoundingBox): Ditto.
(WebCore::RenderSVGInline::repaintRectInLocalCoordinates): Ditto.
(WebCore::RenderSVGInline::absoluteQuads): Ditto.
* rendering/svg/RenderSVGInlineText.cpp:
(WebCore::RenderSVGInlineText::styleDidChange): Call setNeedsPositioningValuesUpdate() on the RenderSVGText root object, if diff == StyleDifferenceLayout.
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::RenderSVGText): Initialize m_needsPositioningValuesUpdate.
(WebCore::RenderSVGText::locateRenderSVGTextAncestor): New helper function, moved from SVGRenderSupport, to a more sensible place.
(WebCore::RenderSVGText::layout): Only execute the first SVG text layout phase, if m_needsPositioningValuesUpdate=true.
* rendering/svg/RenderSVGText.h:
(WebCore::RenderSVGText::setNeedsPositioningValuesUpdate):
(WebCore::toRenderSVGText): Add new helper casting methods, like most other renderers have.
* svg/SVGTextPositioningElement.cpp:
(WebCore::updatePositioningValuesInRenderer):
(WebCore::SVGTextPositioningElement::svgAttributeChanged): If x/y/dx/dy/rotate changes, call setNeedsPositioningValuesUpdate on the RenderSVGText root object.
(WebCore::SVGTextPositioningElement::childrenChanged): If any children changes (addition, removal), do the same.
* svg/SVGTextPositioningElement.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69186 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 8e47ef3..be06279 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,45 @@
+2010-10-06 Nikolas Zimmermann <nzimmermann at rim.com>
+
+ Reviewed by Dirk Schulze.
+
+ Only execute first SVG text layout phase if needed
+ https://bugs.webkit.org/show_bug.cgi?id=47254
+
+ The first SVG text layout phase which computes the per-character metrics and extracts
+ the x/y/dx/dy/rotate values from the SVG DOM is currently executed upon every RenderSVGText::layout() call.
+
+ Optimize this, by only calling it:
+ - if x/y/dx/dy/rotate value lists change
+ - the style of a RenderSVGInlineText changes (eg. font-size changes influence metrics)
+ - the text content of any of the children in the <text> subtree change
+
+ No change in layout tests, a pure performance change - covered by existing tests.
+
+ * rendering/RenderSVGResourceGradient.cpp:
+ (WebCore::createMaskAndSwapContextForTextGradient): Adapt to renames, use RenderSVGText::locateRenderSVGTextAncestor().
+ (WebCore::clipToTextMask): Ditto.
+ * rendering/SVGRenderSupport.cpp:
+ * rendering/SVGRenderSupport.h: Move findTreeRootObject to RenderSVGText::locateRenderSVGTextAncestor().
+ * rendering/svg/RenderSVGInline.cpp:
+ (WebCore::RenderSVGInline::objectBoundingBox): adapt to renames, use RenderSVGText::locateRenderSVGTextAncestor().
+ (WebCore::RenderSVGInline::strokeBoundingBox): Ditto.
+ (WebCore::RenderSVGInline::repaintRectInLocalCoordinates): Ditto.
+ (WebCore::RenderSVGInline::absoluteQuads): Ditto.
+ * rendering/svg/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::styleDidChange): Call setNeedsPositioningValuesUpdate() on the RenderSVGText root object, if diff == StyleDifferenceLayout.
+ * rendering/svg/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::RenderSVGText): Initialize m_needsPositioningValuesUpdate.
+ (WebCore::RenderSVGText::locateRenderSVGTextAncestor): New helper function, moved from SVGRenderSupport, to a more sensible place.
+ (WebCore::RenderSVGText::layout): Only execute the first SVG text layout phase, if m_needsPositioningValuesUpdate=true.
+ * rendering/svg/RenderSVGText.h:
+ (WebCore::RenderSVGText::setNeedsPositioningValuesUpdate):
+ (WebCore::toRenderSVGText): Add new helper casting methods, like most other renderers have.
+ * svg/SVGTextPositioningElement.cpp:
+ (WebCore::updatePositioningValuesInRenderer):
+ (WebCore::SVGTextPositioningElement::svgAttributeChanged): If x/y/dx/dy/rotate changes, call setNeedsPositioningValuesUpdate on the RenderSVGText root object.
+ (WebCore::SVGTextPositioningElement::childrenChanged): If any children changes (addition, removal), do the same.
+ * svg/SVGTextPositioningElement.h:
+
2010-10-05 Andrey Kosyakov <caseq at chromium.org>
Reviewed by Yury Semikhatsky.
diff --git a/WebCore/rendering/RenderSVGResourceGradient.cpp b/WebCore/rendering/RenderSVGResourceGradient.cpp
index 1c33de4..169903e 100644
--- a/WebCore/rendering/RenderSVGResourceGradient.cpp
+++ b/WebCore/rendering/RenderSVGResourceGradient.cpp
@@ -1,7 +1,7 @@
/*
* Copyright (C) 2006 Nikolas Zimmermann <zimmermann at kde.org>
- * 2008 Eric Seidel <eric at webkit.org>
- * 2008 Dirk Schulze <krit at webkit.org>
+ * Copyright (C) 2008 Eric Seidel <eric at webkit.org>
+ * Copyright (C) 2008 Dirk Schulze <krit at webkit.org>
* Copyright (C) Research In Motion Limited 2010. All rights reserved.
*
* This library is free software; you can redistribute it and/or
@@ -28,6 +28,7 @@
#include "GradientAttributes.h"
#include "GraphicsContext.h"
+#include "RenderSVGText.h"
#include "SVGImageBufferTools.h"
#include "SVGRenderSupport.h"
#include <wtf/UnusedParam.h>
@@ -75,9 +76,9 @@ void RenderSVGResourceGradient::removeClientFromCache(RenderObject* client, bool
static inline bool createMaskAndSwapContextForTextGradient(GraphicsContext*& context,
GraphicsContext*& savedContext,
OwnPtr<ImageBuffer>& imageBuffer,
- const RenderObject* object)
+ RenderObject* object)
{
- const RenderObject* textRootBlock = SVGRenderSupport::findTextRootObject(object);
+ RenderObject* textRootBlock = RenderSVGText::locateRenderSVGTextAncestor(object);
ASSERT(textRootBlock);
AffineTransform absoluteTransform;
@@ -108,10 +109,10 @@ static inline bool createMaskAndSwapContextForTextGradient(GraphicsContext*& con
static inline AffineTransform clipToTextMask(GraphicsContext* context,
OwnPtr<ImageBuffer>& imageBuffer,
FloatRect& targetRect,
- const RenderObject* object,
+ RenderObject* object,
GradientData* gradientData)
{
- const RenderObject* textRootBlock = SVGRenderSupport::findTextRootObject(object);
+ RenderObject* textRootBlock = RenderSVGText::locateRenderSVGTextAncestor(object);
ASSERT(textRootBlock);
targetRect = textRootBlock->repaintRectInLocalCoordinates();
diff --git a/WebCore/rendering/SVGRenderSupport.cpp b/WebCore/rendering/SVGRenderSupport.cpp
index 644ff70..f29d4b9 100644
--- a/WebCore/rendering/SVGRenderSupport.cpp
+++ b/WebCore/rendering/SVGRenderSupport.cpp
@@ -347,16 +347,6 @@ void SVGRenderSupport::applyStrokeStyleToContext(GraphicsContext* context, const
}
}
-const RenderObject* SVGRenderSupport::findTextRootObject(const RenderObject* start)
-{
- while (start && !start->isSVGText())
- start = start->parent();
- ASSERT(start);
- ASSERT(start->isSVGText());
-
- return start;
-}
-
}
#endif
diff --git a/WebCore/rendering/SVGRenderSupport.h b/WebCore/rendering/SVGRenderSupport.h
index 54622d2..7814863 100644
--- a/WebCore/rendering/SVGRenderSupport.h
+++ b/WebCore/rendering/SVGRenderSupport.h
@@ -70,7 +70,6 @@ public:
static void applyStrokeStyleToContext(GraphicsContext*, const RenderStyle*, const RenderObject*);
// FIXME: These methods do not belong here.
- static const RenderObject* findTextRootObject(const RenderObject* start);
static const RenderSVGRoot* findTreeRootObject(const RenderObject* start);
private:
diff --git a/WebCore/rendering/svg/RenderSVGInline.cpp b/WebCore/rendering/svg/RenderSVGInline.cpp
index 5d12a61..4d0c533 100644
--- a/WebCore/rendering/svg/RenderSVGInline.cpp
+++ b/WebCore/rendering/svg/RenderSVGInline.cpp
@@ -1,8 +1,7 @@
/*
- * This file is part of the WebKit project.
- *
* Copyright (C) 2006 Oliver Hunt <ojh16 at student.canterbury.ac.nz>
* Copyright (C) 2006 Apple Inc. All rights reserved.
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -27,6 +26,7 @@
#include "RenderSVGInline.h"
#include "RenderSVGResource.h"
+#include "RenderSVGText.h"
#include "SVGInlineFlowBox.h"
namespace WebCore {
@@ -45,7 +45,7 @@ InlineFlowBox* RenderSVGInline::createInlineFlowBox()
FloatRect RenderSVGInline::objectBoundingBox() const
{
- if (const RenderObject* object = SVGRenderSupport::findTextRootObject(this))
+ if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
return object->objectBoundingBox();
return FloatRect();
@@ -53,7 +53,7 @@ FloatRect RenderSVGInline::objectBoundingBox() const
FloatRect RenderSVGInline::strokeBoundingBox() const
{
- if (const RenderObject* object = SVGRenderSupport::findTextRootObject(this))
+ if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
return object->strokeBoundingBox();
return FloatRect();
@@ -61,7 +61,7 @@ FloatRect RenderSVGInline::strokeBoundingBox() const
FloatRect RenderSVGInline::repaintRectInLocalCoordinates() const
{
- if (const RenderObject* object = SVGRenderSupport::findTextRootObject(this))
+ if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
return object->repaintRectInLocalCoordinates();
return FloatRect();
@@ -84,7 +84,7 @@ void RenderSVGInline::mapLocalToContainer(RenderBoxModelObject* repaintContainer
void RenderSVGInline::absoluteQuads(Vector<FloatQuad>& quads)
{
- const RenderObject* object = SVGRenderSupport::findTextRootObject(this);
+ RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this);
if (!object)
return;
diff --git a/WebCore/rendering/svg/RenderSVGInlineText.cpp b/WebCore/rendering/svg/RenderSVGInlineText.cpp
index d77bb2a..49727ee 100644
--- a/WebCore/rendering/svg/RenderSVGInlineText.cpp
+++ b/WebCore/rendering/svg/RenderSVGInlineText.cpp
@@ -1,10 +1,9 @@
/*
- * This file is part of the WebKit project.
- *
* Copyright (C) 2006 Oliver Hunt <ojh16 at student.canterbury.ac.nz>
- * (C) 2006 Apple Computer Inc.
- * (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
- * (C) 2008 Rob Buis <buis at kde.org>
+ * Copyright (C) 2006 Apple Computer Inc.
+ * Copyright (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2008 Rob Buis <buis at kde.org>
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -32,6 +31,7 @@
#include "FloatQuad.h"
#include "RenderBlock.h"
#include "RenderSVGRoot.h"
+#include "RenderSVGText.h"
#include "SVGInlineTextBox.h"
#include "SVGRootInlineBox.h"
#include "VisiblePosition.h"
@@ -71,6 +71,12 @@ void RenderSVGInlineText::styleDidChange(StyleDifference diff, const RenderStyle
{
RenderText::styleDidChange(diff, oldStyle);
+ if (diff == StyleDifferenceLayout) {
+ // The text metrics may be influenced by style changes.
+ if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this))
+ textRenderer->setNeedsPositioningValuesUpdate();
+ }
+
const RenderStyle* newStyle = style();
if (!newStyle || newStyle->whiteSpace() != PRE)
return;
diff --git a/WebCore/rendering/svg/RenderSVGText.cpp b/WebCore/rendering/svg/RenderSVGText.cpp
index 24bd498..01a92b0 100644
--- a/WebCore/rendering/svg/RenderSVGText.cpp
+++ b/WebCore/rendering/svg/RenderSVGText.cpp
@@ -1,12 +1,11 @@
/*
- * This file is part of the WebKit project.
- *
* Copyright (C) 2006 Apple Computer, Inc.
- * 2006 Alexander Kellett <lypanov at kde.org>
- * 2006 Oliver Hunt <ojh16 at student.canterbury.ac.nz>
- * 2007 Nikolas Zimmermann <zimmermann at kde.org>
- * 2008 Rob Buis <buis at kde.org>
- * 2009 Dirk Schulze <krit at webkit.org>
+ * Copyright (C) 2006 Alexander Kellett <lypanov at kde.org>
+ * Copyright (C) 2006 Oliver Hunt <ojh16 at student.canterbury.ac.nz>
+ * Copyright (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2008 Rob Buis <buis at kde.org>
+ * Copyright (C) 2009 Dirk Schulze <krit at webkit.org>
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -53,10 +52,31 @@ namespace WebCore {
RenderSVGText::RenderSVGText(SVGTextElement* node)
: RenderSVGBlock(node)
+ , m_needsPositioningValuesUpdate(true)
, m_needsTransformUpdate(true)
{
}
+RenderSVGText* RenderSVGText::locateRenderSVGTextAncestor(RenderObject* start)
+{
+ ASSERT(start);
+ while (start && !start->isSVGText())
+ start = start->parent();
+ if (!start || !start->isSVGText())
+ return 0;
+ return toRenderSVGText(start);
+}
+
+const RenderSVGText* RenderSVGText::locateRenderSVGTextAncestor(const RenderObject* start)
+{
+ ASSERT(start);
+ while (start && !start->isSVGText())
+ start = start->parent();
+ if (!start || !start->isSVGText())
+ return 0;
+ return toRenderSVGText(start);
+}
+
IntRect RenderSVGText::clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer)
{
return SVGRenderSupport::clippedOverflowRectForRepaint(this, repaintContainer);
@@ -85,9 +105,13 @@ void RenderSVGText::layout()
updateCachedBoundariesInParents = true;
}
- // Perform SVG text layout phase one (see SVGTextLayoutAttributesBuilder for details).
- SVGTextLayoutAttributesBuilder layoutAttributesBuilder;
- layoutAttributesBuilder.buildLayoutAttributesForTextSubtree(this);
+ if (m_needsPositioningValuesUpdate) {
+ // Perform SVG text layout phase one (see SVGTextLayoutAttributesBuilder for details).
+ SVGTextLayoutAttributesBuilder layoutAttributesBuilder;
+ layoutAttributesBuilder.buildLayoutAttributesForTextSubtree(this);
+ m_needsPositioningValuesUpdate = false;
+ updateCachedBoundariesInParents = true;
+ }
// Reduced version of RenderBlock::layoutBlock(), which only takes care of SVG text.
// All if branches that could cause early exit in RenderBlocks layoutBlock() method are turned into assertions.
diff --git a/WebCore/rendering/svg/RenderSVGText.h b/WebCore/rendering/svg/RenderSVGText.h
index 3a490ee..deae78c 100644
--- a/WebCore/rendering/svg/RenderSVGText.h
+++ b/WebCore/rendering/svg/RenderSVGText.h
@@ -1,8 +1,7 @@
/*
- * This file is part of the WebKit project.
- *
* Copyright (C) 2006 Apple Computer, Inc.
- * (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2007 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -37,9 +36,13 @@ class RenderSVGText : public RenderSVGBlock {
public:
RenderSVGText(SVGTextElement* node);
+ void setNeedsPositioningValuesUpdate() { m_needsPositioningValuesUpdate = true; }
virtual void setNeedsTransformUpdate() { m_needsTransformUpdate = true; }
virtual FloatRect repaintRectInLocalCoordinates() const;
+ static RenderSVGText* locateRenderSVGTextAncestor(RenderObject*);
+ static const RenderSVGText* locateRenderSVGTextAncestor(const RenderObject*);
+
private:
virtual const char* renderName() const { return "RenderSVGText"; }
virtual bool isSVGText() const { return true; }
@@ -69,10 +72,26 @@ private:
virtual RenderBlock* firstLineBlock() const;
virtual void updateFirstLetter();
+ bool m_needsPositioningValuesUpdate : 1;
bool m_needsTransformUpdate : 1;
AffineTransform m_localTransform;
};
+inline RenderSVGText* toRenderSVGText(RenderObject* object)
+{
+ ASSERT(!object || object->isSVGText());
+ return static_cast<RenderSVGText*>(object);
+}
+
+inline const RenderSVGText* toRenderSVGText(const RenderObject* object)
+{
+ ASSERT(!object || object->isSVGText());
+ return static_cast<const RenderSVGText*>(object);
+}
+
+// This will catch anyone doing an unnecessary cast.
+void toRenderSVGText(const RenderSVGText*);
+
}
#endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGTextPositioningElement.cpp b/WebCore/svg/SVGTextPositioningElement.cpp
index 65220cb..cbc324d 100644
--- a/WebCore/svg/SVGTextPositioningElement.cpp
+++ b/WebCore/svg/SVGTextPositioningElement.cpp
@@ -24,8 +24,8 @@
#include "SVGTextPositioningElement.h"
#include "Attribute.h"
-#include "RenderObject.h"
#include "RenderSVGResource.h"
+#include "RenderSVGText.h"
#include "SVGLengthList.h"
#include "SVGNames.h"
#include "SVGNumberList.h"
@@ -58,21 +58,65 @@ void SVGTextPositioningElement::parseMappedAttribute(Attribute* attr)
SVGTextContentElement::parseMappedAttribute(attr);
}
+static inline void updatePositioningValuesInRenderer(RenderObject* renderer)
+{
+ RenderSVGText* textRenderer = 0;
+
+ if (renderer->isSVGText())
+ textRenderer = toRenderSVGText(renderer);
+ else {
+ // Locate RenderSVGText parent renderer.
+ RenderObject* parent = renderer->parent();
+ while (parent && !parent->isSVGText())
+ parent = parent->parent();
+
+ if (parent) {
+ ASSERT(parent->isSVGText());
+ textRenderer = toRenderSVGText(parent);
+ }
+ }
+
+ if (!textRenderer)
+ return;
+
+ textRenderer->setNeedsPositioningValuesUpdate();
+}
+
void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrName)
{
SVGTextContentElement::svgAttributeChanged(attrName);
- if (attrName == SVGNames::xAttr
- || attrName == SVGNames::yAttr
- || attrName == SVGNames::dxAttr
- || attrName == SVGNames::dyAttr)
+ bool updateRelativeLengths = attrName == SVGNames::xAttr
+ || attrName == SVGNames::yAttr
+ || attrName == SVGNames::dxAttr
+ || attrName == SVGNames::dyAttr;
+
+ if (updateRelativeLengths)
updateRelativeLengthsInformation();
- if (!renderer())
+ RenderObject* renderer = this->renderer();
+ if (!renderer)
return;
- if (isKnownAttribute(attrName))
- RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer());
+ if (updateRelativeLengths || attrName == SVGNames::rotateAttr) {
+ updatePositioningValuesInRenderer(renderer);
+ RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
+ return;
+ }
+
+ if (SVGTextContentElement::isKnownAttribute(attrName))
+ RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
+}
+
+void SVGTextPositioningElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
+{
+ SVGTextContentElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
+
+ if (changedByParser)
+ return;
+
+ if (RenderObject* object = renderer())
+ updatePositioningValuesInRenderer(object);
}
void SVGTextPositioningElement::synchronizeProperty(const QualifiedName& attrName)
@@ -100,16 +144,6 @@ void SVGTextPositioningElement::synchronizeProperty(const QualifiedName& attrNam
synchronizeRotate();
}
-bool SVGTextPositioningElement::isKnownAttribute(const QualifiedName& attrName)
-{
- return (attrName.matches(SVGNames::xAttr) ||
- attrName.matches(SVGNames::yAttr) ||
- attrName.matches(SVGNames::dxAttr) ||
- attrName.matches(SVGNames::dyAttr) ||
- attrName.matches(SVGNames::rotateAttr) ||
- SVGTextContentElement::isKnownAttribute(attrName));
-}
-
static inline bool listContainsRelativeValue(SVGLengthList* list)
{
if (!list)
diff --git a/WebCore/svg/SVGTextPositioningElement.h b/WebCore/svg/SVGTextPositioningElement.h
index d26fbcb..41de9f3 100644
--- a/WebCore/svg/SVGTextPositioningElement.h
+++ b/WebCore/svg/SVGTextPositioningElement.h
@@ -36,11 +36,10 @@ namespace WebCore {
SVGTextPositioningElement(const QualifiedName&, Document*);
virtual void parseMappedAttribute(Attribute*);
+ virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
virtual void svgAttributeChanged(const QualifiedName&);
virtual void synchronizeProperty(const QualifiedName&);
- bool isKnownAttribute(const QualifiedName&);
-
virtual bool selfHasRelativeLengths() const;
DECLARE_ANIMATED_PROPERTY(SVGTextPositioningElement, SVGNames::xAttr, SVGLengthList*, X, x)
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list