From 8271ad40a5bfef77dd2698e2b0554590dc05949d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 28 Sep 2019 22:31:41 +0200 Subject: [PATCH] LibHTML: Implement basic support for "text-decoration: underline" --- Libraries/LibHTML/CSS/StyleResolver.cpp | 2 +- Libraries/LibHTML/Layout/LayoutText.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Libraries/LibHTML/CSS/StyleResolver.cpp b/Libraries/LibHTML/CSS/StyleResolver.cpp index 6730724ba2..4c733ce530 100644 --- a/Libraries/LibHTML/CSS/StyleResolver.cpp +++ b/Libraries/LibHTML/CSS/StyleResolver.cpp @@ -63,7 +63,7 @@ StyleProperties StyleResolver::resolve_style(const Element& element, const Style if (parent_properties) { parent_properties->for_each_property([&](const StringView& name, auto& value) { // TODO: proper inheritance - if (name.starts_with("font") || name == "white-space" || name == "color") + if (name.starts_with("font") || name == "white-space" || name == "color" || name == "text-decoration") style_properties.set_property(name, value); }); } diff --git a/Libraries/LibHTML/Layout/LayoutText.cpp b/Libraries/LibHTML/Layout/LayoutText.cpp index fc22c62695..0f90d96015 100644 --- a/Libraries/LibHTML/Layout/LayoutText.cpp +++ b/Libraries/LibHTML/Layout/LayoutText.cpp @@ -228,6 +228,9 @@ void LayoutText::render(RenderingContext& context) painter.set_font(*m_font); auto color = style_properties().color_or_fallback("color", Color::Black); + auto text_decoration = style_properties().string_or_fallback("text-decoration", "none"); + + bool is_underline = text_decoration == "underline"; for (auto& run : m_runs) { Rect rect { @@ -237,5 +240,8 @@ void LayoutText::render(RenderingContext& context) m_font->glyph_height() }; painter.draw_text(rect, run.text, TextAlignment::TopLeft, color); + + if (is_underline) + painter.draw_line(rect.bottom_left().translated(0, 1), rect.bottom_right().translated(0, 1), color); } }