/* * Copyright (c) 2026, Ladybird contributors * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace Web::Layout { enum class GridTrackType : u8 { Explicit, Implicit, }; enum class GridTrackState : u8 { Static, Repeat, Removed, }; struct GridLayoutLine { Vector names; CSSPixels start { 0 }; CSSPixels breadth { 0 }; GridTrackType type { GridTrackType::Implicit }; u32 number { 0 }; i32 negative_number { 0 }; }; struct GridLayoutTrack { CSSPixels start { 0 }; CSSPixels breadth { 0 }; GridTrackType type { GridTrackType::Implicit }; GridTrackState state { GridTrackState::Static }; }; struct GridLayoutArea { String name; GridTrackType type { GridTrackType::Explicit }; u32 row_start { 0 }; u32 row_end { 0 }; u32 column_start { 0 }; u32 column_end { 0 }; }; struct GridLayoutDimension { Vector lines; Vector tracks; }; struct GridLayoutFragment { Vector areas; GridLayoutDimension columns; GridLayoutDimension rows; }; struct GridLayoutData { AK_ALLOC_WITH_KMALLOC_PARTITION(HeapPartition::Layout); CSS::Direction direction { CSS::Direction::Ltr }; CSS::WritingMode writing_mode { CSS::WritingMode::HorizontalTb }; bool is_subgrid { false }; Vector fragments; }; }