diff options
author | Josh Rahm <rahm@google.com> | 2021-09-15 12:13:09 -0600 |
---|---|---|
committer | Josh Rahm <rahm@google.com> | 2021-09-15 12:13:09 -0600 |
commit | 843583e2246a2404999b6c36293d7966cfb84334 (patch) | |
tree | b39bc41b3436cf3e3c849d27623f5c06b11596aa | |
parent | 579a59b054b5b994317b58bde1f075b1389f05e7 (diff) | |
download | r-alacritty-843583e2246a2404999b6c36293d7966cfb84334.tar.gz r-alacritty-843583e2246a2404999b6c36293d7966cfb84334.tar.bz2 r-alacritty-843583e2246a2404999b6c36293d7966cfb84334.zip |
Add overline attribute.
-rw-r--r-- | alacritty/src/display/content.rs | 2 | ||||
-rw-r--r-- | alacritty/src/renderer/rects.rs | 13 | ||||
-rw-r--r-- | alacritty_terminal/src/ansi.rs | 6 | ||||
-rw-r--r-- | alacritty_terminal/src/term/cell.rs | 2 | ||||
-rw-r--r-- | alacritty_terminal/src/term/mod.rs | 6 |
5 files changed, 28 insertions, 1 deletions
diff --git a/alacritty/src/display/content.rs b/alacritty/src/display/content.rs index 9f52e74e..e5ff3780 100644 --- a/alacritty/src/display/content.rs +++ b/alacritty/src/display/content.rs @@ -278,7 +278,7 @@ impl RenderableCell { self.bg_alpha == 0. && self.character == ' ' && self.zerowidth.is_none() - && !self.flags.intersects(Flags::UNDERLINE | Flags::STRIKEOUT | Flags::DOUBLE_UNDERLINE | Flags::UNDERCURL) + && !self.flags.intersects(Flags::UNDERLINE | Flags::STRIKEOUT | Flags::DOUBLE_UNDERLINE | Flags::UNDERCURL | Flags::OVERLINE) } /// Apply [`CellRgb`] colors to the cell's colors. diff --git a/alacritty/src/renderer/rects.rs b/alacritty/src/renderer/rects.rs index f4e98bcf..61ff91b7 100644 --- a/alacritty/src/renderer/rects.rs +++ b/alacritty/src/renderer/rects.rs @@ -99,6 +99,18 @@ impl RenderLine { color, )); }, + Flags::OVERLINE => { + let start_x = start.column.0 as f32 * size.cell_width(); + let end_x = (end.column.0 + 1) as f32 * size.cell_width(); + rects.push(RenderRect::new( + start_x + size.padding_x(), + start.line as f32 * size.cell_height(), + end_x - start_x, + metrics.underline_thickness, + color, + 1., + )); + }, Flags::STRIKEOUT => { rects.push(Self::create_rect( size, @@ -235,6 +247,7 @@ impl RenderLines { self.update_flag(cell, Flags::DOUBLE_UNDERLINE); self.update_flag(cell, Flags::STRIKEOUT); self.update_flag(cell, Flags::UNDERCURL); + self.update_flag(cell, Flags::OVERLINE); } /// Update the lines for a specific flag. diff --git a/alacritty_terminal/src/ansi.rs b/alacritty_terminal/src/ansi.rs index 35a46549..51a3394e 100644 --- a/alacritty_terminal/src/ansi.rs +++ b/alacritty_terminal/src/ansi.rs @@ -780,6 +780,8 @@ pub enum Attr { Hidden, /// Strikeout text. Strike, + /// Strikeout text. + Overline, /// Cancel bold. CancelBold, /// Cancel bold and dim. @@ -796,6 +798,8 @@ pub enum Attr { CancelHidden, /// Cancel strikeout. CancelStrike, + /// Cancel strikeout. + CancelOverline, /// Set indexed foreground color. Foreground(Color), /// Set indexed background color. @@ -1375,6 +1379,8 @@ fn attrs_from_sgr_parameters(params: &mut ParamsIter<'_>) -> Vec<Option<Attr>> { parse_sgr_color(&mut iter).map(Attr::Background) }, [49] => Some(Attr::Background(Color::Named(NamedColor::Background))), + [53] => Some(Attr::Overline), + [55] => Some(Attr::CancelOverline), [58, params @ ..] => { let rgb_start = if params.len() > 4 { 2 } else { 1 }; let rgb_iter = params[rgb_start..].iter().copied(); diff --git a/alacritty_terminal/src/term/cell.rs b/alacritty_terminal/src/term/cell.rs index 467d955a..4f5ac1e2 100644 --- a/alacritty_terminal/src/term/cell.rs +++ b/alacritty_terminal/src/term/cell.rs @@ -25,6 +25,7 @@ bitflags! { const LEADING_WIDE_CHAR_SPACER = 0b0000_0100_0000_0000; const DOUBLE_UNDERLINE = 0b0000_1000_0000_0000; const UNDERCURL = 0b0001_0000_0000_0000; + const OVERLINE = 0b0010_0000_0000_0000; } } @@ -124,6 +125,7 @@ impl GridCell for Cell { | Flags::UNDERLINE | Flags::DOUBLE_UNDERLINE | Flags::UNDERCURL + | Flags::OVERLINE | Flags::STRIKEOUT | Flags::WRAPLINE | Flags::WIDE_CHAR_SPACER diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs index 85b76937..5a641a7b 100644 --- a/alacritty_terminal/src/term/mod.rs +++ b/alacritty_terminal/src/term/mod.rs @@ -1530,6 +1530,12 @@ impl<T: EventListener> Handler for Term<T> { cursor.template.flags.remove( Flags::UNDERLINE | Flags::DOUBLE_UNDERLINE | Flags::UNDERCURL); }, + Attr::Overline => { + cursor.template.flags.insert(Flags::OVERLINE); + }, + Attr::CancelOverline => { + cursor.template.flags.remove(Flags::OVERLINE); + }, Attr::Hidden => cursor.template.flags.insert(Flags::HIDDEN), Attr::CancelHidden => cursor.template.flags.remove(Flags::HIDDEN), Attr::Strike => cursor.template.flags.insert(Flags::STRIKEOUT), |