From 3bd5ac221ab3b122962063edd1f4c10f9f2d117f Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Tue, 30 Mar 2021 23:25:38 +0000 Subject: Unify the grid line indexing types Previously Alacritty was using two different ways to reference lines in the terminal. Either a `usize`, or a `Line(usize)`. These indexing systems both served different purposes, but made it difficult to reason about logic involving these systems because of its inconsistency. To resolve this issue, a single new `Line(i32)` type has been introduced. All existing references to lines and points now rely on this definition of a line. The indexing starts at the top of the terminal region with the line 0, which matches the line 1 used by escape sequences. Each line in the history becomes increasingly negative and the bottommost line is equal to the number of visible lines minus one. Having a system which goes into the negatives allows following the escape sequence's indexing system closely, while at the same time making it trivial to implement `Ord` for points. The Alacritty UI crate is the only place which has a different indexing system, since rendering and input puts the zero line at the top of the viewport, rather than the top of the terminal region. All instances which refer to a number of lines/columns instead of just a single Line/Column have also been changed to use a `usize` instead. This way a Line/Column will always refer to a specific place in the grid and no confusion is created by having a count of lines as a possible index into the grid storage. --- alacritty/src/renderer/mod.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'alacritty/src/renderer/mod.rs') diff --git a/alacritty/src/renderer/mod.rs b/alacritty/src/renderer/mod.rs index 4d752463..414d9bd5 100644 --- a/alacritty/src/renderer/mod.rs +++ b/alacritty/src/renderer/mod.rs @@ -481,7 +481,7 @@ impl Batch { self.instances.push(InstanceData { col: cell.point.column.0 as u16, - row: cell.point.line.0 as u16, + row: cell.point.line as u16, top: glyph.top, left: glyph.left, @@ -830,7 +830,7 @@ impl<'a> RenderApi<'a> { pub fn render_string( &mut self, glyph_cache: &mut GlyphCache, - point: Point, + point: Point, fg: Rgb, bg: Rgb, string: &str, @@ -846,7 +846,6 @@ impl<'a> RenderApi<'a> { bg_alpha: 1.0, fg, bg, - is_match: false, }) .collect::>(); -- cgit