From a8e0fa403a78e3f64cb0cd111a2290a8ca65715a Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 28 Apr 2023 16:58:12 +0100 Subject: [PATCH] LibWeb: Add `rex` and `rch` Length units These are the same as `ex` and `ch`, but using the root element's metrics. We now have this information available, so let's use it. :^) --- Userland/Libraries/LibWeb/CSS/Length.cpp | 12 ++++++++++++ Userland/Libraries/LibWeb/CSS/Length.h | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/Userland/Libraries/LibWeb/CSS/Length.cpp b/Userland/Libraries/LibWeb/CSS/Length.cpp index a2a6e28e26..0719ecbf72 100644 --- a/Userland/Libraries/LibWeb/CSS/Length.cpp +++ b/Userland/Libraries/LibWeb/CSS/Length.cpp @@ -76,8 +76,12 @@ CSSPixels Length::relative_length_to_px(CSSPixelRect const& viewport_rect, FontM return m_value * root_font_metrics.font_size; case Type::Ex: return m_value * font_metrics.x_height; + case Type::Rex: + return m_value * root_font_metrics.x_height; case Type::Ch: return m_value * font_metrics.zero_advance; + case Type::Rch: + return m_value * root_font_metrics.zero_advance; case Type::Lh: return m_value * font_metrics.line_height; case Type::Rlh: @@ -137,8 +141,12 @@ char const* Length::unit_name() const return "rem"; case Type::Ex: return "ex"; + case Type::Rex: + return "rex"; case Type::Ch: return "ch"; + case Type::Rch: + return "rch"; case Type::Lh: return "lh"; case Type::Rlh: @@ -179,8 +187,12 @@ Optional Length::unit_from_name(StringView name) return Length::Type::Rem; } else if (name.equals_ignoring_ascii_case("ex"sv)) { return Length::Type::Ex; + } else if (name.equals_ignoring_ascii_case("rex"sv)) { + return Length::Type::Rex; } else if (name.equals_ignoring_ascii_case("ch"sv)) { return Length::Type::Ch; + } else if (name.equals_ignoring_ascii_case("rch"sv)) { + return Length::Type::Rch; } else if (name.equals_ignoring_ascii_case("lh"sv)) { return Length::Type::Lh; } else if (name.equals_ignoring_ascii_case("rlh"sv)) { diff --git a/Userland/Libraries/LibWeb/CSS/Length.h b/Userland/Libraries/LibWeb/CSS/Length.h index 58c08c9849..3277a7e12e 100644 --- a/Userland/Libraries/LibWeb/CSS/Length.h +++ b/Userland/Libraries/LibWeb/CSS/Length.h @@ -21,7 +21,9 @@ public: Em, Rem, Ex, + Rex, Ch, + Rch, Lh, Rlh, @@ -84,7 +86,9 @@ public: return m_type == Type::Em || m_type == Type::Rem || m_type == Type::Ex + || m_type == Type::Rex || m_type == Type::Ch + || m_type == Type::Rch || m_type == Type::Lh || m_type == Type::Rlh; }