| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
| 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
| 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r
ights reserved. |
| 7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 // positioned inline. containingBlock() simply skips relpositioned inlines | 768 // positioned inline. containingBlock() simply skips relpositioned inlines |
| 769 // and lets an enclosing block handle the layout of the positioned object. | 769 // and lets an enclosing block handle the layout of the positioned object. |
| 770 // This does mean that computePositionedLogicalWidth and | 770 // This does mean that computePositionedLogicalWidth and |
| 771 // computePositionedLogicalHeight have to use container(). | 771 // computePositionedLogicalHeight have to use container(). |
| 772 // | 772 // |
| 773 // This function should be used for any invalidation as it would correctly | 773 // This function should be used for any invalidation as it would correctly |
| 774 // walk the containing block chain. See e.g. markContainerChainForLayout. | 774 // walk the containing block chain. See e.g. markContainerChainForLayout. |
| 775 // It is also used for correctly sizing absolutely positioned elements | 775 // It is also used for correctly sizing absolutely positioned elements |
| 776 // (point 3 above). | 776 // (point 3 above). |
| 777 // | 777 // |
| 778 // If |paintInvalidationContainer| and |paintInvalidationContainerSkipped| | 778 // If |ancestor| and |ancestorSkipped| are not null, on return *ancestorSkip
ped |
| 779 // are not null, on return *paintInvalidationContainerSkipped is true if | 779 // is true if the layoutObject returned is an ancestor of |ancestor|. |
| 780 // the layoutObject returned is an ancestor of |paintInvalidationContainer|. | 780 LayoutObject* container(const LayoutBoxModelObject* ancestor = nullptr, bool
* ancestorSkipped = nullptr) const; |
| 781 LayoutObject* container(const LayoutBoxModelObject* paintInvalidationContain
er = nullptr, bool* paintInvalidationContainerSkipped = nullptr) const; | |
| 782 LayoutObject* containerCrossingFrameBoundaries() const; | 781 LayoutObject* containerCrossingFrameBoundaries() const; |
| 783 // Finds the container as if this object is fixed-position. | 782 // Finds the container as if this object is fixed-position. |
| 784 LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* paintInva
lidationContainer = nullptr, bool* paintInvalidationContainerSkipped = nullptr)
const; | 783 LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* ancestor
= nullptr, bool* ancestorSkipped = nullptr) const; |
| 785 // Finds the containing block as if this object is absolute-position. | 784 // Finds the containing block as if this object is absolute-position. |
| 786 LayoutBlock* containingBlockForAbsolutePosition() const; | 785 LayoutBlock* containingBlockForAbsolutePosition() const; |
| 787 | 786 |
| 788 virtual LayoutObject* hoverAncestor() const { return parent(); } | 787 virtual LayoutObject* hoverAncestor() const { return parent(); } |
| 789 | 788 |
| 790 Element* offsetParent() const; | 789 Element* offsetParent() const; |
| 791 | 790 |
| 792 void markContainerChainForLayout(bool scheduleRelayout = true, SubtreeLayout
Scope* = nullptr); | 791 void markContainerChainForLayout(bool scheduleRelayout = true, SubtreeLayout
Scope* = nullptr); |
| 793 void setNeedsLayout(LayoutInvalidationReasonForTracing, MarkingBehavior = Ma
rkContainerChain, SubtreeLayoutScope* = nullptr); | 792 void setNeedsLayout(LayoutInvalidationReasonForTracing, MarkingBehavior = Ma
rkContainerChain, SubtreeLayoutScope* = nullptr); |
| 794 void setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReasonForTraci
ng, MarkingBehavior = MarkContainerChain, SubtreeLayoutScope* = nullptr); | 793 void setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReasonForTraci
ng, MarkingBehavior = MarkContainerChain, SubtreeLayoutScope* = nullptr); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 934 } | 933 } |
| 935 | 934 |
| 936 // Convert the given local point to absolute coordinates | 935 // Convert the given local point to absolute coordinates |
| 937 // FIXME: Temporary. If UseTransforms is true, take transforms into account.
Eventually localToAbsolute() will always be transform-aware. | 936 // FIXME: Temporary. If UseTransforms is true, take transforms into account.
Eventually localToAbsolute() will always be transform-aware. |
| 938 FloatPoint localToAbsolute(const FloatPoint& localPoint = FloatPoint(), MapC
oordinatesFlags = 0) const; | 937 FloatPoint localToAbsolute(const FloatPoint& localPoint = FloatPoint(), MapC
oordinatesFlags = 0) const; |
| 939 FloatPoint absoluteToLocal(const FloatPoint&, MapCoordinatesFlags = 0) const
; | 938 FloatPoint absoluteToLocal(const FloatPoint&, MapCoordinatesFlags = 0) const
; |
| 940 | 939 |
| 941 // Convert a local quad to absolute coordinates, taking transforms into acco
unt. | 940 // Convert a local quad to absolute coordinates, taking transforms into acco
unt. |
| 942 FloatQuad localToAbsoluteQuad(const FloatQuad& quad, MapCoordinatesFlags mod
e = 0, bool* wasFixed = nullptr) const | 941 FloatQuad localToAbsoluteQuad(const FloatQuad& quad, MapCoordinatesFlags mod
e = 0, bool* wasFixed = nullptr) const |
| 943 { | 942 { |
| 944 return localToContainerQuad(quad, 0, mode, wasFixed); | 943 return localToAncestorQuad(quad, nullptr, mode, wasFixed); |
| 945 } | 944 } |
| 946 // Convert an absolute quad to local coordinates. | 945 // Convert an absolute quad to local coordinates. |
| 947 FloatQuad absoluteToLocalQuad(const FloatQuad&, MapCoordinatesFlags mode = 0
) const; | 946 FloatQuad absoluteToLocalQuad(const FloatQuad&, MapCoordinatesFlags mode = 0
) const; |
| 948 | 947 |
| 949 // Convert a local quad into the coordinate system of container, taking tran
sforms into account. | 948 // Convert a local quad into the coordinate system of container, taking tran
sforms into account. |
| 950 FloatQuad localToContainerQuad(const FloatQuad&, const LayoutBoxModelObject*
paintInvalidationContainer, MapCoordinatesFlags = 0, bool* wasFixed = nullptr)
const; | 949 FloatQuad localToAncestorQuad(const FloatQuad&, const LayoutBoxModelObject*
ancestor, MapCoordinatesFlags = 0, bool* wasFixed = nullptr) const; |
| 951 FloatPoint localToContainerPoint(const FloatPoint&, const LayoutBoxModelObje
ct* paintInvalidationContainer, MapCoordinatesFlags = 0, bool* wasFixed = nullpt
r, const PaintInvalidationState* = nullptr) const; | 950 FloatPoint localToAncestorPoint(const FloatPoint&, const LayoutBoxModelObjec
t* ancestor, MapCoordinatesFlags = 0, bool* wasFixed = nullptr, const PaintInval
idationState* = nullptr) const; |
| 952 void localToContainerRects(Vector<LayoutRect>&, const LayoutBoxModelObject*
paintInvalidationContainer, const LayoutPoint& preOffset, const LayoutPoint& pos
tOffset) const; | 951 void localToAncestorRects(Vector<LayoutRect>&, const LayoutBoxModelObject* a
ncestor, const LayoutPoint& preOffset, const LayoutPoint& postOffset) const; |
| 953 | 952 |
| 954 // Convert a local point into the coordinate system of backing coordinates.
Also returns the backing layer if needed. | 953 // Convert a local point into the coordinate system of backing coordinates.
Also returns the backing layer if needed. |
| 955 FloatPoint localToInvalidationBackingPoint(const LayoutPoint&, PaintLayer**
backingLayer = nullptr); | 954 FloatPoint localToInvalidationBackingPoint(const LayoutPoint&, PaintLayer**
backingLayer = nullptr); |
| 956 | 955 |
| 957 // Return the offset from the container() layoutObject (excluding transforms
). In multi-column layout, | 956 // Return the offset from the container() layoutObject (excluding transforms
). In multi-column layout, |
| 958 // different offsets apply at different points, so return the offset that ap
plies to the given point. | 957 // different offsets apply at different points, so return the offset that ap
plies to the given point. |
| 959 virtual LayoutSize offsetFromContainer(const LayoutObject*, const LayoutPoin
t&, bool* offsetDependsOnPoint = nullptr) const; | 958 virtual LayoutSize offsetFromContainer(const LayoutObject*, const LayoutPoin
t&, bool* offsetDependsOnPoint = nullptr) const; |
| 960 // Return the offset from an object up the container() chain. Asserts that n
one of the intermediate objects have transforms. | 959 // Return the offset from an object up the container() chain. Asserts that n
one of the intermediate objects have transforms. |
| 961 LayoutSize offsetFromAncestorContainer(const LayoutObject*) const; | 960 LayoutSize offsetFromAncestorContainer(const LayoutObject*) const; |
| 962 | 961 |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1081 | 1080 |
| 1082 // Returns the rect that should have paint invalidated whenever this object
changes. The rect is in the view's | 1081 // Returns the rect that should have paint invalidated whenever this object
changes. The rect is in the view's |
| 1083 // coordinate space. This method deals with outlines and overflow. | 1082 // coordinate space. This method deals with outlines and overflow. |
| 1084 virtual LayoutRect absoluteClippedOverflowRect() const; | 1083 virtual LayoutRect absoluteClippedOverflowRect() const; |
| 1085 virtual LayoutRect clippedOverflowRectForPaintInvalidation(const LayoutBoxMo
delObject* paintInvalidationContainer, const PaintInvalidationState* = nullptr)
const; | 1084 virtual LayoutRect clippedOverflowRectForPaintInvalidation(const LayoutBoxMo
delObject* paintInvalidationContainer, const PaintInvalidationState* = nullptr)
const; |
| 1086 | 1085 |
| 1087 // Given a rect in the object's coordinate space, compute a rect suitable fo
r invalidating paints of that | 1086 // Given a rect in the object's coordinate space, compute a rect suitable fo
r invalidating paints of that |
| 1088 // rect in the coordinate space of paintInvalidationContainer. If intermedi
ate containers have clipping or | 1087 // rect in the coordinate space of paintInvalidationContainer. If intermedi
ate containers have clipping or |
| 1089 // scrolling of any kind, it is applied; but overflow clipping is *not* appl
ied for paintInvalidationContainer | 1088 // scrolling of any kind, it is applied; but overflow clipping is *not* appl
ied for paintInvalidationContainer |
| 1090 // itself. | 1089 // itself. |
| 1091 virtual void mapToVisibleRectInContainerSpace(const LayoutBoxModelObject* pa
intInvalidationContainer, LayoutRect&, const PaintInvalidationState*) const; | 1090 virtual void mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* anc
estor, LayoutRect&, const PaintInvalidationState*) const; |
| 1092 | 1091 |
| 1093 // Return the offset to the column in which the specified point (in flow-thr
ead coordinates) | 1092 // Return the offset to the column in which the specified point (in flow-thr
ead coordinates) |
| 1094 // lives. This is used to convert a flow-thread point to a visual point. | 1093 // lives. This is used to convert a flow-thread point to a visual point. |
| 1095 virtual LayoutSize columnOffset(const LayoutPoint&) const { return LayoutSiz
e(); } | 1094 virtual LayoutSize columnOffset(const LayoutPoint&) const { return LayoutSiz
e(); } |
| 1096 | 1095 |
| 1097 virtual unsigned length() const { return 1; } | 1096 virtual unsigned length() const { return 1; } |
| 1098 | 1097 |
| 1099 bool isFloatingOrOutOfFlowPositioned() const { return (isFloating() || isOut
OfFlowPositioned()); } | 1098 bool isFloatingOrOutOfFlowPositioned() const { return (isFloating() || isOut
OfFlowPositioned()); } |
| 1100 | 1099 |
| 1101 bool isTransparent() const { return style()->hasOpacity(); } | 1100 bool isTransparent() const { return style()->hasOpacity(); } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1184 if (parent()) | 1183 if (parent()) |
| 1185 parent()->removeChild(this); | 1184 parent()->removeChild(this); |
| 1186 } | 1185 } |
| 1187 | 1186 |
| 1188 bool visibleToHitTestRequest(const HitTestRequest& request) const { return s
tyle()->visibility() == VISIBLE && (request.ignorePointerEventsNone() || style()
->pointerEvents() != PE_NONE) && !isInert(); } | 1187 bool visibleToHitTestRequest(const HitTestRequest& request) const { return s
tyle()->visibility() == VISIBLE && (request.ignorePointerEventsNone() || style()
->pointerEvents() != PE_NONE) && !isInert(); } |
| 1189 | 1188 |
| 1190 bool visibleToHitTesting() const { return style()->visibility() == VISIBLE &
& style()->pointerEvents() != PE_NONE && !isInert(); } | 1189 bool visibleToHitTesting() const { return style()->visibility() == VISIBLE &
& style()->pointerEvents() != PE_NONE && !isInert(); } |
| 1191 | 1190 |
| 1192 // Map points and quads through elements, potentially via 3d transforms. You
should never need to call these directly; use | 1191 // Map points and quads through elements, potentially via 3d transforms. You
should never need to call these directly; use |
| 1193 // localToAbsolute/absoluteToLocal methods instead. | 1192 // localToAbsolute/absoluteToLocal methods instead. |
| 1194 virtual void mapLocalToContainer(const LayoutBoxModelObject* paintInvalidati
onContainer, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wa
sFixed = nullptr, const PaintInvalidationState* = nullptr) const; | 1193 virtual void mapLocalToAncestor(const LayoutBoxModelObject* ancestor, Transf
ormState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = nullptr, c
onst PaintInvalidationState* = nullptr) const; |
| 1195 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c
onst; | 1194 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c
onst; |
| 1196 | 1195 |
| 1197 // Pushes state onto LayoutGeometryMap about how to map coordinates from thi
s layoutObject to its container, or ancestorToStopAt (whichever is encountered f
irst). | 1196 // Pushes state onto LayoutGeometryMap about how to map coordinates from thi
s layoutObject to its container, or ancestorToStopAt (whichever is encountered f
irst). |
| 1198 // Returns the layoutObject which was mapped to (container or ancestorToStop
At). | 1197 // Returns the layoutObject which was mapped to (container or ancestorToStop
At). |
| 1199 virtual const LayoutObject* pushMappingToContainer(const LayoutBoxModelObjec
t* ancestorToStopAt, LayoutGeometryMap&) const; | 1198 virtual const LayoutObject* pushMappingToContainer(const LayoutBoxModelObjec
t* ancestorToStopAt, LayoutGeometryMap&) const; |
| 1200 | 1199 |
| 1201 bool shouldUseTransformFromContainer(const LayoutObject* container) const; | 1200 bool shouldUseTransformFromContainer(const LayoutObject* container) const; |
| 1202 void getTransformFromContainer(const LayoutObject* container, const LayoutSi
ze& offsetInContainer, TransformationMatrix&) const; | 1201 void getTransformFromContainer(const LayoutObject* container, const LayoutSi
ze& offsetInContainer, TransformationMatrix&) const; |
| 1203 | 1202 |
| 1204 bool createsGroup() const { return isTransparent() || hasMask() || hasFilter
() || style()->hasBlendMode(); } | 1203 bool createsGroup() const { return isTransparent() || hasMask() || hasFilter
() || style()->hasBlendMode(); } |
| (...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2061 void showTree(const blink::LayoutObject*); | 2060 void showTree(const blink::LayoutObject*); |
| 2062 void showLineTree(const blink::LayoutObject*); | 2061 void showLineTree(const blink::LayoutObject*); |
| 2063 void showLayoutTree(const blink::LayoutObject* object1); | 2062 void showLayoutTree(const blink::LayoutObject* object1); |
| 2064 // We don't make object2 an optional parameter so that showLayoutTree | 2063 // We don't make object2 an optional parameter so that showLayoutTree |
| 2065 // can be called from gdb easily. | 2064 // can be called from gdb easily. |
| 2066 void showLayoutTree(const blink::LayoutObject* object1, const blink::LayoutObjec
t* object2); | 2065 void showLayoutTree(const blink::LayoutObject* object1, const blink::LayoutObjec
t* object2); |
| 2067 | 2066 |
| 2068 #endif | 2067 #endif |
| 2069 | 2068 |
| 2070 #endif // LayoutObject_h | 2069 #endif // LayoutObject_h |
| OLD | NEW |