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

Side by Side Diff: Source/core/layout/LayoutBox.cpp

Issue 1158183006: Remove the old multicol implementation. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase master Created 5 years, 6 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/layout/LayoutBox.h ('k') | Source/core/layout/LayoutBoxModelObject.cpp » ('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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 1647 matching lines...) Expand 10 before | Expand all | Expand 10 after
1658 1658
1659 LayoutSize LayoutBox::offsetFromContainer(const LayoutObject* o, const LayoutPoi nt& point, bool* offsetDependsOnPoint) const 1659 LayoutSize LayoutBox::offsetFromContainer(const LayoutObject* o, const LayoutPoi nt& point, bool* offsetDependsOnPoint) const
1660 { 1660 {
1661 ASSERT(o == container()); 1661 ASSERT(o == container());
1662 1662
1663 LayoutSize offset; 1663 LayoutSize offset;
1664 if (isRelPositioned()) 1664 if (isRelPositioned())
1665 offset += offsetForInFlowPosition(); 1665 offset += offsetForInFlowPosition();
1666 1666
1667 if (!isInline() || isReplaced()) { 1667 if (!isInline() || isReplaced()) {
1668 if (!style()->hasOutOfFlowPosition() && o->hasColumns()) { 1668 offset += topLeftLocationOffset();
1669 const LayoutBlock* block = toLayoutBlock(o); 1669 if (o->isLayoutFlowThread()) {
1670 LayoutRect columnRect(frameRect()); 1670 // So far the point has been in flow thread coordinates (i.e. as if everything in
1671 block->adjustStartEdgeForWritingModeIncludingColumns(columnRect); 1671 // the fragmentation context lived in one tall single column). Conve rt it to a
1672 offset += toSize(columnRect.location()); 1672 // visual point now.
1673 LayoutPoint columnPoint = block->flipForWritingModeIncludingColumns( point + offset); 1673 LayoutPoint pointInContainer = point + offset;
1674 offset = toLayoutSize(block->flipForWritingModeIncludingColumns(toLa youtPoint(offset))); 1674 offset += o->columnOffset(pointInContainer);
1675 offset += o->columnOffset(columnPoint);
1676 offset = block->flipForWritingMode(offset);
1677
1678 if (offsetDependsOnPoint) 1675 if (offsetDependsOnPoint)
1679 *offsetDependsOnPoint = true; 1676 *offsetDependsOnPoint = true;
1680 } else {
1681 offset += topLeftLocationOffset();
1682 if (o->isLayoutFlowThread()) {
1683 // So far the point has been in flow thread coordinates (i.e. as if everything in
1684 // the fragmentation context lived in one tall single column). C onvert it to a
1685 // visual point now.
1686 LayoutPoint pointInContainer = point + offset;
1687 offset += o->columnOffset(pointInContainer);
1688 if (offsetDependsOnPoint)
1689 *offsetDependsOnPoint = true;
1690 }
1691 } 1677 }
1692 } 1678 }
1693 1679
1694 if (o->hasOverflowClip()) 1680 if (o->hasOverflowClip())
1695 offset -= toLayoutBox(o)->scrolledContentOffset(); 1681 offset -= toLayoutBox(o)->scrolledContentOffset();
1696 1682
1697 if (style()->position() == AbsolutePosition && o->isRelPositioned() && o->is LayoutInline()) 1683 if (style()->position() == AbsolutePosition && o->isRelPositioned() && o->is LayoutInline())
1698 offset += toLayoutInline(o)->offsetForInFlowPositionedInline(*this); 1684 offset += toLayoutInline(o)->offsetForInFlowPositionedInline(*this);
1699 1685
1700 return offset; 1686 return offset;
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1862 if (position == AbsolutePosition && o->isRelPositioned() && o->isLayoutInlin e()) { 1848 if (position == AbsolutePosition && o->isRelPositioned() && o->isLayoutInlin e()) {
1863 topLeft += toLayoutInline(o)->offsetForInFlowPositionedInline(*this); 1849 topLeft += toLayoutInline(o)->offsetForInFlowPositionedInline(*this);
1864 } else if (styleToUse.hasInFlowPosition() && layer()) { 1850 } else if (styleToUse.hasInFlowPosition() && layer()) {
1865 // Apply the relative position offset when invalidating a rectangle. Th e layer 1851 // Apply the relative position offset when invalidating a rectangle. Th e layer
1866 // is translated, but the layout box isn't, so we need to do this to get the 1852 // is translated, but the layout box isn't, so we need to do this to get the
1867 // right dirty rect. Since this is called from LayoutObject::setStyle, the relative position 1853 // right dirty rect. Since this is called from LayoutObject::setStyle, the relative position
1868 // flag on the LayoutObject has been cleared, so use the one on the styl e(). 1854 // flag on the LayoutObject has been cleared, so use the one on the styl e().
1869 topLeft += layer()->offsetForInFlowPosition(); 1855 topLeft += layer()->offsetForInFlowPosition();
1870 } 1856 }
1871 1857
1872 if (position != AbsolutePosition && position != FixedPosition && o->hasColum ns() && o->isLayoutBlockFlow()) {
1873 LayoutRect paintInvalidationRect(topLeft, rect.size());
1874 toLayoutBlock(o)->adjustRectForColumns(paintInvalidationRect);
1875 topLeft = paintInvalidationRect.location();
1876 rect = paintInvalidationRect;
1877 }
1878
1879 // FIXME: We ignore the lightweight clipping rect that controls use, since i f |o| is in mid-layout, 1858 // FIXME: We ignore the lightweight clipping rect that controls use, since i f |o| is in mid-layout,
1880 // its controlClipRect will be wrong. For overflow clip we use the values ca ched by the layer. 1859 // its controlClipRect will be wrong. For overflow clip we use the values ca ched by the layer.
1881 rect.setLocation(topLeft); 1860 rect.setLocation(topLeft);
1882 if (o->hasOverflowClip()) { 1861 if (o->hasOverflowClip()) {
1883 LayoutBox* containerBox = toLayoutBox(o); 1862 LayoutBox* containerBox = toLayoutBox(o);
1884 containerBox->applyCachedClipAndScrollOffsetForPaintInvalidation(rect); 1863 containerBox->applyCachedClipAndScrollOffsetForPaintInvalidation(rect);
1885 if (rect.isEmpty()) 1864 if (rect.isEmpty())
1886 return; 1865 return;
1887 } 1866 }
1888 1867
(...skipping 2660 matching lines...) Expand 10 before | Expand all | Expand 10 after
4549 if (!style()->isFlippedBlocksWritingMode()) 4528 if (!style()->isFlippedBlocksWritingMode())
4550 return point; 4529 return point;
4551 4530
4552 // The child is going to add in its x() and y(), so we have to make sure it ends up in 4531 // The child is going to add in its x() and y(), so we have to make sure it ends up in
4553 // the right place. 4532 // the right place.
4554 if (isHorizontalWritingMode()) 4533 if (isHorizontalWritingMode())
4555 return LayoutPoint(point.x(), point.y() + size().height() - child->size( ).height() - (2 * child->location().y())); 4534 return LayoutPoint(point.x(), point.y() + size().height() - child->size( ).height() - (2 * child->location().y()));
4556 return LayoutPoint(point.x() + size().width() - child->size().width() - (2 * child->location().x()), point.y()); 4535 return LayoutPoint(point.x() + size().width() - child->size().width() - (2 * child->location().x()), point.y());
4557 } 4536 }
4558 4537
4559 LayoutPoint LayoutBox::flipForWritingModeIncludingColumns(const LayoutPoint& poi nt) const
4560 {
4561 if (!hasColumns() || !style()->isFlippedBlocksWritingMode())
4562 return flipForWritingMode(point);
4563 return toLayoutBlock(this)->flipForWritingModeIncludingColumns(point);
4564 }
4565
4566 LayoutPoint LayoutBox::topLeftLocation() const 4538 LayoutPoint LayoutBox::topLeftLocation() const
4567 { 4539 {
4568 LayoutBlock* containerBlock = containingBlock(); 4540 LayoutBlock* containerBlock = containingBlock();
4569 if (!containerBlock || containerBlock == this) 4541 if (!containerBlock || containerBlock == this)
4570 return location(); 4542 return location();
4571 return containerBlock->flipForWritingModeForChild(this, location()); 4543 return containerBlock->flipForWritingModeForChild(this, location());
4572 } 4544 }
4573 4545
4574 bool LayoutBox::hasRelativeLogicalWidth() const 4546 bool LayoutBox::hasRelativeLogicalWidth() const
4575 { 4547 {
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
4821 bool LayoutBox::canRenderBorderImage() const 4793 bool LayoutBox::canRenderBorderImage() const
4822 { 4794 {
4823 if (!style()->hasBorder()) 4795 if (!style()->hasBorder())
4824 return false; 4796 return false;
4825 4797
4826 StyleImage* borderImage = style()->borderImage().image(); 4798 StyleImage* borderImage = style()->borderImage().image();
4827 return borderImage && borderImage->canRender(*this, style()->effectiveZoom() ) && borderImage->isLoaded(); 4799 return borderImage && borderImage->canRender(*this, style()->effectiveZoom() ) && borderImage->isLoaded();
4828 } 4800 }
4829 4801
4830 } // namespace blink 4802 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutBox.h ('k') | Source/core/layout/LayoutBoxModelObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698