wip: render: remove render! macro

This commit is contained in:
🪞👃🪞 2024-09-04 03:20:58 +03:00
parent bf165c6be1
commit 1d4db3c629
13 changed files with 337 additions and 304 deletions

View file

@ -47,7 +47,7 @@ const STYLE_VALUE: Option<Style> = Some(Style {
struct SequenceName<'a>(&'a Sequencer);
impl<'a> Render for SequenceName<'a> {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceName<'a> {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
let Rect { x, y, .. } = area;
let frame = Rect { x, y, width: 10, height: 4 };
@ -60,7 +60,7 @@ impl<'a> Render for SequenceName<'a> {
struct SequenceRange;
impl Render for SequenceRange {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceRange {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
let Rect { x, y, .. } = area;
let frame = Rect { x, y, width: 10, height: 6 };
@ -75,7 +75,7 @@ impl Render for SequenceRange {
struct SequenceLoopRange;
impl Render for SequenceLoopRange {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceLoopRange {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
let Rect { x, y, .. } = area;
let range = Rect { x, y, width: 10, height: 7 };
@ -91,7 +91,7 @@ impl Render for SequenceLoopRange {
struct SequenceNoteRange;
impl Render for SequenceNoteRange {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceNoteRange {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
let Rect { x, y, .. } = area;
let range = Rect { x, y, width: 10, height: 9 };
@ -109,7 +109,7 @@ impl Render for SequenceNoteRange {
struct SequenceKeys<'a>(&'a Sequencer);
impl<'a> Render for SequenceKeys<'a> {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceKeys<'a> {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
if area.height < 2 {
return Ok(area)
@ -132,7 +132,7 @@ impl<'a> Render for SequenceKeys<'a> {
struct SequenceNotes<'a>(&'a Sequencer);
impl<'a> Render for SequenceNotes<'a> {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceNotes<'a> {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
if area.height < 2 {
return Ok(area)
@ -160,7 +160,7 @@ impl<'a> Render for SequenceNotes<'a> {
struct SequenceCursor<'a>(&'a Sequencer);
impl<'a> Render for SequenceCursor<'a> {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceCursor<'a> {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
if let (Some(time), Some(note)) = (self.0.time_axis.point, self.0.note_axis.point) {
let x = area.x + Sequencer::H_KEYS_OFFSET as u16 + time as u16;
@ -175,7 +175,7 @@ impl<'a> Render for SequenceCursor<'a> {
struct SequenceZoom<'a>(&'a Sequencer);
impl<'a> Render for SequenceZoom<'a> {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceZoom<'a> {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
let quant = ppq_to_name(self.0.time_axis.scale);
let quant_x = area.x + area.width - 1 - quant.len() as u16;
@ -186,8 +186,8 @@ impl<'a> Render for SequenceZoom<'a> {
struct SequenceTimer<'a>(&'a Sequencer, Arc<RwLock<Phrase>>);
impl<'a> Render for SequenceTimer<'a> {
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
impl<'a> Render<TuiOutput<'a>, Rect> for SequenceTimer<'a> {
fn render (&self, to: &mut TuiOutput<'a>) -> Usually<Rect> {
let phrase = self.1.read().unwrap();
let (time0, time_z, now) = (
self.0.time_axis.start, self.0.time_axis.scale, self.0.now % phrase.length