ソースを参照

LibWeb: Add Web::CSS::PreferredColorScheme enum

Sam Atkins 3 年 前
コミット
c8550da9c5

+ 1 - 0
Userland/Libraries/LibWeb/CMakeLists.txt

@@ -36,6 +36,7 @@ set(SOURCES
     CSS/Parser/StyleRules.cpp
     CSS/Parser/Token.cpp
     CSS/Parser/Tokenizer.cpp
+    CSS/PreferredColorScheme.cpp
     CSS/PropertyID.cpp
     CSS/PropertyID.h
     CSS/QuirksModeStyleSheetSource.cpp

+ 33 - 0
Userland/Libraries/LibWeb/CSS/PreferredColorScheme.cpp

@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2021, Sam Atkins <atkinssj@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibWeb/CSS/PreferredColorScheme.h>
+
+namespace Web::CSS {
+
+PreferredColorScheme preferred_color_scheme_from_string(String const& value)
+{
+    if (value.equals_ignoring_case("light"))
+        return PreferredColorScheme::Light;
+    if (value.equals_ignoring_case("dark"))
+        return PreferredColorScheme::Dark;
+    return PreferredColorScheme::Auto;
+}
+
+StringView preferred_color_scheme_to_string(PreferredColorScheme value)
+{
+    switch (value) {
+    case PreferredColorScheme::Light:
+        return "light"sv;
+    case PreferredColorScheme::Dark:
+        return "dark"sv;
+    case PreferredColorScheme::Auto:
+        return "auto"sv;
+    }
+    VERIFY_NOT_REACHED();
+}
+
+}

+ 23 - 0
Userland/Libraries/LibWeb/CSS/PreferredColorScheme.h

@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2021, Sam Atkins <atkinssj@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/String.h>
+#include <AK/StringView.h>
+
+namespace Web::CSS {
+
+enum class PreferredColorScheme {
+    Auto,
+    Dark,
+    Light,
+};
+
+PreferredColorScheme preferred_color_scheme_from_string(String const&);
+StringView preferred_color_scheme_to_string(PreferredColorScheme);
+
+}