SVGTSpanElement.cpp [plain text]
#include "config.h"
#include "SVGTSpanElement.h"
#include "RenderInline.h"
#include "RenderSVGTSpan.h"
#include "SVGNames.h"
namespace WebCore {
inline SVGTSpanElement::SVGTSpanElement(const QualifiedName& tagName, Document& document)
: SVGTextPositioningElement(tagName, document)
{
ASSERT(hasTagName(SVGNames::tspanTag));
}
Ref<SVGTSpanElement> SVGTSpanElement::create(const QualifiedName& tagName, Document& document)
{
return adoptRef(*new SVGTSpanElement(tagName, document));
}
RenderPtr<RenderElement> SVGTSpanElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
{
return createRenderer<RenderSVGTSpan>(*this, WTFMove(style));
}
bool SVGTSpanElement::childShouldCreateRenderer(const Node& child) const
{
if (child.isTextNode()
|| child.hasTagName(SVGNames::aTag)
#if ENABLE(SVG_FONTS)
|| child.hasTagName(SVGNames::altGlyphTag)
#endif
|| child.hasTagName(SVGNames::trefTag)
|| child.hasTagName(SVGNames::tspanTag))
return true;
return false;
}
bool SVGTSpanElement::rendererIsNeeded(const RenderStyle& style)
{
if (parentNode()
&& (parentNode()->hasTagName(SVGNames::aTag)
#if ENABLE(SVG_FONTS)
|| parentNode()->hasTagName(SVGNames::altGlyphTag)
#endif
|| parentNode()->hasTagName(SVGNames::textTag)
|| parentNode()->hasTagName(SVGNames::textPathTag)
|| parentNode()->hasTagName(SVGNames::tspanTag)))
return StyledElement::rendererIsNeeded(style);
return false;
}
}