OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2011 Adobe Systems Incorporated. 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above | 8 * 1. Redistributions of source code must retain the above |
9 * copyright notice, this list of conditions and the following | 9 * copyright notice, this list of conditions and the following |
10 * disclaimer. | 10 * disclaimer. |
(...skipping 11 matching lines...) Expand all Loading... |
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR | 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR |
25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF | 25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF |
26 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 26 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
27 * SUCH DAMAGE. | 27 * SUCH DAMAGE. |
28 */ | 28 */ |
29 | 29 |
30 #include "core/layout/LayoutFlowThread.h" | 30 #include "core/layout/LayoutFlowThread.h" |
31 | 31 |
| 32 #include "core/layout/FragmentainerIterator.h" |
32 #include "core/layout/LayoutMultiColumnSet.h" | 33 #include "core/layout/LayoutMultiColumnSet.h" |
33 | 34 |
34 namespace blink { | 35 namespace blink { |
35 | 36 |
36 LayoutFlowThread::LayoutFlowThread() | 37 LayoutFlowThread::LayoutFlowThread() |
37 : LayoutBlockFlow(nullptr) | 38 : LayoutBlockFlow(nullptr) |
38 , m_columnSetsInvalidated(false) | 39 , m_columnSetsInvalidated(false) |
39 , m_pageLogicalSizeChanged(false) | 40 , m_pageLogicalSizeChanged(false) |
40 { | 41 { |
41 } | 42 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 { | 115 { |
115 computedValues.m_position = logicalTop; | 116 computedValues.m_position = logicalTop; |
116 computedValues.m_extent = LayoutUnit(); | 117 computedValues.m_extent = LayoutUnit(); |
117 | 118 |
118 for (LayoutMultiColumnSetList::const_iterator iter = m_multiColumnSetList.be
gin(); iter != m_multiColumnSetList.end(); ++iter) { | 119 for (LayoutMultiColumnSetList::const_iterator iter = m_multiColumnSetList.be
gin(); iter != m_multiColumnSetList.end(); ++iter) { |
119 LayoutMultiColumnSet* columnSet = *iter; | 120 LayoutMultiColumnSet* columnSet = *iter; |
120 computedValues.m_extent += columnSet->logicalHeightInFlowThread(); | 121 computedValues.m_extent += columnSet->logicalHeightInFlowThread(); |
121 } | 122 } |
122 } | 123 } |
123 | 124 |
| 125 void LayoutFlowThread::absoluteQuadsForDescendant(const LayoutBox& descendant, V
ector<FloatQuad>& quads) |
| 126 { |
| 127 LayoutPoint offsetFromFlowThread; |
| 128 for (const LayoutObject* object = &descendant; object != this;) { |
| 129 const LayoutObject* container = object->container(); |
| 130 offsetFromFlowThread += object->offsetFromContainer(container); |
| 131 object = container; |
| 132 } |
| 133 LayoutRect boundingRectInFlowThread(offsetFromFlowThread, descendant.frameRe
ct().size()); |
| 134 // Set up a fragments relative to the descendant, in the flow thread coordin
ate space, and |
| 135 // convert each of them, individually, to absolute coordinates. |
| 136 for (FragmentainerIterator iterator(*this, boundingRectInFlowThread); !itera
tor.atEnd(); iterator.advance()) { |
| 137 LayoutRect fragment = boundingRectInFlowThread; |
| 138 // We use inclusiveIntersect() because intersect() would reset the coord
inates for |
| 139 // zero-height objects. |
| 140 fragment.inclusiveIntersect(iterator.fragmentainerInFlowThread()); |
| 141 fragment.moveBy(-offsetFromFlowThread); |
| 142 quads.append(descendant.localToAbsoluteQuad(FloatRect(fragment))); |
| 143 } |
| 144 } |
| 145 |
124 bool LayoutFlowThread::nodeAtPoint(HitTestResult& result, const HitTestLocation&
locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction hitTes
tAction) | 146 bool LayoutFlowThread::nodeAtPoint(HitTestResult& result, const HitTestLocation&
locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction hitTes
tAction) |
125 { | 147 { |
126 if (hitTestAction == HitTestBlockBackground) | 148 if (hitTestAction == HitTestBlockBackground) |
127 return false; | 149 return false; |
128 return LayoutBlockFlow::nodeAtPoint(result, locationInContainer, accumulated
Offset, hitTestAction); | 150 return LayoutBlockFlow::nodeAtPoint(result, locationInContainer, accumulated
Offset, hitTestAction); |
129 } | 151 } |
130 | 152 |
131 LayoutUnit LayoutFlowThread::pageLogicalHeightForOffset(LayoutUnit offset) | 153 LayoutUnit LayoutFlowThread::pageLogicalHeightForOffset(LayoutUnit offset) |
132 { | 154 { |
133 LayoutMultiColumnSet* columnSet = columnSetAtBlockOffset(offset, AssociateWi
thLatterPage); | 155 LayoutMultiColumnSet* columnSet = columnSetAtBlockOffset(offset, AssociateWi
thLatterPage); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 | 216 |
195 void LayoutFlowThread::MultiColumnSetSearchAdapter::collectIfNeeded(const MultiC
olumnSetInterval& interval) | 217 void LayoutFlowThread::MultiColumnSetSearchAdapter::collectIfNeeded(const MultiC
olumnSetInterval& interval) |
196 { | 218 { |
197 if (m_result) | 219 if (m_result) |
198 return; | 220 return; |
199 if (interval.low() <= m_offset && interval.high() > m_offset) | 221 if (interval.low() <= m_offset && interval.high() > m_offset) |
200 m_result = interval.data(); | 222 m_result = interval.data(); |
201 } | 223 } |
202 | 224 |
203 } // namespace blink | 225 } // namespace blink |
OLD | NEW |