From ca286fc220c534989da6b8c0e04b31f43041a7e7 Mon Sep 17 00:00:00 2001 From: martinfalisse Date: Wed, 24 Aug 2022 12:21:58 +0200 Subject: [PATCH] LibWeb: Add GridTrackPlacement for grid-[column/row]-[start/end] Add GridTrackPlacement to use with grid-column-start and related CSS properties. --- Userland/Libraries/LibWeb/CMakeLists.txt | 1 + .../LibWeb/CSS/GridTrackPlacement.cpp | 36 ++++++++++++++++++ .../Libraries/LibWeb/CSS/GridTrackPlacement.h | 38 +++++++++++++++++++ Userland/Libraries/LibWeb/Forward.h | 1 + 4 files changed, 76 insertions(+) create mode 100644 Userland/Libraries/LibWeb/CSS/GridTrackPlacement.cpp create mode 100644 Userland/Libraries/LibWeb/CSS/GridTrackPlacement.h diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 1c22c1eccd..5b05fdc915 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -40,6 +40,7 @@ set(SOURCES CSS/Display.cpp CSS/FontFace.cpp CSS/Frequency.cpp + CSS/GridTrackPlacement.cpp CSS/GridTrackSize.cpp CSS/Length.cpp CSS/MediaList.cpp diff --git a/Userland/Libraries/LibWeb/CSS/GridTrackPlacement.cpp b/Userland/Libraries/LibWeb/CSS/GridTrackPlacement.cpp new file mode 100644 index 0000000000..1c13eec2dd --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/GridTrackPlacement.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2022, Martin Falisse + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "GridTrackPlacement.h" +#include + +namespace Web::CSS { + +GridTrackPlacement::GridTrackPlacement(int position, bool has_span) + : m_position(position) + , m_has_span(has_span) +{ +} + +GridTrackPlacement::GridTrackPlacement(int position) + : m_position(position) +{ +} + +GridTrackPlacement::GridTrackPlacement() +{ +} + +String GridTrackPlacement::to_string() const +{ + StringBuilder builder; + if (m_has_span) + builder.append("span "sv); + builder.append(String::number(m_position)); + return builder.to_string(); +} + +} diff --git a/Userland/Libraries/LibWeb/CSS/GridTrackPlacement.h b/Userland/Libraries/LibWeb/CSS/GridTrackPlacement.h new file mode 100644 index 0000000000..20cc0b6fde --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/GridTrackPlacement.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022, Martin Falisse + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::CSS { + +class GridTrackPlacement { +public: + GridTrackPlacement(int, bool); + GridTrackPlacement(int); + GridTrackPlacement(); + + static GridTrackPlacement make_auto() { return GridTrackPlacement(); }; + + void set_position(int position) { m_position = position; } + int position() const { return m_position; } + + void set_has_span(bool has_span) { m_has_span = has_span; } + bool has_span() const { return m_has_span; } + + String to_string() const; + bool operator==(GridTrackPlacement const& other) const + { + return m_position == other.position() && m_has_span == other.has_span(); + } + +private: + int m_position { 0 }; + bool m_has_span { false }; +}; + +} diff --git a/Userland/Libraries/LibWeb/Forward.h b/Userland/Libraries/LibWeb/Forward.h index ff66233853..0904e65f94 100644 --- a/Userland/Libraries/LibWeb/Forward.h +++ b/Userland/Libraries/LibWeb/Forward.h @@ -57,6 +57,7 @@ class FontStyleValue; class Frequency; class FrequencyPercentage; class FrequencyStyleValue; +class GridTrackPlacement; class GridTrackSize; class IdentifierStyleValue; class ImageStyleValue;