From 20b7267225788e85f6be9d7639cef4935dfdbd65 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sun, 7 Jul 2024 17:55:05 +0300 Subject: [PATCH] ui thrashing --- src/control/sampler.rs | 2 +- src/core/render.rs | 15 +++ src/main.rs | 12 ++- src/model.rs | 12 +-- src/model/mixer.rs | 2 +- src/model/sampler.rs | 14 +-- src/view.rs | 177 ++++++++++++++++++------------- src/view/border.rs | 130 +++++++++++++++++++++++ src/view/chain.rs | 8 +- src/view/focus.rs | 67 ++++++++++++ src/view/grid.rs | 79 +++++++++++++- src/view/layout.rs | 211 +++++++++++++++++++++++++++++++++++++ src/view/layout/focus.rs | 0 src/view/layout/lozenge.rs | 63 +++++++++++ src/view/layout/mod.rs | 54 ---------- src/view/mixer.rs | 68 ------------ src/view/sequencer.rs | 13 +-- src/view/transport.rs | 1 + 18 files changed, 695 insertions(+), 233 deletions(-) create mode 100644 src/view/border.rs create mode 100644 src/view/focus.rs create mode 100644 src/view/layout.rs delete mode 100644 src/view/layout/focus.rs delete mode 100644 src/view/layout/mod.rs delete mode 100644 src/view/mixer.rs diff --git a/src/control/sampler.rs b/src/control/sampler.rs index efac93e7..00d7bf0c 100644 --- a/src/control/sampler.rs +++ b/src/control/sampler.rs @@ -28,7 +28,7 @@ fn cursor_down (state: &mut Sampler) -> Usually { fn trigger (state: &mut Sampler) -> Usually { for (i, sample) in state.samples.values().enumerate() { if i == state.cursor.0 { - state.voices.push(sample.play(0)) + state.voices.push(sample.play(0, &100.into())) } } Ok(true) diff --git a/src/core/render.rs b/src/core/render.rs index d8c7aa3a..a5c99d5a 100644 --- a/src/core/render.rs +++ b/src/core/render.rs @@ -3,6 +3,21 @@ pub(crate) use ratatui::prelude::*; pub(crate) use ratatui::buffer::Cell; use ratatui::widgets::WidgetRef; +pub fn fill_bg (buf: &mut Buffer, area: Rect, color: Color) { + let Rect { x, y, width, height } = area; + for y in y..y+height { + if y >= buf.area.height { + break + } + for x in x..x+width { + if x >= buf.area.width { + break + } + buf.get_mut(x, y).set_bg(color); + } + } +} + pub trait Blit { // Render something to X, Y coordinates in a buffer, ignoring width/height. fn blit (&self, buf: &mut Buffer, x: u16, y: u16, style: Option