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

Side by Side Diff: third_party/WebKit/Source/core/layout/svg/SVGTextChunkBuilder.cpp

Issue 2748103015: Replace ASSERT with DCHECK in core/layout/<sub dirs> (Closed)
Patch Set: Rebase with latest Created 3 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 2 * Copyright (C) Research In Motion Limited 2010. 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 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 auto boxIter = lineLayoutBoxes.begin(); 119 auto boxIter = lineLayoutBoxes.begin();
120 auto endBox = lineLayoutBoxes.end(); 120 auto endBox = lineLayoutBoxes.end();
121 auto chunkStartBox = boxIter; 121 auto chunkStartBox = boxIter;
122 for (; boxIter != endBox; ++boxIter) { 122 for (; boxIter != endBox; ++boxIter) {
123 if (!(*boxIter)->startsNewTextChunk()) 123 if (!(*boxIter)->startsNewTextChunk())
124 continue; 124 continue;
125 125
126 if (!foundStart) { 126 if (!foundStart) {
127 foundStart = true; 127 foundStart = true;
128 } else { 128 } else {
129 ASSERT(boxIter != chunkStartBox); 129 DCHECK_NE(boxIter, chunkStartBox);
130 handleTextChunk(chunkStartBox, boxIter); 130 handleTextChunk(chunkStartBox, boxIter);
131 } 131 }
132 chunkStartBox = boxIter; 132 chunkStartBox = boxIter;
133 } 133 }
134 134
135 if (!foundStart) 135 if (!foundStart)
136 return; 136 return;
137 137
138 if (boxIter != chunkStartBox) 138 if (boxIter != chunkStartBox)
139 handleTextChunk(chunkStartBox, boxIter); 139 handleTextChunk(chunkStartBox, boxIter);
(...skipping 21 matching lines...) Expand all
161 } 161 }
162 162
163 static float computeTextLengthBias(const SVGTextFragment& fragment, 163 static float computeTextLengthBias(const SVGTextFragment& fragment,
164 float scale) { 164 float scale) {
165 float initialPosition = fragment.isVertical ? fragment.y : fragment.x; 165 float initialPosition = fragment.isVertical ? fragment.y : fragment.x;
166 return initialPosition + scale * -initialPosition; 166 return initialPosition + scale * -initialPosition;
167 } 167 }
168 168
169 void SVGTextChunkBuilder::handleTextChunk(BoxListConstIterator boxStart, 169 void SVGTextChunkBuilder::handleTextChunk(BoxListConstIterator boxStart,
170 BoxListConstIterator boxEnd) { 170 BoxListConstIterator boxEnd) {
171 ASSERT(*boxStart); 171 DCHECK(*boxStart);
172 172
173 const LineLayoutSVGInlineText textLineLayout = 173 const LineLayoutSVGInlineText textLineLayout =
174 LineLayoutSVGInlineText((*boxStart)->getLineLayoutItem()); 174 LineLayoutSVGInlineText((*boxStart)->getLineLayoutItem());
175 const ComputedStyle& style = textLineLayout.styleRef(); 175 const ComputedStyle& style = textLineLayout.styleRef();
176 176
177 // Handle 'lengthAdjust' property. 177 // Handle 'lengthAdjust' property.
178 float desiredTextLength = 0; 178 float desiredTextLength = 0;
179 SVGLengthAdjustType lengthAdjust = SVGLengthAdjustUnknown; 179 SVGLengthAdjustType lengthAdjust = SVGLengthAdjustUnknown;
180 if (SVGTextContentElement* textContentElement = 180 if (SVGTextContentElement* textContentElement =
181 SVGTextContentElement::elementFromLineLayoutItem( 181 SVGTextContentElement::elementFromLineLayoutItem(
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 fragments, atCharacter); 218 fragments, atCharacter);
219 } 219 }
220 220
221 // Fragments have been adjusted, we have to recalculate the chunk 221 // Fragments have been adjusted, we have to recalculate the chunk
222 // length, to be able to apply the text-anchor shift. 222 // length, to be able to apply the text-anchor shift.
223 if (processTextAnchor) { 223 if (processTextAnchor) {
224 lengthAccumulator.reset(); 224 lengthAccumulator.reset();
225 lengthAccumulator.processRange(boxStart, boxEnd); 225 lengthAccumulator.processRange(boxStart, boxEnd);
226 } 226 }
227 } else { 227 } else {
228 ASSERT(lengthAdjust == SVGLengthAdjustSpacingAndGlyphs); 228 DCHECK_EQ(lengthAdjust, SVGLengthAdjustSpacingAndGlyphs);
229 float textLengthScale = desiredTextLength / chunkLength; 229 float textLengthScale = desiredTextLength / chunkLength;
230 float textLengthBias = 0; 230 float textLengthBias = 0;
231 231
232 bool foundFirstFragment = false; 232 bool foundFirstFragment = false;
233 for (auto boxIter = boxStart; boxIter != boxEnd; ++boxIter) { 233 for (auto boxIter = boxStart; boxIter != boxEnd; ++boxIter) {
234 SVGInlineTextBox* textBox = *boxIter; 234 SVGInlineTextBox* textBox = *boxIter;
235 Vector<SVGTextFragment>& fragments = textBox->textFragments(); 235 Vector<SVGTextFragment>& fragments = textBox->textFragments();
236 if (fragments.isEmpty()) 236 if (fragments.isEmpty())
237 continue; 237 continue;
238 238
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 274
275 atCharacter += fragment.length; 275 atCharacter += fragment.length;
276 } 276 }
277 } 277 }
278 278
279 void SVGTextChunkBuilder::applyTextLengthScaleAdjustment( 279 void SVGTextChunkBuilder::applyTextLengthScaleAdjustment(
280 float textLengthScale, 280 float textLengthScale,
281 float textLengthBias, 281 float textLengthBias,
282 Vector<SVGTextFragment>& fragments) { 282 Vector<SVGTextFragment>& fragments) {
283 for (SVGTextFragment& fragment : fragments) { 283 for (SVGTextFragment& fragment : fragments) {
284 ASSERT(fragment.lengthAdjustScale == 1); 284 DCHECK_EQ(fragment.lengthAdjustScale, 1u);
285 fragment.lengthAdjustScale = textLengthScale; 285 fragment.lengthAdjustScale = textLengthScale;
286 fragment.lengthAdjustBias = textLengthBias; 286 fragment.lengthAdjustBias = textLengthBias;
287 } 287 }
288 } 288 }
289 289
290 void SVGTextChunkBuilder::processTextAnchorCorrection( 290 void SVGTextChunkBuilder::processTextAnchorCorrection(
291 bool isVerticalText, 291 bool isVerticalText,
292 float textAnchorShift, 292 float textAnchorShift,
293 Vector<SVGTextFragment>& fragments) { 293 Vector<SVGTextFragment>& fragments) {
294 for (SVGTextFragment& fragment : fragments) { 294 for (SVGTextFragment& fragment : fragments) {
295 if (isVerticalText) 295 if (isVerticalText)
296 fragment.y += textAnchorShift; 296 fragment.y += textAnchorShift;
297 else 297 else
298 fragment.x += textAnchorShift; 298 fragment.x += textAnchorShift;
299 } 299 }
300 } 300 }
301 301
302 } // namespace blink 302 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698