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

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

Issue 2721613003: [LayoutNG] Move remaining ng_units structs to their own files (Closed)
Patch Set: Don't export NGBoxStrut for now Created 3 years, 10 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
deleted file mode 100644
index 58c9257866dd5643d44d1544b5b774543af61c2b..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/layout/ng/ng_units.h
+++ /dev/null
@@ -1,268 +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 NGUnits_h
-#define NGUnits_h
-
-#include "core/CoreExport.h"
-#include "core/layout/ng/geometry/ng_logical_offset.h"
-#include "core/layout/ng/geometry/ng_logical_size.h"
-#include "core/layout/ng/geometry/ng_physical_location.h"
-#include "core/layout/ng/geometry/ng_physical_offset.h"
-#include "core/layout/ng/geometry/ng_physical_rect.h"
-#include "core/layout/ng/geometry/ng_physical_size.h"
-#include "core/layout/ng/ng_writing_mode.h"
-#include "platform/LayoutUnit.h"
-#include "platform/text/TextDirection.h"
-#include "wtf/text/WTFString.h"
-
-namespace blink {
-
-struct NGBoxStrut;
-
-#define NGSizeIndefinite LayoutUnit(-1)
-
-struct CORE_EXPORT MinAndMaxContentSizes {
- LayoutUnit min_content;
- LayoutUnit max_content;
- LayoutUnit ShrinkToFit(LayoutUnit available_size) const;
- bool operator==(const MinAndMaxContentSizes& other) const;
-};
-
-inline std::ostream& operator<<(std::ostream& stream,
- const MinAndMaxContentSizes& value) {
- return stream << "(" << value.min_content << ", " << value.max_content << ")";
-}
-
-// TODO(glebl): move to a separate file in layout/ng/units.
-struct CORE_EXPORT NGLogicalRect {
- NGLogicalRect() {}
- NGLogicalRect(const NGLogicalOffset& offset, const NGLogicalSize& size)
- : offset(offset), size(size) {}
- NGLogicalRect(LayoutUnit inline_offset,
- LayoutUnit block_offset,
- LayoutUnit inline_size,
- LayoutUnit block_size)
- : offset(inline_offset, block_offset), size(inline_size, block_size) {}
-
- bool IsEmpty() const;
-
- // Whether this rectangle is contained by the provided rectangle.
- bool IsContained(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; }
-
- NGLogicalOffset offset;
- NGLogicalSize size;
-};
-
-inline std::ostream& operator<<(std::ostream& stream,
- const NGLogicalRect& value) {
- return stream << value.ToString();
-}
-
-// Struct that represents NG exclusion.
-struct CORE_EXPORT NGExclusion {
- // Type of NG exclusion.
- enum Type {
- // Undefined exclusion type.
- // At this moment it's also used to represent CSS3 exclusion.
- kExclusionTypeUndefined = 0,
- // Exclusion that is created by LEFT float.
- kFloatLeft = 1,
- // Exclusion that is created by RIGHT float.
- kFloatRight = 2
- };
-
- // Rectangle in logical coordinates the represents this exclusion.
- NGLogicalRect rect;
-
- // Type of this exclusion.
- Type type;
-
- bool operator==(const NGExclusion& other) const;
- String ToString() const;
-};
-
-inline std::ostream& operator<<(std::ostream& stream,
- const NGExclusion& value) {
- return stream << value.ToString();
-}
-
-struct CORE_EXPORT NGExclusions {
- // Default constructor.
- NGExclusions();
-
- // Copy constructor.
- NGExclusions(const NGExclusions& other);
-
- Vector<std::unique_ptr<const NGExclusion>> storage;
-
- // Last left/right float exclusions are used to enforce the top edge alignment
- // rule for floats and for the support of CSS "clear" property.
- const NGExclusion* last_left_float; // Owned by storage.
- const NGExclusion* last_right_float; // Owned by storage.
-
- NGExclusions& operator=(const NGExclusions& other);
-
- void Add(const NGExclusion& exclusion);
-};
-
-
-// Struct to store physical dimensions, independent of writing mode and
-// direction.
-// See https://drafts.csswg.org/css-writing-modes-3/#abstract-box
-struct CORE_EXPORT NGPhysicalBoxStrut {
- LayoutUnit left;
- LayoutUnit right;
- LayoutUnit top;
- LayoutUnit bottom;
- NGBoxStrut ConvertToLogical(NGWritingMode, TextDirection) const;
-};
-
-// This struct is used for storing margins, borders or padding of a box on all
-// four edges.
-struct CORE_EXPORT NGBoxStrut {
- LayoutUnit inline_start;
- LayoutUnit inline_end;
- LayoutUnit block_start;
- LayoutUnit block_end;
-
- LayoutUnit InlineSum() const { return inline_start + inline_end; }
- LayoutUnit BlockSum() const { return block_start + block_end; }
-
- bool IsEmpty() const;
-
- // The following two operators exist primarily to have an easy way to access
- // the sum of border and padding.
- NGBoxStrut& operator+=(const NGBoxStrut& other) {
- inline_start += other.inline_start;
- inline_end += other.inline_end;
- block_start += other.block_start;
- block_end += other.block_end;
- return *this;
- }
-
- NGBoxStrut operator+(const NGBoxStrut& other) {
- NGBoxStrut result(*this);
- result += other;
- return result;
- }
-
- bool operator==(const NGBoxStrut& other) const;
-
- String ToString() const {
- return String::format("Inline: (%d %d) Block: (%d %d)",
- inline_start.toInt(), inline_end.toInt(),
- block_start.toInt(), block_end.toInt());
- }
-};
-
-inline std::ostream& operator<<(std::ostream& stream, const NGBoxStrut& value) {
- return stream << value.ToString();
-}
-
-// This struct is used for the margin collapsing calculation.
-struct CORE_EXPORT NGMarginStrut {
- LayoutUnit margin;
- LayoutUnit negative_margin;
-
- // Appends negative or positive value to the current margin strut.
- void Append(const LayoutUnit& value);
-
- // Sum up negative and positive margins of this strut.
- LayoutUnit Sum() const;
-
- bool operator==(const NGMarginStrut& other) const;
-
- String ToString() const;
-};
-
-inline std::ostream& operator<<(std::ostream& stream,
- const NGMarginStrut& value) {
- return stream << value.ToString();
-}
-
-// Struct to represent a simple edge that has start and end.
-struct NGEdge {
- LayoutUnit start;
- LayoutUnit end;
-};
-
-// Represents static position of an out of flow descendant.
-struct CORE_EXPORT NGStaticPosition {
- enum Type { kTopLeft, kTopRight, kBottomLeft, kBottomRight };
-
- Type type; // Logical corner that corresponds to physical top left.
- NGPhysicalOffset offset;
-
- // Creates a position with proper type wrt writing mode and direction.
- static NGStaticPosition Create(NGWritingMode,
- TextDirection,
- NGPhysicalOffset);
- // Left/Right/TopPosition functions map static position to
- // left/right/top edge wrt container space.
- // The function arguments are required to solve the equation:
- // contaner_size = left + margin_left + width + margin_right + right
- LayoutUnit LeftPosition(LayoutUnit container_size,
- LayoutUnit width,
- LayoutUnit margin_left,
- LayoutUnit margin_right) const {
- return GenericPosition(HasLeft(), offset.left, container_size, width,
- margin_left, margin_right);
- }
- LayoutUnit RightPosition(LayoutUnit container_size,
- LayoutUnit width,
- LayoutUnit margin_left,
- LayoutUnit margin_right) const {
- return GenericPosition(!HasLeft(), offset.left, container_size, width,
- margin_left, margin_right);
- }
- LayoutUnit TopPosition(LayoutUnit container_size,
- LayoutUnit height,
- LayoutUnit margin_top,
- LayoutUnit margin_bottom) const {
- return GenericPosition(HasTop(), offset.top, container_size, height,
- margin_top, margin_bottom);
- }
-
- private:
- bool HasTop() const { return type == kTopLeft || type == kTopRight; }
- bool HasLeft() const { return type == kTopLeft || type == kBottomLeft; }
- LayoutUnit GenericPosition(bool position_matches,
- LayoutUnit position,
- LayoutUnit container_size,
- LayoutUnit length,
- LayoutUnit margin_start,
- LayoutUnit margin_end) const {
- DCHECK_GE(container_size, LayoutUnit());
- DCHECK_GE(length, LayoutUnit());
- if (position_matches)
- return position;
- else
- return container_size - position - length - margin_start - margin_end;
- }
-};
-
-} // namespace blink
-
-#endif // NGUnits_h

Powered by Google App Engine
This is Rietveld 408576698