summaryrefslogtreecommitdiffstats
path: root/WebCore/svg/SVGLength.cpp
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2010-04-27 16:23:55 +0100
committerSteve Block <steveblock@google.com>2010-04-27 17:07:03 +0100
commit692e5dbf12901edacf14812a6fae25462920af42 (patch)
treed62802373a429e0a9dc093b6046c166b2c514285 /WebCore/svg/SVGLength.cpp
parente24bea4efef1c414137d36a9778aa4e142e10c7d (diff)
downloadexternal_webkit-692e5dbf12901edacf14812a6fae25462920af42.zip
external_webkit-692e5dbf12901edacf14812a6fae25462920af42.tar.gz
external_webkit-692e5dbf12901edacf14812a6fae25462920af42.tar.bz2
Merge webkit.org at r55033 : Initial merge by git
Change-Id: I98a4af828067cc243ec3dc5e5826154dd88074b5
Diffstat (limited to 'WebCore/svg/SVGLength.cpp')
-rw-r--r--WebCore/svg/SVGLength.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/WebCore/svg/SVGLength.cpp b/WebCore/svg/SVGLength.cpp
index 2884507..e342acf 100644
--- a/WebCore/svg/SVGLength.cpp
+++ b/WebCore/svg/SVGLength.cpp
@@ -280,15 +280,16 @@ float SVGLength::PercentageOfViewport(float value, const SVGElement* context, SV
float width = 0.0f, height = 0.0f;
SVGElement* viewportElement = context->viewportElement();
+ // PercentageOfViewport() is used to resolve all relative-positioned values within a SVG document (fragment)
Document* doc = context->document();
if (doc->documentElement() == context) {
- // We have to ask the canvas for the full "canvas size"...
- RenderView* view = toRenderView(doc->renderer());
- if (view && view->frameView()) {
- width = view->frameView()->visibleWidth(); // TODO: recheck!
- height = view->frameView()->visibleHeight(); // TODO: recheck!
+ // Resolve value against outermost <svg> element
+ if (RenderView* view = toRenderView(doc->renderer())) {
+ width = view->viewWidth();
+ height = view->viewHeight();
}
} else if (viewportElement && viewportElement->isSVG()) {
+ // Resolve value against nearest viewport element (common case: inner <svg> elements)
const SVGSVGElement* svg = static_cast<const SVGSVGElement*>(viewportElement);
if (svg->hasAttribute(SVGNames::viewBoxAttr)) {
width = svg->viewBox().width();
@@ -298,6 +299,7 @@ float SVGLength::PercentageOfViewport(float value, const SVGElement* context, SV
height = svg->height().value(svg);
}
} else if (context->parent() && !context->parent()->isSVGElement()) {
+ // Resolve value against enclosing non-SVG RenderBox
if (RenderObject* renderer = context->renderer()) {
if (renderer->isBox()) {
RenderBox* box = toRenderBox(renderer);
@@ -319,6 +321,4 @@ float SVGLength::PercentageOfViewport(float value, const SVGElement* context, SV
}
-#endif // ENABLE(SVG)
-
-// vim:ts=4:noet
+#endif