소스 검색

LibWeb: Add GridTrackPlacement for grid-[column/row]-[start/end]

Add GridTrackPlacement to use with grid-column-start and related CSS
properties.
martinfalisse 2 년 전
부모
커밋
ca286fc220

+ 1 - 0
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

+ 36 - 0
Userland/Libraries/LibWeb/CSS/GridTrackPlacement.cpp

@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2022, Martin Falisse <mfalisse@outlook.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include "GridTrackPlacement.h"
+#include <AK/String.h>
+
+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();
+}
+
+}

+ 38 - 0
Userland/Libraries/LibWeb/CSS/GridTrackPlacement.h

@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2022, Martin Falisse <mfalisse@outlook.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/String.h>
+
+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 };
+};
+
+}

+ 1 - 0
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;