From e0e870de274c68e8de27994657501658b0308ecd Mon Sep 17 00:00:00 2001 From: Sharif Haason Date: Sat, 8 Oct 2022 22:42:42 -0400 Subject: [PATCH] Store squeezed byte instead of pushing to vector --- src/lib.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 874ab43..3119b7c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -219,6 +219,7 @@ pub struct Printer<'a, Writer: Write> { display_offset: u64, /// The number of panels to draw. panels: u16, + squeeze_byte: u8, } impl<'a, Writer: Write> Printer<'a, Writer> { @@ -283,6 +284,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> { squeezer: Squeezer::new(use_squeeze, 8 * panels as u64), display_offset: 0, panels, + squeeze_byte: 0xFF, } } @@ -507,22 +509,20 @@ impl<'a, Writer: Write> Printer<'a, Writer> { .as_bytes(), )?; let old_idx = self.idx; - self.idx -= self.line_buf.len() as u64; + self.idx -= self.idx % (8 * self.panels as u64); if self.show_position_panel { self.print_position_panel()?; } - for b in self.line_buf.clone() { - self.print_byte(b)?; + while self.idx < old_idx { + self.print_byte(self.squeeze_byte)?; self.idx += 1; } - self.idx = old_idx; is_flushed = true; } - self.line_buf.push(b); - if !self.squeezer.active() || self.squeezer.action() == SqueezeAction::Print { // print the left border and position panel if there's a new line + self.line_buf.push(b); if self.idx % (8 * self.panels as u64) == 0 && !is_flushed { self.writer.write_all( self.border_style