| 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
|
|
|