| 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 m_multiColumnSetList.remove(columnSet); | 59 m_multiColumnSetList.remove(columnSet); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void RenderFlowThread::invalidateRegions() | 62 void RenderFlowThread::invalidateRegions() |
| 63 { | 63 { |
| 64 if (m_regionsInvalidated) { | 64 if (m_regionsInvalidated) { |
| 65 ASSERT(selfNeedsLayout()); | 65 ASSERT(selfNeedsLayout()); |
| 66 return; | 66 return; |
| 67 } | 67 } |
| 68 | 68 |
| 69 m_multiColumnSetRangeMap.clear(); | |
| 70 setNeedsLayoutAndFullPaintInvalidation(); | 69 setNeedsLayoutAndFullPaintInvalidation(); |
| 71 | 70 |
| 72 m_regionsInvalidated = true; | 71 m_regionsInvalidated = true; |
| 73 } | 72 } |
| 74 | 73 |
| 75 class CurrentRenderFlowThreadDisabler { | 74 class CurrentRenderFlowThreadDisabler { |
| 76 WTF_MAKE_NONCOPYABLE(CurrentRenderFlowThreadDisabler); | 75 WTF_MAKE_NONCOPYABLE(CurrentRenderFlowThreadDisabler); |
| 77 public: | 76 public: |
| 78 CurrentRenderFlowThreadDisabler(RenderView* view) | 77 CurrentRenderFlowThreadDisabler(RenderView* view) |
| 79 : m_view(view) | 78 : m_view(view) |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 return m_multiColumnSetList.first(); | 208 return m_multiColumnSetList.first(); |
| 210 } | 209 } |
| 211 | 210 |
| 212 RenderRegion* RenderFlowThread::lastRegion() const | 211 RenderRegion* RenderFlowThread::lastRegion() const |
| 213 { | 212 { |
| 214 if (!hasValidRegionInfo()) | 213 if (!hasValidRegionInfo()) |
| 215 return 0; | 214 return 0; |
| 216 return m_multiColumnSetList.last(); | 215 return m_multiColumnSetList.last(); |
| 217 } | 216 } |
| 218 | 217 |
| 219 void RenderFlowThread::setRegionRangeForBox(const RenderBox* box, LayoutUnit off
setFromLogicalTopOfFirstPage) | |
| 220 { | |
| 221 if (!hasRegions()) | |
| 222 return; | |
| 223 | |
| 224 // FIXME: Not right for differing writing-modes. | |
| 225 RenderMultiColumnSet* startColumnSet = columnSetAtBlockOffset(offsetFromLogi
calTopOfFirstPage); | |
| 226 RenderMultiColumnSet* endColumnSet = columnSetAtBlockOffset(offsetFromLogica
lTopOfFirstPage + box->logicalHeight()); | |
| 227 RenderMultiColumnSetRangeMap::iterator it = m_multiColumnSetRangeMap.find(bo
x); | |
| 228 if (it == m_multiColumnSetRangeMap.end()) { | |
| 229 m_multiColumnSetRangeMap.set(box, RenderMultiColumnSetRange(startColumnS
et, endColumnSet)); | |
| 230 return; | |
| 231 } | |
| 232 | |
| 233 // If nothing changed, just bail. | |
| 234 RenderMultiColumnSetRange& range = it->value; | |
| 235 if (range.startColumnSet() == startColumnSet && range.endColumnSet() == endC
olumnSet) | |
| 236 return; | |
| 237 | |
| 238 range.setRange(startColumnSet, endColumnSet); | |
| 239 } | |
| 240 | |
| 241 void RenderFlowThread::getRegionRangeForBox(const RenderBox* box, RenderMultiCol
umnSet*& startColumnSet, RenderMultiColumnSet*& endColumnSet) const | |
| 242 { | |
| 243 startColumnSet = 0; | |
| 244 endColumnSet = 0; | |
| 245 RenderMultiColumnSetRangeMap::const_iterator it = m_multiColumnSetRangeMap.f
ind(box); | |
| 246 if (it == m_multiColumnSetRangeMap.end()) | |
| 247 return; | |
| 248 | |
| 249 const RenderMultiColumnSetRange& range = it->value; | |
| 250 startColumnSet = range.startColumnSet(); | |
| 251 endColumnSet = range.endColumnSet(); | |
| 252 ASSERT(m_multiColumnSetList.contains(startColumnSet) && m_multiColumnSetList
.contains(endColumnSet)); | |
| 253 } | |
| 254 | |
| 255 void RenderFlowThread::updateRegionsFlowThreadPortionRect() | 218 void RenderFlowThread::updateRegionsFlowThreadPortionRect() |
| 256 { | 219 { |
| 257 LayoutUnit logicalHeight = 0; | 220 LayoutUnit logicalHeight = 0; |
| 258 // FIXME: Optimize not to clear the interval all the time. This implies manu
ally managing the tree nodes lifecycle. | 221 // FIXME: Optimize not to clear the interval all the time. This implies manu
ally managing the tree nodes lifecycle. |
| 259 m_multiColumnSetIntervalTree.clear(); | 222 m_multiColumnSetIntervalTree.clear(); |
| 260 m_multiColumnSetIntervalTree.initIfNeeded(); | 223 m_multiColumnSetIntervalTree.initIfNeeded(); |
| 261 for (RenderMultiColumnSetList::iterator iter = m_multiColumnSetList.begin();
iter != m_multiColumnSetList.end(); ++iter) { | 224 for (RenderMultiColumnSetList::iterator iter = m_multiColumnSetList.begin();
iter != m_multiColumnSetList.end(); ++iter) { |
| 262 RenderMultiColumnSet* columnSet = *iter; | 225 RenderMultiColumnSet* columnSet = *iter; |
| 263 | 226 |
| 264 LayoutUnit columnSetLogicalWidth = columnSet->pageLogicalWidth(); | 227 LayoutUnit columnSetLogicalWidth = columnSet->pageLogicalWidth(); |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 { | 391 { |
| 429 if (!m_renderFlowThread) | 392 if (!m_renderFlowThread) |
| 430 return; | 393 return; |
| 431 RenderView* view = m_renderFlowThread->view(); | 394 RenderView* view = m_renderFlowThread->view(); |
| 432 ASSERT(view->flowThreadController()->currentRenderFlowThread() == m_renderFl
owThread); | 395 ASSERT(view->flowThreadController()->currentRenderFlowThread() == m_renderFl
owThread); |
| 433 view->flowThreadController()->setCurrentRenderFlowThread(m_previousRenderFlo
wThread); | 396 view->flowThreadController()->setCurrentRenderFlowThread(m_previousRenderFlo
wThread); |
| 434 } | 397 } |
| 435 | 398 |
| 436 | 399 |
| 437 } // namespace blink | 400 } // namespace blink |
| OLD | NEW |