small software-rendered rust tty
bigger integersa
bendn 8 months ago
parent 18dbeaa · commit e65b986
-rw-r--r--src/render.rs7
-rw-r--r--src/term.rs8
-rw-r--r--src/term/cells.rs4
3 files changed, 9 insertions, 10 deletions
diff --git a/src/render.rs b/src/render.rs
index 72e315c..bfe5c52 100644
--- a/src/render.rs
+++ b/src/render.rs
@@ -17,11 +17,10 @@ pub fn render(
let m = FONT.metrics(&[]);
let sz = ppem * (m.max_width / m.units_per_em as f32);
let mut i = Image::build(w as _, h as _).fill(colors::BACKGROUND);
- let c = x.cells.c();
- let r = x.cells.r();
+ let c = x.cells.c() as usize;
+ let r = x.cells.r() as usize;
let vo = x.view_o.unwrap_or(x.cells.row);
- for (col, k) in x.cells.cells
- [(vo * c) as usize..(vo * c + r * c) as usize]
+ for (col, k) in x.cells.cells[vo * c..vo * c + r * c]
.chunks_exact(c as _)
.zip(1..)
{
diff --git a/src/term.rs b/src/term.rs
index 9dd0ee4..ec0439c 100644
--- a/src/term.rs
+++ b/src/term.rs
@@ -11,7 +11,7 @@ pub struct Terminal {
pub cursor: (u16, u16),
pub saved_cursor: (u16, u16),
- pub view_o: Option<u16>,
+ pub view_o: Option<usize>,
pub cells: Cells,
pub p: TerminalInputParser,
pub mode: Mode,
@@ -49,10 +49,10 @@ impl Terminal {
return;
};
if rows < 0.0 {
- let rows = rows.ceil().abs() as u16;
+ let rows = rows.ceil().abs() as usize;
*vo = (*vo + rows).min(self.cells.row);
} else {
- let rows = rows.floor() as u16;
+ let rows = rows.floor() as usize;
*vo = vo.saturating_sub(rows);
}
}
@@ -81,7 +81,7 @@ impl Terminal {
self.cursor.1 -= 1;
self.cells.grow(1);
if let Some(vo) = self.view_o.as_mut()
- && *vo + 1 == self.cells.row
+ && *vo + 1 == self.cells.row as usize
{
*vo += 1;
}
diff --git a/src/term/cells.rs b/src/term/cells.rs
index cffd532..c3ad862 100644
--- a/src/term/cells.rs
+++ b/src/term/cells.rs
@@ -3,7 +3,7 @@ pub struct Cells {
pub size: (u16, u16),
pub cells: Vec<Cell>,
pub margin: (u16, u16),
- pub row: u16,
+ pub row: usize,
}
#[derive(Clone, Copy, Debug)]
pub struct Style {
@@ -113,7 +113,7 @@ impl Cells {
&mut self.rows().nth(row as usize - 1).unwrap()[x as usize - 1..]
}
pub fn grow(&mut self, by: u16) {
- self.row += by;
+ self.row += by as usize;
let at = self.offset()
+ (self.margin.1 as usize - 1) * self.size.0 as usize;
self.cells.splice(