Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1156)

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_line_builder.h

Issue 2772503004: [LayoutNG] Add NGInlineBreakToken and back of NGInlineLayoutAlgorithm (Closed)
Patch Set: Resolved merge conflicts Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
deleted file mode 100644
index 02a466cd16a5da339802d5856232ca612d58598f..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h
+++ /dev/null
@@ -1,164 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NGLineBuilder_h
-#define NGLineBuilder_h
-
-#include "core/CoreExport.h"
-#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_line_height_metrics.h"
-#include "platform/fonts/FontBaseline.h"
-#include "platform/heap/Handle.h"
-#include "wtf/Vector.h"
-
-namespace blink {
-
-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|.
-// |end| can be extended multiple times before creating a line, usually until
-// |!CanFitOnLine()|.
-// |SetBreakOpportunity| can mark the last confirmed offset that can fit.
-class CORE_EXPORT NGLineBuilder final {
- STACK_ALLOCATED();
-
- public:
- NGLineBuilder(NGInlineNode*, NGConstraintSpace*);
-
- const NGConstraintSpace& ConstraintSpace() const {
- return *constraint_space_;
- }
-
- LayoutUnit MaxInlineSize() const { return max_inline_size_; }
-
- // Returns if the current items fit on a line.
- bool CanFitOnLine() const;
-
- // Returns if there were any items.
- bool HasItems() const;
-
- // Set the start offset.
- // Set the end as well, and therefore empties the current line.
- void SetStart(unsigned index, unsigned offset);
-
- // Set the end offset.
- void SetEnd(unsigned end_offset);
-
- // Set the end offset if caller knows the inline size since the current end.
- void SetEnd(unsigned index,
- unsigned end_offset,
- LayoutUnit inline_size_since_current_end);
-
- // Create a line up to the end offset.
- // Then set the start to the end offset, and thus empty the current line.
- void CreateLine();
-
- // Returns if a break opportunity was set on the current line.
- bool HasBreakOpportunity() const;
-
- // Returns if there were items after the last break opportunity.
- bool HasItemsAfterLastBreakOpportunity() const;
-
- // Set the break opportunity at the current end offset.
- void SetBreakOpportunity();
-
- // Create a line up to the last break opportunity.
- // Items after that are sent to the next line.
- void CreateLineUpToLastBreakOpportunity();
-
- // Set the start offset of hangables; e.g., spaces or hanging punctuations.
- // Hangable characters can go beyond the right margin, and are ignored for
- // center/right alignment.
- void SetStartOfHangables(unsigned offset);
-
- // Create fragments for all lines created so far.
- RefPtr<NGLayoutResult> CreateFragments();
-
- // Copy fragment data of all lines created by this NGLineBuilder to
- // LayoutBlockFlow.
- // This must run after |CreateFragments()|, and after the fragments it created
- // are placed.
- void CopyFragmentDataToLayoutBlockFlow();
-
- // Compute inline size of an NGLayoutInlineItem.
- // Same as NGLayoutInlineItem::InlineSize(), except that this function can
- // compute atomic inlines by performing layout.
- LayoutUnit InlineSize(const NGLayoutInlineItem&);
-
- private:
- bool IsHorizontalWritingMode() const { return is_horizontal_writing_mode_; }
-
- LayoutUnit InlineSize(const NGLayoutInlineItem&,
- unsigned start_offset,
- unsigned end_offset);
- LayoutUnit InlineSizeFromLayout(const NGLayoutInlineItem&);
- const NGLayoutResult* LayoutItem(const NGLayoutInlineItem&);
-
- struct LineItemChunk {
- unsigned index;
- unsigned start_offset;
- unsigned end_offset;
- LayoutUnit inline_size;
- };
-
- void BidiReorder(Vector<LineItemChunk, 32>*);
-
- // Lays out the inline float.
- // List of actions:
- // - tries to position the float right away if we have enough space.
- // - updates the current_opportunity if we actually place the float.
- // - if it's too wide then we add the float to the unpositioned list so it can
- // be positioned after we're done with the current line.
- void LayoutAndPositionFloat(LayoutUnit end_position, LayoutObject*);
-
- void PlaceItems(const Vector<LineItemChunk, 32>&);
- void AccumulateUsedFonts(const NGLayoutInlineItem&,
- const LineItemChunk&,
- NGLineBoxFragmentBuilder*);
- LayoutUnit PlaceAtomicInline(const NGLayoutInlineItem&,
- LayoutUnit estimated_baseline,
- NGLineBoxFragmentBuilder*,
- NGTextFragmentBuilder*);
-
- // Finds the next layout opportunity for the next text fragment.
- void FindNextLayoutOpportunity();
-
- Persistent<NGInlineNode> inline_box_;
- NGConstraintSpace* constraint_space_; // Not owned as STACK_ALLOCATED.
- Vector<RefPtr<NGLayoutResult>, 32> layout_results_;
- unsigned start_index_ = 0;
- unsigned start_offset_ = 0;
- unsigned last_index_ = 0;
- unsigned end_offset_ = 0;
- unsigned last_break_opportunity_index_ = 0;
- unsigned last_break_opportunity_offset_ = 0;
- LayoutUnit end_position_;
- LayoutUnit last_break_opportunity_position_;
- LayoutUnit content_size_;
- LayoutUnit max_inline_size_;
- NGFragmentBuilder container_builder_;
- RefPtr<NGLayoutResult> container_layout_result_;
- FontBaseline baseline_type_ = FontBaseline::AlphabeticBaseline;
-
- NGLogicalOffset bfc_offset_;
- NGLogicalRect current_opportunity_;
-
- unsigned is_horizontal_writing_mode_ : 1;
-
- NGConstraintSpaceBuilder space_builder_;
-#if DCHECK_IS_ON()
- unsigned is_bidi_reordered_ : 1;
-#endif
-};
-
-} // namespace blink
-
-#endif // NGLineBuilder_h

Powered by Google App Engine
This is Rietveld 408576698