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

Side by Side Diff: Source/core/layout/svg/LayoutSVGText.cpp

Issue 1162383003: C++11: Replace 0 with nullptr where applicable in layout code. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add one more file. Created 5 years, 6 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) 2006 Apple Computer, Inc. 2 * Copyright (C) 2006 Apple Computer, Inc.
3 * Copyright (C) 2006 Alexander Kellett <lypanov@kde.org> 3 * Copyright (C) 2006 Alexander Kellett <lypanov@kde.org>
4 * Copyright (C) 2006 Oliver Hunt <ojh16@student.canterbury.ac.nz> 4 * Copyright (C) 2006 Oliver Hunt <ojh16@student.canterbury.ac.nz>
5 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org> 5 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
6 * Copyright (C) 2008 Rob Buis <buis@kde.org> 6 * Copyright (C) 2008 Rob Buis <buis@kde.org>
7 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> 7 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
8 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved. 8 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved.
9 * Copyright (C) 2012 Google Inc. 9 * Copyright (C) 2012 Google Inc.
10 * 10 *
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 { 72 {
73 return child->isSVGInline() || (child->isText() && SVGLayoutSupport::isLayou tableTextNode(child)); 73 return child->isSVGInline() || (child->isText() && SVGLayoutSupport::isLayou tableTextNode(child));
74 } 74 }
75 75
76 LayoutSVGText* LayoutSVGText::locateLayoutSVGTextAncestor(LayoutObject* start) 76 LayoutSVGText* LayoutSVGText::locateLayoutSVGTextAncestor(LayoutObject* start)
77 { 77 {
78 ASSERT(start); 78 ASSERT(start);
79 while (start && !start->isSVGText()) 79 while (start && !start->isSVGText())
80 start = start->parent(); 80 start = start->parent();
81 if (!start || !start->isSVGText()) 81 if (!start || !start->isSVGText())
82 return 0; 82 return nullptr;
83 return toLayoutSVGText(start); 83 return toLayoutSVGText(start);
84 } 84 }
85 85
86 const LayoutSVGText* LayoutSVGText::locateLayoutSVGTextAncestor(const LayoutObje ct* start) 86 const LayoutSVGText* LayoutSVGText::locateLayoutSVGTextAncestor(const LayoutObje ct* start)
87 { 87 {
88 ASSERT(start); 88 ASSERT(start);
89 while (start && !start->isSVGText()) 89 while (start && !start->isSVGText())
90 start = start->parent(); 90 start = start->parent();
91 if (!start || !start->isSVGText()) 91 if (!start || !start->isSVGText())
92 return 0; 92 return nullptr;
93 return toLayoutSVGText(start); 93 return toLayoutSVGText(start);
94 } 94 }
95 95
96 static inline void collectLayoutAttributes(LayoutObject* text, Vector<SVGTextLay outAttributes*>& attributes) 96 static inline void collectLayoutAttributes(LayoutObject* text, Vector<SVGTextLay outAttributes*>& attributes)
97 { 97 {
98 for (LayoutObject* descendant = text; descendant; descendant = descendant->n extInPreOrder(text)) { 98 for (LayoutObject* descendant = text; descendant; descendant = descendant->n extInPreOrder(text)) {
99 if (descendant->isSVGInlineText()) 99 if (descendant->isSVGInlineText())
100 attributes.append(toLayoutSVGInlineText(descendant)->layoutAttribute s()); 100 attributes.append(toLayoutSVGInlineText(descendant)->layoutAttribute s());
101 } 101 }
102 } 102 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 // Detect changes in layout attributes and only measure those text parts tha t have changed! 162 // Detect changes in layout attributes and only measure those text parts tha t have changed!
163 Vector<SVGTextLayoutAttributes*> newLayoutAttributes; 163 Vector<SVGTextLayoutAttributes*> newLayoutAttributes;
164 collectLayoutAttributes(this, newLayoutAttributes); 164 collectLayoutAttributes(this, newLayoutAttributes);
165 if (newLayoutAttributes.isEmpty()) { 165 if (newLayoutAttributes.isEmpty()) {
166 ASSERT(m_layoutAttributes.isEmpty()); 166 ASSERT(m_layoutAttributes.isEmpty());
167 return; 167 return;
168 } 168 }
169 169
170 // Compare m_layoutAttributes with newLayoutAttributes to figure out which a ttribute got added. 170 // Compare m_layoutAttributes with newLayoutAttributes to figure out which a ttribute got added.
171 size_t size = newLayoutAttributes.size(); 171 size_t size = newLayoutAttributes.size();
172 SVGTextLayoutAttributes* attributes = 0; 172 SVGTextLayoutAttributes* attributes = nullptr;
173 for (size_t i = 0; i < size; ++i) { 173 for (size_t i = 0; i < size; ++i) {
174 attributes = newLayoutAttributes[i]; 174 attributes = newLayoutAttributes[i];
175 if (m_layoutAttributes.find(attributes) == kNotFound) { 175 if (m_layoutAttributes.find(attributes) == kNotFound) {
176 // Every time this is invoked, there's only a single new entry in th e newLayoutAttributes list, compared to the old in m_layoutAttributes. 176 // Every time this is invoked, there's only a single new entry in th e newLayoutAttributes list, compared to the old in m_layoutAttributes.
177 SVGTextLayoutAttributes* previous = 0; 177 SVGTextLayoutAttributes* previous = nullptr;
178 SVGTextLayoutAttributes* next = 0; 178 SVGTextLayoutAttributes* next = nullptr;
179 ASSERT_UNUSED(child, attributes->context() == child); 179 ASSERT_UNUSED(child, attributes->context() == child);
180 findPreviousAndNextAttributes(this, attributes->context(), previous, next); 180 findPreviousAndNextAttributes(this, attributes->context(), previous, next);
181 181
182 if (previous) 182 if (previous)
183 m_layoutAttributesBuilder.buildLayoutAttributesForText(previous- >context()); 183 m_layoutAttributesBuilder.buildLayoutAttributesForText(previous- >context());
184 m_layoutAttributesBuilder.buildLayoutAttributesForText(attributes->c ontext()); 184 m_layoutAttributesBuilder.buildLayoutAttributesForText(attributes->c ontext());
185 if (next) 185 if (next)
186 m_layoutAttributesBuilder.buildLayoutAttributesForText(next->con text()); 186 m_layoutAttributesBuilder.buildLayoutAttributesForText(next->con text());
187 break; 187 break;
188 } 188 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 checkLayoutAttributesConsistency(this, m_layoutAttributes); 223 checkLayoutAttributesConsistency(this, m_layoutAttributes);
224 224
225 // The positioning elements cache depends on the size of each text layoutObj ect in the 225 // The positioning elements cache depends on the size of each text layoutObj ect in the
226 // subtree. If this changes, clear the cache. It's going to be rebuilt below . 226 // subtree. If this changes, clear the cache. It's going to be rebuilt below .
227 m_layoutAttributesBuilder.clearTextPositioningElements(); 227 m_layoutAttributesBuilder.clearTextPositioningElements();
228 if (m_layoutAttributes.isEmpty() || !child->isSVGInlineText()) 228 if (m_layoutAttributes.isEmpty() || !child->isSVGInlineText())
229 return; 229 return;
230 230
231 // This logic requires that the 'text' child is still inserted in the tree. 231 // This logic requires that the 'text' child is still inserted in the tree.
232 LayoutSVGInlineText* text = toLayoutSVGInlineText(child); 232 LayoutSVGInlineText* text = toLayoutSVGInlineText(child);
233 SVGTextLayoutAttributes* previous = 0; 233 SVGTextLayoutAttributes* previous = nullptr;
234 SVGTextLayoutAttributes* next = 0; 234 SVGTextLayoutAttributes* next = nullptr;
235 if (!documentBeingDestroyed()) 235 if (!documentBeingDestroyed())
236 findPreviousAndNextAttributes(this, text, previous, next); 236 findPreviousAndNextAttributes(this, text, previous, next);
237 237
238 if (previous) 238 if (previous)
239 affectedAttributes.append(previous); 239 affectedAttributes.append(previous);
240 if (next) 240 if (next)
241 affectedAttributes.append(next); 241 affectedAttributes.append(next);
242 242
243 size_t position = m_layoutAttributes.find(text->layoutAttributes()); 243 size_t position = m_layoutAttributes.find(text->layoutAttributes());
244 ASSERT(position != kNotFound); 244 ASSERT(position != kNotFound);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 // The positioning elements cache depends on the size of each text layoutObj ect in the 291 // The positioning elements cache depends on the size of each text layoutObj ect in the
292 // subtree. If this changes, clear the cache. It's going to be rebuilt below . 292 // subtree. If this changes, clear the cache. It's going to be rebuilt below .
293 m_layoutAttributesBuilder.clearTextPositioningElements(); 293 m_layoutAttributesBuilder.clearTextPositioningElements();
294 294
295 for (LayoutObject* descendant = text; descendant; descendant = descendant->n extInPreOrder(text)) { 295 for (LayoutObject* descendant = text; descendant; descendant = descendant->n extInPreOrder(text)) {
296 if (descendant->isSVGInlineText()) 296 if (descendant->isSVGInlineText())
297 m_layoutAttributesBuilder.buildLayoutAttributesForText(toLayoutSVGIn lineText(descendant)); 297 m_layoutAttributesBuilder.buildLayoutAttributesForText(toLayoutSVGIn lineText(descendant));
298 } 298 }
299 } 299 }
300 300
301 static inline void updateFontInAllDescendants(LayoutObject* start, SVGTextLayout AttributesBuilder* builder = 0) 301 static inline void updateFontInAllDescendants(LayoutObject* start, SVGTextLayout AttributesBuilder* builder = nullptr)
302 { 302 {
303 for (LayoutObject* descendant = start; descendant; descendant = descendant-> nextInPreOrder(start)) { 303 for (LayoutObject* descendant = start; descendant; descendant = descendant-> nextInPreOrder(start)) {
304 if (!descendant->isSVGInlineText()) 304 if (!descendant->isSVGInlineText())
305 continue; 305 continue;
306 LayoutSVGInlineText* text = toLayoutSVGInlineText(descendant); 306 LayoutSVGInlineText* text = toLayoutSVGInlineText(descendant);
307 text->updateScaledFont(); 307 text->updateScaledFont();
308 if (builder) 308 if (builder)
309 builder->rebuildMetricsForTextLayoutObject(text); 309 builder->rebuildMetricsForTextLayoutObject(text);
310 } 310 }
311 } 311 }
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 SVGResourcesCache::clientWillBeRemovedFromTree(child); 506 SVGResourcesCache::clientWillBeRemovedFromTree(child);
507 507
508 Vector<SVGTextLayoutAttributes*, 2> affectedAttributes; 508 Vector<SVGTextLayoutAttributes*, 2> affectedAttributes;
509 FontCachePurgePreventer fontCachePurgePreventer; 509 FontCachePurgePreventer fontCachePurgePreventer;
510 subtreeChildWillBeRemoved(child, affectedAttributes); 510 subtreeChildWillBeRemoved(child, affectedAttributes);
511 LayoutSVGBlock::removeChild(child); 511 LayoutSVGBlock::removeChild(child);
512 subtreeChildWasRemoved(affectedAttributes); 512 subtreeChildWasRemoved(affectedAttributes);
513 } 513 }
514 514
515 } 515 }
OLDNEW
« no previous file with comments | « Source/core/layout/svg/LayoutSVGText.h ('k') | Source/core/layout/svg/LayoutSVGTransformableContainer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698