| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 #include "core/layout/line/LineWidth.h" | 50 #include "core/layout/line/LineWidth.h" |
| 51 #include "core/layout/shapes/ShapeOutsideInfo.h" | 51 #include "core/layout/shapes/ShapeOutsideInfo.h" |
| 52 #include "core/paint/BlockFlowPainter.h" | 52 #include "core/paint/BlockFlowPainter.h" |
| 53 #include "core/paint/ClipScope.h" | 53 #include "core/paint/ClipScope.h" |
| 54 #include "core/paint/DeprecatedPaintLayer.h" | 54 #include "core/paint/DeprecatedPaintLayer.h" |
| 55 #include "core/paint/LayoutObjectDrawingRecorder.h" | 55 #include "core/paint/LayoutObjectDrawingRecorder.h" |
| 56 #include "core/paint/PaintInfo.h" | 56 #include "core/paint/PaintInfo.h" |
| 57 #include "platform/RuntimeEnabledFeatures.h" | 57 #include "platform/RuntimeEnabledFeatures.h" |
| 58 #include "platform/geometry/TransformState.h" | 58 #include "platform/geometry/TransformState.h" |
| 59 #include "platform/text/BidiTextRun.h" | 59 #include "platform/text/BidiTextRun.h" |
| 60 #include "wtf/SizeAssertions.h" |
| 60 | 61 |
| 61 namespace blink { | 62 namespace blink { |
| 62 | 63 |
| 64 ASSERT_SIZE(LayoutBlockFlow::MarginValues, 16, 16); |
| 65 |
| 63 bool LayoutBlockFlow::s_canPropagateFloatIntoSibling = false; | 66 bool LayoutBlockFlow::s_canPropagateFloatIntoSibling = false; |
| 64 | 67 |
| 65 struct SameSizeAsMarginInfo { | |
| 66 uint16_t bitfields; | |
| 67 LayoutUnit margins[2]; | |
| 68 }; | |
| 69 | |
| 70 static_assert(sizeof(LayoutBlockFlow::MarginValues) == sizeof(LayoutUnit[4]), "M
arginValues should stay small"); | |
| 71 | |
| 72 class MarginInfo { | 68 class MarginInfo { |
| 73 // Collapsing flags for whether we can collapse our margins with our childre
n's margins. | 69 // Collapsing flags for whether we can collapse our margins with our childre
n's margins. |
| 74 bool m_canCollapseWithChildren : 1; | 70 bool m_canCollapseWithChildren : 1; |
| 75 bool m_canCollapseMarginBeforeWithChildren : 1; | 71 bool m_canCollapseMarginBeforeWithChildren : 1; |
| 76 bool m_canCollapseMarginAfterWithChildren : 1; | 72 bool m_canCollapseMarginAfterWithChildren : 1; |
| 77 bool m_canCollapseMarginAfterWithLastChild: 1; | 73 bool m_canCollapseMarginAfterWithLastChild: 1; |
| 78 | 74 |
| 79 // Whether or not we are a quirky container, i.e., do we collapse away top a
nd bottom | 75 // Whether or not we are a quirky container, i.e., do we collapse away top a
nd bottom |
| 80 // margins in our container. Table cells and the body are the common example
s. We | 76 // margins in our container. Table cells and the body are the common example
s. We |
| 81 // also have a custom style property for Safari RSS to deal with TypePad blo
g articles. | 77 // also have a custom style property for Safari RSS to deal with TypePad blo
g articles. |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 bool determinedMarginBeforeQuirk() const { return m_determinedMarginBeforeQu
irk; } | 142 bool determinedMarginBeforeQuirk() const { return m_determinedMarginBeforeQu
irk; } |
| 147 bool hasMarginBeforeQuirk() const { return m_hasMarginBeforeQuirk; } | 143 bool hasMarginBeforeQuirk() const { return m_hasMarginBeforeQuirk; } |
| 148 bool hasMarginAfterQuirk() const { return m_hasMarginAfterQuirk; } | 144 bool hasMarginAfterQuirk() const { return m_hasMarginAfterQuirk; } |
| 149 LayoutUnit positiveMargin() const { return m_positiveMargin; } | 145 LayoutUnit positiveMargin() const { return m_positiveMargin; } |
| 150 LayoutUnit negativeMargin() const { return m_negativeMargin; } | 146 LayoutUnit negativeMargin() const { return m_negativeMargin; } |
| 151 bool discardMargin() const { return m_discardMargin; } | 147 bool discardMargin() const { return m_discardMargin; } |
| 152 LayoutUnit margin() const { return m_positiveMargin - m_negativeMargin; } | 148 LayoutUnit margin() const { return m_positiveMargin - m_negativeMargin; } |
| 153 void setLastChildIsSelfCollapsingBlockWithClearance(bool value) { m_lastChil
dIsSelfCollapsingBlockWithClearance = value; } | 149 void setLastChildIsSelfCollapsingBlockWithClearance(bool value) { m_lastChil
dIsSelfCollapsingBlockWithClearance = value; } |
| 154 bool lastChildIsSelfCollapsingBlockWithClearance() const { return m_lastChil
dIsSelfCollapsingBlockWithClearance; } | 150 bool lastChildIsSelfCollapsingBlockWithClearance() const { return m_lastChil
dIsSelfCollapsingBlockWithClearance; } |
| 155 }; | 151 }; |
| 152 |
| 153 ASSERT_SIZE(MarginInfo, 12, 12); |
| 154 |
| 156 static bool inNormalFlow(LayoutBox* child) | 155 static bool inNormalFlow(LayoutBox* child) |
| 157 { | 156 { |
| 158 LayoutBlock* curr = child->containingBlock(); | 157 LayoutBlock* curr = child->containingBlock(); |
| 159 LayoutView* layoutView = child->view(); | 158 LayoutView* layoutView = child->view(); |
| 160 while (curr && curr != layoutView) { | 159 while (curr && curr != layoutView) { |
| 161 if (curr->isLayoutFlowThread()) | 160 if (curr->isLayoutFlowThread()) |
| 162 return true; | 161 return true; |
| 163 if (curr->isFloatingOrOutOfFlowPositioned()) | 162 if (curr->isFloatingOrOutOfFlowPositioned()) |
| 164 return false; | 163 return false; |
| 165 curr = curr->containingBlock(); | 164 curr = curr->containingBlock(); |
| 166 } | 165 } |
| 167 return true; | 166 return true; |
| 168 } | 167 } |
| 169 | 168 |
| 170 LayoutBlockFlow::LayoutBlockFlow(ContainerNode* node) | 169 LayoutBlockFlow::LayoutBlockFlow(ContainerNode* node) |
| 171 : LayoutBlock(node) | 170 : LayoutBlock(node) |
| 172 { | 171 { |
| 173 static_assert(sizeof(MarginInfo) == sizeof(SameSizeAsMarginInfo), "MarginInf
o should stay small"); | |
| 174 setChildrenInline(true); | 172 setChildrenInline(true); |
| 175 } | 173 } |
| 176 | 174 |
| 177 LayoutBlockFlow::~LayoutBlockFlow() | 175 LayoutBlockFlow::~LayoutBlockFlow() |
| 178 { | 176 { |
| 179 } | 177 } |
| 180 | 178 |
| 181 LayoutBlockFlow* LayoutBlockFlow::createAnonymous(Document* document) | 179 LayoutBlockFlow* LayoutBlockFlow::createAnonymous(Document* document) |
| 182 { | 180 { |
| 183 LayoutBlockFlow* layoutBlockFlow = new LayoutBlockFlow(nullptr); | 181 LayoutBlockFlow* layoutBlockFlow = new LayoutBlockFlow(nullptr); |
| (...skipping 2886 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3070 FrameView* frameView = document().view(); | 3068 FrameView* frameView = document().view(); |
| 3071 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr
ollOffset().height(); | 3069 LayoutUnit top = (style()->position() == FixedPosition) ? 0 : frameView->scr
ollOffset().height(); |
| 3072 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height(
); | 3070 int visibleHeight = frameView->visibleContentRect(IncludeScrollbars).height(
); |
| 3073 if (size().height() < visibleHeight) | 3071 if (size().height() < visibleHeight) |
| 3074 top += (visibleHeight - size().height()) / 2; | 3072 top += (visibleHeight - size().height()) / 2; |
| 3075 setY(top); | 3073 setY(top); |
| 3076 dialog->setCentered(top); | 3074 dialog->setCentered(top); |
| 3077 } | 3075 } |
| 3078 | 3076 |
| 3079 } // namespace blink | 3077 } // namespace blink |
| OLD | NEW |