| 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 | 56 |
| 57 using SnapAreaSet = HashSet<const LayoutBox*>; | 57 using SnapAreaSet = HashSet<const LayoutBox*>; |
| 58 | 58 |
| 59 struct LayoutBoxRareData { | 59 struct LayoutBoxRareData { |
| 60 WTF_MAKE_NONCOPYABLE(LayoutBoxRareData); USING_FAST_MALLOC(LayoutBoxRareData
); | 60 WTF_MAKE_NONCOPYABLE(LayoutBoxRareData); USING_FAST_MALLOC(LayoutBoxRareData
); |
| 61 public: | 61 public: |
| 62 LayoutBoxRareData() | 62 LayoutBoxRareData() |
| 63 : m_spannerPlaceholder(nullptr) | 63 : m_spannerPlaceholder(nullptr) |
| 64 , m_overrideLogicalContentHeight(-1) | 64 , m_overrideLogicalContentHeight(-1) |
| 65 , m_overrideLogicalContentWidth(-1) | 65 , m_overrideLogicalContentWidth(-1) |
| 66 , m_previousBorderBoxSize(LayoutUnit(-1), LayoutUnit(-1)) | |
| 67 , m_percentHeightContainer(nullptr) | 66 , m_percentHeightContainer(nullptr) |
| 68 , m_snapContainer(nullptr) | 67 , m_snapContainer(nullptr) |
| 69 , m_snapAreas(nullptr) | 68 , m_snapAreas(nullptr) |
| 70 { | 69 { |
| 71 } | 70 } |
| 72 | 71 |
| 73 // For spanners, the spanner placeholder that lays us out within the multico
l container. | 72 // For spanners, the spanner placeholder that lays us out within the multico
l container. |
| 74 LayoutMultiColumnSpannerPlaceholder* m_spannerPlaceholder; | 73 LayoutMultiColumnSpannerPlaceholder* m_spannerPlaceholder; |
| 75 | 74 |
| 76 LayoutUnit m_overrideLogicalContentHeight; | 75 LayoutUnit m_overrideLogicalContentHeight; |
| 77 LayoutUnit m_overrideLogicalContentWidth; | 76 LayoutUnit m_overrideLogicalContentWidth; |
| 78 | 77 |
| 79 // Set by LayoutBox::savePreviousBoxSizesIfNeeded(). | |
| 80 LayoutSize m_previousBorderBoxSize; | |
| 81 LayoutRect m_previousContentBoxRect; | |
| 82 LayoutRect m_previousLayoutOverflowRect; | |
| 83 | |
| 84 LayoutUnit m_pageLogicalOffset; | 78 LayoutUnit m_pageLogicalOffset; |
| 85 | |
| 86 LayoutUnit m_paginationStrut; | 79 LayoutUnit m_paginationStrut; |
| 87 | 80 |
| 88 LayoutBlock* m_percentHeightContainer; | 81 LayoutBlock* m_percentHeightContainer; |
| 89 // For snap area, the owning snap container. | 82 // For snap area, the owning snap container. |
| 90 LayoutBox* m_snapContainer; | 83 LayoutBox* m_snapContainer; |
| 91 // For snap container, the descendant snap areas that contribute snap | 84 // For snap container, the descendant snap areas that contribute snap |
| 92 // points. | 85 // points. |
| 93 std::unique_ptr<SnapAreaSet> m_snapAreas; | 86 std::unique_ptr<SnapAreaSet> m_snapAreas; |
| 94 | 87 |
| 95 SnapAreaSet& ensureSnapAreas() | 88 SnapAreaSet& ensureSnapAreas() |
| (...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 959 void clearPercentHeightDescendants(); | 952 void clearPercentHeightDescendants(); |
| 960 // For snap areas, returns the snap container that owns us. | 953 // For snap areas, returns the snap container that owns us. |
| 961 LayoutBox* snapContainer() const; | 954 LayoutBox* snapContainer() const; |
| 962 void setSnapContainer(LayoutBox*); | 955 void setSnapContainer(LayoutBox*); |
| 963 // For snap containers, returns all associated snap areas. | 956 // For snap containers, returns all associated snap areas. |
| 964 SnapAreaSet* snapAreas() const; | 957 SnapAreaSet* snapAreas() const; |
| 965 void clearSnapAreas(); | 958 void clearSnapAreas(); |
| 966 | 959 |
| 967 bool hitTestClippedOutByRoundedBorder(const HitTestLocation& locationInConta
iner, const LayoutPoint& borderBoxLocation) const; | 960 bool hitTestClippedOutByRoundedBorder(const HitTestLocation& locationInConta
iner, const LayoutPoint& borderBoxLocation) const; |
| 968 | 961 |
| 969 bool mustInvalidateFillLayersPaintOnWidthChange(const FillLayer&) const; | 962 static bool mustInvalidateFillLayersPaintOnWidthChange(const FillLayer&); |
| 970 bool mustInvalidateFillLayersPaintOnHeightChange(const FillLayer&) const; | 963 static bool mustInvalidateFillLayersPaintOnHeightChange(const FillLayer&); |
| 964 |
| 965 bool mustInvalidateBackgroundOrBorderPaintOnHeightChange() const; |
| 966 bool mustInvalidateBackgroundOrBorderPaintOnWidthChange() const; |
| 967 |
| 968 // Returns true if the box intersects the viewport visible to the user. |
| 969 bool intersectsVisibleViewport() const; |
| 970 |
| 971 bool hasNonCompositedScrollbars() const final; |
| 971 | 972 |
| 972 protected: | 973 protected: |
| 973 void willBeDestroyed() override; | 974 void willBeDestroyed() override; |
| 974 | 975 |
| 975 void insertedIntoTree() override; | 976 void insertedIntoTree() override; |
| 976 void willBeRemovedFromTree() override; | 977 void willBeRemovedFromTree() override; |
| 977 | 978 |
| 978 void styleWillChange(StyleDifference, const ComputedStyle& newStyle) overrid
e; | 979 void styleWillChange(StyleDifference, const ComputedStyle& newStyle) overrid
e; |
| 979 void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override
; | 980 void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override
; |
| 980 void updateFromStyle() override; | 981 void updateFromStyle() override; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 992 | 993 |
| 993 virtual bool shouldComputeSizeAsReplaced() const { return isAtomicInlineLeve
l() && !isInlineBlockOrInlineTable(); } | 994 virtual bool shouldComputeSizeAsReplaced() const { return isAtomicInlineLeve
l() && !isInlineBlockOrInlineTable(); } |
| 994 | 995 |
| 995 LayoutObject* splitAnonymousBoxesAroundChild(LayoutObject* beforeChild); | 996 LayoutObject* splitAnonymousBoxesAroundChild(LayoutObject* beforeChild); |
| 996 | 997 |
| 997 virtual bool hitTestOverflowControl(HitTestResult&, const HitTestLocation&,
const LayoutPoint&) { return false; } | 998 virtual bool hitTestOverflowControl(HitTestResult&, const HitTestLocation&,
const LayoutPoint&) { return false; } |
| 998 virtual bool hitTestChildren(HitTestResult&, const HitTestLocation& location
InContainer, const LayoutPoint& accumulatedOffset, HitTestAction); | 999 virtual bool hitTestChildren(HitTestResult&, const HitTestLocation& location
InContainer, const LayoutPoint& accumulatedOffset, HitTestAction); |
| 999 void addLayerHitTestRects(LayerHitTestRects&, const PaintLayer* currentCompo
sitedLayer, const LayoutPoint& layerOffset, const LayoutRect& containerRect) con
st override; | 1000 void addLayerHitTestRects(LayerHitTestRects&, const PaintLayer* currentCompo
sitedLayer, const LayoutPoint& layerOffset, const LayoutRect& containerRect) con
st override; |
| 1000 void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint& layerOf
fset) const override; | 1001 void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint& layerOf
fset) const override; |
| 1001 | 1002 |
| 1002 PaintInvalidationReason getPaintInvalidationReason(const PaintInvalidationSt
ate&, | |
| 1003 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInva
lidationContainer, | |
| 1004 const LayoutRect& newBounds, const LayoutPoint& newPositionFromPaintInva
lidationContainer) const override; | |
| 1005 void incrementallyInvalidatePaint(const LayoutBoxModelObject& paintInvalidat
ionContainer, const LayoutRect& oldBounds, const LayoutRect& newBounds, const La
youtPoint& positionFromPaintInvalidationContainer) override; | |
| 1006 | |
| 1007 PaintInvalidationReason invalidatePaintIfNeeded(const PaintInvalidationState
&) override; | 1003 PaintInvalidationReason invalidatePaintIfNeeded(const PaintInvalidationState
&) override; |
| 1004 PaintInvalidationReason invalidatePaintIfNeeded(const PaintInvalidatorContex
t&) const override; |
| 1008 void invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState& childPa
intInvalidationState) override; | 1005 void invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState& childPa
intInvalidationState) override; |
| 1009 | 1006 |
| 1010 bool hasStretchedLogicalWidth() const; | 1007 bool hasStretchedLogicalWidth() const; |
| 1011 | 1008 |
| 1012 bool hasNonCompositedScrollbars() const final; | |
| 1013 void excludeScrollbars(LayoutRect&, OverlayScrollbarClipBehavior = IgnoreOve
rlayScrollbarSize) const; | 1009 void excludeScrollbars(LayoutRect&, OverlayScrollbarClipBehavior = IgnoreOve
rlayScrollbarSize) const; |
| 1014 | 1010 |
| 1015 LayoutUnit containingBlockLogicalWidthForPositioned(const LayoutBoxModelObje
ct* containingBlock, bool checkForPerpendicularWritingMode = true) const; | 1011 LayoutUnit containingBlockLogicalWidthForPositioned(const LayoutBoxModelObje
ct* containingBlock, bool checkForPerpendicularWritingMode = true) const; |
| 1016 LayoutUnit containingBlockLogicalHeightForPositioned(const LayoutBoxModelObj
ect* containingBlock, bool checkForPerpendicularWritingMode = true) const; | 1012 LayoutUnit containingBlockLogicalHeightForPositioned(const LayoutBoxModelObj
ect* containingBlock, bool checkForPerpendicularWritingMode = true) const; |
| 1017 | 1013 |
| 1018 static void computeBlockStaticDistance(Length& logicalTop, Length& logicalBo
ttom, const LayoutBox* child, const LayoutBoxModelObject* containerBlock); | 1014 static void computeBlockStaticDistance(Length& logicalTop, Length& logicalBo
ttom, const LayoutBox* child, const LayoutBoxModelObject* containerBlock); |
| 1019 static void computeInlineStaticDistance(Length& logicalLeft, Length& logical
Right, const LayoutBox* child, const LayoutBoxModelObject* containerBlock, Layou
tUnit containerLogicalWidth); | 1015 static void computeInlineStaticDistance(Length& logicalLeft, Length& logical
Right, const LayoutBox* child, const LayoutBoxModelObject* containerBlock, Layou
tUnit containerLogicalWidth); |
| 1020 static void computeLogicalLeftPositionedOffset(LayoutUnit& logicalLeftPos, c
onst LayoutBox* child, LayoutUnit logicalWidthValue, const LayoutBoxModelObject*
containerBlock, LayoutUnit containerLogicalWidth); | 1016 static void computeLogicalLeftPositionedOffset(LayoutUnit& logicalLeftPos, c
onst LayoutBox* child, LayoutUnit logicalWidthValue, const LayoutBoxModelObject*
containerBlock, LayoutUnit containerLogicalWidth); |
| 1021 static void computeLogicalTopPositionedOffset(LayoutUnit& logicalTopPos, con
st LayoutBox* child, LayoutUnit logicalHeightValue, const LayoutBoxModelObject*
containerBlock, LayoutUnit containerLogicalHeight); | 1017 static void computeLogicalTopPositionedOffset(LayoutUnit& logicalTopPos, con
st LayoutBox* child, LayoutUnit logicalHeightValue, const LayoutBoxModelObject*
containerBlock, LayoutUnit containerLogicalHeight); |
| 1022 | 1018 |
| 1023 private: | 1019 private: |
| 1024 bool mustInvalidateBackgroundOrBorderPaintOnHeightChange() const; | |
| 1025 bool mustInvalidateBackgroundOrBorderPaintOnWidthChange() const; | |
| 1026 | |
| 1027 void invalidatePaintRectClippedByOldAndNewBounds(const LayoutBoxModelObject&
paintInvalidationContainer, const LayoutRect&, const LayoutRect& oldBounds, con
st LayoutRect& newBounds); | |
| 1028 | |
| 1029 void updateShapeOutsideInfoAfterStyleChange(const ComputedStyle&, const Comp
utedStyle* oldStyle); | 1020 void updateShapeOutsideInfoAfterStyleChange(const ComputedStyle&, const Comp
utedStyle* oldStyle); |
| 1030 void updateGridPositionAfterStyleChange(const ComputedStyle*); | 1021 void updateGridPositionAfterStyleChange(const ComputedStyle*); |
| 1031 void updateScrollSnapMappingAfterStyleChange(const ComputedStyle*, const Com
putedStyle* oldStyle); | 1022 void updateScrollSnapMappingAfterStyleChange(const ComputedStyle*, const Com
putedStyle* oldStyle); |
| 1032 void clearScrollSnapMapping(); | 1023 void clearScrollSnapMapping(); |
| 1033 void addScrollSnapMapping(); | 1024 void addScrollSnapMapping(); |
| 1034 | 1025 |
| 1035 bool autoWidthShouldFitContent() const; | 1026 bool autoWidthShouldFitContent() const; |
| 1036 LayoutUnit shrinkToFitLogicalWidth(LayoutUnit availableLogicalWidth, LayoutU
nit bordersPlusPadding) const; | 1027 LayoutUnit shrinkToFitLogicalWidth(LayoutUnit availableLogicalWidth, LayoutU
nit bordersPlusPadding) const; |
| 1037 | 1028 |
| 1038 bool stretchesToViewportInQuirksMode() const; | 1029 bool stretchesToViewportInQuirksMode() const; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1071 // details about those widths. | 1062 // details about those widths. |
| 1072 virtual void computePreferredLogicalWidths() { clearPreferredLogicalWidthsDi
rty(); } | 1063 virtual void computePreferredLogicalWidths() { clearPreferredLogicalWidthsDi
rty(); } |
| 1073 | 1064 |
| 1074 LayoutBoxRareData& ensureRareData() | 1065 LayoutBoxRareData& ensureRareData() |
| 1075 { | 1066 { |
| 1076 if (!m_rareData) | 1067 if (!m_rareData) |
| 1077 m_rareData = wrapUnique(new LayoutBoxRareData()); | 1068 m_rareData = wrapUnique(new LayoutBoxRareData()); |
| 1078 return *m_rareData.get(); | 1069 return *m_rareData.get(); |
| 1079 } | 1070 } |
| 1080 | 1071 |
| 1081 bool needToSavePreviousBoxSizes(); | |
| 1082 void savePreviousBoxSizesIfNeeded(); | |
| 1083 LayoutSize computePreviousBorderBoxSize(const LayoutSize& previousBoundsSize
) const; | |
| 1084 | |
| 1085 bool logicalHeightComputesAsNone(SizeType) const; | 1072 bool logicalHeightComputesAsNone(SizeType) const; |
| 1086 | 1073 |
| 1087 bool isBox() const = delete; // This will catch anyone doing an unnecessary
check. | 1074 bool isBox() const = delete; // This will catch anyone doing an unnecessary
check. |
| 1088 | 1075 |
| 1089 void frameRectChanged() | 1076 void frameRectChanged() |
| 1090 { | 1077 { |
| 1091 // The frame rect may change because of layout of other objects. | 1078 // The frame rect may change because of layout of other objects. |
| 1092 // Should check this object for paint invalidation. | 1079 // Should check this object for paint invalidation. |
| 1093 if (!needsLayout()) | 1080 if (!needsLayout()) |
| 1094 setMayNeedPaintInvalidation(); | 1081 setMayNeedPaintInvalidation(); |
| 1095 } | 1082 } |
| 1096 | 1083 |
| 1097 // Returns true if the box intersects the viewport visible to the user. | |
| 1098 bool intersectsVisibleViewport() const; | |
| 1099 | |
| 1100 virtual bool isInSelfHitTestingPhase(HitTestAction hitTestAction) const { re
turn hitTestAction == HitTestForeground; } | 1084 virtual bool isInSelfHitTestingPhase(HitTestAction hitTestAction) const { re
turn hitTestAction == HitTestForeground; } |
| 1101 | 1085 |
| 1102 void updateBackgroundAttachmentFixedStatusAfterStyleChange(); | 1086 void updateBackgroundAttachmentFixedStatusAfterStyleChange(); |
| 1103 | 1087 |
| 1104 // The CSS border box rect for this box. | 1088 // The CSS border box rect for this box. |
| 1105 // | 1089 // |
| 1106 // The rectangle is in this box's physical coordinates but with a | 1090 // The rectangle is in this box's physical coordinates but with a |
| 1107 // flipped block-flow direction (see the COORDINATE SYSTEMS section | 1091 // flipped block-flow direction (see the COORDINATE SYSTEMS section |
| 1108 // in LayoutBoxModelObject). The location is the distance from this | 1092 // in LayoutBoxModelObject). The location is the distance from this |
| 1109 // object's border edge to the container's border edge (which is not | 1093 // object's border edge to the container's border edge (which is not |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1233 || breakValue == BreakLeft | 1217 || breakValue == BreakLeft |
| 1234 || breakValue == BreakPage | 1218 || breakValue == BreakPage |
| 1235 || breakValue == BreakRecto | 1219 || breakValue == BreakRecto |
| 1236 || breakValue == BreakRight | 1220 || breakValue == BreakRight |
| 1237 || breakValue == BreakVerso; | 1221 || breakValue == BreakVerso; |
| 1238 } | 1222 } |
| 1239 | 1223 |
| 1240 } // namespace blink | 1224 } // namespace blink |
| 1241 | 1225 |
| 1242 #endif // LayoutBox_h | 1226 #endif // LayoutBox_h |
| OLD | NEW |