Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: Source/core/rendering/svg/SVGTextLayoutEngine.cpp

Issue 899163003: Move rendering/RenderObject to layout/LayoutObject. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved. 2 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 for (unsigned i = m_currentTextFragment.metricsListOffset; i < m_vis ualMetricsListOffset; ++i) 136 for (unsigned i = m_currentTextFragment.metricsListOffset; i < m_vis ualMetricsListOffset; ++i)
137 length += textMetricsValues.at(i).width(); 137 length += textMetricsValues.at(i).width();
138 m_currentTextFragment.width = length; 138 m_currentTextFragment.width = length;
139 } 139 }
140 } 140 }
141 141
142 textBox->textFragments().append(m_currentTextFragment); 142 textBox->textFragments().append(m_currentTextFragment);
143 m_currentTextFragment = SVGTextFragment(); 143 m_currentTextFragment = SVGTextFragment();
144 } 144 }
145 145
146 bool SVGTextLayoutEngine::parentDefinesTextLength(RenderObject* parent) const 146 bool SVGTextLayoutEngine::parentDefinesTextLength(LayoutObject* parent) const
147 { 147 {
148 RenderObject* currentParent = parent; 148 LayoutObject* currentParent = parent;
149 while (currentParent) { 149 while (currentParent) {
150 if (SVGTextContentElement* textContentElement = SVGTextContentElement::e lementFromRenderer(currentParent)) { 150 if (SVGTextContentElement* textContentElement = SVGTextContentElement::e lementFromRenderer(currentParent)) {
151 SVGLengthContext lengthContext(textContentElement); 151 SVGLengthContext lengthContext(textContentElement);
152 if (textContentElement->lengthAdjust()->currentValue()->enumValue() == SVGLengthAdjustSpacing && textContentElement->textLengthIsSpecifiedByUser()) 152 if (textContentElement->lengthAdjust()->currentValue()->enumValue() == SVGLengthAdjustSpacing && textContentElement->textLengthIsSpecifiedByUser())
153 return true; 153 return true;
154 } 154 }
155 155
156 if (currentParent->isSVGText()) 156 if (currentParent->isSVGText())
157 return false; 157 return false;
158 158
159 currentParent = currentParent->parent(); 159 currentParent = currentParent->parent();
160 } 160 }
161 161
162 ASSERT_NOT_REACHED(); 162 ASSERT_NOT_REACHED();
163 return false; 163 return false;
164 } 164 }
165 165
166 void SVGTextLayoutEngine::beginTextPathLayout(RenderObject* object, SVGTextLayou tEngine& lineLayout) 166 void SVGTextLayoutEngine::beginTextPathLayout(LayoutObject* object, SVGTextLayou tEngine& lineLayout)
167 { 167 {
168 ASSERT(object); 168 ASSERT(object);
169 169
170 m_inPathLayout = true; 170 m_inPathLayout = true;
171 RenderSVGTextPath* textPath = toRenderSVGTextPath(object); 171 RenderSVGTextPath* textPath = toRenderSVGTextPath(object);
172 172
173 Path path = textPath->layoutPath(); 173 Path path = textPath->layoutPath();
174 if (path.isEmpty()) 174 if (path.isEmpty())
175 return; 175 return;
176 m_textPathCalculator = new Path::PositionCalculator(path); 176 m_textPathCalculator = new Path::PositionCalculator(path);
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 m_visualCharacterOffset += visualMetrics.length(); 423 m_visualCharacterOffset += visualMetrics.length();
424 } 424 }
425 425
426 void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox* textBox, cons t RenderSVGInlineText& text, const RenderStyle& style) 426 void SVGTextLayoutEngine::layoutTextOnLineOrPath(SVGInlineTextBox* textBox, cons t RenderSVGInlineText& text, const RenderStyle& style)
427 { 427 {
428 if (m_inPathLayout && !m_textPathCalculator) 428 if (m_inPathLayout && !m_textPathCalculator)
429 return; 429 return;
430 430
431 SVGElement* lengthContext = toSVGElement(text.parent()->node()); 431 SVGElement* lengthContext = toSVGElement(text.parent()->node());
432 432
433 RenderObject* textParent = text.parent(); 433 LayoutObject* textParent = text.parent();
434 bool definesTextLength = textParent ? parentDefinesTextLength(textParent) : false; 434 bool definesTextLength = textParent ? parentDefinesTextLength(textParent) : false;
435 435
436 const SVGRenderStyle& svgStyle = style.svgStyle(); 436 const SVGRenderStyle& svgStyle = style.svgStyle();
437 437
438 m_visualMetricsListOffset = 0; 438 m_visualMetricsListOffset = 0;
439 m_visualCharacterOffset = 0; 439 m_visualCharacterOffset = 0;
440 440
441 const Vector<SVGTextMetrics>& visualMetricsValues = text.layoutAttributes()- >textMetricsValues(); 441 const Vector<SVGTextMetrics>& visualMetricsValues = text.layoutAttributes()- >textMetricsValues();
442 ASSERT(!visualMetricsValues.isEmpty()); 442 ASSERT(!visualMetricsValues.isEmpty());
443 443
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 } 637 }
638 638
639 if (!didStartTextFragment) 639 if (!didStartTextFragment)
640 return; 640 return;
641 641
642 // Close last open fragment, if needed. 642 // Close last open fragment, if needed.
643 recordTextFragment(textBox, visualMetricsValues); 643 recordTextFragment(textBox, visualMetricsValues);
644 } 644 }
645 645
646 } 646 }
OLDNEW
« no previous file with comments | « Source/core/rendering/svg/SVGTextLayoutEngine.h ('k') | Source/core/rendering/svg/SVGTextLayoutEngineBaseline.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698