summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/line/LineBreaker.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/line/LineBreaker.h')
-rw-r--r--Source/WebCore/rendering/line/LineBreaker.h28
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