// Copyright 2015 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_MULTI_COLUMN_FRAGMENTAINER_GROUP_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_MULTI_COLUMN_FRAGMENTAINER_GROUP_H_ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/layout/layout_multi_column_flow_thread.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" namespace blink { struct LogicalRect; // A group of columns, that are laid out in the inline progression direction, // all with the same column height. // // When a multicol container is inside another fragmentation context, and said // multicol container lives in multiple outer fragmentainers (pages / columns), // we need to put these inner columns into separate groups, with one group per // outer fragmentainer. Such a group of columns is what comprises a "row of // column boxes" in spec lingo. // // Column balancing, when enabled, takes place within a column fragmentainer // group. // // Each fragmentainer group may have its own actual column count (if there are // unused columns because of forced breaks, for example). If there are multiple // fragmentainer groups, the actual column count must not exceed the used column // count (the one calculated based on column-count and column-width from CSS), // or they'd overflow the outer fragmentainer in the inline direction. If we // need more columns than what a group has room for, we'll create another group // and put them there (and make them appear in the next outer fragmentainer). class CORE_EXPORT MultiColumnFragmentainerGroup { … }; // List of all fragmentainer groups within a column set. There will always be at // least one group. Deleting the one group is not allowed (or possible). There // will be more than one group if the owning column set lives in multiple outer // fragmentainers (e.g. multicol inside paged media). class CORE_EXPORT MultiColumnFragmentainerGroupList { … }; } // namespace blink WTF_ALLOW_CLEAR_UNUSED_SLOTS_WITH_MEM_FUNCTIONS(…) #endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_MULTI_COLUMN_FRAGMENTAINER_GROUP_H_