Index: third_party/WebKit/Source/core/layout/ng/ng_line_builder.h |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h b/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h |
index f6a8e86378d54de1f21ef8374d1b597c210d42f7..02a466cd16a5da339802d5856232ca612d58598f 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h |
@@ -9,19 +9,18 @@ |
#include "core/layout/ng/geometry/ng_logical_offset.h" |
#include "core/layout/ng/ng_constraint_space_builder.h" |
#include "core/layout/ng/ng_fragment_builder.h" |
-#include "core/layout/ng/ng_layout_opportunity_iterator.h" |
-#include "core/layout/ng/ng_physical_fragment.h" |
+#include "core/layout/ng/ng_line_height_metrics.h" |
#include "platform/fonts/FontBaseline.h" |
#include "platform/heap/Handle.h" |
#include "wtf/Vector.h" |
namespace blink { |
-class ComputedStyle; |
-class FontMetrics; |
class NGConstraintSpace; |
class NGInlineNode; |
class NGLayoutInlineItem; |
+class NGLineBoxFragmentBuilder; |
+class NGTextFragmentBuilder; |
// NGLineBuilder creates the fragment tree for a line. |
// NGLineBuilder manages the current line as a range, |start| and |end|. |
@@ -120,50 +119,14 @@ class CORE_EXPORT NGLineBuilder final { |
// be positioned after we're done with the current line. |
void LayoutAndPositionFloat(LayoutUnit end_position, LayoutObject*); |
- // Represents block-direction metrics for an |NGLayoutInlineItem|. |
- struct InlineItemMetrics { |
- float ascent; |
- float descent; |
- float ascent_and_leading; |
- float descent_and_leading; |
- |
- // Use the leading from the 'line-height' property, or the font metrics of |
- // the primary font if 'line-height: normal'. |
- InlineItemMetrics(const ComputedStyle&, FontBaseline); |
- |
- // Use the leading from the font metrics. |
- InlineItemMetrics(const FontMetrics&, FontBaseline); |
- |
- private: |
- void Initialize(const FontMetrics&, FontBaseline, float line_height); |
- }; |
- |
- // LineBoxData is a set of data for a line box that are computed in early |
- // phases, such as in |CreateLine()|, and will be used in later phases. |
- // TODO(kojii): Not sure if all these data are needed in fragment tree. If |
- // they are, we can create a linebox fragment, store them there, and this |
- // isn't needed. For now, we're trying to minimize data in fragments. |
- struct LineBoxData { |
- unsigned fragment_end; |
- LayoutUnit inline_size; |
- LayoutUnit top_with_leading; |
- float max_ascent = 0; |
- float max_descent = 0; |
- float max_ascent_and_leading = 0; |
- float max_descent_and_leading = 0; |
- |
- // Include |InlineItemMetrics| into the metrics for this line box. |
- void UpdateMaxAscentAndDescent(const InlineItemMetrics&); |
- }; |
- |
void PlaceItems(const Vector<LineItemChunk, 32>&); |
void AccumulateUsedFonts(const NGLayoutInlineItem&, |
const LineItemChunk&, |
- LineBoxData*); |
+ NGLineBoxFragmentBuilder*); |
LayoutUnit PlaceAtomicInline(const NGLayoutInlineItem&, |
LayoutUnit estimated_baseline, |
- LineBoxData*, |
- NGFragmentBuilder*); |
+ NGLineBoxFragmentBuilder*, |
+ NGTextFragmentBuilder*); |
// Finds the next layout opportunity for the next text fragment. |
void FindNextLayoutOpportunity(); |
@@ -171,7 +134,6 @@ class CORE_EXPORT NGLineBuilder final { |
Persistent<NGInlineNode> inline_box_; |
NGConstraintSpace* constraint_space_; // Not owned as STACK_ALLOCATED. |
Vector<RefPtr<NGLayoutResult>, 32> layout_results_; |
- Vector<LineBoxData, 32> line_box_data_list_; |
unsigned start_index_ = 0; |
unsigned start_offset_ = 0; |
unsigned last_index_ = 0; |