Feat: saving screen during perfs
This commit is contained in:
@@ -13,12 +13,10 @@ use crate::state::MainLayout;
|
||||
use crate::theme;
|
||||
use crate::views::highlight::highlight_line_with_runtime;
|
||||
use crate::views::render::{adjust_resolved_for_line, adjust_spans_for_line};
|
||||
use crate::widgets::{ActivePatterns, Orientation, Scope, Spectrum, VuMeter};
|
||||
use crate::widgets::{Orientation, Scope, Spectrum, VuMeter};
|
||||
|
||||
pub fn layout(area: Rect) -> [Rect; 5] {
|
||||
pub fn layout(area: Rect) -> [Rect; 3] {
|
||||
Layout::horizontal([
|
||||
Constraint::Length(13),
|
||||
Constraint::Length(2),
|
||||
Constraint::Fill(1),
|
||||
Constraint::Length(2),
|
||||
Constraint::Length(10),
|
||||
@@ -27,7 +25,7 @@ pub fn layout(area: Rect) -> [Rect; 5] {
|
||||
}
|
||||
|
||||
pub fn render(frame: &mut Frame, app: &App, snapshot: &SequencerSnapshot, area: Rect) {
|
||||
let [patterns_area, _, main_area, _, vu_area] = layout(area);
|
||||
let [main_area, _, vu_area] = layout(area);
|
||||
|
||||
let show_scope = app.audio.config.show_scope;
|
||||
let show_spectrum = app.audio.config.show_spectrum;
|
||||
@@ -82,7 +80,6 @@ pub fn render(frame: &mut Frame, app: &App, snapshot: &SequencerSnapshot, area:
|
||||
|
||||
render_sequencer(frame, app, snapshot, sequencer_area);
|
||||
render_vu_meter(frame, app, vu_area);
|
||||
render_active_patterns(frame, app, snapshot, patterns_area);
|
||||
}
|
||||
|
||||
enum VizPanel {
|
||||
@@ -428,45 +425,3 @@ fn render_vu_meter(frame: &mut Frame, app: &App, area: Rect) {
|
||||
frame.render_widget(vu, inner);
|
||||
}
|
||||
|
||||
fn render_active_patterns(frame: &mut Frame, app: &App, snapshot: &SequencerSnapshot, area: Rect) {
|
||||
use crate::widgets::MuteStatus;
|
||||
|
||||
let theme = theme::get();
|
||||
let block = Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.border_style(Style::new().fg(theme.ui.border));
|
||||
let inner = block.inner(area);
|
||||
frame.render_widget(block, area);
|
||||
|
||||
let patterns: Vec<(usize, usize, usize)> = snapshot
|
||||
.active_patterns
|
||||
.iter()
|
||||
.map(|p| (p.bank, p.pattern, p.iter))
|
||||
.collect();
|
||||
|
||||
let mute_status: Vec<MuteStatus> = snapshot
|
||||
.active_patterns
|
||||
.iter()
|
||||
.map(|p| {
|
||||
if app.mute.is_soloed(p.bank, p.pattern) {
|
||||
MuteStatus::Soloed
|
||||
} else if app.mute.is_muted(p.bank, p.pattern) {
|
||||
MuteStatus::Muted
|
||||
} else if app.mute.is_effectively_muted(p.bank, p.pattern) {
|
||||
MuteStatus::EffectivelyMuted
|
||||
} else {
|
||||
MuteStatus::Normal
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
|
||||
let step_info = snapshot
|
||||
.get_step(app.editor_ctx.bank, app.editor_ctx.pattern)
|
||||
.map(|step| (step, app.current_edit_pattern().length));
|
||||
|
||||
let mut widget = ActivePatterns::new(&patterns).with_mute_status(&mute_status);
|
||||
if let Some((step, total)) = step_info {
|
||||
widget = widget.with_step(step, total);
|
||||
}
|
||||
frame.render_widget(widget, inner);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user