bool SVGImage::usesContainerSize() const { if (!m_frame || !m_frame->document()) return false; SVGSVGElement* rootElement = static_cast<SVGDocument*>(m_frame->document())->rootElement(); if (!rootElement) return false; return rootElement->hasSetContainerSize(); }
bool SVGImage::usesContainerSize() const { if (!m_page) return false; Frame* frame = m_page->mainFrame(); SVGSVGElement* rootElement = static_cast<SVGDocument*>(frame->document())->rootElement(); if (!rootElement) return false; return rootElement->hasSetContainerSize(); }
void RenderSVGRoot::calcViewport() { SVGSVGElement* svg = static_cast<SVGSVGElement*>(node()); if (!svg->hasSetContainerSize()) { // In the normal case of <svg> being stand-alone or in a CSSBoxModel object we use // RenderBox::width()/height() (which pulls data from RenderStyle) m_viewportSize = FloatSize(width(), height()); return; } // In the SVGImage case grab the SVGLength values off of SVGSVGElement and use // the special relativeWidthValue accessors which respect the specified containerSize // FIXME: Check how SVGImage + zooming is supposed to be handled? SVGLength width = svg->width(); SVGLength height = svg->height(); m_viewportSize = FloatSize(width.unitType() == LengthTypePercentage ? svg->relativeWidthValue() : width.value(svg), height.unitType() == LengthTypePercentage ? svg->relativeHeightValue() : height.value(svg)); }
void RenderSVGRoot::calcViewport() { SVGSVGElement* svg = static_cast<SVGSVGElement*>(node()); if (!selfNeedsLayout() && !svg->hasRelativeValues()) return; if (!svg->hasSetContainerSize()) { // In the normal case of <svg> being stand-alone or in a CSSBoxModel object we use // RenderBox::width()/height() (which pulls data from RenderStyle) m_viewportSize = FloatSize(width(), height()); } else { // In the SVGImage case grab the SVGLength values off of SVGSVGElement and use // the special relativeWidthValue accessors which respect the specified containerSize SVGLength width = svg->width(); SVGLength height = svg->height(); float viewportWidth = (width.unitType() == LengthTypePercentage) ? svg->relativeWidthValue() : width.value(svg); float viewportHeight = (height.unitType() == LengthTypePercentage) ? svg->relativeHeightValue() : height.value(svg); m_viewportSize = FloatSize(viewportWidth, viewportHeight); } }