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

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

Issue 2811783002: [LayoutNG] Move inline files to the inline directory (Closed)
Patch Set: Fix unit tests Created 3 years, 8 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_inline_layout_algorithm.h
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.h b/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.h
deleted file mode 100644
index 949c8a56a8c8ce493cac3f1c57bdbf34ef9ae64c..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.h
+++ /dev/null
@@ -1,175 +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 NGInlineLayoutAlgorithm_h
-#define NGInlineLayoutAlgorithm_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_inline_break_token.h"
-#include "core/layout/ng/ng_layout_algorithm.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 NGInlineBreakToken;
-class NGInlineNode;
-class NGLayoutInlineItem;
-class NGLineBoxFragmentBuilder;
-class NGTextFragmentBuilder;
-
-// A class for inline layout (e.g. a <span> with no special style).
-//
-// Uses NGLineBreaker to find break opportunities, and let it call back to
-// construct linebox fragments and its wrapper box fragment.
-//
-// From a line breaker, this class 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 NGInlineLayoutAlgorithm final
- : public NGLayoutAlgorithm<NGInlineNode, NGInlineBreakToken> {
- public:
- NGInlineLayoutAlgorithm(NGInlineNode*,
- NGConstraintSpace*,
- NGInlineBreakToken* = nullptr);
-
- 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 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.
- // @return false if the line does not fit in the constraint space in block
- // direction.
- bool 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.
- // @return false if the line does not fit in the constraint space in block
- // direction.
- bool 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);
-
- RefPtr<NGLayoutResult> Layout() override;
-
- // Compute MinMaxContentSize by performing layout.
- // Unlike NGLayoutAlgorithm::ComputeMinMaxContentSize(), this function runs
- // part of layout operations and modifies the state of |this|.
- MinMaxContentSize ComputeMinMaxContentSizeByLayout();
-
- // Copy fragment data of all lines to LayoutBlockFlow.
- // TODO(kojii): Move to NGInlineNode (or remove when paint is implemented.)
- void CopyFragmentDataToLayoutBlockFlow(NGLayoutResult*);
-
- // 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_; }
-
- bool IsFirstLine() const;
- const ComputedStyle& FirstLineStyle() const;
- const ComputedStyle& LineStyle() const;
-
- // Set the start and the end to the specified offset.
- // This empties the current line.
- void Initialize(unsigned index, unsigned offset);
-
- 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*);
-
- bool PlaceItems(const Vector<LineItemChunk, 32>&);
- void AccumulateUsedFonts(const NGLayoutInlineItem&,
- const LineItemChunk&,
- NGLineBoxFragmentBuilder*);
- LayoutUnit PlaceAtomicInline(const NGLayoutInlineItem&,
- NGLineBoxFragmentBuilder*,
- NGTextFragmentBuilder*);
-
- // Finds the next layout opportunity for the next text fragment.
- void FindNextLayoutOpportunity();
-
- 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_;
- FontBaseline baseline_type_ = FontBaseline::kAlphabeticBaseline;
-
- NGLogicalOffset bfc_offset_;
- NGLogicalRect current_opportunity_;
-
- unsigned is_horizontal_writing_mode_ : 1;
- unsigned disallow_first_line_rules_ : 1;
-
- NGConstraintSpaceBuilder space_builder_;
-#if DCHECK_IS_ON()
- unsigned is_bidi_reordered_ : 1;
-#endif
-};
-
-} // namespace blink
-
-#endif // NGInlineLayoutAlgorithm_h

Powered by Google App Engine
This is Rietveld 408576698