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

Side by Side Diff: Source/core/rendering/RenderTable.cpp

Issue 21430003: Implement interfaces in PaintInfo and make it a class. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@getterPaintInfo01
Patch Set: Second try Created 7 years, 4 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) 1997 Martin Jones (mjones@kde.org) 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org)
3 * (C) 1997 Torben Weis (weis@kde.org) 3 * (C) 1997 Torben Weis (weis@kde.org)
4 * (C) 1998 Waldo Bastian (bastian@kde.org) 4 * (C) 1998 Waldo Bastian (bastian@kde.org)
5 * (C) 1999 Lars Knoll (knoll@kde.org) 5 * (C) 1999 Lars Knoll (knoll@kde.org)
6 * (C) 1999 Antti Koivisto (koivisto@kde.org) 6 * (C) 1999 Antti Koivisto (koivisto@kde.org)
7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r ights reserved. 7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r ights reserved.
8 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 for (RenderTableSection* section = topSection(); section; section = sectionB elow(section)) 619 for (RenderTableSection* section = topSection(); section; section = sectionB elow(section))
620 addOverflowFromChild(section); 620 addOverflowFromChild(section);
621 } 621 }
622 622
623 void RenderTable::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) 623 void RenderTable::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
624 { 624 {
625 ANNOTATE_GRAPHICS_CONTEXT(paintInfo, this); 625 ANNOTATE_GRAPHICS_CONTEXT(paintInfo, this);
626 626
627 LayoutPoint adjustedPaintOffset = paintOffset + location(); 627 LayoutPoint adjustedPaintOffset = paintOffset + location();
628 628
629 PaintPhase paintPhase = paintInfo.phase; 629 PaintPhase paintPhase = paintInfo.getPhase();
630 630
631 if (!isRoot()) { 631 if (!isRoot()) {
632 LayoutRect overflowBox = visualOverflowRect(); 632 LayoutRect overflowBox = visualOverflowRect();
633 flipForWritingMode(overflowBox); 633 flipForWritingMode(overflowBox);
634 overflowBox.inflate(maximalOutlineSize(paintInfo.phase)); 634 overflowBox.inflate(maximalOutlineSize(paintInfo.getPhase()));
635 overflowBox.moveBy(adjustedPaintOffset); 635 overflowBox.moveBy(adjustedPaintOffset);
636 if (!overflowBox.intersects(paintInfo.rect)) 636 if (!overflowBox.intersects(paintInfo.getRect()))
637 return; 637 return;
638 } 638 }
639 639
640 bool pushedClip = pushContentsClip(paintInfo, adjustedPaintOffset); 640 bool pushedClip = pushContentsClip(paintInfo, adjustedPaintOffset);
641 paintObject(paintInfo, adjustedPaintOffset); 641 paintObject(paintInfo, adjustedPaintOffset);
642 if (pushedClip) 642 if (pushedClip)
643 popContentsClip(paintInfo, paintPhase, adjustedPaintOffset); 643 popContentsClip(paintInfo, paintPhase, adjustedPaintOffset);
644 } 644 }
645 645
646 void RenderTable::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOffs et) 646 void RenderTable::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOffs et)
647 { 647 {
648 PaintPhase paintPhase = paintInfo.phase; 648 PaintPhase paintPhase = paintInfo.getPhase();
649 if ((paintPhase == PaintPhaseBlockBackground || paintPhase == PaintPhaseChil dBlockBackground) && hasBoxDecorations() && style()->visibility() == VISIBLE) 649 if ((paintPhase == PaintPhaseBlockBackground || paintPhase == PaintPhaseChil dBlockBackground) && hasBoxDecorations() && style()->visibility() == VISIBLE)
650 paintBoxDecorations(paintInfo, paintOffset); 650 paintBoxDecorations(paintInfo, paintOffset);
651 651
652 if (paintPhase == PaintPhaseMask) { 652 if (paintPhase == PaintPhaseMask) {
653 paintMask(paintInfo, paintOffset); 653 paintMask(paintInfo, paintOffset);
654 return; 654 return;
655 } 655 }
656 656
657 // We're done. We don't bother painting any children. 657 // We're done. We don't bother painting any children.
658 if (paintPhase == PaintPhaseBlockBackground) 658 if (paintPhase == PaintPhaseBlockBackground)
659 return; 659 return;
660 660
661 // We don't paint our own background, but we do let the kids paint their bac kgrounds. 661 // We don't paint our own background, but we do let the kids paint their bac kgrounds.
662 if (paintPhase == PaintPhaseChildBlockBackgrounds) 662 if (paintPhase == PaintPhaseChildBlockBackgrounds)
663 paintPhase = PaintPhaseChildBlockBackground; 663 paintPhase = PaintPhaseChildBlockBackground;
664 664
665 PaintInfo info(paintInfo); 665 PaintInfo info(paintInfo);
666 info.phase = paintPhase; 666 info.setPhase(paintPhase);
667 info.updatePaintingRootForChildren(this); 667 info.updatePaintingRootForChildren(this);
668 668
669 for (RenderObject* child = firstChild(); child; child = child->nextSibling() ) { 669 for (RenderObject* child = firstChild(); child; child = child->nextSibling() ) {
670 if (child->isBox() && !toRenderBox(child)->hasSelfPaintingLayer() && (ch ild->isTableSection() || child->isTableCaption())) { 670 if (child->isBox() && !toRenderBox(child)->hasSelfPaintingLayer() && (ch ild->isTableSection() || child->isTableCaption())) {
671 LayoutPoint childPoint = flipForWritingModeForChild(toRenderBox(chil d), paintOffset); 671 LayoutPoint childPoint = flipForWritingModeForChild(toRenderBox(chil d), paintOffset);
672 child->paint(info, childPoint); 672 child->paint(info, childPoint);
673 } 673 }
674 } 674 }
675 675
676 if (collapseBorders() && paintPhase == PaintPhaseChildBlockBackground && sty le()->visibility() == VISIBLE) { 676 if (collapseBorders() && paintPhase == PaintPhaseChildBlockBackground && sty le()->visibility() == VISIBLE) {
677 recalcCollapsedBorders(); 677 recalcCollapsedBorders();
678 // Using our cached sorted styles, we then do individual passes, 678 // Using our cached sorted styles, we then do individual passes,
679 // painting each style of border from lowest precedence to highest prece dence. 679 // painting each style of border from lowest precedence to highest prece dence.
680 info.phase = PaintPhaseCollapsedTableBorders; 680 info.setPhase(PaintPhaseCollapsedTableBorders);
681 size_t count = m_collapsedBorders.size(); 681 size_t count = m_collapsedBorders.size();
682 for (size_t i = 0; i < count; ++i) { 682 for (size_t i = 0; i < count; ++i) {
683 m_currentBorder = &m_collapsedBorders[i]; 683 m_currentBorder = &m_collapsedBorders[i];
684 for (RenderTableSection* section = bottomSection(); section; section = sectionAbove(section)) { 684 for (RenderTableSection* section = bottomSection(); section; section = sectionAbove(section)) {
685 LayoutPoint childPoint = flipForWritingModeForChild(section, pai ntOffset); 685 LayoutPoint childPoint = flipForWritingModeForChild(section, pai ntOffset);
686 section->paint(info, childPoint); 686 section->paint(info, childPoint);
687 } 687 }
688 } 688 }
689 m_currentBorder = 0; 689 m_currentBorder = 0;
690 } 690 }
(...skipping 21 matching lines...) Expand all
712 } 712 }
713 713
714 void RenderTable::paintBoxDecorations(PaintInfo& paintInfo, const LayoutPoint& p aintOffset) 714 void RenderTable::paintBoxDecorations(PaintInfo& paintInfo, const LayoutPoint& p aintOffset)
715 { 715 {
716 if (!paintInfo.shouldPaintWithinRoot(this)) 716 if (!paintInfo.shouldPaintWithinRoot(this))
717 return; 717 return;
718 718
719 LayoutRect rect(paintOffset, size()); 719 LayoutRect rect(paintOffset, size());
720 subtractCaptionRect(rect); 720 subtractCaptionRect(rect);
721 721
722 BackgroundBleedAvoidance bleedAvoidance = determineBackgroundBleedAvoidance( paintInfo.context); 722 BackgroundBleedAvoidance bleedAvoidance = determineBackgroundBleedAvoidance( paintInfo.getContext());
723 if (!boxShadowShouldBeAppliedToBackground(bleedAvoidance)) 723 if (!boxShadowShouldBeAppliedToBackground(bleedAvoidance))
724 paintBoxShadow(paintInfo, rect, style(), Normal); 724 paintBoxShadow(paintInfo, rect, style(), Normal);
725 paintBackground(paintInfo, rect, bleedAvoidance); 725 paintBackground(paintInfo, rect, bleedAvoidance);
726 paintBoxShadow(paintInfo, rect, style(), Inset); 726 paintBoxShadow(paintInfo, rect, style(), Inset);
727 727
728 if (style()->hasBorder() && !collapseBorders()) 728 if (style()->hasBorder() && !collapseBorders())
729 paintBorder(paintInfo, rect, style()); 729 paintBorder(paintInfo, rect, style());
730 } 730 }
731 731
732 void RenderTable::paintMask(PaintInfo& paintInfo, const LayoutPoint& paintOffset ) 732 void RenderTable::paintMask(PaintInfo& paintInfo, const LayoutPoint& paintOffset )
733 { 733 {
734 if (style()->visibility() != VISIBLE || paintInfo.phase != PaintPhaseMask) 734 if (style()->visibility() != VISIBLE || paintInfo.getPhase() != PaintPhaseMa sk)
735 return; 735 return;
736 736
737 LayoutRect rect(paintOffset, size()); 737 LayoutRect rect(paintOffset, size());
738 subtractCaptionRect(rect); 738 subtractCaptionRect(rect);
739 739
740 paintMaskImages(paintInfo, rect); 740 paintMaskImages(paintInfo, rect);
741 } 741 }
742 742
743 void RenderTable::computeIntrinsicLogicalWidths(LayoutUnit& minWidth, LayoutUnit & maxWidth) const 743 void RenderTable::computeIntrinsicLogicalWidths(LayoutUnit& minWidth, LayoutUnit & maxWidth) const
744 { 744 {
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
1439 const BorderValue& RenderTable::tableEndBorderAdjoiningCell(const RenderTableCel l* cell) const 1439 const BorderValue& RenderTable::tableEndBorderAdjoiningCell(const RenderTableCel l* cell) const
1440 { 1440 {
1441 ASSERT(cell->isFirstOrLastCellInRow()); 1441 ASSERT(cell->isFirstOrLastCellInRow());
1442 if (hasSameDirectionAs(cell->row())) 1442 if (hasSameDirectionAs(cell->row()))
1443 return style()->borderEnd(); 1443 return style()->borderEnd();
1444 1444
1445 return style()->borderStart(); 1445 return style()->borderStart();
1446 } 1446 }
1447 1447
1448 } 1448 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698