scene and track colors; random_color_near

This commit is contained in:
🪞👃🪞 2024-10-11 18:02:03 +03:00
parent f500c717a2
commit 6bee5b0bcd
5 changed files with 80 additions and 38 deletions

View file

@ -169,14 +169,16 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
//let height = rows.last().map(|(w,y)|(y+w)/PPQ).unwrap_or(16);
let tracks: &[ArrangementTrack<Tui>] = state.tracks.as_ref();
let scenes: &[Scene] = state.scenes.as_ref();
let offset = 4 + Scene::longest_name(scenes) as u16;
let offset = 3 + Scene::longest_name(scenes) as u16;
let content = Layers::new(move |add|{
let rows: &[(usize, usize)] = rows.as_ref();
let cols: &[(usize, usize)] = cols.as_ref();
let track_titles = row!((track, (w, _)) in tracks.iter().zip(cols) =>
(&track.name.read().unwrap().as_str() as &dyn Widget<Engine = Tui>)
.min_xy(*w as u16, 2).push_x(offset));
.min_xy(*w as u16, 2)
.bg(track.color)
.push_x(offset));
let scene_name = |scene, playing: bool, height|row!(
if playing { "" } else { " " },
@ -186,7 +188,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
let scene_clip = |scene, track: usize, w: u16, h: u16|Layers::new(move |add|{
let mut color = Color::Rgb(40, 50, 30);
match (tracks.get(track), (scene as &Scene).clips.get(track)) {
(Some(track), Some(Some(phrase))) => {
(Some(_), Some(Some(phrase))) => {
let name = &(phrase as &Arc<RwLock<Phrase>>).read().unwrap().name;
let name = format!("{}", name);
add(&name.as_str().push_x(1).fixed_x(w))?;
@ -206,7 +208,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
let height = 1.max((pulses / PPQ) as u16);
let playing = scene.is_playing(tracks);
Stack::right(move |add| {
add(&scene_name(scene, playing, height))?;
add(&scene_name(scene, playing, height).bg(scene.color))?;
for (track, (w, _)) in cols.iter().enumerate() {
add(&scene_clip(scene, track, *w as u16, height))?;
}