From 80a33fd3eafde3b92ef108be692fcbfbcb9c0546 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Fri, 25 Aug 2023 20:53:26 +0200 Subject: [PATCH] [css] line-through --- src/document/css/value.c | 6 +++--- src/document/libdom/css.c | 12 ++++++++++-- test/css/strike.html | 5 +++++ 3 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 test/css/strike.html diff --git a/src/document/css/value.c b/src/document/css/value.c index 1ec77a06..0aeef14d 100644 --- a/src/document/css/value.c +++ b/src/document/css/value.c @@ -326,10 +326,10 @@ css_parse_text_decoration_value(struct css_property_info *propinfo, * 'background'-style. --pasky */ if (scanner_token_contains(token, "underline")) { value->font_attribute.add |= AT_UNDERLINE; - + } else if (scanner_token_contains(token, "line-through")) { + value->font_attribute.add |= AT_STRIKE; } else if (scanner_token_contains(token, "none")) { - value->font_attribute.rem |= AT_UNDERLINE; - + value->font_attribute.rem |= (AT_UNDERLINE | AT_STRIKE); } else { return 0; } diff --git a/src/document/libdom/css.c b/src/document/libdom/css.c index 0e314aef..2ed5db8f 100644 --- a/src/document/libdom/css.c +++ b/src/document/libdom/css.c @@ -1873,7 +1873,7 @@ apply_background_color(struct html_context *html_context, struct html_element *h static void apply_font_attribute(struct html_context *html_context, - struct html_element *element, bool underline, bool bold) + struct html_element *element, bool underline, bool bold, bool strike) { int add = 0; int rem = 0; @@ -1888,6 +1888,13 @@ apply_font_attribute(struct html_context *html_context, } else { rem |= AT_BOLD; } + + if (strike) { + add |= AT_STRIKE; + } else { + rem |= AT_STRIKE; + } + element->attr.style.attr |= add; element->attr.style.attr &= ~rem; } @@ -2121,9 +2128,10 @@ select_css(struct html_context *html_context, struct html_element *html_element) } bool underline = css_computed_text_decoration(style->styles[CSS_PSEUDO_ELEMENT_NONE]) & CSS_TEXT_DECORATION_UNDERLINE; + bool strike = css_computed_text_decoration(style->styles[CSS_PSEUDO_ELEMENT_NONE]) & CSS_TEXT_DECORATION_LINE_THROUGH; bool bold = is_bold(css_computed_font_weight(style->styles[CSS_PSEUDO_ELEMENT_NONE])); - apply_font_attribute(html_context, html_element, underline, bold); + apply_font_attribute(html_context, html_element, underline, bold, strike); uint8_t font_style = css_computed_font_style(style->styles[CSS_PSEUDO_ELEMENT_NONE]); diff --git a/test/css/strike.html b/test/css/strike.html new file mode 100644 index 00000000..b4cdd6cc --- /dev/null +++ b/test/css/strike.html @@ -0,0 +1,5 @@ + + +

Test text