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

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

Issue 379073002: Revert of Divorce PaintInvalidationState from LayoutState (https://codereview.chromium.org/36083300… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Correct revert order Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderObject.h ('k') | Source/core/rendering/RenderReplaced.h » ('j') | 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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.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 1301 matching lines...) Expand 10 before | Expand all | Expand 10 after
1312 pos.move(box->locationOffset()); // FIXME: Snap offsets? crbug.c om/350474 1312 pos.move(box->locationOffset()); // FIXME: Snap offsets? crbug.c om/350474
1313 box->addFocusRingRects(rects, flooredIntPoint(pos), paintContain er); 1313 box->addFocusRingRects(rects, flooredIntPoint(pos), paintContain er);
1314 } 1314 }
1315 } else { 1315 } else {
1316 current->addFocusRingRects(rects, additionalOffset, paintContainer); 1316 current->addFocusRingRects(rects, additionalOffset, paintContainer);
1317 } 1317 }
1318 } 1318 }
1319 } 1319 }
1320 1320
1321 // FIXME: In repaint-after-layout, we should be able to change the logic to remo ve the need for this function. See crbug.com/368416. 1321 // FIXME: In repaint-after-layout, we should be able to change the logic to remo ve the need for this function. See crbug.com/368416.
1322 LayoutPoint RenderObject::positionFromPaintInvalidationContainer(const RenderLay erModelObject* paintInvalidationContainer, const PaintInvalidationState* paintIn validationState) const 1322 LayoutPoint RenderObject::positionFromPaintInvalidationContainer(const RenderLay erModelObject* paintInvalidationContainer) const
1323 { 1323 {
1324 // FIXME: This assert should be re-enabled when we move paint invalidation t o after compositing update. crbug.com/360286 1324 // FIXME: This assert should be re-enabled when we move paint invalidation t o after compositing update. crbug.com/360286
1325 // ASSERT(containerForPaintInvalidation() == paintInvalidationContainer); 1325 // ASSERT(containerForPaintInvalidation() == paintInvalidationContainer);
1326 1326
1327 LayoutPoint offset = isBox() ? toRenderBox(this)->location() : LayoutPoint() ; 1327 LayoutPoint offset = isBox() ? toRenderBox(this)->location() : LayoutPoint() ;
1328 if (paintInvalidationContainer == this) 1328 if (paintInvalidationContainer == this)
1329 return offset; 1329 return offset;
1330 1330
1331 return roundedIntPoint(localToContainerPoint(offset, paintInvalidationContai ner, 0, 0, paintInvalidationState)); 1331 return roundedIntPoint(localToContainerPoint(offset, paintInvalidationContai ner));
1332 } 1332 }
1333 1333
1334 IntRect RenderObject::absoluteBoundingBoxRect() const 1334 IntRect RenderObject::absoluteBoundingBoxRect() const
1335 { 1335 {
1336 Vector<FloatQuad> quads; 1336 Vector<FloatQuad> quads;
1337 absoluteQuads(quads); 1337 absoluteQuads(quads);
1338 1338
1339 size_t n = quads.size(); 1339 size_t n = quads.size();
1340 if (!n) 1340 if (!n)
1341 return IntRect(); 1341 return IntRect();
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 } 1467 }
1468 1468
1469 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForPaintInvali dationInfo(const LayoutRect& rect, const String& invalidationReason) 1469 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForPaintInvali dationInfo(const LayoutRect& rect, const String& invalidationReason)
1470 { 1470 {
1471 TracedValue value; 1471 TracedValue value;
1472 addJsonObjectForRect(value, "rect", rect); 1472 addJsonObjectForRect(value, "rect", rect);
1473 value.setString("invalidation_reason", invalidationReason); 1473 value.setString("invalidation_reason", invalidationReason);
1474 return value.finish(); 1474 return value.finish();
1475 } 1475 }
1476 1476
1477 LayoutRect RenderObject::computePaintInvalidationRect(const RenderLayerModelObje ct* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationS tate) const 1477 LayoutRect RenderObject::computePaintInvalidationRect(const RenderLayerModelObje ct* paintInvalidationContainer) const
1478 { 1478 {
1479 return clippedOverflowRectForPaintInvalidation(paintInvalidationContainer, p aintInvalidationState); 1479 return clippedOverflowRectForPaintInvalidation(paintInvalidationContainer);
1480 } 1480 }
1481 1481
1482 void RenderObject::invalidatePaintUsingContainer(const RenderLayerModelObject* p aintInvalidationContainer, const LayoutRect& r, InvalidationReason invalidationR eason) const 1482 void RenderObject::invalidatePaintUsingContainer(const RenderLayerModelObject* p aintInvalidationContainer, const LayoutRect& r, InvalidationReason invalidationR eason) const
1483 { 1483 {
1484 if (r.isEmpty()) 1484 if (r.isEmpty())
1485 return; 1485 return;
1486 1486
1487 // FIXME: This should be an assert, but editing/selection can trigger this c ase to invalidate 1487 // FIXME: This should be an assert, but editing/selection can trigger this c ase to invalidate
1488 // the selection. crbug.com/368140. 1488 // the selection. crbug.com/368140.
1489 if (!isRooted()) 1489 if (!isRooted())
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1528 return; // Don't invalidate paints if we're printing. 1528 return; // Don't invalidate paints if we're printing.
1529 1529
1530 // FIXME: really, we're in the paint invalidation phase here, and the follow ing queries are legal. 1530 // FIXME: really, we're in the paint invalidation phase here, and the follow ing queries are legal.
1531 // Until those states are fully fledged, I'll just disable the ASSERTS. 1531 // Until those states are fully fledged, I'll just disable the ASSERTS.
1532 DisableCompositingQueryAsserts disabler; 1532 DisableCompositingQueryAsserts disabler;
1533 const RenderLayerModelObject* paintInvalidationContainer = containerForPaint Invalidation(); 1533 const RenderLayerModelObject* paintInvalidationContainer = containerForPaint Invalidation();
1534 LayoutRect paintInvalidationRect = boundsRectForPaintInvalidation(paintInval idationContainer); 1534 LayoutRect paintInvalidationRect = boundsRectForPaintInvalidation(paintInval idationContainer);
1535 invalidatePaintUsingContainer(paintInvalidationContainer, paintInvalidationR ect, InvalidationPaint); 1535 invalidatePaintUsingContainer(paintInvalidationContainer, paintInvalidationR ect, InvalidationPaint);
1536 } 1536 }
1537 1537
1538 LayoutRect RenderObject::boundsRectForPaintInvalidation(const RenderLayerModelOb ject* paintInvalidationContainer, const PaintInvalidationState* paintInvalidatio nState) const 1538 LayoutRect RenderObject::boundsRectForPaintInvalidation(const RenderLayerModelOb ject* paintInvalidationContainer) const
1539 { 1539 {
1540 if (!paintInvalidationContainer) 1540 if (!paintInvalidationContainer)
1541 return computePaintInvalidationRect(paintInvalidationContainer, paintInv alidationState); 1541 return computePaintInvalidationRect(paintInvalidationContainer);
1542 return RenderLayer::computePaintInvalidationRect(this, paintInvalidationCont ainer->layer(), paintInvalidationState); 1542 return RenderLayer::computePaintInvalidationRect(this, paintInvalidationCont ainer->layer());
1543 } 1543 }
1544 1544
1545 void RenderObject::invalidatePaintRectangle(const LayoutRect& r) const 1545 void RenderObject::invalidatePaintRectangle(const LayoutRect& r) const
1546 { 1546 {
1547 if (!isRooted()) 1547 if (!isRooted())
1548 return; 1548 return;
1549 1549
1550 if (view()->document().printing()) 1550 if (view()->document().printing())
1551 return; // Don't invalidate paints if we're printing. 1551 return; // Don't invalidate paints if we're printing.
1552 1552
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 return "layer"; 1589 return "layer";
1590 case InvalidationPaint: 1590 case InvalidationPaint:
1591 return "invalidate paint"; 1591 return "invalidate paint";
1592 case InvalidationPaintRectangle: 1592 case InvalidationPaintRectangle:
1593 return "invalidate paint rectangle"; 1593 return "invalidate paint rectangle";
1594 } 1594 }
1595 ASSERT_NOT_REACHED(); 1595 ASSERT_NOT_REACHED();
1596 return ""; 1596 return "";
1597 } 1597 }
1598 1598
1599 void RenderObject::invalidateTreeAfterLayout(const PaintInvalidationState& paint InvalidationState) 1599 void RenderObject::invalidateTreeAfterLayout(const RenderLayerModelObject& paint InvalidationContainer)
1600 { 1600 {
1601 // If we didn't need paint invalidation then our children don't need as well . 1601 // If we didn't need paint invalidation then our children don't need as well .
1602 // Skip walking down the tree as everything should be fine below us. 1602 // Skip walking down the tree as everything should be fine below us.
1603 if (!shouldCheckForPaintInvalidationAfterLayout()) 1603 if (!shouldCheckForPaintInvalidationAfterLayout())
1604 return; 1604 return;
1605 1605
1606 clearPaintInvalidationState(); 1606 clearPaintInvalidationState();
1607 1607
1608 for (RenderObject* child = slowFirstChild(); child; child = child->nextSibli ng()) { 1608 for (RenderObject* child = slowFirstChild(); child; child = child->nextSibli ng()) {
1609 if (!child->isOutOfFlowPositioned()) 1609 if (!child->isOutOfFlowPositioned())
1610 child->invalidateTreeAfterLayout(paintInvalidationState); 1610 child->invalidateTreeAfterLayout(paintInvalidationContainer);
1611 } 1611 }
1612 } 1612 }
1613 1613
1614 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe cts(const LayoutRect& oldRect, const LayoutRect& newRect) 1614 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe cts(const LayoutRect& oldRect, const LayoutRect& newRect)
1615 { 1615 {
1616 TracedValue value; 1616 TracedValue value;
1617 addJsonObjectForRect(value, "old", oldRect); 1617 addJsonObjectForRect(value, "old", oldRect);
1618 addJsonObjectForRect(value, "new", newRect); 1618 addJsonObjectForRect(value, "new", newRect);
1619 return value.finish(); 1619 return value.finish();
1620 } 1620 }
1621 1621
1622 bool RenderObject::invalidatePaintIfNeeded(const RenderLayerModelObject& paintIn validationContainer, const LayoutRect& oldBounds, const LayoutPoint& oldLocation ) 1622 bool RenderObject::invalidatePaintIfNeeded(const RenderLayerModelObject* paintIn validationContainer, const LayoutRect& oldBounds, const LayoutPoint& oldLocation )
1623 { 1623 {
1624 RenderView* v = view(); 1624 RenderView* v = view();
1625 if (v->document().printing()) 1625 if (v->document().printing())
1626 return false; // Don't invalidate paints if we're printing. 1626 return false; // Don't invalidate paints if we're printing.
1627 1627
1628 const LayoutRect& newBounds = previousPaintInvalidationRect(); 1628 const LayoutRect& newBounds = previousPaintInvalidationRect();
1629 const LayoutPoint& newLocation = previousPositionFromPaintInvalidationContai ner(); 1629 const LayoutPoint& newLocation = previousPositionFromPaintInvalidationContai ner();
1630 1630
1631 ASSERT(newBounds == boundsRectForPaintInvalidation(&paintInvalidationContain er)); 1631 ASSERT(newBounds == boundsRectForPaintInvalidation(paintInvalidationContaine r));
1632 1632
1633 // FIXME: This should use a ConvertableToTraceFormat when they are available in Blink. 1633 // FIXME: This should use a ConvertableToTraceFormat when they are available in Blink.
1634 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), "RenderObject: :invalidatePaintIfNeeded()", 1634 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), "RenderObject: :invalidatePaintIfNeeded()",
1635 "object", this->debugName().ascii(), 1635 "object", this->debugName().ascii(),
1636 "info", jsonObjectForOldAndNewRects(oldBounds, newBounds)); 1636 "info", jsonObjectForOldAndNewRects(oldBounds, newBounds));
1637 1637
1638 InvalidationReason invalidationReason = getPaintInvalidationReason(paintInva lidationContainer, oldBounds, oldLocation, newBounds, newLocation); 1638 InvalidationReason invalidationReason = getPaintInvalidationReason(paintInva lidationContainer, oldBounds, oldLocation, newBounds, newLocation);
1639 1639
1640 if (invalidationReason == InvalidationNone) 1640 if (invalidationReason == InvalidationNone)
1641 return false; 1641 return false;
1642 1642
1643 if (invalidationReason == InvalidationIncremental) { 1643 if (invalidationReason == InvalidationIncremental) {
1644 incrementallyInvalidatePaint(paintInvalidationContainer, oldBounds, newB ounds); 1644 incrementallyInvalidatePaint(paintInvalidationContainer, oldBounds, newB ounds);
1645 return false; 1645 return false;
1646 } 1646 }
1647 1647
1648 fullyInvalidatePaint(paintInvalidationContainer, invalidationReason, oldBoun ds, newBounds); 1648 fullyInvalidatePaint(paintInvalidationContainer, invalidationReason, oldBoun ds, newBounds);
1649 return true; 1649 return true;
1650 } 1650 }
1651 1651
1652 InvalidationReason RenderObject::getPaintInvalidationReason(const RenderLayerMod elObject& paintInvalidationContainer, 1652 InvalidationReason RenderObject::getPaintInvalidationReason(const RenderLayerMod elObject* paintInvalidationContainer,
1653 const LayoutRect& oldBounds, const LayoutPoint& oldLocation, const LayoutRec t& newBounds, const LayoutPoint& newLocation) 1653 const LayoutRect& oldBounds, const LayoutPoint& oldLocation, const LayoutRec t& newBounds, const LayoutPoint& newLocation)
1654 { 1654 {
1655 if (shouldDoFullPaintInvalidationAfterLayout()) 1655 if (shouldDoFullPaintInvalidationAfterLayout())
1656 return InvalidationFull; 1656 return InvalidationFull;
1657 1657
1658 // Presumably a background or a border exists if border-fit:lines was specif ied. 1658 // Presumably a background or a border exists if border-fit:lines was specif ied.
1659 if (style()->borderFit() == BorderFitLines) 1659 if (style()->borderFit() == BorderFitLines)
1660 return InvalidationBorderFitLines; 1660 return InvalidationBorderFitLines;
1661 1661
1662 if (compositingState() != PaintsIntoOwnBacking && newLocation != oldLocation ) 1662 if (compositingState() != PaintsIntoOwnBacking && newLocation != oldLocation )
(...skipping 20 matching lines...) Expand all
1683 // This covers the case where we mark containing blocks for layout 1683 // This covers the case where we mark containing blocks for layout
1684 // and they change size but don't have anything to paint. This is 1684 // and they change size but don't have anything to paint. This is
1685 // a pretty common case for <body> as we add / remove children 1685 // a pretty common case for <body> as we add / remove children
1686 // (and the default background is done by FrameView). 1686 // (and the default background is done by FrameView).
1687 if (skipInvalidationWhenLaidOutChildren() && !mayNeedPaintInvalidation()) 1687 if (skipInvalidationWhenLaidOutChildren() && !mayNeedPaintInvalidation())
1688 return InvalidationNone; 1688 return InvalidationNone;
1689 1689
1690 return InvalidationIncremental; 1690 return InvalidationIncremental;
1691 } 1691 }
1692 1692
1693 void RenderObject::incrementallyInvalidatePaint(const RenderLayerModelObject& pa intInvalidationContainer, const LayoutRect& oldBounds, const LayoutRect& newBoun ds) 1693 void RenderObject::incrementallyInvalidatePaint(const RenderLayerModelObject* pa intInvalidationContainer, const LayoutRect& oldBounds, const LayoutRect& newBoun ds)
1694 { 1694 {
1695 ASSERT(paintInvalidationContainer);
1696
1695 ASSERT(oldBounds.location() == newBounds.location()); 1697 ASSERT(oldBounds.location() == newBounds.location());
1696 1698
1697 LayoutUnit deltaRight = newBounds.maxX() - oldBounds.maxX(); 1699 LayoutUnit deltaRight = newBounds.maxX() - oldBounds.maxX();
1698 if (deltaRight > 0) 1700 if (deltaRight > 0)
1699 invalidatePaintUsingContainer(&paintInvalidationContainer, LayoutRect(ol dBounds.maxX(), newBounds.y(), deltaRight, newBounds.height()), InvalidationIncr emental); 1701 invalidatePaintUsingContainer(paintInvalidationContainer, LayoutRect(old Bounds.maxX(), newBounds.y(), deltaRight, newBounds.height()), InvalidationIncre mental);
1700 else if (deltaRight < 0) 1702 else if (deltaRight < 0)
1701 invalidatePaintUsingContainer(&paintInvalidationContainer, LayoutRect(ne wBounds.maxX(), oldBounds.y(), -deltaRight, oldBounds.height()), InvalidationInc remental); 1703 invalidatePaintUsingContainer(paintInvalidationContainer, LayoutRect(new Bounds.maxX(), oldBounds.y(), -deltaRight, oldBounds.height()), InvalidationIncr emental);
1702 1704
1703 LayoutUnit deltaBottom = newBounds.maxY() - oldBounds.maxY(); 1705 LayoutUnit deltaBottom = newBounds.maxY() - oldBounds.maxY();
1704 if (deltaBottom > 0) 1706 if (deltaBottom > 0)
1705 invalidatePaintUsingContainer(&paintInvalidationContainer, LayoutRect(ne wBounds.x(), oldBounds.maxY(), newBounds.width(), deltaBottom), InvalidationIncr emental); 1707 invalidatePaintUsingContainer(paintInvalidationContainer, LayoutRect(new Bounds.x(), oldBounds.maxY(), newBounds.width(), deltaBottom), InvalidationIncre mental);
1706 else if (deltaBottom < 0) 1708 else if (deltaBottom < 0)
1707 invalidatePaintUsingContainer(&paintInvalidationContainer, LayoutRect(ol dBounds.x(), newBounds.maxY(), oldBounds.width(), -deltaBottom), InvalidationInc remental); 1709 invalidatePaintUsingContainer(paintInvalidationContainer, LayoutRect(old Bounds.x(), newBounds.maxY(), oldBounds.width(), -deltaBottom), InvalidationIncr emental);
1708 } 1710 }
1709 1711
1710 void RenderObject::fullyInvalidatePaint(const RenderLayerModelObject& paintInval idationContainer, InvalidationReason invalidationReason, const LayoutRect& oldBo unds, const LayoutRect& newBounds) 1712 void RenderObject::fullyInvalidatePaint(const RenderLayerModelObject* paintInval idationContainer, InvalidationReason invalidationReason, const LayoutRect& oldBo unds, const LayoutRect& newBounds)
1711 { 1713 {
1712 // Otherwise do full paint invalidation. 1714 // Otherwise do full paint invalidation.
1713 invalidatePaintUsingContainer(&paintInvalidationContainer, oldBounds, invali dationReason); 1715 invalidatePaintUsingContainer(paintInvalidationContainer, oldBounds, invalid ationReason);
1714 if (newBounds != oldBounds) 1716 if (newBounds != oldBounds)
1715 invalidatePaintUsingContainer(&paintInvalidationContainer, newBounds, in validationReason); 1717 invalidatePaintUsingContainer(paintInvalidationContainer, newBounds, inv alidationReason);
1716 } 1718 }
1717 1719
1718 void RenderObject::invalidatePaintForOverflow() 1720 void RenderObject::invalidatePaintForOverflow()
1719 { 1721 {
1720 } 1722 }
1721 1723
1722 void RenderObject::invalidatePaintForOverflowIfNeeded() 1724 void RenderObject::invalidatePaintForOverflowIfNeeded()
1723 { 1725 {
1724 if (shouldInvalidateOverflowForPaint()) 1726 if (shouldInvalidateOverflowForPaint())
1725 invalidatePaintForOverflow(); 1727 invalidatePaintForOverflow();
1726 } 1728 }
1727 1729
1728 bool RenderObject::checkForPaintInvalidation() const 1730 bool RenderObject::checkForPaintInvalidation() const
1729 { 1731 {
1730 return !document().view()->needsFullPaintInvalidation() && everHadLayout(); 1732 return !document().view()->needsFullPaintInvalidation() && everHadLayout();
1731 } 1733 }
1732 1734
1733 LayoutRect RenderObject::rectWithOutlineForPaintInvalidation(const RenderLayerMo delObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInval idationState* paintInvalidationState) const 1735 LayoutRect RenderObject::rectWithOutlineForPaintInvalidation(const RenderLayerMo delObject* paintInvalidationContainer, LayoutUnit outlineWidth) const
1734 { 1736 {
1735 LayoutRect r(clippedOverflowRectForPaintInvalidation(paintInvalidationContai ner, paintInvalidationState)); 1737 LayoutRect r(clippedOverflowRectForPaintInvalidation(paintInvalidationContai ner));
1736 r.inflate(outlineWidth); 1738 r.inflate(outlineWidth);
1737 return r; 1739 return r;
1738 } 1740 }
1739 1741
1740 LayoutRect RenderObject::clippedOverflowRectForPaintInvalidation(const RenderLay erModelObject*, const PaintInvalidationState*) const 1742 LayoutRect RenderObject::clippedOverflowRectForPaintInvalidation(const RenderLay erModelObject*) const
1741 { 1743 {
1742 ASSERT_NOT_REACHED(); 1744 ASSERT_NOT_REACHED();
1743 return LayoutRect(); 1745 return LayoutRect();
1744 } 1746 }
1745 1747
1746 void RenderObject::mapRectToPaintInvalidationBacking(const RenderLayerModelObjec t* paintInvalidationContainer, LayoutRect& rect, bool fixed, const PaintInvalida tionState* paintInvalidationState) const 1748 void RenderObject::mapRectToPaintInvalidationBacking(const RenderLayerModelObjec t* paintInvalidationContainer, LayoutRect& rect, bool fixed) const
1747 { 1749 {
1748 if (paintInvalidationContainer == this) 1750 if (paintInvalidationContainer == this)
1749 return; 1751 return;
1750 1752
1751 if (RenderObject* o = parent()) { 1753 if (RenderObject* o = parent()) {
1752 if (o->isRenderBlockFlow()) { 1754 if (o->isRenderBlockFlow()) {
1753 RenderBlock* cb = toRenderBlock(o); 1755 RenderBlock* cb = toRenderBlock(o);
1754 if (cb->hasColumns()) 1756 if (cb->hasColumns())
1755 cb->adjustRectForColumns(rect); 1757 cb->adjustRectForColumns(rect);
1756 } 1758 }
1757 1759
1758 if (o->hasOverflowClip()) { 1760 if (o->hasOverflowClip()) {
1759 RenderBox* boxParent = toRenderBox(o); 1761 RenderBox* boxParent = toRenderBox(o);
1760 boxParent->applyCachedClipAndScrollOffsetForRepaint(rect); 1762 boxParent->applyCachedClipAndScrollOffsetForRepaint(rect);
1761 if (rect.isEmpty()) 1763 if (rect.isEmpty())
1762 return; 1764 return;
1763 } 1765 }
1764 1766
1765 o->mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, f ixed, paintInvalidationState); 1767 o->mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, f ixed);
1766 } 1768 }
1767 } 1769 }
1768 1770
1769 void RenderObject::computeFloatRectForPaintInvalidation(const RenderLayerModelOb ject*, FloatRect&, bool, const PaintInvalidationState*) const 1771 void RenderObject::computeFloatRectForPaintInvalidation(const RenderLayerModelOb ject*, FloatRect&, bool) const
1770 { 1772 {
1771 ASSERT_NOT_REACHED(); 1773 ASSERT_NOT_REACHED();
1772 } 1774 }
1773 1775
1774 void RenderObject::dirtyLinesFromChangedChild(RenderObject*) 1776 void RenderObject::dirtyLinesFromChangedChild(RenderObject*)
1775 { 1777 {
1776 } 1778 }
1777 1779
1778 #ifndef NDEBUG 1780 #ifndef NDEBUG
1779 1781
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 } 2311 }
2310 2312
2311 FloatQuad RenderObject::absoluteToLocalQuad(const FloatQuad& quad, MapCoordinate sFlags mode) const 2313 FloatQuad RenderObject::absoluteToLocalQuad(const FloatQuad& quad, MapCoordinate sFlags mode) const
2312 { 2314 {
2313 TransformState transformState(TransformState::UnapplyInverseTransformDirecti on, quad.boundingBox().center(), quad); 2315 TransformState transformState(TransformState::UnapplyInverseTransformDirecti on, quad.boundingBox().center(), quad);
2314 mapAbsoluteToLocalPoint(mode, transformState); 2316 mapAbsoluteToLocalPoint(mode, transformState);
2315 transformState.flatten(); 2317 transformState.flatten();
2316 return transformState.lastPlanarQuad(); 2318 return transformState.lastPlanarQuad();
2317 } 2319 }
2318 2320
2319 void RenderObject::mapLocalToContainer(const RenderLayerModelObject* paintInvali dationContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed, const PaintInvalidationState* paintInvalidationState) const 2321 void RenderObject::mapLocalToContainer(const RenderLayerModelObject* paintInvali dationContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed) const
2320 { 2322 {
2321 if (paintInvalidationContainer == this) 2323 if (paintInvalidationContainer == this)
2322 return; 2324 return;
2323 2325
2324 RenderObject* o = parent(); 2326 RenderObject* o = parent();
2325 if (!o) 2327 if (!o)
2326 return; 2328 return;
2327 2329
2328 // FIXME: this should call offsetFromContainer to share code, but I'm not su re it's ever called. 2330 // FIXME: this should call offsetFromContainer to share code, but I'm not su re it's ever called.
2329 LayoutPoint centerPoint = roundedLayoutPoint(transformState.mappedPoint()); 2331 LayoutPoint centerPoint = roundedLayoutPoint(transformState.mappedPoint());
2330 if (mode & ApplyContainerFlip && o->isBox()) { 2332 if (mode & ApplyContainerFlip && o->isBox()) {
2331 if (o->style()->isFlippedBlocksWritingMode()) 2333 if (o->style()->isFlippedBlocksWritingMode())
2332 transformState.move(toRenderBox(o)->flipForWritingModeIncludingColum ns(roundedLayoutPoint(transformState.mappedPoint())) - centerPoint); 2334 transformState.move(toRenderBox(o)->flipForWritingModeIncludingColum ns(roundedLayoutPoint(transformState.mappedPoint())) - centerPoint);
2333 mode &= ~ApplyContainerFlip; 2335 mode &= ~ApplyContainerFlip;
2334 } 2336 }
2335 2337
2336 transformState.move(o->columnOffset(roundedLayoutPoint(transformState.mapped Point()))); 2338 transformState.move(o->columnOffset(roundedLayoutPoint(transformState.mapped Point())));
2337 2339
2338 if (o->hasOverflowClip()) 2340 if (o->hasOverflowClip())
2339 transformState.move(-toRenderBox(o)->scrolledContentOffset()); 2341 transformState.move(-toRenderBox(o)->scrolledContentOffset());
2340 2342
2341 o->mapLocalToContainer(paintInvalidationContainer, transformState, mode, was Fixed, paintInvalidationState); 2343 o->mapLocalToContainer(paintInvalidationContainer, transformState, mode, was Fixed);
2342 } 2344 }
2343 2345
2344 const RenderObject* RenderObject::pushMappingToContainer(const RenderLayerModelO bject* ancestorToStopAt, RenderGeometryMap& geometryMap) const 2346 const RenderObject* RenderObject::pushMappingToContainer(const RenderLayerModelO bject* ancestorToStopAt, RenderGeometryMap& geometryMap) const
2345 { 2347 {
2346 ASSERT_UNUSED(ancestorToStopAt, ancestorToStopAt != this); 2348 ASSERT_UNUSED(ancestorToStopAt, ancestorToStopAt != this);
2347 2349
2348 RenderObject* container = parent(); 2350 RenderObject* container = parent();
2349 if (!container) 2351 if (!container)
2350 return 0; 2352 return 0;
2351 2353
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2402 { 2404 {
2403 // Track the point at the center of the quad's bounding box. As mapLocalToCo ntainer() calls offsetFromContainer(), 2405 // Track the point at the center of the quad's bounding box. As mapLocalToCo ntainer() calls offsetFromContainer(),
2404 // it will use that point as the reference point to decide which column's tr ansform to apply in multiple-column blocks. 2406 // it will use that point as the reference point to decide which column's tr ansform to apply in multiple-column blocks.
2405 TransformState transformState(TransformState::ApplyTransformDirection, local Quad.boundingBox().center(), localQuad); 2407 TransformState transformState(TransformState::ApplyTransformDirection, local Quad.boundingBox().center(), localQuad);
2406 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply ContainerFlip | UseTransforms, wasFixed); 2408 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply ContainerFlip | UseTransforms, wasFixed);
2407 transformState.flatten(); 2409 transformState.flatten();
2408 2410
2409 return transformState.lastPlanarQuad(); 2411 return transformState.lastPlanarQuad();
2410 } 2412 }
2411 2413
2412 FloatPoint RenderObject::localToContainerPoint(const FloatPoint& localPoint, con st RenderLayerModelObject* paintInvalidationContainer, MapCoordinatesFlags mode, bool* wasFixed, const PaintInvalidationState* paintInvalidationState) const 2414 FloatPoint RenderObject::localToContainerPoint(const FloatPoint& localPoint, con st RenderLayerModelObject* paintInvalidationContainer, MapCoordinatesFlags mode, bool* wasFixed) const
2413 { 2415 {
2414 TransformState transformState(TransformState::ApplyTransformDirection, local Point); 2416 TransformState transformState(TransformState::ApplyTransformDirection, local Point);
2415 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply ContainerFlip | UseTransforms, wasFixed, paintInvalidationState); 2417 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply ContainerFlip | UseTransforms, wasFixed);
2416 transformState.flatten(); 2418 transformState.flatten();
2417 2419
2418 return transformState.lastPlanarPoint(); 2420 return transformState.lastPlanarPoint();
2419 } 2421 }
2420 2422
2421 LayoutSize RenderObject::offsetFromContainer(const RenderObject* o, const Layout Point& point, bool* offsetDependsOnPoint) const 2423 LayoutSize RenderObject::offsetFromContainer(const RenderObject* o, const Layout Point& point, bool* offsetDependsOnPoint) const
2422 { 2424 {
2423 ASSERT(o == container()); 2425 ASSERT(o == container());
2424 2426
2425 LayoutSize offset = o->columnOffset(point); 2427 LayoutSize offset = o->columnOffset(point);
(...skipping 1019 matching lines...) Expand 10 before | Expand all | Expand 10 after
3445 { 3447 {
3446 if (object1) { 3448 if (object1) {
3447 const WebCore::RenderObject* root = object1; 3449 const WebCore::RenderObject* root = object1;
3448 while (root->parent()) 3450 while (root->parent())
3449 root = root->parent(); 3451 root = root->parent();
3450 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); 3452 root->showRenderTreeAndMark(object1, "*", object2, "-", 0);
3451 } 3453 }
3452 } 3454 }
3453 3455
3454 #endif 3456 #endif
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderObject.h ('k') | Source/core/rendering/RenderReplaced.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698