OLD | NEW |
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 1229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1240 { | 1240 { |
1241 if (!maxDepthToTest) | 1241 if (!maxDepthToTest) |
1242 return false; | 1242 return false; |
1243 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli
ng()) { | 1243 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli
ng()) { |
1244 if (!child->isBox()) | 1244 if (!child->isBox()) |
1245 continue; | 1245 continue; |
1246 LayoutBox* childBox = toLayoutBox(child); | 1246 LayoutBox* childBox = toLayoutBox(child); |
1247 if (!isCandidateForOpaquenessTest(*childBox)) | 1247 if (!isCandidateForOpaquenessTest(*childBox)) |
1248 continue; | 1248 continue; |
1249 LayoutPoint childLocation = childBox->location(); | 1249 LayoutPoint childLocation = childBox->location(); |
1250 if (childBox->isRelPositioned()) | 1250 if (childBox->isInFlowPositioned()) |
1251 childLocation.move(childBox->relativePositionOffset()); | 1251 childLocation.move(childBox->offsetForInFlowPosition()); |
1252 LayoutRect childLocalRect = localRect; | 1252 LayoutRect childLocalRect = localRect; |
1253 childLocalRect.moveBy(-childLocation); | 1253 childLocalRect.moveBy(-childLocation); |
1254 if (childLocalRect.y() < 0 || childLocalRect.x() < 0) { | 1254 if (childLocalRect.y() < 0 || childLocalRect.x() < 0) { |
1255 // If there is unobscured area above/left of a static positioned box
then the rect is probably not covered. | 1255 // If there is unobscured area above/left of a static positioned box
then the rect is probably not covered. |
1256 if (childBox->style()->position() == StaticPosition) | 1256 if (childBox->style()->position() == StaticPosition) |
1257 return false; | 1257 return false; |
1258 continue; | 1258 continue; |
1259 } | 1259 } |
1260 if (childLocalRect.maxY() > childBox->size().height() || childLocalRect.
maxX() > childBox->size().width()) | 1260 if (childLocalRect.maxY() > childBox->size().height() || childLocalRect.
maxX() > childBox->size().width()) |
1261 continue; | 1261 continue; |
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1608 } | 1608 } |
1609 | 1609 |
1610 LayoutBoxModelObject::mapAbsoluteToLocalPoint(mode, transformState); | 1610 LayoutBoxModelObject::mapAbsoluteToLocalPoint(mode, transformState); |
1611 } | 1611 } |
1612 | 1612 |
1613 LayoutSize LayoutBox::offsetFromContainer(const LayoutObject* o, const LayoutPoi
nt& point, bool* offsetDependsOnPoint) const | 1613 LayoutSize LayoutBox::offsetFromContainer(const LayoutObject* o, const LayoutPoi
nt& point, bool* offsetDependsOnPoint) const |
1614 { | 1614 { |
1615 ASSERT(o == container()); | 1615 ASSERT(o == container()); |
1616 | 1616 |
1617 LayoutSize offset; | 1617 LayoutSize offset; |
1618 if (isRelPositioned()) | 1618 if (isInFlowPositioned()) |
1619 offset += offsetForInFlowPosition(); | 1619 offset += offsetForInFlowPosition(); |
1620 | 1620 |
1621 if (!isInline() || isReplaced()) { | 1621 if (!isInline() || isReplaced()) { |
1622 offset += topLeftLocationOffset(); | 1622 offset += topLeftLocationOffset(); |
1623 if (o->isLayoutFlowThread()) { | 1623 if (o->isLayoutFlowThread()) { |
1624 // So far the point has been in flow thread coordinates (i.e. as if
everything in | 1624 // So far the point has been in flow thread coordinates (i.e. as if
everything in |
1625 // the fragmentation context lived in one tall single column). Conve
rt it to a | 1625 // the fragmentation context lived in one tall single column). Conve
rt it to a |
1626 // visual point now. | 1626 // visual point now. |
1627 LayoutPoint pointInContainer = point + offset; | 1627 LayoutPoint pointInContainer = point + offset; |
1628 offset += o->columnOffset(pointInContainer); | 1628 offset += o->columnOffset(pointInContainer); |
1629 if (offsetDependsOnPoint) | 1629 if (offsetDependsOnPoint) |
1630 *offsetDependsOnPoint = true; | 1630 *offsetDependsOnPoint = true; |
1631 } | 1631 } |
1632 } | 1632 } |
1633 | 1633 |
1634 if (o->hasOverflowClip()) | 1634 if (o->hasOverflowClip()) |
1635 offset -= toLayoutBox(o)->scrolledContentOffset(); | 1635 offset -= toLayoutBox(o)->scrolledContentOffset(); |
1636 | 1636 |
1637 if (style()->position() == AbsolutePosition && o->isRelPositioned() && o->is
LayoutInline()) | 1637 if (style()->position() == AbsolutePosition && o->isInFlowPositioned() && o-
>isLayoutInline()) |
1638 offset += toLayoutInline(o)->offsetForInFlowPositionedInline(*this); | 1638 offset += toLayoutInline(o)->offsetForInFlowPositionedInline(*this); |
1639 | 1639 |
1640 return offset; | 1640 return offset; |
1641 } | 1641 } |
1642 | 1642 |
1643 InlineBox* LayoutBox::createInlineBox() | 1643 InlineBox* LayoutBox::createInlineBox() |
1644 { | 1644 { |
1645 return new InlineBox(*this); | 1645 return new InlineBox(*this); |
1646 } | 1646 } |
1647 | 1647 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1686 } else if (isReplaced()) { | 1686 } else if (isReplaced()) { |
1687 // FIXME: the call to roundedLayoutPoint() below is temporary and should
be removed once | 1687 // FIXME: the call to roundedLayoutPoint() below is temporary and should
be removed once |
1688 // the transition to LayoutUnit-based types is complete (crbug.com/32123
7) | 1688 // the transition to LayoutUnit-based types is complete (crbug.com/32123
7) |
1689 setLocationAndUpdateOverflowControlsIfNeeded(box->topLeft()); | 1689 setLocationAndUpdateOverflowControlsIfNeeded(box->topLeft()); |
1690 setInlineBoxWrapper(box); | 1690 setInlineBoxWrapper(box); |
1691 } | 1691 } |
1692 } | 1692 } |
1693 | 1693 |
1694 void LayoutBox::moveWithEdgeOfInlineContainerIfNecessary(bool isHorizontal) | 1694 void LayoutBox::moveWithEdgeOfInlineContainerIfNecessary(bool isHorizontal) |
1695 { | 1695 { |
1696 ASSERT(isOutOfFlowPositioned() && container()->isLayoutInline() && container
()->isRelPositioned()); | 1696 ASSERT(isOutOfFlowPositioned() && container()->isLayoutInline() && container
()->isInFlowPositioned()); |
1697 // If this object is inside a relative positioned inline and its inline posi
tion is an explicit offset from the edge of its container | 1697 // If this object is inside a relative positioned inline and its inline posi
tion is an explicit offset from the edge of its container |
1698 // then it will need to move if its inline container has changed width. We d
o not track if the width has changed | 1698 // then it will need to move if its inline container has changed width. We d
o not track if the width has changed |
1699 // but if we are here then we are laying out lines inside it, so it probably
has - mark our object for layout so that it can | 1699 // but if we are here then we are laying out lines inside it, so it probably
has - mark our object for layout so that it can |
1700 // move to the new offset created by the new width. | 1700 // move to the new offset created by the new width. |
1701 if (!normalChildNeedsLayout() && !style()->hasStaticInlinePosition(isHorizon
tal)) | 1701 if (!normalChildNeedsLayout() && !style()->hasStaticInlinePosition(isHorizon
tal)) |
1702 setChildNeedsLayout(MarkOnlyThis); | 1702 setChildNeedsLayout(MarkOnlyThis); |
1703 } | 1703 } |
1704 | 1704 |
1705 void LayoutBox::deleteLineBoxWrapper() | 1705 void LayoutBox::deleteLineBoxWrapper() |
1706 { | 1706 { |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1792 topLeft.move(locationOffset()); | 1792 topLeft.move(locationOffset()); |
1793 | 1793 |
1794 // We are now in our parent container's coordinate space. Apply our transfo
rm to obtain a bounding box | 1794 // We are now in our parent container's coordinate space. Apply our transfo
rm to obtain a bounding box |
1795 // in the parent's coordinate space that encloses us. | 1795 // in the parent's coordinate space that encloses us. |
1796 if (hasLayer() && layer()->transform()) { | 1796 if (hasLayer() && layer()->transform()) { |
1797 rect = LayoutRect(layer()->transform()->mapRect(pixelSnappedIntRect(rect
))); | 1797 rect = LayoutRect(layer()->transform()->mapRect(pixelSnappedIntRect(rect
))); |
1798 topLeft = rect.location(); | 1798 topLeft = rect.location(); |
1799 topLeft.move(locationOffset()); | 1799 topLeft.move(locationOffset()); |
1800 } | 1800 } |
1801 | 1801 |
1802 if (position == AbsolutePosition && o->isRelPositioned() && o->isLayoutInlin
e()) { | 1802 if (position == AbsolutePosition && o->isInFlowPositioned() && o->isLayoutIn
line()) { |
1803 topLeft += toLayoutInline(o)->offsetForInFlowPositionedInline(*this); | 1803 topLeft += toLayoutInline(o)->offsetForInFlowPositionedInline(*this); |
1804 } else if (styleToUse.hasInFlowPosition() && layer()) { | 1804 } else if (styleToUse.hasInFlowPosition() && layer()) { |
1805 // Apply the relative position offset when invalidating a rectangle. Th
e layer | 1805 // Apply the relative position offset when invalidating a rectangle. Th
e layer |
1806 // is translated, but the layout box isn't, so we need to do this to get
the | 1806 // is translated, but the layout box isn't, so we need to do this to get
the |
1807 // right dirty rect. Since this is called from LayoutObject::setStyle,
the relative position | 1807 // right dirty rect. Since this is called from LayoutObject::setStyle,
the relative position |
1808 // flag on the LayoutObject has been cleared, so use the one on the styl
e(). | 1808 // flag on the LayoutObject has been cleared, so use the one on the styl
e(). |
1809 topLeft += layer()->offsetForInFlowPosition(); | 1809 topLeft += layer()->offsetForInFlowPosition(); |
1810 } | 1810 } |
1811 | 1811 |
1812 // FIXME: We ignore the lightweight clipping rect that controls use, since i
f |o| is in mid-layout, | 1812 // FIXME: We ignore the lightweight clipping rect that controls use, since i
f |o| is in mid-layout, |
(...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2715 return containingBlock->isHorizontalWritingMode() ? viewportSize.wid
th() : viewportSize.height(); | 2715 return containingBlock->isHorizontalWritingMode() ? viewportSize.wid
th() : viewportSize.height(); |
2716 } | 2716 } |
2717 } | 2717 } |
2718 | 2718 |
2719 if (hasOverrideContainingBlockLogicalWidth()) | 2719 if (hasOverrideContainingBlockLogicalWidth()) |
2720 return overrideContainingBlockContentLogicalWidth(); | 2720 return overrideContainingBlockContentLogicalWidth(); |
2721 | 2721 |
2722 if (containingBlock->isBox()) | 2722 if (containingBlock->isBox()) |
2723 return toLayoutBox(containingBlock)->clientLogicalWidth(); | 2723 return toLayoutBox(containingBlock)->clientLogicalWidth(); |
2724 | 2724 |
2725 ASSERT(containingBlock->isLayoutInline() && containingBlock->isRelPositioned
()); | 2725 ASSERT(containingBlock->isLayoutInline() && containingBlock->isInFlowPositio
ned()); |
2726 | 2726 |
2727 const LayoutInline* flow = toLayoutInline(containingBlock); | 2727 const LayoutInline* flow = toLayoutInline(containingBlock); |
2728 InlineFlowBox* first = flow->firstLineBox(); | 2728 InlineFlowBox* first = flow->firstLineBox(); |
2729 InlineFlowBox* last = flow->lastLineBox(); | 2729 InlineFlowBox* last = flow->lastLineBox(); |
2730 | 2730 |
2731 // If the containing block is empty, return a width of 0. | 2731 // If the containing block is empty, return a width of 0. |
2732 if (!first || !last) | 2732 if (!first || !last) |
2733 return LayoutUnit(); | 2733 return LayoutUnit(); |
2734 | 2734 |
2735 LayoutUnit fromLeft; | 2735 LayoutUnit fromLeft; |
(...skipping 26 matching lines...) Expand all Loading... |
2762 | 2762 |
2763 if (hasOverrideContainingBlockLogicalHeight()) | 2763 if (hasOverrideContainingBlockLogicalHeight()) |
2764 return overrideContainingBlockContentLogicalHeight(); | 2764 return overrideContainingBlockContentLogicalHeight(); |
2765 | 2765 |
2766 if (containingBlock->isBox()) { | 2766 if (containingBlock->isBox()) { |
2767 const LayoutBlock* cb = containingBlock->isLayoutBlock() ? | 2767 const LayoutBlock* cb = containingBlock->isLayoutBlock() ? |
2768 toLayoutBlock(containingBlock) : containingBlock->containingBlock(); | 2768 toLayoutBlock(containingBlock) : containingBlock->containingBlock(); |
2769 return cb->clientLogicalHeight(); | 2769 return cb->clientLogicalHeight(); |
2770 } | 2770 } |
2771 | 2771 |
2772 ASSERT(containingBlock->isLayoutInline() && containingBlock->isRelPositioned
()); | 2772 ASSERT(containingBlock->isLayoutInline() && containingBlock->isInFlowPositio
ned()); |
2773 | 2773 |
2774 const LayoutInline* flow = toLayoutInline(containingBlock); | 2774 const LayoutInline* flow = toLayoutInline(containingBlock); |
2775 InlineFlowBox* first = flow->firstLineBox(); | 2775 InlineFlowBox* first = flow->firstLineBox(); |
2776 InlineFlowBox* last = flow->lastLineBox(); | 2776 InlineFlowBox* last = flow->lastLineBox(); |
2777 | 2777 |
2778 // If the containing block is empty, return a height of 0. | 2778 // If the containing block is empty, return a height of 0. |
2779 if (!first || !last) | 2779 if (!first || !last) |
2780 return LayoutUnit(); | 2780 return LayoutUnit(); |
2781 | 2781 |
2782 LayoutUnit heightResult; | 2782 LayoutUnit heightResult; |
(...skipping 10 matching lines...) Expand all Loading... |
2793 { | 2793 { |
2794 if (!logicalLeft.isAuto() || !logicalRight.isAuto()) | 2794 if (!logicalLeft.isAuto() || !logicalRight.isAuto()) |
2795 return; | 2795 return; |
2796 | 2796 |
2797 // FIXME: The static distance computation has not been patched for mixed wri
ting modes yet. | 2797 // FIXME: The static distance computation has not been patched for mixed wri
ting modes yet. |
2798 if (child->parent()->style()->direction() == LTR) { | 2798 if (child->parent()->style()->direction() == LTR) { |
2799 LayoutUnit staticPosition = child->layer()->staticInlinePosition() - con
tainerBlock->borderLogicalLeft(); | 2799 LayoutUnit staticPosition = child->layer()->staticInlinePosition() - con
tainerBlock->borderLogicalLeft(); |
2800 for (LayoutObject* curr = child->parent(); curr && curr != containerBloc
k; curr = curr->container()) { | 2800 for (LayoutObject* curr = child->parent(); curr && curr != containerBloc
k; curr = curr->container()) { |
2801 if (curr->isBox()) { | 2801 if (curr->isBox()) { |
2802 staticPosition += toLayoutBox(curr)->logicalLeft(); | 2802 staticPosition += toLayoutBox(curr)->logicalLeft(); |
2803 if (toLayoutBox(curr)->isRelPositioned()) | 2803 if (toLayoutBox(curr)->isInFlowPositioned()) |
2804 staticPosition += toLayoutBox(curr)->relativePositionOffset(
).width(); | 2804 staticPosition += toLayoutBox(curr)->offsetForInFlowPosition
().width(); |
2805 } else if (curr->isInline()) { | 2805 } else if (curr->isInline()) { |
2806 if (curr->isRelPositioned()) { | 2806 if (curr->isInFlowPositioned()) { |
2807 if (!curr->style()->logicalLeft().isAuto()) | 2807 if (!curr->style()->logicalLeft().isAuto()) |
2808 staticPosition += valueForLength(curr->style()->logicalL
eft(), curr->containingBlock()->availableWidth()); | 2808 staticPosition += valueForLength(curr->style()->logicalL
eft(), curr->containingBlock()->availableWidth()); |
2809 else | 2809 else |
2810 staticPosition -= valueForLength(curr->style()->logicalR
ight(), curr->containingBlock()->availableWidth()); | 2810 staticPosition -= valueForLength(curr->style()->logicalR
ight(), curr->containingBlock()->availableWidth()); |
2811 } | 2811 } |
2812 } | 2812 } |
2813 } | 2813 } |
2814 logicalLeft.setValue(Fixed, staticPosition); | 2814 logicalLeft.setValue(Fixed, staticPosition); |
2815 } else { | 2815 } else { |
2816 LayoutBox* enclosingBox = child->parent()->enclosingBox(); | 2816 LayoutBox* enclosingBox = child->parent()->enclosingBox(); |
2817 LayoutUnit staticPosition = child->layer()->staticInlinePosition() + con
tainerLogicalWidth + containerBlock->borderLogicalLeft(); | 2817 LayoutUnit staticPosition = child->layer()->staticInlinePosition() + con
tainerLogicalWidth + containerBlock->borderLogicalLeft(); |
2818 for (LayoutObject* curr = child->parent(); curr; curr = curr->container(
)) { | 2818 for (LayoutObject* curr = child->parent(); curr; curr = curr->container(
)) { |
2819 if (curr->isBox()) { | 2819 if (curr->isBox()) { |
2820 if (curr != containerBlock) { | 2820 if (curr != containerBlock) { |
2821 staticPosition -= toLayoutBox(curr)->logicalLeft(); | 2821 staticPosition -= toLayoutBox(curr)->logicalLeft(); |
2822 if (toLayoutBox(curr)->isRelPositioned()) | 2822 if (toLayoutBox(curr)->isInFlowPositioned()) |
2823 staticPosition -= toLayoutBox(curr)->relativePositionOff
set().width(); | 2823 staticPosition -= toLayoutBox(curr)->offsetForInFlowPosi
tion().width(); |
2824 } | 2824 } |
2825 if (curr == enclosingBox) | 2825 if (curr == enclosingBox) |
2826 staticPosition -= enclosingBox->logicalWidth(); | 2826 staticPosition -= enclosingBox->logicalWidth(); |
2827 } else if (curr->isInline()) { | 2827 } else if (curr->isInline()) { |
2828 if (curr->isRelPositioned()) { | 2828 if (curr->isInFlowPositioned()) { |
2829 if (!curr->style()->logicalLeft().isAuto()) | 2829 if (!curr->style()->logicalLeft().isAuto()) |
2830 staticPosition -= valueForLength(curr->style()->logicalL
eft(), curr->containingBlock()->availableWidth()); | 2830 staticPosition -= valueForLength(curr->style()->logicalL
eft(), curr->containingBlock()->availableWidth()); |
2831 else | 2831 else |
2832 staticPosition += valueForLength(curr->style()->logicalR
ight(), curr->containingBlock()->availableWidth()); | 2832 staticPosition += valueForLength(curr->style()->logicalR
ight(), curr->containingBlock()->availableWidth()); |
2833 } | 2833 } |
2834 } | 2834 } |
2835 if (curr == containerBlock) | 2835 if (curr == containerBlock) |
2836 break; | 2836 break; |
2837 } | 2837 } |
2838 logicalRight.setValue(Fixed, staticPosition); | 2838 logicalRight.setValue(Fixed, staticPosition); |
(...skipping 1560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4399 LayoutRect rect = borderBoxRect(); | 4399 LayoutRect rect = borderBoxRect(); |
4400 // We want to include the margin, but only when it adds height. Quirky margi
ns don't contribute height | 4400 // We want to include the margin, but only when it adds height. Quirky margi
ns don't contribute height |
4401 // nor do the margins of self-collapsing blocks. | 4401 // nor do the margins of self-collapsing blocks. |
4402 if (!styleRef().hasMarginAfterQuirk() && !isSelfCollapsingBlock()) | 4402 if (!styleRef().hasMarginAfterQuirk() && !isSelfCollapsingBlock()) |
4403 rect.expand(isHorizontalWritingMode() ? LayoutSize(LayoutUnit(), marginA
fter()) : LayoutSize(marginAfter(), LayoutUnit())); | 4403 rect.expand(isHorizontalWritingMode() ? LayoutSize(LayoutUnit(), marginA
fter()) : LayoutSize(marginAfter(), LayoutUnit())); |
4404 | 4404 |
4405 if (!hasOverflowClip()) | 4405 if (!hasOverflowClip()) |
4406 rect.unite(layoutOverflowRect()); | 4406 rect.unite(layoutOverflowRect()); |
4407 | 4407 |
4408 bool hasTransform = hasLayer() && layer()->transform(); | 4408 bool hasTransform = hasLayer() && layer()->transform(); |
4409 if (isRelPositioned() || hasTransform) { | 4409 if (isInFlowPositioned() || hasTransform) { |
4410 // If we are relatively positioned or if we have a transform, then we ha
ve to convert | 4410 // If we are relatively positioned or if we have a transform, then we ha
ve to convert |
4411 // this rectangle into physical coordinates, apply relative positioning
and transforms | 4411 // this rectangle into physical coordinates, apply relative positioning
and transforms |
4412 // to it, and then convert it back. | 4412 // to it, and then convert it back. |
4413 flipForWritingMode(rect); | 4413 flipForWritingMode(rect); |
4414 | 4414 |
4415 if (hasTransform) | 4415 if (hasTransform) |
4416 rect = layer()->currentTransform().mapRect(rect); | 4416 rect = layer()->currentTransform().mapRect(rect); |
4417 | 4417 |
4418 if (isRelPositioned()) | 4418 if (isInFlowPositioned()) |
4419 rect.move(offsetForInFlowPosition()); | 4419 rect.move(offsetForInFlowPosition()); |
4420 | 4420 |
4421 // Now we need to flip back. | 4421 // Now we need to flip back. |
4422 flipForWritingMode(rect); | 4422 flipForWritingMode(rect); |
4423 } | 4423 } |
4424 | 4424 |
4425 // If the writing modes of the child and parent match, then we don't have to | 4425 // If the writing modes of the child and parent match, then we don't have to |
4426 // do anything fancy. Just return the result. | 4426 // do anything fancy. Just return the result. |
4427 if (parentStyle.writingMode() == style()->writingMode()) | 4427 if (parentStyle.writingMode() == style()->writingMode()) |
4428 return rect; | 4428 return rect; |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4756 StyleImage* borderImage = style()->borderImage().image(); | 4756 StyleImage* borderImage = style()->borderImage().image(); |
4757 return borderImage && borderImage->canRender(*this, style()->effectiveZoom()
) && borderImage->isLoaded(); | 4757 return borderImage && borderImage->canRender(*this, style()->effectiveZoom()
) && borderImage->isLoaded(); |
4758 } | 4758 } |
4759 | 4759 |
4760 ShapeOutsideInfo* LayoutBox::shapeOutsideInfo() const | 4760 ShapeOutsideInfo* LayoutBox::shapeOutsideInfo() const |
4761 { | 4761 { |
4762 return ShapeOutsideInfo::isEnabledFor(*this) ? ShapeOutsideInfo::info(*this)
: nullptr; | 4762 return ShapeOutsideInfo::isEnabledFor(*this) ? ShapeOutsideInfo::info(*this)
: nullptr; |
4763 } | 4763 } |
4764 | 4764 |
4765 } // namespace blink | 4765 } // namespace blink |
OLD | NEW |