| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. | 2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 900 | 900 |
| 901 LayoutUnit InlineFlowBox::MaxLogicalBottomForUnderline( | 901 LayoutUnit InlineFlowBox::MaxLogicalBottomForUnderline( |
| 902 LineLayoutItem decoration_object, | 902 LineLayoutItem decoration_object, |
| 903 LayoutUnit max_logical_bottom) const { | 903 LayoutUnit max_logical_bottom) const { |
| 904 for (InlineBox* curr = FirstChild(); curr; curr = curr->NextOnLine()) { | 904 for (InlineBox* curr = FirstChild(); curr; curr = curr->NextOnLine()) { |
| 905 if (curr->GetLineLayoutItem().IsOutOfFlowPositioned()) | 905 if (curr->GetLineLayoutItem().IsOutOfFlowPositioned()) |
| 906 continue; // Positioned placeholders don't affect calculations. | 906 continue; // Positioned placeholders don't affect calculations. |
| 907 | 907 |
| 908 // If the text decoration isn't in effect on the child, it must be outside | 908 // If the text decoration isn't in effect on the child, it must be outside |
| 909 // of |decorationObject|. | 909 // of |decorationObject|. |
| 910 if (!(curr->LineStyleRef().TextDecorationsInEffect() & | 910 if (!EnumHasFlags(curr->LineStyleRef().TextDecorationsInEffect(), |
| 911 kTextDecorationUnderline)) | 911 TextDecoration::kUnderline)) |
| 912 continue; | 912 continue; |
| 913 | 913 |
| 914 if (decoration_object && decoration_object.IsLayoutInline() && | 914 if (decoration_object && decoration_object.IsLayoutInline() && |
| 915 !IsAncestorAndWithinBlock(decoration_object, curr->GetLineLayoutItem())) | 915 !IsAncestorAndWithinBlock(decoration_object, curr->GetLineLayoutItem())) |
| 916 continue; | 916 continue; |
| 917 | 917 |
| 918 if (curr->IsInlineFlowBox()) { | 918 if (curr->IsInlineFlowBox()) { |
| 919 max_logical_bottom = ToInlineFlowBox(curr)->MaxLogicalBottomForUnderline( | 919 max_logical_bottom = ToInlineFlowBox(curr)->MaxLogicalBottomForUnderline( |
| 920 decoration_object, max_logical_bottom); | 920 decoration_object, max_logical_bottom); |
| 921 } else if (curr->IsInlineTextBox()) { | 921 } else if (curr->IsInlineTextBox()) { |
| 922 max_logical_bottom = std::max(max_logical_bottom, curr->LogicalBottom()); | 922 max_logical_bottom = std::max(max_logical_bottom, curr->LogicalBottom()); |
| 923 } | 923 } |
| 924 } | 924 } |
| 925 return max_logical_bottom; | 925 return max_logical_bottom; |
| 926 } | 926 } |
| 927 | 927 |
| 928 LayoutUnit InlineFlowBox::MinLogicalTopForUnderline( | 928 LayoutUnit InlineFlowBox::MinLogicalTopForUnderline( |
| 929 LineLayoutItem decoration_object, | 929 LineLayoutItem decoration_object, |
| 930 LayoutUnit min_logical_top) const { | 930 LayoutUnit min_logical_top) const { |
| 931 for (InlineBox* curr = FirstChild(); curr; curr = curr->NextOnLine()) { | 931 for (InlineBox* curr = FirstChild(); curr; curr = curr->NextOnLine()) { |
| 932 if (curr->GetLineLayoutItem().IsOutOfFlowPositioned()) | 932 if (curr->GetLineLayoutItem().IsOutOfFlowPositioned()) |
| 933 continue; // Positioned placeholders don't affect calculations. | 933 continue; // Positioned placeholders don't affect calculations. |
| 934 | 934 |
| 935 // If the text decoration isn't in effect on the child, it must be outside | 935 // If the text decoration isn't in effect on the child, it must be outside |
| 936 // of |decorationObject|. | 936 // of |decorationObject|. |
| 937 if (!(curr->LineStyleRef().TextDecorationsInEffect() & | 937 if (!EnumHasFlags(curr->LineStyleRef().TextDecorationsInEffect(), |
| 938 kTextDecorationUnderline)) | 938 TextDecoration::kUnderline)) |
| 939 continue; | 939 continue; |
| 940 | 940 |
| 941 if (decoration_object && decoration_object.IsLayoutInline() && | 941 if (decoration_object && decoration_object.IsLayoutInline() && |
| 942 !IsAncestorAndWithinBlock(decoration_object, curr->GetLineLayoutItem())) | 942 !IsAncestorAndWithinBlock(decoration_object, curr->GetLineLayoutItem())) |
| 943 continue; | 943 continue; |
| 944 | 944 |
| 945 if (curr->IsInlineFlowBox()) { | 945 if (curr->IsInlineFlowBox()) { |
| 946 min_logical_top = ToInlineFlowBox(curr)->MinLogicalTopForUnderline( | 946 min_logical_top = ToInlineFlowBox(curr)->MinLogicalTopForUnderline( |
| 947 decoration_object, min_logical_top); | 947 decoration_object, min_logical_top); |
| 948 } else if (curr->IsInlineTextBox()) { | 948 } else if (curr->IsInlineTextBox()) { |
| (...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1753 DCHECK_EQ(child->prevOnLine(), prev); | 1753 DCHECK_EQ(child->prevOnLine(), prev); |
| 1754 prev = child; | 1754 prev = child; |
| 1755 } | 1755 } |
| 1756 DCHECK_EQ(prev, m_lastChild); | 1756 DCHECK_EQ(prev, m_lastChild); |
| 1757 #endif | 1757 #endif |
| 1758 } | 1758 } |
| 1759 | 1759 |
| 1760 #endif | 1760 #endif |
| 1761 | 1761 |
| 1762 } // namespace blink | 1762 } // namespace blink |
| OLD | NEW |