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

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

Issue 2772773005: Make resource lookup more uniform in SVGResources::buildResources (Closed)
Patch Set: 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
« no previous file with comments | « third_party/WebKit/Source/core/layout/svg/SVGResources.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public License 14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to 15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA. 17 * Boston, MA 02110-1301, USA.
18 */ 18 */
19 19
20 #include "core/layout/svg/SVGResources.h" 20 #include "core/layout/svg/SVGResources.h"
21 21
22 #include <memory>
22 #include "core/SVGNames.h" 23 #include "core/SVGNames.h"
23 #include "core/layout/svg/LayoutSVGResourceClipper.h" 24 #include "core/layout/svg/LayoutSVGResourceClipper.h"
24 #include "core/layout/svg/LayoutSVGResourceFilter.h" 25 #include "core/layout/svg/LayoutSVGResourceFilter.h"
25 #include "core/layout/svg/LayoutSVGResourceMarker.h" 26 #include "core/layout/svg/LayoutSVGResourceMarker.h"
26 #include "core/layout/svg/LayoutSVGResourceMasker.h" 27 #include "core/layout/svg/LayoutSVGResourceMasker.h"
27 #include "core/layout/svg/LayoutSVGResourcePaintServer.h" 28 #include "core/layout/svg/LayoutSVGResourcePaintServer.h"
28 #include "core/style/ComputedStyle.h" 29 #include "core/style/ComputedStyle.h"
29 #include "core/svg/SVGGradientElement.h" 30 #include "core/svg/SVGGradientElement.h"
30 #include "core/svg/SVGPatternElement.h" 31 #include "core/svg/SVGPatternElement.h"
32 #include "core/svg/SVGTreeScopeResources.h"
31 #include "core/svg/SVGURIReference.h" 33 #include "core/svg/SVGURIReference.h"
32 #include "wtf/PtrUtil.h" 34 #include "wtf/PtrUtil.h"
33 #include <memory>
34 35
35 #ifndef NDEBUG 36 #ifndef NDEBUG
36 #include <stdio.h> 37 #include <stdio.h>
37 #endif 38 #endif
38 39
39 namespace blink { 40 namespace blink {
40 41
41 using namespace SVGNames; 42 using namespace SVGNames;
42 43
43 SVGResources::SVGResources() : m_linkedResource(nullptr) {} 44 SVGResources::SVGResources() : m_linkedResource(nullptr) {}
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 case SVG_PAINTTYPE_URI_CURRENTCOLOR: 127 case SVG_PAINTTYPE_URI_CURRENTCOLOR:
127 case SVG_PAINTTYPE_URI_RGBCOLOR: 128 case SVG_PAINTTYPE_URI_RGBCOLOR:
128 case SVG_PAINTTYPE_URI: 129 case SVG_PAINTTYPE_URI:
129 return true; 130 return true;
130 default: 131 default:
131 break; 132 break;
132 } 133 }
133 return false; 134 return false;
134 } 135 }
135 136
136 static inline LayoutSVGResourcePaintServer* paintingResourceFromSVGPaint( 137 namespace {
137 TreeScope& treeScope, 138
138 const String& paintUri, 139 template <typename ContainerType>
139 AtomicString& id) { 140 bool isResourceOfType(LayoutSVGResourceContainer* container) {
140 id = SVGURIReference::fragmentIdentifierFromIRIString(paintUri, treeScope); 141 return container->resourceType() == ContainerType::s_resourceType;
141 LayoutSVGResourceContainer* container = 142 }
142 treeScope.ensureSVGTreeScopedResources().resourceById(id); 143
143 if (!container || !container->isSVGPaintServer()) 144 template <>
144 return nullptr; 145 bool isResourceOfType<LayoutSVGResourcePaintServer>(
pdr. 2017/03/24 16:46:34 The LayoutSVGResourcePaintServer and LayoutSVGReso
fs 2017/03/24 19:26:54 We should (be able to) get rid of the latter by re
145 return toLayoutSVGResourcePaintServer(container); 146 LayoutSVGResourceContainer* container) {
147 return container->isSVGPaintServer();
148 }
149
150 template <>
151 bool isResourceOfType<LayoutSVGResourceContainer>(
152 LayoutSVGResourceContainer* container) {
153 return true;
154 }
155
156 template <typename ContainerType>
157 ContainerType* attachToResource(SVGTreeScopeResources& treeScopeResources,
158 const AtomicString& id,
159 SVGElement& element) {
160 if (LayoutSVGResourceContainer* container =
161 treeScopeResources.resourceById(id)) {
162 if (isResourceOfType<ContainerType>(container))
163 return static_cast<ContainerType*>(container);
164 }
165 treeScopeResources.addPendingResource(id, element);
166 return nullptr;
167 }
146 } 168 }
147 169
148 bool SVGResources::hasResourceData() const { 170 bool SVGResources::hasResourceData() const {
149 return m_clipperFilterMaskerData || m_markerData || m_fillStrokeData || 171 return m_clipperFilterMaskerData || m_markerData || m_fillStrokeData ||
150 m_linkedResource; 172 m_linkedResource;
151 } 173 }
152 174
153 static inline SVGResources& ensureResources( 175 static inline SVGResources& ensureResources(
154 std::unique_ptr<SVGResources>& resources) { 176 std::unique_ptr<SVGResources>& resources) {
155 if (!resources) 177 if (!resources)
(...skipping 24 matching lines...) Expand all
180 202
181 std::unique_ptr<SVGResources> resources; 203 std::unique_ptr<SVGResources> resources;
182 if (clipperFilterMaskerTags().contains(tagName)) { 204 if (clipperFilterMaskerTags().contains(tagName)) {
183 if (computedStyle.clipPath() && !object->isSVGRoot()) { 205 if (computedStyle.clipPath() && !object->isSVGRoot()) {
184 ClipPathOperation* clipPathOperation = computedStyle.clipPath(); 206 ClipPathOperation* clipPathOperation = computedStyle.clipPath();
185 if (clipPathOperation->type() == ClipPathOperation::REFERENCE) { 207 if (clipPathOperation->type() == ClipPathOperation::REFERENCE) {
186 const ReferenceClipPathOperation& clipPathReference = 208 const ReferenceClipPathOperation& clipPathReference =
187 toReferenceClipPathOperation(*clipPathOperation); 209 toReferenceClipPathOperation(*clipPathOperation);
188 AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString( 210 AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString(
189 clipPathReference.url(), treeScope); 211 clipPathReference.url(), treeScope);
190 if (!ensureResources(resources).setClipper( 212 ensureResources(resources).setClipper(
191 getLayoutSVGResourceById<LayoutSVGResourceClipper>( 213 attachToResource<LayoutSVGResourceClipper>(treeScopeResources, id,
192 treeScopeResources, id))) 214 element));
193 treeScopeResources.addPendingResource(id, element);
194 } 215 }
195 } 216 }
196 217
197 if (computedStyle.hasFilter() && !object->isSVGRoot()) { 218 if (computedStyle.hasFilter() && !object->isSVGRoot()) {
198 const FilterOperations& filterOperations = computedStyle.filter(); 219 const FilterOperations& filterOperations = computedStyle.filter();
199 if (filterOperations.size() == 1) { 220 if (filterOperations.size() == 1) {
200 const FilterOperation& filterOperation = *filterOperations.at(0); 221 const FilterOperation& filterOperation = *filterOperations.at(0);
201 if (filterOperation.type() == FilterOperation::REFERENCE) { 222 if (filterOperation.type() == FilterOperation::REFERENCE) {
202 const auto& referenceFilterOperation = 223 const auto& referenceFilterOperation =
203 toReferenceFilterOperation(filterOperation); 224 toReferenceFilterOperation(filterOperation);
204 AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString( 225 AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString(
205 referenceFilterOperation.url(), treeScope); 226 referenceFilterOperation.url(), treeScope);
206 if (!ensureResources(resources).setFilter( 227 ensureResources(resources).setFilter(
207 getLayoutSVGResourceById<LayoutSVGResourceFilter>( 228 attachToResource<LayoutSVGResourceFilter>(treeScopeResources, id,
208 treeScopeResources, id))) 229 element));
209 treeScopeResources.addPendingResource(id, element);
210 } 230 }
211 } 231 }
212 } 232 }
213 233
214 if (style.hasMasker()) { 234 if (style.hasMasker()) {
215 AtomicString id = style.maskerResource(); 235 ensureResources(resources).setMasker(
216 if (!ensureResources(resources).setMasker( 236 attachToResource<LayoutSVGResourceMasker>(
217 getLayoutSVGResourceById<LayoutSVGResourceMasker>( 237 treeScopeResources, style.maskerResource(), element));
218 treeScopeResources, id)))
219 treeScopeResources.addPendingResource(id, element);
220 } 238 }
221 } 239 }
222 240
223 if (style.hasMarkers() && supportsMarkers(element)) { 241 if (style.hasMarkers() && supportsMarkers(element)) {
224 const AtomicString& markerStartId = style.markerStartResource(); 242 ensureResources(resources).setMarkerStart(
225 if (!ensureResources(resources).setMarkerStart( 243 attachToResource<LayoutSVGResourceMarker>(
226 getLayoutSVGResourceById<LayoutSVGResourceMarker>( 244 treeScopeResources, style.markerStartResource(), element));
227 treeScopeResources, markerStartId))) 245 ensureResources(resources).setMarkerMid(
228 treeScopeResources.addPendingResource(markerStartId, element); 246 attachToResource<LayoutSVGResourceMarker>(
229 247 treeScopeResources, style.markerMidResource(), element));
230 const AtomicString& markerMidId = style.markerMidResource(); 248 ensureResources(resources).setMarkerEnd(
231 if (!ensureResources(resources).setMarkerMid( 249 attachToResource<LayoutSVGResourceMarker>(
232 getLayoutSVGResourceById<LayoutSVGResourceMarker>( 250 treeScopeResources, style.markerEndResource(), element));
233 treeScopeResources, markerMidId)))
234 treeScopeResources.addPendingResource(markerMidId, element);
235
236 const AtomicString& markerEndId = style.markerEndResource();
237 if (!ensureResources(resources).setMarkerEnd(
238 getLayoutSVGResourceById<LayoutSVGResourceMarker>(
239 treeScopeResources, markerEndId)))
240 treeScopeResources.addPendingResource(markerEndId, element);
241 } 251 }
242 252
243 if (fillAndStrokeTags().contains(tagName)) { 253 if (fillAndStrokeTags().contains(tagName)) {
244 if (style.hasFill() && svgPaintTypeHasURL(style.fillPaintType())) { 254 if (style.hasFill() && svgPaintTypeHasURL(style.fillPaintType())) {
245 AtomicString id; 255 AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString(
246 LayoutSVGResourcePaintServer* resource = 256 style.fillPaintUri(), treeScope);
247 paintingResourceFromSVGPaint(treeScope, style.fillPaintUri(), id); 257 ensureResources(resources).setFill(
248 if (!ensureResources(resources).setFill(resource)) 258 attachToResource<LayoutSVGResourcePaintServer>(treeScopeResources, id,
249 treeScopeResources.addPendingResource(id, element); 259 element));
250 } 260 }
251 261
252 if (style.hasStroke() && svgPaintTypeHasURL(style.strokePaintType())) { 262 if (style.hasStroke() && svgPaintTypeHasURL(style.strokePaintType())) {
253 AtomicString id; 263 AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString(
254 LayoutSVGResourcePaintServer* resource = 264 style.strokePaintUri(), treeScope);
255 paintingResourceFromSVGPaint(treeScope, style.strokePaintUri(), id); 265 ensureResources(resources).setStroke(
256 if (!ensureResources(resources).setStroke(resource)) 266 attachToResource<LayoutSVGResourcePaintServer>(treeScopeResources, id,
257 treeScopeResources.addPendingResource(id, element); 267 element));
258 } 268 }
259 } 269 }
260 270
261 if (chainableResourceTags().contains(tagName)) { 271 if (chainableResourceTags().contains(tagName)) {
262 AtomicString id = targetReferenceFromResource(element); 272 AtomicString id = targetReferenceFromResource(element);
263 if (!ensureResources(resources).setLinkedResource( 273 ensureResources(resources).setLinkedResource(
264 treeScopeResources.resourceById(id))) 274 attachToResource<LayoutSVGResourceContainer>(treeScopeResources, id,
265 treeScopeResources.addPendingResource(id, element); 275 element));
266 } 276 }
267 277
268 return (!resources || !resources->hasResourceData()) ? nullptr 278 return (!resources || !resources->hasResourceData()) ? nullptr
269 : std::move(resources); 279 : std::move(resources);
270 } 280 }
271 281
272 void SVGResources::layoutIfNeeded() { 282 void SVGResources::layoutIfNeeded() {
273 if (m_clipperFilterMaskerData) { 283 if (m_clipperFilterMaskerData) {
274 if (LayoutSVGResourceClipper* clipper = m_clipperFilterMaskerData->clipper) 284 if (LayoutSVGResourceClipper* clipper = m_clipperFilterMaskerData->clipper)
275 clipper->layoutIfNeeded(); 285 clipper->layoutIfNeeded();
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 } 449 }
440 450
441 if (m_fillStrokeData) { 451 if (m_fillStrokeData) {
442 if (m_fillStrokeData->fill) 452 if (m_fillStrokeData->fill)
443 set.insert(m_fillStrokeData->fill); 453 set.insert(m_fillStrokeData->fill);
444 if (m_fillStrokeData->stroke) 454 if (m_fillStrokeData->stroke)
445 set.insert(m_fillStrokeData->stroke); 455 set.insert(m_fillStrokeData->stroke);
446 } 456 }
447 } 457 }
448 458
449 bool SVGResources::setClipper(LayoutSVGResourceClipper* clipper) { 459 void SVGResources::setClipper(LayoutSVGResourceClipper* clipper) {
450 if (!clipper) 460 if (!clipper)
451 return false; 461 return;
452 462
453 ASSERT(clipper->resourceType() == ClipperResourceType); 463 ASSERT(clipper->resourceType() == ClipperResourceType);
454 464
455 if (!m_clipperFilterMaskerData) 465 if (!m_clipperFilterMaskerData)
456 m_clipperFilterMaskerData = ClipperFilterMaskerData::create(); 466 m_clipperFilterMaskerData = ClipperFilterMaskerData::create();
457 467
458 m_clipperFilterMaskerData->clipper = clipper; 468 m_clipperFilterMaskerData->clipper = clipper;
459 return true;
460 } 469 }
461 470
462 void SVGResources::resetClipper() { 471 void SVGResources::resetClipper() {
463 ASSERT(m_clipperFilterMaskerData); 472 ASSERT(m_clipperFilterMaskerData);
464 ASSERT(m_clipperFilterMaskerData->clipper); 473 ASSERT(m_clipperFilterMaskerData->clipper);
465 m_clipperFilterMaskerData->clipper = nullptr; 474 m_clipperFilterMaskerData->clipper = nullptr;
466 } 475 }
467 476
468 bool SVGResources::setFilter(LayoutSVGResourceFilter* filter) { 477 void SVGResources::setFilter(LayoutSVGResourceFilter* filter) {
469 if (!filter) 478 if (!filter)
470 return false; 479 return;
471 480
472 ASSERT(filter->resourceType() == FilterResourceType); 481 ASSERT(filter->resourceType() == FilterResourceType);
473 482
474 if (!m_clipperFilterMaskerData) 483 if (!m_clipperFilterMaskerData)
475 m_clipperFilterMaskerData = ClipperFilterMaskerData::create(); 484 m_clipperFilterMaskerData = ClipperFilterMaskerData::create();
476 485
477 m_clipperFilterMaskerData->filter = filter; 486 m_clipperFilterMaskerData->filter = filter;
478 return true;
479 } 487 }
480 488
481 void SVGResources::resetFilter() { 489 void SVGResources::resetFilter() {
482 ASSERT(m_clipperFilterMaskerData); 490 ASSERT(m_clipperFilterMaskerData);
483 ASSERT(m_clipperFilterMaskerData->filter); 491 ASSERT(m_clipperFilterMaskerData->filter);
484 m_clipperFilterMaskerData->filter = nullptr; 492 m_clipperFilterMaskerData->filter = nullptr;
485 } 493 }
486 494
487 bool SVGResources::setMarkerStart(LayoutSVGResourceMarker* markerStart) { 495 void SVGResources::setMarkerStart(LayoutSVGResourceMarker* markerStart) {
488 if (!markerStart) 496 if (!markerStart)
489 return false; 497 return;
490 498
491 ASSERT(markerStart->resourceType() == MarkerResourceType); 499 ASSERT(markerStart->resourceType() == MarkerResourceType);
492 500
493 if (!m_markerData) 501 if (!m_markerData)
494 m_markerData = MarkerData::create(); 502 m_markerData = MarkerData::create();
495 503
496 m_markerData->markerStart = markerStart; 504 m_markerData->markerStart = markerStart;
497 return true;
498 } 505 }
499 506
500 void SVGResources::resetMarkerStart() { 507 void SVGResources::resetMarkerStart() {
501 ASSERT(m_markerData); 508 ASSERT(m_markerData);
502 ASSERT(m_markerData->markerStart); 509 ASSERT(m_markerData->markerStart);
503 m_markerData->markerStart = nullptr; 510 m_markerData->markerStart = nullptr;
504 } 511 }
505 512
506 bool SVGResources::setMarkerMid(LayoutSVGResourceMarker* markerMid) { 513 void SVGResources::setMarkerMid(LayoutSVGResourceMarker* markerMid) {
507 if (!markerMid) 514 if (!markerMid)
508 return false; 515 return;
509 516
510 ASSERT(markerMid->resourceType() == MarkerResourceType); 517 ASSERT(markerMid->resourceType() == MarkerResourceType);
511 518
512 if (!m_markerData) 519 if (!m_markerData)
513 m_markerData = MarkerData::create(); 520 m_markerData = MarkerData::create();
514 521
515 m_markerData->markerMid = markerMid; 522 m_markerData->markerMid = markerMid;
516 return true;
517 } 523 }
518 524
519 void SVGResources::resetMarkerMid() { 525 void SVGResources::resetMarkerMid() {
520 ASSERT(m_markerData); 526 ASSERT(m_markerData);
521 ASSERT(m_markerData->markerMid); 527 ASSERT(m_markerData->markerMid);
522 m_markerData->markerMid = nullptr; 528 m_markerData->markerMid = nullptr;
523 } 529 }
524 530
525 bool SVGResources::setMarkerEnd(LayoutSVGResourceMarker* markerEnd) { 531 void SVGResources::setMarkerEnd(LayoutSVGResourceMarker* markerEnd) {
526 if (!markerEnd) 532 if (!markerEnd)
527 return false; 533 return;
528 534
529 ASSERT(markerEnd->resourceType() == MarkerResourceType); 535 ASSERT(markerEnd->resourceType() == MarkerResourceType);
530 536
531 if (!m_markerData) 537 if (!m_markerData)
532 m_markerData = MarkerData::create(); 538 m_markerData = MarkerData::create();
533 539
534 m_markerData->markerEnd = markerEnd; 540 m_markerData->markerEnd = markerEnd;
535 return true;
536 } 541 }
537 542
538 void SVGResources::resetMarkerEnd() { 543 void SVGResources::resetMarkerEnd() {
539 ASSERT(m_markerData); 544 ASSERT(m_markerData);
540 ASSERT(m_markerData->markerEnd); 545 ASSERT(m_markerData->markerEnd);
541 m_markerData->markerEnd = nullptr; 546 m_markerData->markerEnd = nullptr;
542 } 547 }
543 548
544 bool SVGResources::setMasker(LayoutSVGResourceMasker* masker) { 549 void SVGResources::setMasker(LayoutSVGResourceMasker* masker) {
545 if (!masker) 550 if (!masker)
546 return false; 551 return;
547 552
548 ASSERT(masker->resourceType() == MaskerResourceType); 553 ASSERT(masker->resourceType() == MaskerResourceType);
549 554
550 if (!m_clipperFilterMaskerData) 555 if (!m_clipperFilterMaskerData)
551 m_clipperFilterMaskerData = ClipperFilterMaskerData::create(); 556 m_clipperFilterMaskerData = ClipperFilterMaskerData::create();
552 557
553 m_clipperFilterMaskerData->masker = masker; 558 m_clipperFilterMaskerData->masker = masker;
554 return true;
555 } 559 }
556 560
557 void SVGResources::resetMasker() { 561 void SVGResources::resetMasker() {
558 ASSERT(m_clipperFilterMaskerData); 562 ASSERT(m_clipperFilterMaskerData);
559 ASSERT(m_clipperFilterMaskerData->masker); 563 ASSERT(m_clipperFilterMaskerData->masker);
560 m_clipperFilterMaskerData->masker = nullptr; 564 m_clipperFilterMaskerData->masker = nullptr;
561 } 565 }
562 566
563 bool SVGResources::setFill(LayoutSVGResourcePaintServer* fill) { 567 void SVGResources::setFill(LayoutSVGResourcePaintServer* fill) {
564 if (!fill) 568 if (!fill)
565 return false; 569 return;
566 570
567 if (!m_fillStrokeData) 571 if (!m_fillStrokeData)
568 m_fillStrokeData = FillStrokeData::create(); 572 m_fillStrokeData = FillStrokeData::create();
569 573
570 m_fillStrokeData->fill = fill; 574 m_fillStrokeData->fill = fill;
571 return true;
572 } 575 }
573 576
574 void SVGResources::resetFill() { 577 void SVGResources::resetFill() {
575 ASSERT(m_fillStrokeData); 578 ASSERT(m_fillStrokeData);
576 ASSERT(m_fillStrokeData->fill); 579 ASSERT(m_fillStrokeData->fill);
577 m_fillStrokeData->fill = nullptr; 580 m_fillStrokeData->fill = nullptr;
578 } 581 }
579 582
580 bool SVGResources::setStroke(LayoutSVGResourcePaintServer* stroke) { 583 void SVGResources::setStroke(LayoutSVGResourcePaintServer* stroke) {
581 if (!stroke) 584 if (!stroke)
582 return false; 585 return;
583 586
584 if (!m_fillStrokeData) 587 if (!m_fillStrokeData)
585 m_fillStrokeData = FillStrokeData::create(); 588 m_fillStrokeData = FillStrokeData::create();
586 589
587 m_fillStrokeData->stroke = stroke; 590 m_fillStrokeData->stroke = stroke;
588 return true;
589 } 591 }
590 592
591 void SVGResources::resetStroke() { 593 void SVGResources::resetStroke() {
592 ASSERT(m_fillStrokeData); 594 ASSERT(m_fillStrokeData);
593 ASSERT(m_fillStrokeData->stroke); 595 ASSERT(m_fillStrokeData->stroke);
594 m_fillStrokeData->stroke = nullptr; 596 m_fillStrokeData->stroke = nullptr;
595 } 597 }
596 598
597 bool SVGResources::setLinkedResource( 599 void SVGResources::setLinkedResource(
598 LayoutSVGResourceContainer* linkedResource) { 600 LayoutSVGResourceContainer* linkedResource) {
599 if (!linkedResource) 601 if (!linkedResource)
600 return false; 602 return;
601 603
602 m_linkedResource = linkedResource; 604 m_linkedResource = linkedResource;
603 return true;
604 } 605 }
605 606
606 void SVGResources::resetLinkedResource() { 607 void SVGResources::resetLinkedResource() {
607 ASSERT(m_linkedResource); 608 ASSERT(m_linkedResource);
608 m_linkedResource = nullptr; 609 m_linkedResource = nullptr;
609 } 610 }
610 611
611 #ifndef NDEBUG 612 #ifndef NDEBUG
612 void SVGResources::dump(const LayoutObject* object) { 613 void SVGResources::dump(const LayoutObject* object) {
613 ASSERT(object); 614 ASSERT(object);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 stroke->element()); 653 stroke->element());
653 } 654 }
654 655
655 if (m_linkedResource) 656 if (m_linkedResource)
656 fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", m_linkedResource, 657 fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", m_linkedResource,
657 m_linkedResource->element()); 658 m_linkedResource->element());
658 } 659 }
659 #endif 660 #endif
660 661
661 } // namespace blink 662 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/svg/SVGResources.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698