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

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

Issue 1813383002: Move all fast-path paint invalidation mapping into PaintInvalidationState (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reorganize conditions in PaintInvalidationState constructor Created 4 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 * (C) 1999 Lars Knoll (knoll@kde.org) 2 * (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Dirk Mueller (mueller@kde.org) 3 * (C) 2000 Dirk Mueller (mueller@kde.org)
4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) 5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net)
6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 1555 matching lines...) Expand 10 before | Expand all | Expand 10 after
1566 LayoutUnit logicalTop = firstTextBox()->logicalTopVisualOverflow(); 1566 LayoutUnit logicalTop = firstTextBox()->logicalTopVisualOverflow();
1567 LayoutUnit logicalWidth = logicalRightSide - logicalLeftSide; 1567 LayoutUnit logicalWidth = logicalRightSide - logicalLeftSide;
1568 LayoutUnit logicalHeight = lastTextBox()->logicalBottomVisualOverflow() - lo gicalTop; 1568 LayoutUnit logicalHeight = lastTextBox()->logicalBottomVisualOverflow() - lo gicalTop;
1569 1569
1570 LayoutRect rect(logicalLeftSide, logicalTop, logicalWidth, logicalHeight); 1570 LayoutRect rect(logicalLeftSide, logicalTop, logicalWidth, logicalHeight);
1571 if (!style()->isHorizontalWritingMode()) 1571 if (!style()->isHorizontalWritingMode())
1572 rect = rect.transposedRect(); 1572 rect = rect.transposedRect();
1573 return rect; 1573 return rect;
1574 } 1574 }
1575 1575
1576 LayoutRect LayoutText::clippedOverflowRectForPaintInvalidation(const LayoutBoxMo delObject* paintInvalidationContainer, const PaintInvalidationState* paintInvali dationState) const 1576 LayoutRect LayoutText::localOverflowRectForPaintInvalidation() const
1577 { 1577 {
1578 if (style()->visibility() != VISIBLE) 1578 if (style()->visibility() != VISIBLE)
1579 return LayoutRect(); 1579 return LayoutRect();
1580 1580
1581 LayoutRect paintInvalidationRect(visualOverflowRect()); 1581 return visualOverflowRect();
1582 mapToVisibleRectInAncestorSpace(paintInvalidationContainer, paintInvalidatio nRect, paintInvalidationState);
1583 return paintInvalidationRect;
1584 } 1582 }
1585 1583
1586 LayoutRect LayoutText::selectionRectForPaintInvalidation(const LayoutBoxModelObj ect* paintInvalidationContainer) const 1584 LayoutRect LayoutText::localSelectionRect() const
1587 { 1585 {
1588 ASSERT(!needsLayout()); 1586 ASSERT(!needsLayout());
1589 1587
1590 if (getSelectionState() == SelectionNone) 1588 if (getSelectionState() == SelectionNone)
1591 return LayoutRect(); 1589 return LayoutRect();
1592 LayoutBlock* cb = containingBlock(); 1590 LayoutBlock* cb = containingBlock();
1593 if (!cb) 1591 if (!cb)
1594 return LayoutRect(); 1592 return LayoutRect();
1595 1593
1596 // Now calculate startPos and endPos for painting selection. 1594 // Now calculate startPos and endPos for painting selection.
(...skipping 14 matching lines...) Expand all
1611 LayoutRect rect; 1609 LayoutRect rect;
1612 1610
1613 if (startPos == endPos) 1611 if (startPos == endPos)
1614 return rect; 1612 return rect;
1615 1613
1616 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) { 1614 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) {
1617 rect.unite(box->localSelectionRect(startPos, endPos)); 1615 rect.unite(box->localSelectionRect(startPos, endPos));
1618 rect.unite(LayoutRect(ellipsisRectForBox(box, startPos, endPos))); 1616 rect.unite(LayoutRect(ellipsisRectForBox(box, startPos, endPos)));
1619 } 1617 }
1620 1618
1621 mapToVisibleRectInAncestorSpace(paintInvalidationContainer, rect, 0);
1622 // FIXME: groupedMapping() leaks the squashing abstraction.
1623 if (paintInvalidationContainer->layer()->groupedMapping())
1624 PaintLayer::mapRectToPaintBackingCoordinates(paintInvalidationContainer, rect);
1625 return rect; 1619 return rect;
1626 } 1620 }
1627 1621
1628 int LayoutText::caretMinOffset() const 1622 int LayoutText::caretMinOffset() const
1629 { 1623 {
1630 InlineTextBox* box = firstTextBox(); 1624 InlineTextBox* box = firstTextBox();
1631 if (!box) 1625 if (!box)
1632 return 0; 1626 return 0;
1633 int minOffset = box->start(); 1627 int minOffset = box->start();
1634 for (box = box->nextTextBox(); box; box = box->nextTextBox()) 1628 for (box = box->nextTextBox(); box; box = box->nextTextBox())
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1751 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) { 1745 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) {
1752 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box, in validationReason); 1746 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box, in validationReason);
1753 if (box->truncation() != cNoTruncation) { 1747 if (box->truncation() != cNoTruncation) {
1754 if (EllipsisBox* ellipsisBox = box->root().ellipsisBox()) 1748 if (EllipsisBox* ellipsisBox = box->root().ellipsisBox())
1755 paintInvalidationContainer.invalidateDisplayItemClientOnBacking( *ellipsisBox, invalidationReason); 1749 paintInvalidationContainer.invalidateDisplayItemClientOnBacking( *ellipsisBox, invalidationReason);
1756 } 1750 }
1757 } 1751 }
1758 } 1752 }
1759 1753
1760 } // namespace blink 1754 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698