diff --git a/src/app/graph.rs b/src/app/graph.rs index f370cfa..5dea431 100644 --- a/src/app/graph.rs +++ b/src/app/graph.rs @@ -6,12 +6,22 @@ use crate::app; const CYAN: Color = Color::from_rgb8(0, 255, 255); -#[derive(Default)] pub struct Graph { timeline: VecDeque, + pub show_borders: bool, pub cache: canvas::Cache, } +impl Default for Graph { + fn default() -> Self { + Self { + show_borders: true, + + timeline: Default::default(), + cache: Default::default(), + } + } +} impl Graph { pub fn new(value: f32) -> Self { @@ -46,11 +56,13 @@ impl canvas::Program for Graph { _cursor: mouse::Cursor, ) -> Vec> { let geometry = self.cache.draw(renderer, bounds.size(), |frame| { - frame.stroke_rectangle( - Point::new(0., 0.), - bounds.size(), - canvas::Stroke::default().with_color(Color::from_rgb8(255, 0, 0)), - ); + if self.show_borders { + frame.stroke_rectangle( + Point::new(0., 0.), + bounds.size(), + canvas::Stroke::default().with_color(Color::from_rgb8(255, 0, 0)), + ); + } frame.stroke( &canvas::Path::new(|builder| { for (index, value) in self.timeline.iter().enumerate() { diff --git a/src/app/mod.rs b/src/app/mod.rs index 57aec5d..c46d289 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -53,9 +53,18 @@ impl State { } fn update(&mut self, message: Message) -> Task { match message { - Message::ToggleMain => self.is_main_section_shown.toggle(), - Message::ToggleCpu => self.is_cpu_section_shown.toggle(), - Message::ToggleMemory => self.is_memory_section_shown.toggle(), + Message::ToggleMain => { + self.is_main_section_shown.toggle(); + self.check_borders(); + } + Message::ToggleCpu => { + self.is_cpu_section_shown.toggle(); + self.check_borders(); + } + Message::ToggleMemory => { + self.is_memory_section_shown.toggle(); + self.check_borders(); + } Message::Info(snapshot) => { self.uptime = snapshot.uptime(); @@ -140,6 +149,11 @@ impl State { fn title(&self) -> String { format!("itop {:?}", self.uptime) } + + fn check_borders(&mut self) { + self.total_cpu_graph.show_borders = + self.is_cpu_section_shown || self.is_memory_section_shown; + } } pub fn run() -> Result<(), Error> {