| // 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 NGPhysicalBoxFragment_h |
| #define NGPhysicalBoxFragment_h |
| |
| #include "core/CoreExport.h" |
| #include "core/layout/ng/geometry/ng_logical_offset.h" |
| #include "core/layout/ng/geometry/ng_margin_strut.h" |
| #include "core/layout/ng/ng_floating_object.h" |
| #include "core/layout/ng/ng_physical_fragment.h" |
| #include "wtf/Optional.h" |
| |
| namespace blink { |
| |
| struct NGFloatingObject; |
| |
| class CORE_EXPORT NGPhysicalBoxFragment final : public NGPhysicalFragment { |
| public: |
| // This modifies the passed-in children vector. |
| NGPhysicalBoxFragment(LayoutObject* layout_object, |
| NGPhysicalSize size, |
| NGPhysicalSize overflow, |
| Vector<RefPtr<NGPhysicalFragment>>& children, |
| Vector<RefPtr<NGFloatingObject>>& positioned_floats, |
| const WTF::Optional<NGLogicalOffset>& bfc_offset, |
| const NGMarginStrut& end_margin_strut, |
| RefPtr<NGBreakToken> break_token = nullptr); |
| |
| const Vector<RefPtr<NGPhysicalFragment>>& Children() const { |
| return children_; |
| } |
| |
| // List of positioned floats that need to be copied to the old layout tree. |
| // TODO(layout-ng): remove this once we change painting code to handle floats |
| // differently. |
| const Vector<RefPtr<NGFloatingObject>>& PositionedFloats() const { |
| return positioned_floats_; |
| } |
| |
| const WTF::Optional<NGLogicalOffset>& BfcOffset() const { |
| return bfc_offset_; |
| } |
| |
| const NGMarginStrut& EndMarginStrut() const { return end_margin_strut_; } |
| |
| private: |
| Vector<RefPtr<NGPhysicalFragment>> children_; |
| Vector<RefPtr<NGFloatingObject>> positioned_floats_; |
| const WTF::Optional<NGLogicalOffset> bfc_offset_; |
| const NGMarginStrut end_margin_strut_; |
| }; |
| |
| DEFINE_TYPE_CASTS(NGPhysicalBoxFragment, |
| NGPhysicalFragment, |
| fragment, |
| fragment->Type() == NGPhysicalFragment::kFragmentBox, |
| fragment.Type() == NGPhysicalFragment::kFragmentBox); |
| |
| } // namespace blink |
| |
| #endif // NGPhysicalBoxFragment_h |