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 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 | 51 |
52 struct LayoutBoxRareData { | 52 struct LayoutBoxRareData { |
53 WTF_MAKE_NONCOPYABLE(LayoutBoxRareData); USING_FAST_MALLOC(LayoutBoxRareData
); | 53 WTF_MAKE_NONCOPYABLE(LayoutBoxRareData); USING_FAST_MALLOC(LayoutBoxRareData
); |
54 public: | 54 public: |
55 LayoutBoxRareData() | 55 LayoutBoxRareData() |
56 : m_inlineBoxWrapper(nullptr) | 56 : m_inlineBoxWrapper(nullptr) |
57 , m_spannerPlaceholder(nullptr) | 57 , m_spannerPlaceholder(nullptr) |
58 , m_overrideLogicalContentHeight(-1) | 58 , m_overrideLogicalContentHeight(-1) |
59 , m_overrideLogicalContentWidth(-1) | 59 , m_overrideLogicalContentWidth(-1) |
60 , m_previousBorderBoxSize(-1, -1) | 60 , m_previousBorderBoxSize(-1, -1) |
| 61 , m_percentHeightContainer(nullptr) |
61 { | 62 { |
62 } | 63 } |
63 | 64 |
64 // For inline replaced elements, the inline box that owns us. | 65 // For inline replaced elements, the inline box that owns us. |
65 InlineBox* m_inlineBoxWrapper; | 66 InlineBox* m_inlineBoxWrapper; |
66 | 67 |
67 // For spanners, the spanner placeholder that lays us out within the multico
l container. | 68 // For spanners, the spanner placeholder that lays us out within the multico
l container. |
68 LayoutMultiColumnSpannerPlaceholder* m_spannerPlaceholder; | 69 LayoutMultiColumnSpannerPlaceholder* m_spannerPlaceholder; |
69 | 70 |
70 LayoutUnit m_overrideLogicalContentHeight; | 71 LayoutUnit m_overrideLogicalContentHeight; |
71 LayoutUnit m_overrideLogicalContentWidth; | 72 LayoutUnit m_overrideLogicalContentWidth; |
72 | 73 |
73 // Set by LayoutBox::savePreviousBoxSizesIfNeeded(). | 74 // Set by LayoutBox::savePreviousBoxSizesIfNeeded(). |
74 LayoutSize m_previousBorderBoxSize; | 75 LayoutSize m_previousBorderBoxSize; |
75 LayoutRect m_previousContentBoxRect; | 76 LayoutRect m_previousContentBoxRect; |
76 LayoutRect m_previousLayoutOverflowRect; | 77 LayoutRect m_previousLayoutOverflowRect; |
77 | 78 |
78 LayoutUnit m_pageLogicalOffset; | 79 LayoutUnit m_pageLogicalOffset; |
79 | 80 |
80 LayoutUnit m_paginationStrut; | 81 LayoutUnit m_paginationStrut; |
| 82 |
| 83 LayoutBlock* m_percentHeightContainer; |
81 }; | 84 }; |
82 | 85 |
83 // LayoutBox implements the full CSS box model. | 86 // LayoutBox implements the full CSS box model. |
84 // | 87 // |
85 // LayoutBoxModelObject only introduces some abstractions for LayoutInline and | 88 // LayoutBoxModelObject only introduces some abstractions for LayoutInline and |
86 // LayoutBox. The logic for the model is in LayoutBox, e.g. the storage for the | 89 // LayoutBox. The logic for the model is in LayoutBox, e.g. the storage for the |
87 // rectangle and offset forming the CSS box (m_frameRect) and the getters for | 90 // rectangle and offset forming the CSS box (m_frameRect) and the getters for |
88 // the different boxes. | 91 // the different boxes. |
89 // | 92 // |
90 // LayoutBox is also the uppermost class to support scrollbars, however the | 93 // LayoutBox is also the uppermost class to support scrollbars, however the |
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 | 845 |
843 void setIntrinsicContentLogicalHeight(LayoutUnit intrinsicContentLogicalHeig
ht) const { m_intrinsicContentLogicalHeight = intrinsicContentLogicalHeight; } | 846 void setIntrinsicContentLogicalHeight(LayoutUnit intrinsicContentLogicalHeig
ht) const { m_intrinsicContentLogicalHeight = intrinsicContentLogicalHeight; } |
844 | 847 |
845 bool canRenderBorderImage() const; | 848 bool canRenderBorderImage() const; |
846 | 849 |
847 void mapLocalToAncestor(const LayoutBoxModelObject* ancestor, TransformState
&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = nullptr, const Pai
ntInvalidationState* = nullptr) const override; | 850 void mapLocalToAncestor(const LayoutBoxModelObject* ancestor, TransformState
&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = nullptr, const Pai
ntInvalidationState* = nullptr) const override; |
848 void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) const ove
rride; | 851 void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) const ove
rride; |
849 | 852 |
850 void clearPreviousPaintInvalidationRects() override; | 853 void clearPreviousPaintInvalidationRects() override; |
851 | 854 |
| 855 LayoutBlock* percentHeightContainer() const { return m_rareData ? m_rareData
->m_percentHeightContainer : nullptr; } |
| 856 void setPercentHeightContainer(LayoutBlock*); |
| 857 void removeFromPercentHeightContainer(); |
| 858 void clearPercentHeightDescendants(); |
| 859 |
852 protected: | 860 protected: |
853 void willBeDestroyed() override; | 861 void willBeDestroyed() override; |
854 | 862 |
855 void styleWillChange(StyleDifference, const ComputedStyle& newStyle) overrid
e; | 863 void styleWillChange(StyleDifference, const ComputedStyle& newStyle) overrid
e; |
856 void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override
; | 864 void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override
; |
857 void updateFromStyle() override; | 865 void updateFromStyle() override; |
858 | 866 |
859 // Returns false if it could not cheaply compute the extent (e.g. fixed back
ground), in which case the returned rect may be incorrect. | 867 // Returns false if it could not cheaply compute the extent (e.g. fixed back
ground), in which case the returned rect may be incorrect. |
860 // FIXME: make this a const method once the LayoutBox reference in BoxPainte
r is const. | 868 // FIXME: make this a const method once the LayoutBox reference in BoxPainte
r is const. |
861 bool getBackgroundPaintedExtent(LayoutRect&) const; | 869 bool getBackgroundPaintedExtent(LayoutRect&) const; |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1067 if (UNLIKELY(inlineBoxWrapper() != nullptr)) | 1075 if (UNLIKELY(inlineBoxWrapper() != nullptr)) |
1068 deleteLineBoxWrapper(); | 1076 deleteLineBoxWrapper(); |
1069 } | 1077 } |
1070 | 1078 |
1071 ensureRareData().m_inlineBoxWrapper = boxWrapper; | 1079 ensureRareData().m_inlineBoxWrapper = boxWrapper; |
1072 } | 1080 } |
1073 | 1081 |
1074 } // namespace blink | 1082 } // namespace blink |
1075 | 1083 |
1076 #endif // LayoutBox_h | 1084 #endif // LayoutBox_h |
OLD | NEW |