OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights
reserved. |
3 * | 3 * |
4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
8 * | 8 * |
9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 if (shouldClearDescendantsHaveSameLineHeightAndBaseline) | 155 if (shouldClearDescendantsHaveSameLineHeightAndBaseline) |
156 clearDescendantsHaveSameLineHeightAndBaseline(); | 156 clearDescendantsHaveSameLineHeightAndBaseline(); |
157 } | 157 } |
158 | 158 |
159 if (!child->renderer().isOutOfFlowPositioned()) { | 159 if (!child->renderer().isOutOfFlowPositioned()) { |
160 if (child->isText()) { | 160 if (child->isText()) { |
161 const LayoutStyle& childStyle = child->renderer().styleRef(isFirstLi
neStyle()); | 161 const LayoutStyle& childStyle = child->renderer().styleRef(isFirstLi
neStyle()); |
162 if (childStyle.letterSpacing() < 0 || childStyle.textShadow() || chi
ldStyle.textEmphasisMark() != TextEmphasisMarkNone || childStyle.textStrokeWidth
()) | 162 if (childStyle.letterSpacing() < 0 || childStyle.textShadow() || chi
ldStyle.textEmphasisMark() != TextEmphasisMarkNone || childStyle.textStrokeWidth
()) |
163 child->clearKnownToHaveNoOverflow(); | 163 child->clearKnownToHaveNoOverflow(); |
164 } else if (child->renderer().isReplaced()) { | 164 } else if (child->renderer().isReplaced()) { |
165 RenderBox& box = toRenderBox(child->renderer()); | 165 LayoutBox& box = toLayoutBox(child->renderer()); |
166 if (box.hasRenderOverflow() || box.hasSelfPaintingLayer()) | 166 if (box.hasRenderOverflow() || box.hasSelfPaintingLayer()) |
167 child->clearKnownToHaveNoOverflow(); | 167 child->clearKnownToHaveNoOverflow(); |
168 } else if (!child->renderer().isBR() && (child->renderer().style(isFirst
LineStyle())->boxShadow() || child->boxModelObject()->hasSelfPaintingLayer() | 168 } else if (!child->renderer().isBR() && (child->renderer().style(isFirst
LineStyle())->boxShadow() || child->boxModelObject()->hasSelfPaintingLayer() |
169 || (child->renderer().isListMarker() && !toLayoutListMarker(child->r
enderer()).isInside()) | 169 || (child->renderer().isListMarker() && !toLayoutListMarker(child->r
enderer()).isInside()) |
170 || child->renderer().style(isFirstLineStyle())->hasBorderImageOutset
s() | 170 || child->renderer().style(isFirstLineStyle())->hasBorderImageOutset
s() |
171 || child->renderer().style(isFirstLineStyle())->hasOutline())) { | 171 || child->renderer().style(isFirstLineStyle())->hasOutline())) { |
172 child->clearKnownToHaveNoOverflow(); | 172 child->clearKnownToHaveNoOverflow(); |
173 } | 173 } |
174 | 174 |
175 if (knownToHaveNoOverflow() && child->isInlineFlowBox() && !toInlineFlow
Box(child)->knownToHaveNoOverflow()) | 175 if (knownToHaveNoOverflow() && child->isInlineFlowBox() && !toInlineFlow
Box(child)->knownToHaveNoOverflow()) |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
654 const FontMetrics& fontMetrics = curr->renderer().style(isFirstLineS
tyle())->fontMetrics(); | 654 const FontMetrics& fontMetrics = curr->renderer().style(isFirstLineS
tyle())->fontMetrics(); |
655 newLogicalTop += curr->baselinePosition(baselineType) - fontMetrics.
ascent(baselineType); | 655 newLogicalTop += curr->baselinePosition(baselineType) - fontMetrics.
ascent(baselineType); |
656 if (curr->isInlineFlowBox()) { | 656 if (curr->isInlineFlowBox()) { |
657 LayoutBoxModelObject& boxObject = toLayoutBoxModelObject(curr->r
enderer()); | 657 LayoutBoxModelObject& boxObject = toLayoutBoxModelObject(curr->r
enderer()); |
658 newLogicalTop -= boxObject.style(isFirstLineStyle())->isHorizont
alWritingMode() ? boxObject.borderTop() + boxObject.paddingTop() : | 658 newLogicalTop -= boxObject.style(isFirstLineStyle())->isHorizont
alWritingMode() ? boxObject.borderTop() + boxObject.paddingTop() : |
659 boxObject.borderRight() + boxObject.paddingRight(); | 659 boxObject.borderRight() + boxObject.paddingRight(); |
660 borderPaddingHeight = boxObject.borderAndPaddingLogicalHeight(); | 660 borderPaddingHeight = boxObject.borderAndPaddingLogicalHeight(); |
661 } | 661 } |
662 newLogicalTopIncludingMargins = newLogicalTop; | 662 newLogicalTopIncludingMargins = newLogicalTop; |
663 } else if (!curr->renderer().isBR()) { | 663 } else if (!curr->renderer().isBR()) { |
664 RenderBox& box = toRenderBox(curr->renderer()); | 664 LayoutBox& box = toLayoutBox(curr->renderer()); |
665 newLogicalTopIncludingMargins = newLogicalTop; | 665 newLogicalTopIncludingMargins = newLogicalTop; |
666 LayoutUnit overSideMargin = curr->isHorizontal() ? box.marginTop() :
box.marginRight(); | 666 LayoutUnit overSideMargin = curr->isHorizontal() ? box.marginTop() :
box.marginRight(); |
667 LayoutUnit underSideMargin = curr->isHorizontal() ? box.marginBottom
() : box.marginLeft(); | 667 LayoutUnit underSideMargin = curr->isHorizontal() ? box.marginBottom
() : box.marginLeft(); |
668 newLogicalTop += overSideMargin; | 668 newLogicalTop += overSideMargin; |
669 boxHeightIncludingMargins += overSideMargin + underSideMargin; | 669 boxHeightIncludingMargins += overSideMargin + underSideMargin; |
670 } | 670 } |
671 | 671 |
672 curr->setLogicalTop(newLogicalTop.toFloat()); | 672 curr->setLogicalTop(newLogicalTop.toFloat()); |
673 | 673 |
674 if (childAffectsTopBottomPos) { | 674 if (childAffectsTopBottomPos) { |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
887 LayoutUnit logicalLeftVisualOverflow = std::min(textBox->pixelSnappedLogical
Left() + childOverflowLogicalLeft, logicalVisualOverflow.x()); | 887 LayoutUnit logicalLeftVisualOverflow = std::min(textBox->pixelSnappedLogical
Left() + childOverflowLogicalLeft, logicalVisualOverflow.x()); |
888 LayoutUnit logicalRightVisualOverflow = std::max(textBox->pixelSnappedLogica
lRight() + childOverflowLogicalRight, logicalVisualOverflow.maxX()); | 888 LayoutUnit logicalRightVisualOverflow = std::max(textBox->pixelSnappedLogica
lRight() + childOverflowLogicalRight, logicalVisualOverflow.maxX()); |
889 | 889 |
890 logicalVisualOverflow = LayoutRect(logicalLeftVisualOverflow, logicalTopVisu
alOverflow, logicalRightVisualOverflow - logicalLeftVisualOverflow, logicalBotto
mVisualOverflow - logicalTopVisualOverflow); | 890 logicalVisualOverflow = LayoutRect(logicalLeftVisualOverflow, logicalTopVisu
alOverflow, logicalRightVisualOverflow - logicalLeftVisualOverflow, logicalBotto
mVisualOverflow - logicalTopVisualOverflow); |
891 | 891 |
892 textBox->setLogicalOverflowRect(logicalVisualOverflow); | 892 textBox->setLogicalOverflowRect(logicalVisualOverflow); |
893 } | 893 } |
894 | 894 |
895 inline void InlineFlowBox::addReplacedChildOverflow(const InlineBox* inlineBox,
LayoutRect& logicalLayoutOverflow, LayoutRect& logicalVisualOverflow) | 895 inline void InlineFlowBox::addReplacedChildOverflow(const InlineBox* inlineBox,
LayoutRect& logicalLayoutOverflow, LayoutRect& logicalVisualOverflow) |
896 { | 896 { |
897 RenderBox& box = toRenderBox(inlineBox->renderer()); | 897 LayoutBox& box = toLayoutBox(inlineBox->renderer()); |
898 | 898 |
899 // Visual overflow only propagates if the box doesn't have a self-painting l
ayer. This rectangle does not include | 899 // Visual overflow only propagates if the box doesn't have a self-painting l
ayer. This rectangle does not include |
900 // transforms or relative positioning (since those objects always have self-
painting layers), but it does need to be adjusted | 900 // transforms or relative positioning (since those objects always have self-
painting layers), but it does need to be adjusted |
901 // for writing-mode differences. | 901 // for writing-mode differences. |
902 if (!box.hasSelfPaintingLayer()) { | 902 if (!box.hasSelfPaintingLayer()) { |
903 LayoutRect childLogicalVisualOverflow = box.logicalVisualOverflowRectFor
Propagation(renderer().styleRef()); | 903 LayoutRect childLogicalVisualOverflow = box.logicalVisualOverflowRectFor
Propagation(renderer().styleRef()); |
904 childLogicalVisualOverflow.move(inlineBox->logicalLeft(), inlineBox->log
icalTop()); | 904 childLogicalVisualOverflow.move(inlineBox->logicalLeft(), inlineBox->log
icalTop()); |
905 logicalVisualOverflow.unite(childLogicalVisualOverflow); | 905 logicalVisualOverflow.unite(childLogicalVisualOverflow); |
906 } | 906 } |
907 | 907 |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1333 ASSERT(child->prevOnLine() == prev); | 1333 ASSERT(child->prevOnLine() == prev); |
1334 prev = child; | 1334 prev = child; |
1335 } | 1335 } |
1336 ASSERT(prev == m_lastChild); | 1336 ASSERT(prev == m_lastChild); |
1337 #endif | 1337 #endif |
1338 } | 1338 } |
1339 | 1339 |
1340 #endif | 1340 #endif |
1341 | 1341 |
1342 } // namespace blink | 1342 } // namespace blink |
OLD | NEW |