diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-11 13:55:56 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-11 13:55:56 -0500 |
commit | 7b9db3d75ce39c97a5002afb22fbcee0ef429a48 (patch) | |
tree | ffce808f90b0aa69186bb4d8bdedc4530dbee4d9 /src | |
parent | 7a08f9fd8f9c6420ea33a5686abba5a209385924 (diff) | |
download | vt100-rust-7b9db3d75ce39c97a5002afb22fbcee0ef429a48.tar.gz vt100-rust-7b9db3d75ce39c97a5002afb22fbcee0ef429a48.zip |
actually, this method isn't necessary at all
Diffstat (limited to 'src')
-rw-r--r-- | src/row.rs | 35 |
1 files changed, 13 insertions, 22 deletions
@@ -76,23 +76,29 @@ impl Row { ) { let mut prev_was_wide = false; - for cell in self + let mut prev_col = start; + for (col, cell) in self .cells() + .enumerate() .skip(start as usize) - .take(width.min(self.content_width(start, false)) as usize) + .take(width as usize) { if prev_was_wide { prev_was_wide = false; continue; } + prev_was_wide = cell.is_wide(); + let col: u16 = col.try_into().unwrap(); if cell.has_contents() { + for _ in 0..(col - prev_col) { + contents.push(' '); + } + prev_col += col - prev_col; + contents.push_str(&cell.contents()); - } else { - contents.push(' '); + prev_col += if cell.is_wide() { 2 } else { 1 }; } - - prev_was_wide = cell.is_wide(); } } @@ -113,7 +119,7 @@ impl Row { .cells() .enumerate() .skip(start as usize) - .take(width.min(self.content_width(start, true)) as usize) + .take(width as usize) { if prev_was_wide { prev_was_wide = false; @@ -219,19 +225,4 @@ impl Row { (prev_pos, prev_attrs) } - - fn content_width(&self, start: u16, formatting: bool) -> u16 { - let default_attrs = crate::attrs::Attrs::default(); - for (col, cell) in - self.cells.iter().skip(start as usize).enumerate().rev() - { - if cell.has_contents() - || (formatting && cell.attrs() != &default_attrs) - { - let width: u16 = col.try_into().unwrap(); - return width + 1; - } - } - 0 - } } |