From 33bdf65e8d22cebcd64423198423c84e9eec8811 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Wed, 21 Aug 2024 18:22:35 +0300 Subject: [PATCH] fix: collect enum, break: Render for Option<&T> --- crates/suil/src/test.rs | 1 + crates/tek_core/src/render.rs | 44 +++++++++++--------- crates/tek_core/src/render_collect.rs | 4 +- crates/tek_mixer/src/plugin_lv2.rs | 3 +- crates/tek_sequencer/src/arranger_view.rs | 12 +++--- crates/tek_sequencer/src/arranger_view_h.rs | 2 +- crates/tek_sequencer/src/arranger_view_v.rs | 2 +- crates/tek_sequencer/src/transport_render.rs | 2 +- 8 files changed, 37 insertions(+), 33 deletions(-) diff --git a/crates/suil/src/test.rs b/crates/suil/src/test.rs index 17889e9d..aaff88d0 100644 --- a/crates/suil/src/test.rs +++ b/crates/suil/src/test.rs @@ -137,6 +137,7 @@ mod plugin { let features = FeaturesBuilder { min_block_length: 1, max_block_length: 65536 }; let features = world.build_features(features); let mut plugin = None; + #[allow(clippy::never_loop)] for p in world.iter_plugins() { plugin = Some(p); break diff --git a/crates/tek_core/src/render.rs b/crates/tek_core/src/render.rs index 0e877f30..d5b96619 100644 --- a/crates/tek_core/src/render.rs +++ b/crates/tek_core/src/render.rs @@ -76,23 +76,23 @@ impl Render for () { } } -impl Render for &T { - fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { - (*self).render(buf, area) - } - fn into_collected <'a> (self) -> Collected<'a> where Self: Sized + 'a { - Collected::Ref(self) - } -} +//impl Render for &T { + //fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { + //(*self).render(buf, area) + //} + //fn into_collected <'a> (self) -> Collected<'a> where Self: Sized + 'a { + //Collected::Ref(self) + //} +//} -impl Render for &mut T { - fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { - (**self).render(buf, area) - } - fn into_collected <'a> (self) -> Collected<'a> where Self: Sized + 'a { - Collected::Ref(self) - } -} +//impl Render for &mut T { + //fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { + //(**self).render(buf, area) + //} + //fn into_collected <'a> (self) -> Collected<'a> where Self: Sized + 'a { + //Collected::Ref(self) + //} +//} impl Render for Option { fn render (&self, b: &mut Buffer, a: Rect) -> Usually { @@ -103,21 +103,27 @@ impl Render for Option { } } -impl Render for Box { +impl<'a> Render for Box { fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { (**self).render(buf, area) } - fn into_collected <'a> (self) -> Collected<'a> where Self: Sized + 'a { + fn into_collected <'b> (self) -> Collected<'b> where Self: Sized + 'b { Collected::Box(self) } } -impl Render for Box Usually + Send + Sync> { +impl<'a, T: Fn(&mut Buffer, Rect) -> Usually + Send + Sync + 'a> Render for T { fn render (&self, b: &mut Buffer, a: Rect) -> Usually { (*self)(b, a) } } +//impl<'a> Render for Box Usually + Send + Sync + 'a> { + //fn render (&self, b: &mut Buffer, a: Rect) -> Usually { + //(*self)(b, a) + //} +//} + impl Render for Arc> { fn render (&self, b: &mut Buffer, a: Rect) -> Usually { self.lock().unwrap().render(b, a) diff --git a/crates/tek_core/src/render_collect.rs b/crates/tek_core/src/render_collect.rs index a1c6bc25..3b10230e 100644 --- a/crates/tek_core/src/render_collect.rs +++ b/crates/tek_core/src/render_collect.rs @@ -25,12 +25,12 @@ impl<'a> Collection<'a> { } pub trait Collect<'a> { - fn add_box (self, item: Box) -> Self; + fn add_box (self, item: Box) -> Self; fn add_ref (self, item: &'a dyn Render) -> Self; } impl<'a> Collect<'a> for Collection<'a> { - fn add_box (mut self, item: Box) -> Self { + fn add_box (mut self, item: Box) -> Self { self.0.push(Collected::Box(item)); self } diff --git a/crates/tek_mixer/src/plugin_lv2.rs b/crates/tek_mixer/src/plugin_lv2.rs index f149f65e..5c4c860b 100644 --- a/crates/tek_mixer/src/plugin_lv2.rs +++ b/crates/tek_mixer/src/plugin_lv2.rs @@ -44,9 +44,8 @@ impl LV2Plugin { let features = FeaturesBuilder { min_block_length: 1, max_block_length: 65536 }; let features = world.build_features(features); let mut plugin = None; - for p in world.iter_plugins() { + if let Some(p) = world.iter_plugins().next() { plugin = Some(p); - break } let plugin = plugin.unwrap(); let err = &format!("init {uri}"); diff --git a/crates/tek_sequencer/src/arranger_view.rs b/crates/tek_sequencer/src/arranger_view.rs index eefb62b6..dba7373c 100644 --- a/crates/tek_sequencer/src/arranger_view.rs +++ b/crates/tek_sequencer/src/arranger_view.rs @@ -20,8 +20,6 @@ impl ArrangerViewMode { } } -use std::iter::IntoIterator; - struct Split<'a>(Collection<'a>, Direction); impl<'a> Split<'a> { @@ -37,8 +35,8 @@ impl<'a> Render for Split<'a> { } impl<'a> Collect<'a> for Split<'a> { - fn add (mut self, item: Box) -> Self { - self.0 = self.0.add(item); + fn add_box (mut self, item: Box) -> Self { + self.0 = self.0.add_box(item); self } fn add_ref (mut self, item: &'a dyn Render) -> Self { @@ -79,10 +77,10 @@ render!(Arranger |self, buf, area| { }); if let Some(direction) = self.show_sequencer { - layout = layout.add(Box::new(Split::new(direction) - .add(arrangement))); + let sequencer = Box::new(Split::new(direction).add_box(arrangement)); + layout = layout.add_box(sequencer); } else { - layout = layout.add(arrangement); + layout = layout.add_box(arrangement); } layout.render(buf, area) diff --git a/crates/tek_sequencer/src/arranger_view_h.rs b/crates/tek_sequencer/src/arranger_view_h.rs index 9a0d76d7..9acc2b80 100644 --- a/crates/tek_sequencer/src/arranger_view_h.rs +++ b/crates/tek_sequencer/src/arranger_view_h.rs @@ -3,7 +3,7 @@ use crate::*; pub fn draw (state: &Arranger, buf: &mut Buffer, mut area: Rect) -> Usually { area.height = area.height.min((2 + state.tracks.len() * 2) as u16); Layered([ - &to_fill_bg(Nord::bg_lo(state.focused, state.entered)), + &FillBg(Nord::bg_lo(state.focused, state.entered)), &Split::right([ &track_name_column(state), &track_mon_column(state), diff --git a/crates/tek_sequencer/src/arranger_view_v.rs b/crates/tek_sequencer/src/arranger_view_v.rs index d57785bd..06cdb121 100644 --- a/crates/tek_sequencer/src/arranger_view_v.rs +++ b/crates/tek_sequencer/src/arranger_view_v.rs @@ -31,7 +31,7 @@ pub fn draw ( area.height = 2 + (rows[rows.len() - 1].1 / 96) as u16; let offset = 3 + scene_name_max_len(state.scenes.as_ref()) as u16; Layered([ - &to_fill_bg(Nord::bg_lo(state.focused, state.entered)), + &FillBg(Nord::bg_lo(state.focused, state.entered)), &column_separators(offset, cols), &cursor_focus(state, offset, cols, rows), &Split::down([ diff --git a/crates/tek_sequencer/src/transport_render.rs b/crates/tek_sequencer/src/transport_render.rs index 68bf22f7..f624f07b 100644 --- a/crates/tek_sequencer/src/transport_render.rs +++ b/crates/tek_sequencer/src/transport_render.rs @@ -37,7 +37,7 @@ render!(TransportToolbar |self, buf, area| { // Beats per minute &|buf: &mut Buffer, Rect { x, y, .. }: Rect|{ "BPM".blit(buf, x, y, Some(not_dim))?; - let width = format!("{}.{:03}", bpm, bpm % 1).blit(buf, x, y + 1, Some(not_dim_bold))?.width; + let width = format!("{}.{:03}", bpm, bpm * 1000 % 1000).blit(buf, x, y + 1, Some(not_dim_bold))?.width; let area = Rect { x, y, width: (width + 2).max(10), height: 2 }; if self.focused && self.entered && self.selected == TransportFocus::BPM { corners.draw(buf, Rect { x: area.x - 1, ..area })?;