void RenderSVGContainer::calcViewport() { SVGElement* svgelem = static_cast<SVGElement*>(element()); if (svgelem->hasTagName(SVGNames::svgTag)) { SVGSVGElement* svg = static_cast<SVGSVGElement*>(element()); if (!selfNeedsLayout() && !svg->hasRelativeValues()) return; float x = 0.0f; float y = 0.0f; if (parent()->isSVGContainer()) { x = svg->x().value(); y = svg->y().value(); } float w = svg->width().value(); float h = svg->height().value(); m_viewport = FloatRect(x, y, w, h); } else if (svgelem->hasTagName(SVGNames::markerTag)) { if (!selfNeedsLayout()) return; SVGMarkerElement* svg = static_cast<SVGMarkerElement*>(element()); float w = svg->markerWidth().value(); float h = svg->markerHeight().value(); m_viewport = FloatRect(0.0f, 0.0f, w, h); } }
void LayoutSVGResourceMarker::calcViewport() { if (!selfNeedsLayout()) return; SVGMarkerElement* marker = toSVGMarkerElement(element()); ASSERT(marker); SVGLengthContext lengthContext(marker); float w = marker->markerWidth()->currentValue()->value(lengthContext); float h = marker->markerHeight()->currentValue()->value(lengthContext); m_viewport = FloatRect(0, 0, w, h); }
void RenderSVGResourceMarker::calcViewport() { if (!selfNeedsLayout()) return; SVGMarkerElement* marker = static_cast<SVGMarkerElement*>(node()); ASSERT(marker); float w = marker->markerWidth().value(marker); float h = marker->markerHeight().value(marker); m_viewport = FloatRect(0, 0, w, h); }