| Index: Source/core/rendering/RenderBlockLineLayout.cpp
|
| diff --git a/Source/core/rendering/RenderBlockLineLayout.cpp b/Source/core/rendering/RenderBlockLineLayout.cpp
|
| index 29d49ca4d5cf24b47b44dc20b0d241d0c173cebe..d1c5bb4bcd38e268f2fe33eddd11ac89203b6fa2 100644
|
| --- a/Source/core/rendering/RenderBlockLineLayout.cpp
|
| +++ b/Source/core/rendering/RenderBlockLineLayout.cpp
|
| @@ -34,6 +34,7 @@
|
| #include "core/rendering/TrailingFloatsRootInlineBox.h"
|
| #include "core/rendering/VerticalPositionCache.h"
|
| #include "core/rendering/line/BreakingContextInlineHeaders.h"
|
| +#include "core/rendering/line/LineLayoutState.h"
|
| #include "core/rendering/svg/SVGRootInlineBox.h"
|
| #include "platform/text/BidiResolver.h"
|
| #include "wtf/RefCountedLeakCounter.h"
|
| @@ -962,95 +963,6 @@ RootInlineBox* RenderBlockFlow::createLineBoxesFromBidiRuns(unsigned bidiLevel,
|
| return lineBox;
|
| }
|
|
|
| -// Like LayoutState for layout(), LineLayoutState keeps track of global information
|
| -// during an entire linebox tree layout pass (aka layoutInlineChildren).
|
| -class LineLayoutState {
|
| -public:
|
| - LineLayoutState(bool fullLayout, LayoutUnit& repaintLogicalTop, LayoutUnit& repaintLogicalBottom, RenderFlowThread* flowThread)
|
| - : m_lastFloat(0)
|
| - , m_endLine(0)
|
| - , m_floatIndex(0)
|
| - , m_endLineLogicalTop(0)
|
| - , m_endLineMatched(false)
|
| - , m_checkForFloatsFromLastLine(false)
|
| - , m_isFullLayout(fullLayout)
|
| - , m_repaintLogicalTop(repaintLogicalTop)
|
| - , m_repaintLogicalBottom(repaintLogicalBottom)
|
| - , m_adjustedLogicalLineTop(0)
|
| - , m_usesRepaintBounds(false)
|
| - , m_flowThread(flowThread)
|
| - { }
|
| -
|
| - void markForFullLayout() { m_isFullLayout = true; }
|
| - bool isFullLayout() const { return m_isFullLayout; }
|
| -
|
| - bool usesRepaintBounds() const { return m_usesRepaintBounds; }
|
| -
|
| - void setRepaintRange(LayoutUnit logicalHeight)
|
| - {
|
| - m_usesRepaintBounds = true;
|
| - m_repaintLogicalTop = m_repaintLogicalBottom = logicalHeight;
|
| - }
|
| -
|
| - void updateRepaintRangeFromBox(RootInlineBox* box, LayoutUnit paginationDelta = 0)
|
| - {
|
| - m_usesRepaintBounds = true;
|
| - m_repaintLogicalTop = min(m_repaintLogicalTop, box->logicalTopVisualOverflow() + min<LayoutUnit>(paginationDelta, 0));
|
| - m_repaintLogicalBottom = max(m_repaintLogicalBottom, box->logicalBottomVisualOverflow() + max<LayoutUnit>(paginationDelta, 0));
|
| - }
|
| -
|
| - bool endLineMatched() const { return m_endLineMatched; }
|
| - void setEndLineMatched(bool endLineMatched) { m_endLineMatched = endLineMatched; }
|
| -
|
| - bool checkForFloatsFromLastLine() const { return m_checkForFloatsFromLastLine; }
|
| - void setCheckForFloatsFromLastLine(bool check) { m_checkForFloatsFromLastLine = check; }
|
| -
|
| - LineInfo& lineInfo() { return m_lineInfo; }
|
| - const LineInfo& lineInfo() const { return m_lineInfo; }
|
| -
|
| - LayoutUnit endLineLogicalTop() const { return m_endLineLogicalTop; }
|
| - void setEndLineLogicalTop(LayoutUnit logicalTop) { m_endLineLogicalTop = logicalTop; }
|
| -
|
| - RootInlineBox* endLine() const { return m_endLine; }
|
| - void setEndLine(RootInlineBox* line) { m_endLine = line; }
|
| -
|
| - FloatingObject* lastFloat() const { return m_lastFloat; }
|
| - void setLastFloat(FloatingObject* lastFloat) { m_lastFloat = lastFloat; }
|
| -
|
| - Vector<RenderBlockFlow::FloatWithRect>& floats() { return m_floats; }
|
| -
|
| - unsigned floatIndex() const { return m_floatIndex; }
|
| - void setFloatIndex(unsigned floatIndex) { m_floatIndex = floatIndex; }
|
| -
|
| - LayoutUnit adjustedLogicalLineTop() const { return m_adjustedLogicalLineTop; }
|
| - void setAdjustedLogicalLineTop(LayoutUnit value) { m_adjustedLogicalLineTop = value; }
|
| -
|
| - RenderFlowThread* flowThread() const { return m_flowThread; }
|
| - void setFlowThread(RenderFlowThread* thread) { m_flowThread = thread; }
|
| -
|
| -private:
|
| - Vector<RenderBlockFlow::FloatWithRect> m_floats;
|
| - FloatingObject* m_lastFloat;
|
| - RootInlineBox* m_endLine;
|
| - LineInfo m_lineInfo;
|
| - unsigned m_floatIndex;
|
| - LayoutUnit m_endLineLogicalTop;
|
| - bool m_endLineMatched;
|
| - bool m_checkForFloatsFromLastLine;
|
| -
|
| - bool m_isFullLayout;
|
| -
|
| - // FIXME: Should this be a range object instead of two ints?
|
| - LayoutUnit& m_repaintLogicalTop;
|
| - LayoutUnit& m_repaintLogicalBottom;
|
| -
|
| - LayoutUnit m_adjustedLogicalLineTop;
|
| -
|
| - bool m_usesRepaintBounds;
|
| -
|
| - RenderFlowThread* m_flowThread;
|
| -};
|
| -
|
| static void deleteLineRange(LineLayoutState& layoutState, RootInlineBox* startLine, RootInlineBox* stopLine = 0)
|
| {
|
| RootInlineBox* boxToDelete = startLine;
|
|
|