diff options
Diffstat (limited to 'Source/WebCore/rendering/line/LineBreaker.h')
-rw-r--r-- | Source/WebCore/rendering/line/LineBreaker.h | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/Source/WebCore/rendering/line/LineBreaker.h b/Source/WebCore/rendering/line/LineBreaker.h index 70c404960..0c9d9f8c7 100644 --- a/Source/WebCore/rendering/line/LineBreaker.h +++ b/Source/WebCore/rendering/line/LineBreaker.h @@ -22,13 +22,11 @@ * */ -#ifndef LineBreaker_h -#define LineBreaker_h +#pragma once #include "InlineIterator.h" #include "LineInfo.h" #include "LineInlineHeaders.h" -#include "TextBreakIterator.h" #include <wtf/Vector.h> namespace WebCore { @@ -36,26 +34,23 @@ namespace WebCore { class RenderText; struct RenderTextInfo { - // Destruction of m_layout requires TextLayout to be a complete type, so the constructor and destructor are made non-inline to avoid compilation errors. - RenderTextInfo(); - ~RenderTextInfo(); - - RenderText* m_text; - OwnPtr<TextLayout> m_layout; - LazyLineBreakIterator m_lineBreakIterator; - const Font* m_font; + RenderText* text { nullptr }; + std::unique_ptr<TextLayout, TextLayoutDeleter> layout; + LazyLineBreakIterator lineBreakIterator; + const FontCascade* font { nullptr }; }; class LineBreaker { public: friend class BreakingContext; - LineBreaker(RenderBlockFlow& block) + + explicit LineBreaker(RenderBlockFlow& block) : m_block(block) { reset(); } - InlineIterator nextLineBreak(InlineBidiResolver&, LineInfo&, RenderTextInfo&, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements&); + InlineIterator nextLineBreak(InlineBidiResolver&, LineInfo&, LineLayoutState&, RenderTextInfo&, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements&); bool lineWasHyphenated() { return m_hyphenated; } const Vector<RenderBox*>& positionedObjects() { return m_positionedObjects; } @@ -64,12 +59,11 @@ public: private: void reset(); - InlineIterator nextSegmentBreak(InlineBidiResolver&, LineInfo&, RenderTextInfo&, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements&); void skipTrailingWhitespace(InlineIterator&, const LineInfo&); void skipLeadingWhitespace(InlineBidiResolver&, LineInfo&, FloatingObject* lastFloatFromPreviousLine, LineWidth&); FloatingObject* insertFloatingObject(RenderBox& floatBox) { return m_block.insertFloatingObject(floatBox); } - bool positionNewFloatOnLine(FloatingObject* newFloat, FloatingObject* lastFloatFromPreviousLine, LineInfo& lineInfo, LineWidth& width) + bool positionNewFloatOnLine(const FloatingObject& newFloat, FloatingObject* lastFloatFromPreviousLine, LineInfo& lineInfo, LineWidth& width) { return m_block.positionNewFloatOnLine(newFloat, lastFloatFromPreviousLine, lineInfo, width); } @@ -80,6 +74,4 @@ private: Vector<RenderBox*> m_positionedObjects; }; -} - -#endif // LineBreaker_h +} // namespace WebCore |