diff --git a/crates/tek_sequencer/src/sequencer_view_h.rs b/crates/tek_sequencer/src/sequencer_view_h.rs index 35204c89..6a6cbb49 100644 --- a/crates/tek_sequencer/src/sequencer_view_h.rs +++ b/crates/tek_sequencer/src/sequencer_view_h.rs @@ -6,31 +6,30 @@ impl Sequencer { pub(crate) fn horizontal_draw (&self, buf: &mut Buffer, mut area: Rect) -> Usually<()> { Split::down() - .add(SequenceStartEnd) - .add(SequenceLoop) - .add(SequenceRange) + .add_ref(&SequenceRange) + .add_ref(&SequenceLoopRange) + .add_ref(&SequenceNoteRange) .render(buf, Rect { x: area.x, y: area.y, width: 15, height: area.height })?; - //SequenceRange.render(buf, area)?; area.x = area.x + 15; area.width = area.width.saturating_sub(15); Lozenge(Style::default().fg(Nord::BG2)).draw(buf, area)?; area.x = area.x + 1; area.width = area.width.saturating_sub(1); - SequenceKeys(&self).render(buf, area)?; - if let Some(ref phrase) = self.phrase { - SequenceTimer(&self, phrase).render(buf, area)?; - } - SequenceNotes(&self).render(buf, area)?; - SequenceCursor(&self).render(buf, area)?; - SequenceZoom(&self).render(buf, area)?; + Layered::new() + .add_ref(&SequenceKeys(&self)) + .add_ref(&self.phrase.as_ref().map(|phrase|SequenceTimer(&self, phrase.clone()))) + .add_ref(&SequenceNotes(&self)) + .add_ref(&SequenceCursor(&self)) + .add_ref(&SequenceZoom(&self)) + .render(buf, area)?; Ok(()) } } -struct SequenceStartEnd; +struct SequenceRange; -impl Render for SequenceStartEnd { +impl Render for SequenceRange { fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { let frame = Rect { x: area.x, y: area.y, width: 15, height: 4 }; Lozenge(Style::default().fg(Nord::BG2)).draw(buf, frame)?; @@ -40,9 +39,9 @@ impl Render for SequenceStartEnd { } } -struct SequenceLoop; +struct SequenceLoopRange; -impl Render for SequenceLoop { +impl Render for SequenceLoopRange { fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { let range = Rect { x: area.x, y: area.y, width: 15, height: 5 }; Lozenge(Style::default().fg(Nord::BG2)).draw(buf, range)?; @@ -53,9 +52,9 @@ impl Render for SequenceLoop { } } -struct SequenceRange; +struct SequenceNoteRange; -impl Render for SequenceRange { +impl Render for SequenceNoteRange { fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { let range = Rect { x: area.x, y: area.y, width: 15, height: 7 }; Lozenge(Style::default().fg(Nord::BG2)).draw(buf, range)?; @@ -145,7 +144,7 @@ impl<'a> Render for SequenceZoom<'a> { } } -struct SequenceTimer<'a>(&'a Sequencer, &'a Arc>); +struct SequenceTimer<'a>(&'a Sequencer, Arc>); impl<'a> Render for SequenceTimer<'a> { fn render (&self, buf: &mut Buffer, area: Rect) -> Usually {