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

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/inline/ng_inline_box_state.h

Issue 2845493002: [LayoutNG] Fix empty inlines to influence the used line height (Closed)
Patch Set: Mark failure in a test in CSS2/normal-flow Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NGInlineBoxState_h 5 #ifndef NGInlineBoxState_h
6 #define NGInlineBoxState_h 6 #define NGInlineBoxState_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/layout/ng/inline/ng_line_height_metrics.h" 9 #include "core/layout/ng/inline/ng_line_height_metrics.h"
10 #include "core/style/ComputedStyleConstants.h" 10 #include "core/style/ComputedStyleConstants.h"
(...skipping 22 matching lines...) Expand all
33 struct NGInlineBoxState { 33 struct NGInlineBoxState {
34 unsigned fragment_start; 34 unsigned fragment_start;
35 const ComputedStyle* style; 35 const ComputedStyle* style;
36 NGLineHeightMetrics metrics; 36 NGLineHeightMetrics metrics;
37 NGLineHeightMetrics text_metrics; 37 NGLineHeightMetrics text_metrics;
38 LayoutUnit text_top; 38 LayoutUnit text_top;
39 Vector<NGPendingPositions> pending_descendants; 39 Vector<NGPendingPositions> pending_descendants;
40 bool include_used_fonts = false; 40 bool include_used_fonts = false;
41 41
42 // Compute text metrics for a box. All text in a box share the same metrics. 42 // Compute text metrics for a box. All text in a box share the same metrics.
43 void ComputeTextMetrics(const NGInlineItem&, FontBaseline); 43 void ComputeTextMetrics(const ComputedStyle& style, FontBaseline);
44 void AccumulateUsedFonts(const NGInlineItem&,
45 unsigned start,
46 unsigned end,
47 FontBaseline);
44 }; 48 };
45 49
46 // Represents the inline tree structure. This class provides: 50 // Represents the inline tree structure. This class provides:
47 // 1) Allow access to fragments belonging to the current box. 51 // 1) Allow access to fragments belonging to the current box.
48 // 2) Performs layout when the positin/size of a box was computed. 52 // 2) Performs layout when the positin/size of a box was computed.
49 // 3) Cache common values for a box. 53 // 3) Cache common values for a box.
50 class NGInlineLayoutStateStack { 54 class NGInlineLayoutStateStack {
51 public: 55 public:
56 // The box state for the line box.
57 NGInlineBoxState& LineBoxState() { return stack_.front(); }
58
52 // Initialize the box state stack for a new line. 59 // Initialize the box state stack for a new line.
53 // @return The initial box state for the line. 60 // @return The initial box state for the line.
54 NGInlineBoxState* OnBeginPlaceItems(const ComputedStyle*); 61 NGInlineBoxState* OnBeginPlaceItems(const ComputedStyle*, FontBaseline);
55 62
56 // Push a box state stack. 63 // Push a box state stack.
57 NGInlineBoxState* OnOpenTag(const NGInlineItem&, 64 NGInlineBoxState* OnOpenTag(const NGInlineItem&,
58 NGLineBoxFragmentBuilder*, 65 NGLineBoxFragmentBuilder*,
59 NGTextFragmentBuilder*); 66 NGTextFragmentBuilder*);
60 67
61 // Pop a box state stack. 68 // Pop a box state stack.
62 NGInlineBoxState* OnCloseTag(const NGInlineItem&, 69 NGInlineBoxState* OnCloseTag(const NGInlineItem&,
63 NGLineBoxFragmentBuilder*, 70 NGLineBoxFragmentBuilder*,
64 NGInlineBoxState*); 71 NGInlineBoxState*);
(...skipping 13 matching lines...) Expand all
78 // https://www.w3.org/TR/CSS22/visudet.html#propdef-vertical-align 85 // https://www.w3.org/TR/CSS22/visudet.html#propdef-vertical-align
79 // https://www.w3.org/TR/css-inline-3/#propdef-vertical-align 86 // https://www.w3.org/TR/css-inline-3/#propdef-vertical-align
80 void ApplyBaselineShift(NGInlineBoxState*, NGLineBoxFragmentBuilder*); 87 void ApplyBaselineShift(NGInlineBoxState*, NGLineBoxFragmentBuilder*);
81 88
82 Vector<NGInlineBoxState, 4> stack_; 89 Vector<NGInlineBoxState, 4> stack_;
83 }; 90 };
84 91
85 } // namespace blink 92 } // namespace blink
86 93
87 #endif // NGInlineBoxState_h 94 #endif // NGInlineBoxState_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698