Index: Source/core/rendering/svg/SVGTextLayoutAttributesBuilder.cpp |
diff --git a/Source/core/rendering/svg/SVGTextLayoutAttributesBuilder.cpp b/Source/core/rendering/svg/SVGTextLayoutAttributesBuilder.cpp |
index fdee455dbee485dd4482e641aa5729979d9f644c..ff4cd225ef401bb6c7db852f101e569d0ebe41cc 100644 |
--- a/Source/core/rendering/svg/SVGTextLayoutAttributesBuilder.cpp |
+++ b/Source/core/rendering/svg/SVGTextLayoutAttributesBuilder.cpp |
@@ -21,6 +21,7 @@ |
#include "core/rendering/svg/SVGTextLayoutAttributesBuilder.h" |
+#include "core/rendering/svg/RenderSVGInline.h" |
#include "core/rendering/svg/RenderSVGInlineText.h" |
#include "core/rendering/svg/RenderSVGText.h" |
#include "core/rendering/svg/SVGTextMetricsBuilder.h" |
@@ -46,21 +47,19 @@ void SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextRenderer(Render |
m_textLength = 0; |
UChar lastCharacter = ' '; |
- collectTextPositioningElements(textRoot, lastCharacter); |
+ collectTextPositioningElements(*textRoot, lastCharacter); |
if (!m_textLength) |
return; |
- buildCharacterDataMap(textRoot); |
+ buildCharacterDataMap(*textRoot); |
} |
SVGTextMetricsBuilder::buildMetricsAndLayoutAttributes(textRoot, text, m_characterDataMap); |
} |
-bool SVGTextLayoutAttributesBuilder::buildLayoutAttributesForForSubtree(RenderSVGText* textRoot) |
+bool SVGTextLayoutAttributesBuilder::buildLayoutAttributesForForSubtree(RenderSVGText& textRoot) |
{ |
- ASSERT(textRoot); |
- |
m_characterDataMap.clear(); |
if (m_textPositions.isEmpty()) { |
@@ -73,7 +72,7 @@ bool SVGTextLayoutAttributesBuilder::buildLayoutAttributesForForSubtree(RenderSV |
return false; |
buildCharacterDataMap(textRoot); |
- SVGTextMetricsBuilder::buildMetricsAndLayoutAttributes(textRoot, 0, m_characterDataMap); |
+ SVGTextMetricsBuilder::buildMetricsAndLayoutAttributes(&textRoot, nullptr, m_characterDataMap); |
return true; |
} |
@@ -101,11 +100,11 @@ static inline void processRenderSVGInlineText(RenderSVGInlineText* text, unsigne |
} |
} |
-void SVGTextLayoutAttributesBuilder::collectTextPositioningElements(RenderObject* start, UChar& lastCharacter) |
+void SVGTextLayoutAttributesBuilder::collectTextPositioningElements(RenderBoxModelObject& start, UChar& lastCharacter) |
{ |
- ASSERT(!start->isSVGText() || m_textPositions.isEmpty()); |
+ ASSERT(!start.isSVGText() || m_textPositions.isEmpty()); |
- for (RenderObject* child = start->slowFirstChild(); child; child = child->nextSibling()) { |
+ for (RenderObject* child = start.slowFirstChild(); child; child = child->nextSibling()) { |
if (child->isSVGInlineText()) { |
processRenderSVGInlineText(toRenderSVGInlineText(child), m_textLength, lastCharacter); |
continue; |
@@ -114,12 +113,13 @@ void SVGTextLayoutAttributesBuilder::collectTextPositioningElements(RenderObject |
if (!child->isSVGInline()) |
continue; |
- SVGTextPositioningElement* element = SVGTextPositioningElement::elementFromRenderer(child); |
+ RenderSVGInline& inlineChild = toRenderSVGInline(*child); |
+ SVGTextPositioningElement* element = SVGTextPositioningElement::elementFromRenderer(inlineChild); |
unsigned atPosition = m_textPositions.size(); |
if (element) |
m_textPositions.append(TextPosition(element, m_textLength)); |
- collectTextPositioningElements(child, lastCharacter); |
+ collectTextPositioningElements(inlineChild, lastCharacter); |
if (!element) |
continue; |
@@ -131,7 +131,7 @@ void SVGTextLayoutAttributesBuilder::collectTextPositioningElements(RenderObject |
} |
} |
-void SVGTextLayoutAttributesBuilder::buildCharacterDataMap(RenderSVGText* textRoot) |
+void SVGTextLayoutAttributesBuilder::buildCharacterDataMap(RenderSVGText& textRoot) |
{ |
SVGTextPositioningElement* outermostTextElement = SVGTextPositioningElement::elementFromRenderer(textRoot); |
ASSERT(outermostTextElement); |