diff --git a/Libraries/LibWeb/CSS/Length.cpp b/Libraries/LibWeb/CSS/Length.cpp index 698608b836..0df4001de0 100644 --- a/Libraries/LibWeb/CSS/Length.cpp +++ b/Libraries/LibWeb/CSS/Length.cpp @@ -30,13 +30,9 @@ namespace Web { -float Length::to_px(const LayoutNode& layout_node) const +float Length::relative_length_to_px(const LayoutNode& layout_node) const { switch (m_type) { - case Type::Auto: - return 0; - case Type::Px: - return m_value; case Type::Em: return m_value * layout_node.font_size(); case Type::Rem: diff --git a/Libraries/LibWeb/CSS/Length.h b/Libraries/LibWeb/CSS/Length.h index c63bd15345..d290b714d7 100644 --- a/Libraries/LibWeb/CSS/Length.h +++ b/Libraries/LibWeb/CSS/Length.h @@ -57,7 +57,19 @@ public: bool is_relative() const { return m_type == Type::Em || m_type == Type::Rem; } float raw_value() const { return m_value; } - float to_px(const LayoutNode&) const; + ALWAYS_INLINE float to_px(const LayoutNode& layout_node) const + { + if (is_relative()) + return relative_length_to_px(layout_node); + switch (m_type) { + case Type::Auto: + return 0; + case Type::Px: + return m_value; + default: + ASSERT_NOT_REACHED(); + } + } String to_string() const { @@ -67,6 +79,8 @@ public: } private: + float relative_length_to_px(const LayoutNode&) const; + const char* unit_name() const; Type m_type { Type::Auto };