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

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

Issue 2536453002: Rename some functions about layout locations (Closed)
Patch Set: Rebase Created 4 years 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) 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. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc.
7 * All rights reserved. 7 * All rights reserved.
8 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 8 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
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 1954 matching lines...) Expand 10 before | Expand all | Expand 10 after
1965 LayoutBoxModelObject::mapAncestorToLocal(ancestor, transformState, mode); 1965 LayoutBoxModelObject::mapAncestorToLocal(ancestor, transformState, mode);
1966 } 1966 }
1967 1967
1968 LayoutSize LayoutBox::offsetFromContainer(const LayoutObject* o) const { 1968 LayoutSize LayoutBox::offsetFromContainer(const LayoutObject* o) const {
1969 ASSERT(o == container()); 1969 ASSERT(o == container());
1970 1970
1971 LayoutSize offset; 1971 LayoutSize offset;
1972 if (isInFlowPositioned()) 1972 if (isInFlowPositioned())
1973 offset += offsetForInFlowPosition(); 1973 offset += offsetForInFlowPosition();
1974 1974
1975 offset += topLeftLocationOffset(); 1975 offset += physicalLocationOffset();
1976 1976
1977 if (o->hasOverflowClip()) 1977 if (o->hasOverflowClip())
1978 offset -= toLayoutBox(o)->scrolledContentOffset(); 1978 offset -= toLayoutBox(o)->scrolledContentOffset();
1979 1979
1980 if (style()->position() == AbsolutePosition && o->isInFlowPositioned() && 1980 if (style()->position() == AbsolutePosition && o->isInFlowPositioned() &&
1981 o->isLayoutInline()) 1981 o->isLayoutInline())
1982 offset += toLayoutInline(o)->offsetForInFlowPositionedInline(*this); 1982 offset += toLayoutInline(o)->offsetForInFlowPositionedInline(*this);
1983 1983
1984 return offset; 1984 return offset;
1985 } 1985 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2018 layer()->setStaticBlockPosition(box->logicalTop()); 2018 layer()->setStaticBlockPosition(box->logicalTop());
2019 } 2019 }
2020 2020
2021 if (container()->isLayoutInline()) 2021 if (container()->isLayoutInline())
2022 moveWithEdgeOfInlineContainerIfNecessary(box->isHorizontal()); 2022 moveWithEdgeOfInlineContainerIfNecessary(box->isHorizontal());
2023 2023
2024 // Nuke the box. 2024 // Nuke the box.
2025 box->remove(DontMarkLineBoxes); 2025 box->remove(DontMarkLineBoxes);
2026 box->destroy(); 2026 box->destroy();
2027 } else if (isAtomicInlineLevel()) { 2027 } else if (isAtomicInlineLevel()) {
2028 setLocationAndUpdateOverflowControlsIfNeeded(box->topLeft()); 2028 setLocationAndUpdateOverflowControlsIfNeeded(box->location());
2029 setInlineBoxWrapper(box); 2029 setInlineBoxWrapper(box);
2030 } 2030 }
2031 } 2031 }
2032 2032
2033 void LayoutBox::moveWithEdgeOfInlineContainerIfNecessary(bool isHorizontal) { 2033 void LayoutBox::moveWithEdgeOfInlineContainerIfNecessary(bool isHorizontal) {
2034 ASSERT(isOutOfFlowPositioned() && container()->isLayoutInline() && 2034 ASSERT(isOutOfFlowPositioned() && container()->isLayoutInline() &&
2035 container()->isInFlowPositioned()); 2035 container()->isInFlowPositioned());
2036 // If this object is inside a relative positioned inline and its inline 2036 // If this object is inside a relative positioned inline and its inline
2037 // position is an explicit offset from the edge of its container then it will 2037 // position is an explicit offset from the edge of its container then it will
2038 // need to move if its inline container has changed width. We do not track if 2038 // need to move if its inline container has changed width. We do not track if
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
2312 // Use enclosingIntRect because we cannot properly compute pixel snapping 2312 // Use enclosingIntRect because we cannot properly compute pixel snapping
2313 // for painted elements within the transform since we don't know the desired 2313 // for painted elements within the transform since we don't know the desired
2314 // subpixel accumulation at this point, and the transform may include a 2314 // subpixel accumulation at this point, and the transform may include a
2315 // scale. 2315 // scale.
2316 FloatRect floatRect = 2316 FloatRect floatRect =
2317 rect.isEmpty() ? FloatRect(rect) : FloatRect(enclosingIntRect(rect)); 2317 rect.isEmpty() ? FloatRect(rect) : FloatRect(enclosingIntRect(rect));
2318 rect = LayoutRect(layer()->transform()->mapRect(floatRect)); 2318 rect = LayoutRect(layer()->transform()->mapRect(floatRect));
2319 } 2319 }
2320 LayoutPoint topLeft = rect.location(); 2320 LayoutPoint topLeft = rect.location();
2321 if (container->isBox()) { 2321 if (container->isBox()) {
2322 topLeft.moveBy(topLeftLocation(toLayoutBox(container))); 2322 topLeft.moveBy(physicalLocation(toLayoutBox(container)));
2323 // If the row is the ancestor, however, add its offset back in. In effect, 2323 // If the row is the ancestor, however, add its offset back in. In effect,
2324 // this passes from the joint <td> / <tr> coordinate space to the parent 2324 // this passes from the joint <td> / <tr> coordinate space to the parent
2325 // space, then back to <tr> / <td>. 2325 // space, then back to <tr> / <td>.
2326 if (tableRowContainer) 2326 if (tableRowContainer) {
2327 topLeft.moveBy( 2327 topLeft.moveBy(
2328 -tableRowContainer->topLeftLocation(toLayoutBox(container))); 2328 -tableRowContainer->physicalLocation(toLayoutBox(container)));
2329 }
2329 } else if (container->isRuby()) { 2330 } else if (container->isRuby()) {
2330 // TODO(wkorman): Generalize Ruby specialization and/or document more 2331 // TODO(wkorman): Generalize Ruby specialization and/or document more
2331 // clearly. See the accompanying specialization in 2332 // clearly. See the accompanying specialization in
2332 // LayoutInline::mapToVisualRectInAncestorSpace. 2333 // LayoutInline::mapToVisualRectInAncestorSpace.
2333 topLeft.moveBy(topLeftLocation()); 2334 topLeft.moveBy(physicalLocation());
2334 } else { 2335 } else {
2335 topLeft.moveBy(location()); 2336 topLeft.moveBy(location());
2336 } 2337 }
2337 2338
2338 const ComputedStyle& styleToUse = styleRef(); 2339 const ComputedStyle& styleToUse = styleRef();
2339 EPosition position = styleToUse.position(); 2340 EPosition position = styleToUse.position();
2340 if (position == AbsolutePosition && container->isInFlowPositioned() && 2341 if (position == AbsolutePosition && container->isInFlowPositioned() &&
2341 container->isLayoutInline()) { 2342 container->isLayoutInline()) {
2342 topLeft += 2343 topLeft +=
2343 toLayoutInline(container)->offsetForInFlowPositionedInline(*this); 2344 toLayoutInline(container)->offsetForInFlowPositionedInline(*this);
(...skipping 2805 matching lines...) Expand 10 before | Expand all | Expand 10 after
5149 LayoutRect LayoutBox::visualOverflowRect() const { 5150 LayoutRect LayoutBox::visualOverflowRect() const {
5150 if (!m_overflow) 5151 if (!m_overflow)
5151 return borderBoxRect(); 5152 return borderBoxRect();
5152 if (hasOverflowClip()) 5153 if (hasOverflowClip())
5153 return m_overflow->selfVisualOverflowRect(); 5154 return m_overflow->selfVisualOverflowRect();
5154 return unionRect(m_overflow->selfVisualOverflowRect(), 5155 return unionRect(m_overflow->selfVisualOverflowRect(),
5155 m_overflow->contentsVisualOverflowRect()); 5156 m_overflow->contentsVisualOverflowRect());
5156 } 5157 }
5157 5158
5158 LayoutUnit LayoutBox::offsetLeft(const Element* parent) const { 5159 LayoutUnit LayoutBox::offsetLeft(const Element* parent) const {
5159 return adjustedPositionRelativeTo(topLeftLocation(), parent).x(); 5160 return adjustedPositionRelativeTo(physicalLocation(), parent).x();
5160 } 5161 }
5161 5162
5162 LayoutUnit LayoutBox::offsetTop(const Element* parent) const { 5163 LayoutUnit LayoutBox::offsetTop(const Element* parent) const {
5163 return adjustedPositionRelativeTo(topLeftLocation(), parent).y(); 5164 return adjustedPositionRelativeTo(physicalLocation(), parent).y();
5164 } 5165 }
5165 5166
5166 LayoutPoint LayoutBox::flipForWritingModeForChild( 5167 LayoutPoint LayoutBox::flipForWritingModeForChild(
5167 const LayoutBox* child, 5168 const LayoutBox* child,
5168 const LayoutPoint& point) const { 5169 const LayoutPoint& point) const {
5169 if (!style()->isFlippedBlocksWritingMode()) 5170 if (!style()->isFlippedBlocksWritingMode())
5170 return point; 5171 return point;
5171 5172
5172 // The child is going to add in its x(), so we have to make sure it ends up in 5173 // The child is going to add in its x(), so we have to make sure it ends up in
5173 // the right place. 5174 // the right place.
5174 return LayoutPoint(point.x() + size().width() - child->size().width() - 5175 return LayoutPoint(point.x() + size().width() - child->size().width() -
5175 (2 * child->location().x()), 5176 (2 * child->location().x()),
5176 point.y()); 5177 point.y());
5177 } 5178 }
5178 5179
5179 LayoutBox* LayoutBox::locationContainer() const { 5180 LayoutBox* LayoutBox::locationContainer() const {
5180 // Location of a non-root SVG object derived from LayoutBox should not be 5181 // Location of a non-root SVG object derived from LayoutBox should not be
5181 // affected by writing-mode of the containing box (SVGRoot). 5182 // affected by writing-mode of the containing box (SVGRoot).
5182 if (isSVG() && !isSVGRoot()) 5183 if (isSVG() && !isSVGRoot())
5183 return nullptr; 5184 return nullptr;
5184 5185
5185 // Normally the box's location is relative to its containing box. 5186 // Normally the box's location is relative to its containing box.
5186 LayoutObject* container = this->container(); 5187 LayoutObject* container = this->container();
5187 while (container && !container->isBox()) 5188 while (container && !container->isBox())
5188 container = container->container(); 5189 container = container->container();
5189 return toLayoutBox(container); 5190 return toLayoutBox(container);
5190 } 5191 }
5191 5192
5192 LayoutPoint LayoutBox::topLeftLocation( 5193 LayoutPoint LayoutBox::physicalLocation(
5193 const LayoutBox* flippedBlocksContainer) const { 5194 const LayoutBox* flippedBlocksContainer) const {
5194 const LayoutBox* containerBox; 5195 const LayoutBox* containerBox;
5195 if (flippedBlocksContainer) { 5196 if (flippedBlocksContainer) {
5196 DCHECK(flippedBlocksContainer == locationContainer()); 5197 DCHECK(flippedBlocksContainer == locationContainer());
5197 containerBox = flippedBlocksContainer; 5198 containerBox = flippedBlocksContainer;
5198 } else { 5199 } else {
5199 containerBox = locationContainer(); 5200 containerBox = locationContainer();
5200 } 5201 }
5201 if (!containerBox) 5202 if (!containerBox)
5202 return location(); 5203 return location();
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
5624 LayoutRect rect = frameRect(); 5625 LayoutRect rect = frameRect();
5625 5626
5626 LayoutBlock* block = containingBlock(); 5627 LayoutBlock* block = containingBlock();
5627 if (block) 5628 if (block)
5628 block->adjustChildDebugRect(rect); 5629 block->adjustChildDebugRect(rect);
5629 5630
5630 return rect; 5631 return rect;
5631 } 5632 }
5632 5633
5633 } // namespace blink 5634 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBox.h ('k') | third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698