| Index: third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp b/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp
|
| index 74f1ccb640d4486cd080d3de90b6d1d79e8cc02d..5f949b8deec494ceed2bcbd2def01088bc242a53 100644
|
| --- a/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp
|
| @@ -207,16 +207,16 @@ void SVGTextLayoutEngine::layoutInlineTextBox(SVGInlineTextBox* textBox)
|
| {
|
| ASSERT(textBox);
|
|
|
| - LayoutSVGInlineText& text = toLayoutSVGInlineText(textBox->layoutObject());
|
| - ASSERT(text.parent());
|
| - ASSERT(text.parent()->node());
|
| - ASSERT(text.parent()->node()->isSVGElement());
|
| + LineLayoutSVGInlineText textLineLayout = LineLayoutSVGInlineText(textBox->lineLayoutItem());
|
| + ASSERT(textLineLayout.parent());
|
| + ASSERT(textLineLayout.parent().node());
|
| + ASSERT(textLineLayout.parent().node()->isSVGElement());
|
|
|
| - const ComputedStyle& style = text.styleRef();
|
| + const ComputedStyle& style = textLineLayout.styleRef();
|
|
|
| textBox->clearTextFragments();
|
| m_isVerticalText = !style.isHorizontalWritingMode();
|
| - layoutTextOnLineOrPath(textBox, text, style);
|
| + layoutTextOnLineOrPath(textBox, textLineLayout, style);
|
|
|
| if (m_inPathLayout)
|
| return;
|
| @@ -329,13 +329,13 @@ void SVGTextLayoutEngine::advanceToNextLogicalCharacter(const SVGTextMetrics& lo
|
| m_logicalCharacterOffset += logicalMetrics.length();
|
| }
|
|
|
| -void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox* textBox, const LayoutSVGInlineText& text, const ComputedStyle& style)
|
| +void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox* textBox, LineLayoutSVGInlineText textLineLayout, const ComputedStyle& style)
|
| {
|
| if (m_inPathLayout && !m_textPathCalculator)
|
| return;
|
|
|
| // Find the start of the current text box in the metrics list.
|
| - m_visualMetricsIterator.advanceToTextStart(&text, textBox->start());
|
| + m_visualMetricsIterator.advanceToTextStart(&textLineLayout, textBox->start());
|
|
|
| const Font& font = style.font();
|
|
|
| @@ -347,7 +347,7 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox* textBox, cons
|
|
|
| float lastAngle = 0;
|
| float baselineShift = baselineLayout.calculateBaselineShift(style);
|
| - baselineShift -= baselineLayout.calculateAlignmentBaselineShift(m_isVerticalText, &text);
|
| + baselineShift -= baselineLayout.calculateAlignmentBaselineShift(m_isVerticalText, textLineLayout);
|
|
|
| // Main layout algorithm.
|
| const unsigned boxEndOffset = textBox->start() + textBox->len();
|
| @@ -386,7 +386,7 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox* textBox, cons
|
| // Calculate glyph orientation angle.
|
| // Font::width() calculates the resolved FontOrientation for each character,
|
| // but is not exposed today to avoid the API complexity.
|
| - UChar32 currentCharacter = text.codepointAt(m_visualMetricsIterator.characterOffset());
|
| + UChar32 currentCharacter = textLineLayout.codepointAt(m_visualMetricsIterator.characterOffset());
|
| FontOrientation fontOrientation = font.fontDescription().orientation();
|
| fontOrientation = adjustOrientationForCharacterInMixedVertical(fontOrientation, currentCharacter);
|
|
|
|
|