Index: Source/core/rendering/line/BreakingContextInlineHeaders.h |
diff --git a/Source/core/rendering/line/BreakingContextInlineHeaders.h b/Source/core/rendering/line/BreakingContextInlineHeaders.h |
index 09ea398ac2761d267b2923515249694544cfc89e..c240563a6499e19bb2740918167969b7f0822e6a 100644 |
--- a/Source/core/rendering/line/BreakingContextInlineHeaders.h |
+++ b/Source/core/rendering/line/BreakingContextInlineHeaders.h |
@@ -28,7 +28,11 @@ |
#include "core/rendering/InlineTextBox.h" |
#include "core/rendering/RenderCombineText.h" |
#include "core/rendering/RenderInline.h" |
+#include "core/rendering/RenderLayer.h" |
+#include "core/rendering/RenderListMarker.h" |
+#include "core/rendering/RenderRubyRun.h" |
#include "core/rendering/break_lines.h" |
+#include "core/rendering/line/LineBreaker.h" |
#include "core/rendering/line/LineInfo.h" |
#include "core/rendering/line/LineWidth.h" |
#include "core/rendering/line/TrailingObjects.h" |
@@ -40,15 +44,6 @@ namespace WebCore { |
// We don't let our line box tree for a single line get any deeper than this. |
const unsigned cMaxLineDepth = 200; |
-struct RenderTextInfo { |
- RenderTextInfo(); |
- ~RenderTextInfo(); |
- |
- RenderText* m_text; |
- LazyLineBreakIterator m_lineBreakIterator; |
- const Font* m_font; |
-}; |
- |
class WordMeasurement { |
public: |
WordMeasurement() |
@@ -172,8 +167,6 @@ private: |
TrailingObjects m_trailingObjects; |
}; |
-enum WhitespacePosition { LeadingWhitespace, TrailingWhitespace }; |
- |
inline bool shouldCollapseWhiteSpace(const RenderStyle* style, const LineInfo& lineInfo, WhitespacePosition whitespacePosition) |
{ |
// CSS2 16.6.1 |
@@ -952,48 +945,14 @@ inline void BreakingContext::commitAndUpdateLineBreakIfNeeded() |
} |
} |
-InlineIterator BreakingContext::handleEndOfLine() |
+inline IndentTextOrNot requiresIndent(bool isFirstLine, bool isAfterHardLineBreak, RenderStyle* style) |
{ |
- ShapeInsideInfo* shapeInfo = m_block->layoutShapeInsideInfo(); |
- bool segmentAllowsOverflow = !shapeInfo || !shapeInfo->hasSegments(); |
- |
- if (m_lineBreak == m_resolver.position() && (!m_lineBreak.object() || !m_lineBreak.object()->isBR()) && segmentAllowsOverflow) { |
- // we just add as much as possible |
- if (m_blockStyle->whiteSpace() == PRE && !m_current.offset()) { |
- m_lineBreak.moveTo(m_lastObject, m_lastObject->isText() ? m_lastObject->length() : 0); |
- } else if (m_lineBreak.object()) { |
- // Don't ever break in the middle of a word if we can help it. |
- // There's no room at all. We just have to be on this line, |
- // even though we'll spill out. |
- m_lineBreak.moveTo(m_current.object(), m_current.offset()); |
- } |
- } |
- |
- // FIXME Bug 100049: We do not need to consume input in a multi-segment line |
- // unless no segment will. |
- // make sure we consume at least one char/object. |
- if (m_lineBreak == m_resolver.position() && segmentAllowsOverflow) |
- m_lineBreak.increment(); |
- |
- // Sanity check our midpoints. |
- m_lineMidpointState.checkMidpoints(m_lineBreak); |
- |
- m_trailingObjects.updateMidpointsForTrailingBoxes(m_lineMidpointState, m_lineBreak, TrailingObjects::CollapseFirstSpace); |
- |
- // We might have made lineBreak an iterator that points past the end |
- // of the object. Do this adjustment to make it point to the start |
- // of the next object instead to avoid confusing the rest of the |
- // code. |
- if (m_lineBreak.offset()) { |
- // This loop enforces the invariant that line breaks should never point |
- // at an empty inline. See http://crbug.com/305904. |
- do { |
- m_lineBreak.setOffset(m_lineBreak.offset() - 1); |
- m_lineBreak.increment(); |
- } while (!m_lineBreak.atEnd() && isEmptyInline(m_lineBreak.object())); |
- } |
+ if (isFirstLine) |
+ return IndentText; |
+ if (isAfterHardLineBreak && style->textIndentLine() == TextIndentEachLine) |
+ return IndentText; |
- return m_lineBreak; |
+ return DoNotIndentText; |
} |
} |