Index: third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.h |
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.h b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.h |
index 5fcc3965dfa99454c662e3729255ee234a1d4b2f..4e24390b7ceb91c28f41b94596297edde6e95931 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.h |
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.h |
@@ -16,6 +16,7 @@ |
namespace blink { |
class NGInlineItem; |
+struct NGInlineItemResult; |
class NGLineBoxFragmentBuilder; |
// Fragments that require the layout position/size of ancestor are packed in |
@@ -30,6 +31,7 @@ struct NGPendingPositions { |
// Represents the current box while NGInlineLayoutAlgorithm performs layout. |
// Used 1) to cache common values for a box, and 2) to layout children that |
// require ancestor position or size. |
+// This is a transient object only while building line boxes in a block. |
struct NGInlineBoxState { |
unsigned fragment_start; |
const NGInlineItem* item; |
@@ -41,8 +43,10 @@ struct NGInlineBoxState { |
// These values are to create a box fragment. Set only when needs_box_fragment |
// is set. |
LayoutUnit line_left_position; |
+ LayoutUnit line_right_position; |
LayoutUnit borders_paddings_block_start; |
- LayoutUnit borders_paddings_block_height; |
+ LayoutUnit borders_paddings_block_end; |
+ NGBorderEdges border_edges; |
Vector<NGPendingPositions> pending_descendants; |
bool include_used_fonts = false; |
@@ -56,9 +60,12 @@ struct NGInlineBoxState { |
FontBaseline); |
// Create a box fragment for this box. |
- void SetNeedsBoxFragment(LayoutUnit line_left_position, |
- LayoutUnit borders_paddings_block_start, |
- LayoutUnit borders_paddings_block_height); |
+ void SetNeedsBoxFragment(const NGInlineItem&, |
+ const NGInlineItemResult&, |
+ LayoutUnit position); |
+ void SetLineRightForBoxFragment(const NGInlineItem&, |
+ const NGInlineItemResult&, |
+ LayoutUnit position); |
}; |
// Represents the inline tree structure. This class provides: |
@@ -81,8 +88,7 @@ class NGInlineLayoutStateStack { |
NGInlineBoxState* OnCloseTag(const NGInlineItem&, |
NGLineBoxFragmentBuilder*, |
NGInlineBoxState*, |
- FontBaseline, |
- LayoutUnit position); |
+ FontBaseline); |
// Compute all the pending positioning at the end of a line. |
void OnEndPlaceItems(NGLineBoxFragmentBuilder*, |
@@ -92,15 +98,11 @@ class NGInlineLayoutStateStack { |
private: |
// End of a box state, either explicitly by close tag, or implicitly at the |
// end of a line. |
- void EndBoxState(NGInlineBoxState*, |
- NGLineBoxFragmentBuilder*, |
- FontBaseline, |
- LayoutUnit position); |
+ void EndBoxState(NGInlineBoxState*, NGLineBoxFragmentBuilder*, FontBaseline); |
void AddBoxFragmentPlaceholder(NGInlineBoxState*, |
NGLineBoxFragmentBuilder*, |
- FontBaseline, |
- LayoutUnit position); |
+ FontBaseline); |
void CreateBoxFragments(NGLineBoxFragmentBuilder*); |
enum PositionPending { kPositionNotPending, kPositionPending }; |
@@ -116,11 +118,13 @@ class NGInlineLayoutStateStack { |
FontBaseline); |
// Data for a box fragment placeholder. See AddBoxFragmentPlaceholder(). |
+ // This is a transient object only while building a line box. |
struct BoxFragmentPlaceholder { |
unsigned fragment_start; |
unsigned fragment_end; |
const NGInlineItem* item; |
NGLogicalSize size; |
+ NGBorderEdges border_edges; |
}; |
Vector<NGInlineBoxState, 4> stack_; |