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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_inline_node.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_node.h
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h b/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
deleted file mode 100644
index 896805c3fefc3c7a05051a6695d5ac96c4eec37e..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
+++ /dev/null
@@ -1,254 +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 NGInlineNode_h
-#define NGInlineNode_h
-
-#include "core/CoreExport.h"
-#include "core/layout/LayoutBlockFlow.h"
-#include "core/layout/ng/ng_layout_input_node.h"
-#include "platform/fonts/FontFallbackPriority.h"
-#include "platform/fonts/shaping/ShapeResult.h"
-#include "platform/heap/Handle.h"
-#include "platform/text/TextDirection.h"
-#include "wtf/text/WTFString.h"
-
-#include <unicode/ubidi.h>
-#include <unicode/uscript.h>
-
-namespace blink {
-
-class ComputedStyle;
-class LayoutBlockFlow;
-class LayoutObject;
-class LayoutUnit;
-struct MinMaxContentSize;
-class NGConstraintSpace;
-class NGLayoutInlineItem;
-class NGLayoutInlineItemRange;
-class NGLayoutInlineItemsBuilder;
-class NGLayoutResult;
-
-// Represents an anonymous block box to be laid out, that contains consecutive
-// inline nodes and their descendants.
-class CORE_EXPORT NGInlineNode : public NGLayoutInputNode {
- public:
- NGInlineNode(LayoutObject* start_inline, LayoutBlockFlow*);
- ~NGInlineNode() override;
-
- LayoutBlockFlow* GetLayoutBlockFlow() const { return block_; }
- const ComputedStyle& Style() const override { return block_->StyleRef(); }
- NGLayoutInputNode* NextSibling() override;
-
- RefPtr<NGLayoutResult> Layout(NGConstraintSpace*, NGBreakToken*) override;
- LayoutObject* GetLayoutObject() override;
-
- // Computes the value of min-content and max-content for this anonymous block
- // box. min-content is the inline size when lines wrap at every break
- // opportunity, and max-content is when lines do not wrap at all.
- MinMaxContentSize ComputeMinMaxContentSize() override;
-
- // Instruct to re-compute |PrepareLayout| on the next layout.
- void InvalidatePrepareLayout();
-
- const String& Text() const { return text_content_; }
- StringView Text(unsigned start_offset, unsigned end_offset) const {
- return StringView(text_content_, start_offset, end_offset - start_offset);
- }
-
- Vector<NGLayoutInlineItem>& Items() { return items_; }
- NGLayoutInlineItemRange Items(unsigned start_index, unsigned end_index);
-
- void GetLayoutTextOffsets(Vector<unsigned, 32>*);
-
- bool IsBidiEnabled() const { return is_bidi_enabled_; }
-
- void AssertOffset(unsigned index, unsigned offset) const;
- void AssertEndOffset(unsigned index, unsigned offset) const;
-
- DECLARE_VIRTUAL_TRACE();
-
- protected:
- NGInlineNode(); // This constructor is only for testing.
-
- // Prepare inline and text content for layout. Must be called before
- // calling the Layout method.
- void PrepareLayout();
- bool IsPrepareLayoutFinished() const { return !text_content_.IsNull(); }
-
- void CollectInlines(LayoutObject* start, LayoutBlockFlow*);
- LayoutObject* CollectInlines(LayoutObject* start,
- LayoutBlockFlow*,
- NGLayoutInlineItemsBuilder*);
- void SegmentText();
- void ShapeText();
-
- LayoutObject* start_inline_;
- LayoutBlockFlow* block_;
- Member<NGLayoutInputNode> next_sibling_;
-
- // Text content for all inline items represented by a single NGInlineNode
- // instance. Encoded either as UTF-16 or latin-1 depending on content.
- String text_content_;
- Vector<NGLayoutInlineItem> items_;
-
- // TODO(kojii): This should move to somewhere else when we move PrepareLayout
- // to the correct place.
- bool is_bidi_enabled_ = false;
-};
-
-// Class representing a single text node or styled inline element with text
-// content segmented by style, text direction, sideways rotation, font fallback
-// priority (text, symbol, emoji, etc) and script (but not by font).
-// In this representation TextNodes are merged up into their parent inline
-// element where possible.
-class NGLayoutInlineItem {
- public:
- enum NGLayoutInlineItemType {
- kText,
- kAtomicInline,
- kOpenTag,
- kCloseTag,
- kFloating,
- kOutOfFlowPositioned,
- kBidiControl
- // When adding new values, make sure the bit size of |type_| is large
- // enough to store.
- };
-
- NGLayoutInlineItem(NGLayoutInlineItemType type,
- unsigned start,
- unsigned end,
- const ComputedStyle* style = nullptr,
- LayoutObject* layout_object = nullptr)
- : start_offset_(start),
- end_offset_(end),
- bidi_level_(UBIDI_LTR),
- script_(USCRIPT_INVALID_CODE),
- fallback_priority_(FontFallbackPriority::kInvalid),
- rotate_sideways_(false),
- style_(style),
- layout_object_(layout_object),
- type_(type) {
- DCHECK_GE(end, start);
- }
-
- NGLayoutInlineItemType Type() const {
- return static_cast<NGLayoutInlineItemType>(type_);
- }
-
- unsigned StartOffset() const { return start_offset_; }
- unsigned EndOffset() const { return end_offset_; }
- unsigned Length() const { return end_offset_ - start_offset_; }
- TextDirection Direction() const {
- return bidi_level_ & 1 ? TextDirection::kRtl : TextDirection::kLtr;
- }
- UBiDiLevel BidiLevel() const { return bidi_level_; }
- UScriptCode Script() const { return script_; }
- const ComputedStyle* Style() const { return style_; }
- LayoutObject* GetLayoutObject() const { return layout_object_; }
-
- void SetOffset(unsigned start, unsigned end);
- void SetEndOffset(unsigned);
-
- LayoutUnit InlineSize() const;
- LayoutUnit InlineSize(unsigned start, unsigned end) const;
-
- void GetFallbackFonts(HashSet<const SimpleFontData*>*,
- unsigned start,
- unsigned end) const;
-
- static void Split(Vector<NGLayoutInlineItem>&,
- unsigned index,
- unsigned offset);
- static unsigned SetBidiLevel(Vector<NGLayoutInlineItem>&,
- unsigned index,
- unsigned end_offset,
- UBiDiLevel);
-
- void AssertOffset(unsigned offset) const;
- void AssertEndOffset(unsigned offset) const;
-
- private:
- unsigned start_offset_;
- unsigned end_offset_;
- UBiDiLevel bidi_level_;
- UScriptCode script_;
- FontFallbackPriority fallback_priority_;
- bool rotate_sideways_;
- const ComputedStyle* style_;
- RefPtr<const ShapeResult> shape_result_;
- LayoutObject* layout_object_;
-
- unsigned type_ : 3;
-
- friend class NGInlineNode;
-};
-
-inline void NGLayoutInlineItem::AssertOffset(unsigned offset) const {
- DCHECK((offset >= start_offset_ && offset < end_offset_) ||
- (offset == start_offset_ && start_offset_ == end_offset_));
-}
-
-inline void NGLayoutInlineItem::AssertEndOffset(unsigned offset) const {
- DCHECK_GE(offset, start_offset_);
- DCHECK_LE(offset, end_offset_);
-}
-
-inline void NGInlineNode::AssertOffset(unsigned index, unsigned offset) const {
- items_[index].AssertOffset(offset);
-}
-
-inline void NGInlineNode::AssertEndOffset(unsigned index,
- unsigned offset) const {
- items_[index].AssertEndOffset(offset);
-}
-
-DEFINE_TYPE_CASTS(NGInlineNode,
- NGLayoutInputNode,
- node,
- node->IsInline(),
- node.IsInline());
-
-// A vector-like object that points to a subset of an array of
-// |NGLayoutInlineItem|.
-// The source vector must keep alive and must not resize while this object
-// is alive.
-class NGLayoutInlineItemRange {
- STACK_ALLOCATED();
-
- public:
- NGLayoutInlineItemRange(Vector<NGLayoutInlineItem>*,
- unsigned start_index,
- unsigned end_index);
-
- unsigned StartIndex() const { return start_index_; }
- unsigned EndIndex() const { return start_index_ + size_; }
- unsigned Size() const { return size_; }
-
- NGLayoutInlineItem& operator[](unsigned index) {
- CHECK_LT(index, size_);
- return start_item_[index];
- }
- const NGLayoutInlineItem& operator[](unsigned index) const {
- CHECK_LT(index, size_);
- return start_item_[index];
- }
-
- using iterator = NGLayoutInlineItem*;
- using const_iterator = const NGLayoutInlineItem*;
- iterator begin() { return start_item_; }
- iterator end() { return start_item_ + size_; }
- const_iterator begin() const { return start_item_; }
- const_iterator end() const { return start_item_ + size_; }
-
- private:
- NGLayoutInlineItem* start_item_;
- unsigned size_;
- unsigned start_index_;
-};
-
-} // namespace blink
-
-#endif // NGInlineNode_h

Powered by Google App Engine
This is Rietveld 408576698