From 4fd5484e1a914a9a3d2efbb5218d56b50f087c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Tue, 3 Mar 2020 11:19:38 +0100 Subject: [PATCH] Render text-decoration: overline on layout 2020 --- components/layout_2020/display_list/mod.rs | 36 ++++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/components/layout_2020/display_list/mod.rs b/components/layout_2020/display_list/mod.rs index 30ff68e3e1a..49d6f4f1643 100644 --- a/components/layout_2020/display_list/mod.rs +++ b/components/layout_2020/display_list/mod.rs @@ -140,16 +140,14 @@ impl Fragment { let mut rect = rect; rect.origin.y = rect.origin.y + font_metrics.ascent - font_metrics.underline_offset; rect.size.height = font_metrics.underline_size; - let rect = rect.to_webrender(); - let wavy_line_thickness = (0.33 * rect.size.height).ceil(); - builder.wr.push_line( - &common, - &rect, - wavy_line_thickness, - wr::LineOrientation::Horizontal, - &rgba(color), - wr::LineStyle::Solid, - ); + self.build_display_list_for_text_decoration(builder, &rect, color); + } + + // Overline. + if text_decorations.overline { + let mut rect = rect; + rect.size.height = font_metrics.underline_size; + self.build_display_list_for_text_decoration(builder, &rect, color); } // Text. @@ -162,6 +160,24 @@ impl Fragment { None, ); } + + fn build_display_list_for_text_decoration( + &self, + builder: &mut DisplayListBuilder, + rect: &PhysicalRect, + color: cssparser::RGBA, + ) { + let rect = rect.to_webrender(); + let wavy_line_thickness = (0.33 * rect.size.height).ceil(); + builder.wr.push_line( + &builder.common_properties(rect), + &rect, + wavy_line_thickness, + wr::LineOrientation::Horizontal, + &rgba(color), + wr::LineStyle::Solid, + ); + } } struct BuilderForBoxFragment<'a> {