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

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

Issue 2563403002: [LayoutNG] Add Bidi reordering and fill in NGPhysicalTextFragment (Closed)
Patch Set: ikilpatrick review Created 4 years 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
index 930d6e1d05744fdefbdfb736cf9a0c82124ae761..4f254a9607d486990cfb3e8170425b77a54f9dbe 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
@@ -21,9 +21,9 @@ class ComputedStyle;
class LayoutObject;
class NGConstraintSpace;
class NGFragmentBase;
-class NGFragmentBuilder;
class NGLayoutAlgorithm;
class NGLayoutInlineItem;
+class NGLayoutInlineItemRange;
class NGLayoutInlineItemsBuilder;
// Represents an inline node to be laid out.
@@ -39,12 +39,15 @@ class CORE_EXPORT NGInlineNode : public NGLayoutInputNode {
// calling the Layout method.
void PrepareLayout();
- unsigned CreateLine(unsigned start, NGConstraintSpace*, NGFragmentBuilder*);
-
String Text(unsigned start_offset, unsigned end_offset) const {
return text_content_.substring(start_offset, end_offset);
}
+ Vector<NGLayoutInlineItem>& Items() { return items_; }
+ NGLayoutInlineItemRange Items(unsigned start_index, unsigned end_index);
+
+ bool IsBidiEnabled() const { return is_bidi_enabled_; }
+
DECLARE_VIRTUAL_TRACE();
protected:
@@ -94,6 +97,7 @@ class NGLayoutInlineItem {
unsigned StartOffset() const { return start_offset_; }
unsigned EndOffset() const { return end_offset_; }
TextDirection Direction() const { return bidi_level_ & 1 ? RTL : LTR; }
+ UBiDiLevel BidiLevel() const { return bidi_level_; }
UScriptCode Script() const { return script_; }
const ComputedStyle* Style() const { return style_; }
@@ -126,6 +130,44 @@ DEFINE_TYPE_CASTS(NGInlineNode,
node->Type() == NGLayoutInputNode::kLegacyInline,
node.Type() == NGLayoutInputNode::kLegacyInline);
+// 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) {
+ RELEASE_ASSERT(index < size_);
+ return start_item_[index];
+ }
+ const NGLayoutInlineItem& operator[](unsigned index) const {
+ RELEASE_ASSERT(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