From 2f9b815ebdcee4558284e5e9cef6ef282dc87b08 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Sat, 22 Dec 2018 17:16:54 +0000 Subject: Add proper underline and strikeout support This makes use of the new rectangle rendering methods used to display the colored visual bell to add proper underline and strikeout support to Alacritty. --- src/display.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/display.rs') diff --git a/src/display.rs b/src/display.rs index 120cd1dc..b1575c58 100644 --- a/src/display.rs +++ b/src/display.rs @@ -25,6 +25,7 @@ use crate::config::Config; use font::{self, Rasterize}; use crate::meter::Meter; use crate::renderer::{self, GlyphCache, QuadRenderer}; +use crate::renderer::lines::Lines; use crate::term::{Term, SizeInfo, RenderableCell}; use crate::sync::FairMutex; use crate::window::{self, Window}; @@ -410,19 +411,27 @@ impl Display { { let glyph_cache = &mut self.glyph_cache; + let metrics = glyph_cache.font_metrics(); + let mut cell_line_rects = Lines::new(&metrics, &size_info); // Draw grid { let _sampler = self.meter.sampler(); self.renderer.with_api(config, &size_info, |mut api| { - // Draw the grid - api.render_cells(grid_cells.iter(), glyph_cache); + // Iterate over all non-empty cells in the grid + for cell in grid_cells { + // Update underline/strikeout + cell_line_rects.update_lines(&cell); + + // Draw the cell + api.render_cell(cell, glyph_cache); + } }); } // Draw rectangles - self.renderer.draw_rects(config, &size_info, visual_bell_intensity); + self.renderer.draw_rects(config, &size_info, visual_bell_intensity, cell_line_rects); // Draw render timer if self.render_timer { @@ -490,4 +499,3 @@ impl Display { self.window().set_ime_spot(LogicalPosition::from((nspot_x, nspot_y))); } } - -- cgit