aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-11 13:55:56 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-11 13:55:56 -0500
commit7b9db3d75ce39c97a5002afb22fbcee0ef429a48 (patch)
treeffce808f90b0aa69186bb4d8bdedc4530dbee4d9
parent7a08f9fd8f9c6420ea33a5686abba5a209385924 (diff)
downloadvt100-rust-7b9db3d75ce39c97a5002afb22fbcee0ef429a48.tar.gz
vt100-rust-7b9db3d75ce39c97a5002afb22fbcee0ef429a48.zip
actually, this method isn't necessary at all
-rw-r--r--src/row.rs35
1 files changed, 13 insertions, 22 deletions
diff --git a/src/row.rs b/src/row.rs
index 439bf4b..da5b398 100644
--- a/src/row.rs
+++ b/src/row.rs
@@ -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
- }
}