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

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

Issue 2705163008: Cleanup the SVGTreeScopeResources interface (Closed)
Patch Set: Rebase Created 3 years, 9 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 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 174
175 std::unique_ptr<SVGResources> SVGResources::buildResources( 175 std::unique_ptr<SVGResources> SVGResources::buildResources(
176 const LayoutObject* object, 176 const LayoutObject* object,
177 const ComputedStyle& computedStyle) { 177 const ComputedStyle& computedStyle) {
178 ASSERT(object); 178 ASSERT(object);
179 179
180 Node* node = object->node(); 180 Node* node = object->node();
181 ASSERT(node); 181 ASSERT(node);
182 SECURITY_DCHECK(node->isSVGElement()); 182 SECURITY_DCHECK(node->isSVGElement());
183 183
184 SVGElement* element = toSVGElement(node); 184 SVGElement& element = toSVGElement(*node);
185 ASSERT(element);
186 185
187 const AtomicString& tagName = element->localName(); 186 const AtomicString& tagName = element.localName();
188 ASSERT(!tagName.isNull()); 187 ASSERT(!tagName.isNull());
189 188
190 TreeScope& treeScope = element->treeScopeForIdResolution(); 189 TreeScope& treeScope = element.treeScopeForIdResolution();
191 SVGTreeScopeResources& treeScopeResources = 190 SVGTreeScopeResources& treeScopeResources =
192 treeScope.ensureSVGTreeScopedResources(); 191 treeScope.ensureSVGTreeScopedResources();
193 192
194 const SVGComputedStyle& style = computedStyle.svgStyle(); 193 const SVGComputedStyle& style = computedStyle.svgStyle();
195 194
196 std::unique_ptr<SVGResources> resources; 195 std::unique_ptr<SVGResources> resources;
197 if (clipperFilterMaskerTags().contains(tagName)) { 196 if (clipperFilterMaskerTags().contains(tagName)) {
198 if (computedStyle.clipPath() && !object->isSVGRoot()) { 197 if (computedStyle.clipPath() && !object->isSVGRoot()) {
199 ClipPathOperation* clipPathOperation = computedStyle.clipPath(); 198 ClipPathOperation* clipPathOperation = computedStyle.clipPath();
200 if (clipPathOperation->type() == ClipPathOperation::REFERENCE) { 199 if (clipPathOperation->type() == ClipPathOperation::REFERENCE) {
(...skipping 27 matching lines...) Expand all
228 227
229 if (style.hasMasker()) { 228 if (style.hasMasker()) {
230 AtomicString id = style.maskerResource(); 229 AtomicString id = style.maskerResource();
231 if (!ensureResources(resources).setMasker( 230 if (!ensureResources(resources).setMasker(
232 getLayoutSVGResourceById<LayoutSVGResourceMasker>( 231 getLayoutSVGResourceById<LayoutSVGResourceMasker>(
233 treeScopeResources, id))) 232 treeScopeResources, id)))
234 treeScopeResources.addPendingResource(id, element); 233 treeScopeResources.addPendingResource(id, element);
235 } 234 }
236 } 235 }
237 236
238 if (style.hasMarkers() && supportsMarkers(*element)) { 237 if (style.hasMarkers() && supportsMarkers(element)) {
239 const AtomicString& markerStartId = style.markerStartResource(); 238 const AtomicString& markerStartId = style.markerStartResource();
240 if (!ensureResources(resources).setMarkerStart( 239 if (!ensureResources(resources).setMarkerStart(
241 getLayoutSVGResourceById<LayoutSVGResourceMarker>( 240 getLayoutSVGResourceById<LayoutSVGResourceMarker>(
242 treeScopeResources, markerStartId))) 241 treeScopeResources, markerStartId)))
243 treeScopeResources.addPendingResource(markerStartId, element); 242 treeScopeResources.addPendingResource(markerStartId, element);
244 243
245 const AtomicString& markerMidId = style.markerMidResource(); 244 const AtomicString& markerMidId = style.markerMidResource();
246 if (!ensureResources(resources).setMarkerMid( 245 if (!ensureResources(resources).setMarkerMid(
247 getLayoutSVGResourceById<LayoutSVGResourceMarker>( 246 getLayoutSVGResourceById<LayoutSVGResourceMarker>(
248 treeScopeResources, markerMidId))) 247 treeScopeResources, markerMidId)))
(...skipping 22 matching lines...) Expand all
271 AtomicString id; 270 AtomicString id;
272 LayoutSVGResourcePaintServer* resource = paintingResourceFromSVGPaint( 271 LayoutSVGResourcePaintServer* resource = paintingResourceFromSVGPaint(
273 treeScope, style.strokePaintType(), style.strokePaintUri(), id, 272 treeScope, style.strokePaintType(), style.strokePaintUri(), id,
274 hasPendingResource); 273 hasPendingResource);
275 if (!ensureResources(resources).setStroke(resource) && hasPendingResource) 274 if (!ensureResources(resources).setStroke(resource) && hasPendingResource)
276 treeScopeResources.addPendingResource(id, element); 275 treeScopeResources.addPendingResource(id, element);
277 } 276 }
278 } 277 }
279 278
280 if (chainableResourceTags().contains(tagName)) { 279 if (chainableResourceTags().contains(tagName)) {
281 AtomicString id = targetReferenceFromResource(*element); 280 AtomicString id = targetReferenceFromResource(element);
282 if (!ensureResources(resources).setLinkedResource( 281 if (!ensureResources(resources).setLinkedResource(
283 treeScopeResources.resourceById(id))) 282 treeScopeResources.resourceById(id)))
284 treeScopeResources.addPendingResource(id, element); 283 treeScopeResources.addPendingResource(id, element);
285 } 284 }
286 285
287 return (!resources || !resources->hasResourceData()) ? nullptr 286 return (!resources || !resources->hasResourceData()) ? nullptr
288 : std::move(resources); 287 : std::move(resources);
289 } 288 }
290 289
291 void SVGResources::layoutIfNeeded() { 290 void SVGResources::layoutIfNeeded() {
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 stroke->element()); 670 stroke->element());
672 } 671 }
673 672
674 if (m_linkedResource) 673 if (m_linkedResource)
675 fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", m_linkedResource, 674 fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", m_linkedResource,
676 m_linkedResource->element()); 675 m_linkedResource->element());
677 } 676 }
678 #endif 677 #endif
679 678
680 } // namespace blink 679 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698