From e18e2af826dd2085a976783a1269abdd290e6142 Mon Sep 17 00:00:00 2001 From: Tobias Christiansen Date: Sun, 4 Jul 2021 17:17:23 +0200 Subject: [PATCH] LibWeb: Add roman numerals as a list-style for ol's This patch adds support for the identifiers upper-roman and lower-roman of the list-style property. --- Userland/Libraries/LibWeb/CSS/Identifiers.json | 2 ++ Userland/Libraries/LibWeb/CSS/StyleProperties.cpp | 4 ++++ Userland/Libraries/LibWeb/CSS/StyleValue.h | 3 +++ Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp | 8 ++++++++ 4 files changed, 17 insertions(+) diff --git a/Userland/Libraries/LibWeb/CSS/Identifiers.json b/Userland/Libraries/LibWeb/CSS/Identifiers.json index 6696b50cbc..bbeb9aea1e 100644 --- a/Userland/Libraries/LibWeb/CSS/Identifiers.json +++ b/Userland/Libraries/LibWeb/CSS/Identifiers.json @@ -107,6 +107,7 @@ "lowercase", "lower-alpha", "lower-latin", + "lower-roman", "medium", "move", "ne-resize", @@ -163,6 +164,7 @@ "uppercase", "upper-alpha", "upper-latin", + "upper-roman", "visible", "vertical-text", "wait", diff --git a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp index be62c097f0..e3c9a56222 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp @@ -645,6 +645,10 @@ Optional StyleProperties::list_style_type() const return CSS::ListStyleType::UpperAlpha; case CSS::ValueID::UpperLatin: return CSS::ListStyleType::UpperLatin; + case CSS::ValueID::UpperRoman: + return CSS::ListStyleType::UpperRoman; + case CSS::ValueID::LowerRoman: + return CSS::ListStyleType::LowerRoman; default: return {}; } diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index 00e5002459..51910ff91c 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2021, Tobias Christiansen * * SPDX-License-Identifier: BSD-2-Clause */ @@ -173,8 +174,10 @@ enum class ListStyleType { DecimalLeadingZero, LowerAlpha, LowerLatin, + LowerRoman, UpperAlpha, UpperLatin, + UpperRoman, }; enum class Overflow : u8 { diff --git a/Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp b/Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp index 3833755dad..7c26770c08 100644 --- a/Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp +++ b/Userland/Libraries/LibWeb/Layout/ListItemMarkerBox.cpp @@ -36,6 +36,12 @@ ListItemMarkerBox::ListItemMarkerBox(DOM::Document& document, CSS::ListStyleType case CSS::ListStyleType::UpperLatin: m_text = String::bijective_base_from(m_index - 1); break; + case CSS::ListStyleType::LowerRoman: + m_text = String::roman_number_from(m_index).to_lowercase(); + break; + case CSS::ListStyleType::UpperRoman: + m_text = String::roman_number_from(m_index); + break; case CSS::ListStyleType::None: break; @@ -88,8 +94,10 @@ void ListItemMarkerBox::paint(PaintContext& context, PaintPhase phase) case CSS::ListStyleType::DecimalLeadingZero: case CSS::ListStyleType::LowerAlpha: case CSS::ListStyleType::LowerLatin: + case CSS::ListStyleType::LowerRoman: case CSS::ListStyleType::UpperAlpha: case CSS::ListStyleType::UpperLatin: + case CSS::ListStyleType::UpperRoman: if (m_text.is_null()) break; context.painter().draw_text(enclosing, m_text, Gfx::TextAlignment::Center);