void SVGPathElement::pathSegListChanged(SVGPathSegRole role, ListModification listModification) { switch (role) { case PathSegNormalizedRole: // FIXME: https://bugs.webkit.org/show_bug.cgi?id=15412 - Implement normalized path segment lists! break; case PathSegUnalteredRole: if (listModification == ListModificationAppend) { ASSERT(!m_pathSegList.value.isEmpty()); appendSVGPathByteStreamFromSVGPathSeg(m_pathSegList.value.last().copyRef(), m_pathByteStream, UnalteredParsing); } else buildSVGPathByteStreamFromSVGPathSegList(m_pathSegList.value, m_pathByteStream, UnalteredParsing); break; case PathSegUndefinedRole: return; } invalidateSVGAttributes(); RenderSVGPath* renderer = downcast<RenderSVGPath>(this->renderer()); if (!renderer) return; renderer->setNeedsShapeUpdate(); RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer); }
void SVGFilterElement::setFilterRes(unsigned x, unsigned y) { filterResX()->baseValue()->setValue(x); filterResY()->baseValue()->setValue(y); invalidateSVGAttributes(); svgAttributeChanged(SVGNames::filterResAttr); }
void SVGMarkerElement::setOrientToAngle(const SVGAngle& angle) { setOrientTypeBaseValue(SVGMarkerOrientAngle); setOrientAngleBaseValue(angle); // Mark orientAttr dirty - the next XML DOM access of that attribute kicks in synchronization. m_orientAngle.shouldSynchronize = true; m_orientType.shouldSynchronize = true; invalidateSVGAttributes(); svgAttributeChanged(orientAnglePropertyInfo()->attributeName); }