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

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

Issue 2821333002: Move the BreakCycle() method from the cycle solver to SVGResources (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
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 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 if (!clipper_filter_masker_data_) 411 if (!clipper_filter_masker_data_)
412 break; 412 break;
413 if (clipper_filter_masker_data_->clipper == resource) 413 if (clipper_filter_masker_data_->clipper == resource)
414 clipper_filter_masker_data_->clipper = nullptr; 414 clipper_filter_masker_data_->clipper = nullptr;
415 break; 415 break;
416 default: 416 default:
417 NOTREACHED(); 417 NOTREACHED();
418 } 418 }
419 } 419 }
420 420
421 void SVGResources::ClearReferencesTo(LayoutSVGResourceContainer* resource) {
422 DCHECK(resource);
423 if (linked_resource_ == resource) {
424 DCHECK(!clipper_filter_masker_data_);
425 DCHECK(!marker_data_);
426 DCHECK(!fill_stroke_data_);
427 linked_resource_ = nullptr;
428 return;
429 }
430
431 switch (resource->ResourceType()) {
432 case kMaskerResourceType:
433 DCHECK(clipper_filter_masker_data_);
434 DCHECK_EQ(clipper_filter_masker_data_->masker, resource);
435 clipper_filter_masker_data_->masker = nullptr;
436 break;
437 case kMarkerResourceType:
438 DCHECK(marker_data_);
439 DCHECK(resource == MarkerStart() || resource == MarkerMid() ||
440 resource == MarkerEnd());
441 if (marker_data_->marker_start == resource)
442 marker_data_->marker_start = nullptr;
443 if (marker_data_->marker_mid == resource)
444 marker_data_->marker_mid = nullptr;
445 if (marker_data_->marker_end == resource)
446 marker_data_->marker_end = nullptr;
447 break;
448 case kPatternResourceType:
449 case kLinearGradientResourceType:
450 case kRadialGradientResourceType:
451 DCHECK(fill_stroke_data_);
452 DCHECK(resource == Fill() || resource == Stroke());
453 if (fill_stroke_data_->fill == resource)
454 fill_stroke_data_->fill = nullptr;
455 if (fill_stroke_data_->stroke == resource)
456 fill_stroke_data_->stroke = nullptr;
457 break;
458 case kFilterResourceType:
459 DCHECK(clipper_filter_masker_data_);
460 DCHECK_EQ(clipper_filter_masker_data_->filter, resource);
461 clipper_filter_masker_data_->filter = nullptr;
462 break;
463 case kClipperResourceType:
464 DCHECK(clipper_filter_masker_data_);
465 DCHECK_EQ(clipper_filter_masker_data_->clipper, resource);
466 clipper_filter_masker_data_->clipper = nullptr;
467 break;
468 default:
469 NOTREACHED();
470 }
471 }
472
421 void SVGResources::BuildSetOfResources( 473 void SVGResources::BuildSetOfResources(
422 HashSet<LayoutSVGResourceContainer*>& set) { 474 HashSet<LayoutSVGResourceContainer*>& set) {
423 if (!HasResourceData()) 475 if (!HasResourceData())
424 return; 476 return;
425 477
426 if (linked_resource_) { 478 if (linked_resource_) {
427 DCHECK(!clipper_filter_masker_data_); 479 DCHECK(!clipper_filter_masker_data_);
428 DCHECK(!marker_data_); 480 DCHECK(!marker_data_);
429 DCHECK(!fill_stroke_data_); 481 DCHECK(!fill_stroke_data_);
430 set.insert(linked_resource_); 482 set.insert(linked_resource_);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 return; 514 return;
463 515
464 DCHECK_EQ(clipper->ResourceType(), kClipperResourceType); 516 DCHECK_EQ(clipper->ResourceType(), kClipperResourceType);
465 517
466 if (!clipper_filter_masker_data_) 518 if (!clipper_filter_masker_data_)
467 clipper_filter_masker_data_ = ClipperFilterMaskerData::Create(); 519 clipper_filter_masker_data_ = ClipperFilterMaskerData::Create();
468 520
469 clipper_filter_masker_data_->clipper = clipper; 521 clipper_filter_masker_data_->clipper = clipper;
470 } 522 }
471 523
472 void SVGResources::ResetClipper() {
473 DCHECK(clipper_filter_masker_data_);
474 DCHECK(clipper_filter_masker_data_->clipper);
475 clipper_filter_masker_data_->clipper = nullptr;
476 }
477
478 void SVGResources::SetFilter(LayoutSVGResourceFilter* filter) { 524 void SVGResources::SetFilter(LayoutSVGResourceFilter* filter) {
479 if (!filter) 525 if (!filter)
480 return; 526 return;
481 527
482 DCHECK_EQ(filter->ResourceType(), kFilterResourceType); 528 DCHECK_EQ(filter->ResourceType(), kFilterResourceType);
483 529
484 if (!clipper_filter_masker_data_) 530 if (!clipper_filter_masker_data_)
485 clipper_filter_masker_data_ = ClipperFilterMaskerData::Create(); 531 clipper_filter_masker_data_ = ClipperFilterMaskerData::Create();
486 532
487 clipper_filter_masker_data_->filter = filter; 533 clipper_filter_masker_data_->filter = filter;
488 } 534 }
489 535
490 void SVGResources::ResetFilter() {
491 DCHECK(clipper_filter_masker_data_);
492 DCHECK(clipper_filter_masker_data_->filter);
493 clipper_filter_masker_data_->filter = nullptr;
494 }
495
496 void SVGResources::SetMarkerStart(LayoutSVGResourceMarker* marker_start) { 536 void SVGResources::SetMarkerStart(LayoutSVGResourceMarker* marker_start) {
497 if (!marker_start) 537 if (!marker_start)
498 return; 538 return;
499 539
500 DCHECK_EQ(marker_start->ResourceType(), kMarkerResourceType); 540 DCHECK_EQ(marker_start->ResourceType(), kMarkerResourceType);
501 541
502 if (!marker_data_) 542 if (!marker_data_)
503 marker_data_ = MarkerData::Create(); 543 marker_data_ = MarkerData::Create();
504 544
505 marker_data_->marker_start = marker_start; 545 marker_data_->marker_start = marker_start;
506 } 546 }
507 547
508 void SVGResources::ResetMarkerStart() {
509 DCHECK(marker_data_);
510 DCHECK(marker_data_->marker_start);
511 marker_data_->marker_start = nullptr;
512 }
513
514 void SVGResources::SetMarkerMid(LayoutSVGResourceMarker* marker_mid) { 548 void SVGResources::SetMarkerMid(LayoutSVGResourceMarker* marker_mid) {
515 if (!marker_mid) 549 if (!marker_mid)
516 return; 550 return;
517 551
518 DCHECK_EQ(marker_mid->ResourceType(), kMarkerResourceType); 552 DCHECK_EQ(marker_mid->ResourceType(), kMarkerResourceType);
519 553
520 if (!marker_data_) 554 if (!marker_data_)
521 marker_data_ = MarkerData::Create(); 555 marker_data_ = MarkerData::Create();
522 556
523 marker_data_->marker_mid = marker_mid; 557 marker_data_->marker_mid = marker_mid;
524 } 558 }
525 559
526 void SVGResources::ResetMarkerMid() {
527 DCHECK(marker_data_);
528 DCHECK(marker_data_->marker_mid);
529 marker_data_->marker_mid = nullptr;
530 }
531
532 void SVGResources::SetMarkerEnd(LayoutSVGResourceMarker* marker_end) { 560 void SVGResources::SetMarkerEnd(LayoutSVGResourceMarker* marker_end) {
533 if (!marker_end) 561 if (!marker_end)
534 return; 562 return;
535 563
536 DCHECK_EQ(marker_end->ResourceType(), kMarkerResourceType); 564 DCHECK_EQ(marker_end->ResourceType(), kMarkerResourceType);
537 565
538 if (!marker_data_) 566 if (!marker_data_)
539 marker_data_ = MarkerData::Create(); 567 marker_data_ = MarkerData::Create();
540 568
541 marker_data_->marker_end = marker_end; 569 marker_data_->marker_end = marker_end;
542 } 570 }
543 571
544 void SVGResources::ResetMarkerEnd() {
545 DCHECK(marker_data_);
546 DCHECK(marker_data_->marker_end);
547 marker_data_->marker_end = nullptr;
548 }
549
550 void SVGResources::SetMasker(LayoutSVGResourceMasker* masker) { 572 void SVGResources::SetMasker(LayoutSVGResourceMasker* masker) {
551 if (!masker) 573 if (!masker)
552 return; 574 return;
553 575
554 DCHECK_EQ(masker->ResourceType(), kMaskerResourceType); 576 DCHECK_EQ(masker->ResourceType(), kMaskerResourceType);
555 577
556 if (!clipper_filter_masker_data_) 578 if (!clipper_filter_masker_data_)
557 clipper_filter_masker_data_ = ClipperFilterMaskerData::Create(); 579 clipper_filter_masker_data_ = ClipperFilterMaskerData::Create();
558 580
559 clipper_filter_masker_data_->masker = masker; 581 clipper_filter_masker_data_->masker = masker;
560 } 582 }
561 583
562 void SVGResources::ResetMasker() {
563 DCHECK(clipper_filter_masker_data_);
564 DCHECK(clipper_filter_masker_data_->masker);
565 clipper_filter_masker_data_->masker = nullptr;
566 }
567
568 void SVGResources::SetFill(LayoutSVGResourcePaintServer* fill) { 584 void SVGResources::SetFill(LayoutSVGResourcePaintServer* fill) {
569 if (!fill) 585 if (!fill)
570 return; 586 return;
571 587
572 if (!fill_stroke_data_) 588 if (!fill_stroke_data_)
573 fill_stroke_data_ = FillStrokeData::Create(); 589 fill_stroke_data_ = FillStrokeData::Create();
574 590
575 fill_stroke_data_->fill = fill; 591 fill_stroke_data_->fill = fill;
576 } 592 }
577 593
578 void SVGResources::ResetFill() {
579 DCHECK(fill_stroke_data_);
580 DCHECK(fill_stroke_data_->fill);
581 fill_stroke_data_->fill = nullptr;
582 }
583
584 void SVGResources::SetStroke(LayoutSVGResourcePaintServer* stroke) { 594 void SVGResources::SetStroke(LayoutSVGResourcePaintServer* stroke) {
585 if (!stroke) 595 if (!stroke)
586 return; 596 return;
587 597
588 if (!fill_stroke_data_) 598 if (!fill_stroke_data_)
589 fill_stroke_data_ = FillStrokeData::Create(); 599 fill_stroke_data_ = FillStrokeData::Create();
590 600
591 fill_stroke_data_->stroke = stroke; 601 fill_stroke_data_->stroke = stroke;
592 } 602 }
593 603
594 void SVGResources::ResetStroke() {
595 DCHECK(fill_stroke_data_);
596 DCHECK(fill_stroke_data_->stroke);
597 fill_stroke_data_->stroke = nullptr;
598 }
599
600 void SVGResources::SetLinkedResource( 604 void SVGResources::SetLinkedResource(
601 LayoutSVGResourceContainer* linked_resource) { 605 LayoutSVGResourceContainer* linked_resource) {
602 if (!linked_resource) 606 if (!linked_resource)
603 return; 607 return;
604 608
605 linked_resource_ = linked_resource; 609 linked_resource_ = linked_resource;
606 } 610 }
607 611
608 void SVGResources::ResetLinkedResource() {
609 DCHECK(linked_resource_);
610 linked_resource_ = nullptr;
611 }
612
613 #ifndef NDEBUG 612 #ifndef NDEBUG
614 void SVGResources::Dump(const LayoutObject* object) { 613 void SVGResources::Dump(const LayoutObject* object) {
615 DCHECK(object); 614 DCHECK(object);
616 DCHECK(object->GetNode()); 615 DCHECK(object->GetNode());
617 616
618 fprintf(stderr, "-> this=%p, SVGResources(layoutObject=%p, node=%p)\n", this, 617 fprintf(stderr, "-> this=%p, SVGResources(layoutObject=%p, node=%p)\n", this,
619 object, object->GetNode()); 618 object, object->GetNode());
620 fprintf(stderr, " | DOM Tree:\n"); 619 fprintf(stderr, " | DOM Tree:\n");
621 fprintf(stderr, "%s", object->GetNode()->ToTreeStringForThis().Utf8().Data()); 620 fprintf(stderr, "%s", object->GetNode()->ToTreeStringForThis().Utf8().Data());
622 621
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 stroke->GetElement()); 654 stroke->GetElement());
656 } 655 }
657 656
658 if (linked_resource_) 657 if (linked_resource_)
659 fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", linked_resource_, 658 fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", linked_resource_,
660 linked_resource_->GetElement()); 659 linked_resource_->GetElement());
661 } 660 }
662 #endif 661 #endif
663 662
664 } // namespace blink 663 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698