From d962119e1bac027c18ed8cfc8f3eb0c4cab8bacb Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 2 Jan 2025 23:18:28 +0100 Subject: [PATCH] light up meters --- src/border.rs | 8 +++++++- src/clock/clock_tui.rs | 2 +- src/groovebox/groovebox_tui.rs | 35 +--------------------------------- src/meter.rs | 22 ++++++++++++++++++--- 4 files changed, 28 insertions(+), 39 deletions(-) diff --git a/src/border.rs b/src/border.rs index 03188944..823c0dfc 100644 --- a/src/border.rs +++ b/src/border.rs @@ -31,7 +31,13 @@ pub trait BorderStyle: Send + Sync + Copy { Bordered(self, w) } fn enclose > (self, w: W) -> impl Content { - Tui::bg(self.style().unwrap().bg.unwrap_or(Color::Reset), lay!(Fill::xy(Border(self)), w)) + lay!(Fill::xy(Border(self)), w) + } + fn enclose_bg > (self, w: W) -> impl Content { + Tui::bg(self.style().unwrap().bg.unwrap_or(Color::Reset), lay!( + Fill::xy(Border(self)), + w + )) } const NW: &'static str = ""; const N: &'static str = ""; diff --git a/src/clock/clock_tui.rs b/src/clock/clock_tui.rs index e323477d..5221b2bc 100644 --- a/src/clock/clock_tui.rs +++ b/src/clock/clock_tui.rs @@ -62,7 +62,7 @@ impl<'a> TransportView<'a> { } } render!(Tui: (self: TransportView<'a>) => Outer( - Style::default().fg(TuiTheme::g(255)).bg(TuiTheme::g(0)) + Style::default().fg(TuiTheme::g(255)) ).enclose(row!( OutputStats::new(self.compact, self.clock), " ", diff --git a/src/groovebox/groovebox_tui.rs b/src/groovebox/groovebox_tui.rs index f1b564a8..5e635095 100644 --- a/src/groovebox/groovebox_tui.rs +++ b/src/groovebox/groovebox_tui.rs @@ -1,39 +1,6 @@ use crate::*; use super::*; -/* -render!(Tui: (self: Groovebox) => self.size.of( - self.toolbar_view() - .south(self.selector_view()) - .south(self.sample_view()) - .north(self.status_view()) - .north(self.pool_view()) - .west(Fill::xy(self.sampler_view().east(self.editor))))); -*/ - -/* -render!(Tui: (self: Groovebox) => self.size.of( - self.editor - .east_of(self.sample_view()) - .wrap(Fill::xy) - .west_of(self.pool_view()) - .north_of(self.status_view()) - .north_of(self.sample_view()) - .south_of(self.selector_view()) - .south_of(self.toolbar_view()) -*/ - -/* -render!(Tui: (self: Groovebox) => self.size.of( - self.toolbar_view().north_of( - self.selector_view().north_of( - self.sample_view().south_of( - self.status_view().south_of( - self.pool_view().east_of( - Fill::xy(self.sampler_view().west_of( - self.editor))))))))); -*/ - render!(Tui: (self: Groovebox) => self.size.of( Bsp::s(self.toolbar_view(), Bsp::s(self.selector_view(), @@ -46,7 +13,7 @@ impl Groovebox { Fill::x(Fixed::y(2, lay!( Align::w(Meter("L/", self.sampler.input_meter[0])), Align::e(Meter("R/", self.sampler.input_meter[1])), - Align::x(Tui::bg(TuiTheme::g(32), TransportView::new(true, &self.player.clock))), + Align::x(TransportView::new(true, &self.player.clock)), ))) } fn status_view (&self) -> impl Content + use<'_> { diff --git a/src/meter.rs b/src/meter.rs index f1a604b4..659aeeaa 100644 --- a/src/meter.rs +++ b/src/meter.rs @@ -2,11 +2,27 @@ use crate::*; pub struct Meter<'a>(pub &'a str, pub f32); -render!(Tui: (self: Meter<'a>) => format!("{}{:>+9.3}", self.0, self.1)); +render!(Tui: (self: Meter<'a>) => col!( + Field(TuiTheme::g(128).into(), self.0, format!("{:>+9.3}", self.1)), + Fixed::xy(if self.1 >= 0.0 { 13 } + else if self.1 >= -1.0 { 12 } + else if self.1 >= -2.0 { 11 } + else if self.1 >= -3.0 { 10 } + else if self.1 >= -4.0 { 9 } + else if self.1 >= -6.0 { 8 } + else if self.1 >= -9.0 { 7 } + else if self.1 >= -12.0 { 6 } + else if self.1 >= -15.0 { 5 } + else if self.1 >= -20.0 { 4 } + else if self.1 >= -25.0 { 3 } + else if self.1 >= -30.0 { 2 } + else if self.1 >= -40.0 { 1 } + else { 0 }, 1, Tui::bg(if self.1 >= 0.0 { Color::Red } + else if self.1 >= -3.0 { Color::Yellow } + else { Color::Green }, ())))); pub struct Meters<'a>(pub &'a[f32]); render!(Tui: (self: Meters<'a>) => col!( format!("L/{:>+9.3}", self.0[0]), - format!("R/{:>+9.3}", self.0[1]), -)); + format!("R/{:>+9.3}", self.0[1])));