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

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

Issue 2457013004: Use NGLogicalRect instead of NGExclusion for exclusions. (Closed)
Patch Set: Created 4 years, 2 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_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;
};

Powered by Google App Engine
This is Rietveld 408576698