Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/ng/ng_units.h |
| diff --git a/third_party/WebKit/Source/core/layout/ng/ng_units.h b/third_party/WebKit/Source/core/layout/ng/ng_units.h |
| index d52f17d858c99989caea7fcec888dcfde5443383..8a49bd8d375d9ddf5953ec01a95aad02e7a615fc 100644 |
| --- a/third_party/WebKit/Source/core/layout/ng/ng_units.h |
| +++ b/third_party/WebKit/Source/core/layout/ng/ng_units.h |
| @@ -92,8 +92,10 @@ struct NGPhysicalRect { |
| NGPhysicalSize size; |
| }; |
| +// TODO(glebl): move to a separate file in layout/ng/units. |
| struct CORE_EXPORT NGLogicalRect { |
| NGLogicalRect() {} |
| + // TODO(glebl): Make this private and use the builder everywhere. |
| NGLogicalRect(LayoutUnit inline_offset, |
| LayoutUnit block_offset, |
| LayoutUnit inline_size, |
| @@ -101,9 +103,72 @@ struct CORE_EXPORT NGLogicalRect { |
| : offset(inline_offset, block_offset), size(inline_size, block_size) {} |
| bool IsEmpty() const; |
| + |
| + // Whether this rectangle within the provided rectangle. |
| + bool IsWithin(const NGLogicalRect& other) const; |
| + |
| String ToString() const; |
| bool operator==(const NGLogicalRect& other) const; |
| + // Getters |
| + LayoutUnit InlineStartOffset() const { return offset.inline_offset; } |
| + |
| + LayoutUnit InlineEndOffset() const { |
| + return offset.inline_offset + size.inline_size; |
| + } |
| + |
| + LayoutUnit BlockStartOffset() const { return offset.block_offset; } |
| + |
| + LayoutUnit BlockEndOffset() const { |
| + return offset.block_offset + size.block_size; |
| + } |
| + |
| + LayoutUnit BlockSize() const { return size.block_size; } |
| + |
| + LayoutUnit InlineSize() const { return size.inline_size; } |
| + |
| + class Builder { |
|
ikilpatrick
2016/10/28 23:18:24
yeah, i'm not sold on using the builder for these
Gleb Lanbin
2016/10/28 23:54:09
yes, I'm not a 100% fan of it either because it's
|
| + public: |
| + Builder() = default; |
| + |
| + Builder& SetInlineOffset(const LayoutUnit& inline_offset) { |
| + inline_offset_ = inline_offset; |
| + return *this; |
| + } |
| + |
| + Builder& SetBlockOffset(const LayoutUnit& block_offset) { |
| + block_offset_ = block_offset; |
| + return *this; |
| + } |
| + |
| + Builder& SetInlineSize(const LayoutUnit& inline_size) { |
| + inline_size_ = inline_size; |
| + return *this; |
| + } |
| + |
| + Builder& SetBlockSize(const LayoutUnit& block_size) { |
| + block_size_ = block_size; |
| + return *this; |
| + } |
| + |
| + NGLogicalRect* BuildNew() { |
| + return new NGLogicalRect(inline_offset_, block_offset_, inline_size_, |
| + block_size_); |
| + } |
| + |
| + NGLogicalRect Build() { |
| + return NGLogicalRect(inline_offset_, block_offset_, inline_size_, |
| + block_size_); |
| + } |
| + |
| + private: |
| + LayoutUnit inline_offset_; |
| + LayoutUnit block_offset_; |
| + LayoutUnit inline_size_; |
| + LayoutUnit block_size_; |
| + DISALLOW_COPY_AND_ASSIGN(Builder); |
| + }; |
| + |
| NGLogicalOffset offset; |
| NGLogicalSize size; |
| }; |