diff options
author | Ayose <ayosec@gmail.com> | 2021-03-10 20:21:36 +0000 |
---|---|---|
committer | betaboon <betaboon@0x80.ninja> | 2021-08-17 15:44:40 +0200 |
commit | 0fd3793a963015e8f91021e35dbb2169d15c3211 (patch) | |
tree | a83c1f53a123f84376a58cf2a5114ad581092e0a /alacritty/src/display | |
parent | c24d7dfd0d2d8849f0398d7cb1a65d6562ee7a0d (diff) | |
download | r-alacritty-0fd3793a963015e8f91021e35dbb2169d15c3211.tar.gz r-alacritty-0fd3793a963015e8f91021e35dbb2169d15c3211.tar.bz2 r-alacritty-0fd3793a963015e8f91021e35dbb2169d15c3211.zip |
Add Sixel support
Fixes #910
Diffstat (limited to 'alacritty/src/display')
-rw-r--r-- | alacritty/src/display/content.rs | 3 | ||||
-rw-r--r-- | alacritty/src/display/mod.rs | 14 |
2 files changed, 16 insertions, 1 deletions
diff --git a/alacritty/src/display/content.rs b/alacritty/src/display/content.rs index 2deb3d3e..85719c06 100644 --- a/alacritty/src/display/content.rs +++ b/alacritty/src/display/content.rs @@ -6,6 +6,7 @@ use std::ops::{Deref, DerefMut, RangeInclusive}; use alacritty_terminal::ansi::{Color, CursorShape, NamedColor}; use alacritty_terminal::config::Config; use alacritty_terminal::event::EventListener; +use alacritty_terminal::graphics::GraphicCell; use alacritty_terminal::grid::{Dimensions, Indexed}; use alacritty_terminal::index::{Column, Direction, Line, Point}; use alacritty_terminal::term::cell::{Cell, Flags}; @@ -187,6 +188,7 @@ pub struct RenderableCell { pub character: char, pub zerowidth: Option<Vec<char>>, pub point: Point<usize>, + pub graphic: Option<GraphicCell>, pub fg: Rgb, pub bg: Rgb, pub bg_alpha: f32, @@ -257,6 +259,7 @@ impl RenderableCell { RenderableCell { zerowidth: cell.zerowidth().map(|zerowidth| zerowidth.to_vec()), + graphic: cell.graphic().cloned(), flags: cell.flags, character, bg_alpha, diff --git a/alacritty/src/display/mod.rs b/alacritty/src/display/mod.rs index d4c5c274..5e958f03 100644 --- a/alacritty/src/display/mod.rs +++ b/alacritty/src/display/mod.rs @@ -479,7 +479,7 @@ impl Display { /// This call may block if vsync is enabled. pub fn draw<T: EventListener>( &mut self, - terminal: MutexGuard<'_, Term<T>>, + mut terminal: MutexGuard<'_, Term<T>>, message_buffer: &MessageBuffer, config: &Config, search_state: &SearchState, @@ -502,6 +502,8 @@ impl Display { let vi_mode = terminal.mode().contains(TermMode::VI); let vi_mode_cursor = if vi_mode { Some(terminal.vi_mode_cursor) } else { None }; + let graphics_queues = terminal.graphics_take_queues(); + // Drop terminal as early as possible to free lock. drop(terminal); @@ -509,7 +511,12 @@ impl Display { api.clear(background_color); }); + if let Some(graphics_queues) = graphics_queues { + self.renderer.graphics_run_updates(graphics_queues, &size_info); + } + let mut lines = RenderLines::new(); + let mut graphics_list = renderer::graphics::RenderList::default(); // Draw grid. { @@ -532,12 +539,17 @@ impl Display { // Update underline/strikeout. lines.update(&cell); + // Track any graphic present in the cell. + graphics_list.update(&cell); + // Draw the cell. api.render_cell(cell, glyph_cache); } }); } + self.renderer.graphics_draw(graphics_list, &size_info); + let mut rects = lines.rects(&metrics, &size_info); if let Some(vi_mode_cursor) = vi_mode_cursor { |