// Copyright 2020 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_GRID_GRID_DATA_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_GRID_GRID_DATA_H_ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/layout/grid/grid_line_resolver.h" #include "third_party/blink/renderer/core/layout/grid/grid_subtree.h" #include "third_party/blink/renderer/core/layout/grid/grid_track_collection.h" #include "third_party/blink/renderer/platform/wtf/ref_counted.h" #include "third_party/blink/renderer/platform/wtf/vector.h" namespace blink { struct CORE_EXPORT GridPlacementData { … }; namespace { bool AreEqual(const std::unique_ptr<GridLayoutTrackCollection>& lhs, const std::unique_ptr<GridLayoutTrackCollection>& rhs) { … } } // namespace // This struct contains the column and row data necessary to layout grid items. // For grid sizing, it will store |GridSizingTrackCollection| pointers, which // are able to modify the geometry of its sets. However, after sizing is done, // it should only copy |GridLayoutTrackCollection| immutable data. class CORE_EXPORT GridLayoutData { … }; // Subgrid layout relies on the root grid to perform the track sizing algorithm // for every level of nested subgrids. This class contains the finalized layout // data of every node in a grid tree (see `grid_subtree.h`), which will be // passed down to the constraint space of a subgrid to perform layout. // // Note that this class allows subtrees to be compared for equality; this is // important because when we store this tree within a constraint space we want // to be able to invalidate the cached layout result of a subgrid based on // whether the provided subtree's track were sized exactly the same. class GridLayoutTree : public RefCounted<GridLayoutTree> { … }; // This class represents a subtree in a `GridLayoutTree` and mostly serves two // purposes: provide seamless iteration over the tree structure and compare // input subtrees to invalidate a subgrid's cached layout result. class GridLayoutSubtree : public GridSubtree<GridLayoutSubtree, scoped_refptr<const GridLayoutTree>> { … }; } // namespace blink WTF_ALLOW_CLEAR_UNUSED_SLOTS_WITH_MEM_FUNCTIONS(…) #endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_GRID_GRID_DATA_H_