mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
add from! macro
This commit is contained in:
parent
d806014df2
commit
77ea2a9b02
2 changed files with 26 additions and 12 deletions
|
|
@ -10,3 +10,13 @@ pub use self::{
|
|||
input::Handle,
|
||||
output::Render
|
||||
};
|
||||
|
||||
/// Prototypal case of implementor macro.
|
||||
/// Saves 4loc per data pats.
|
||||
#[macro_export] macro_rules! from {
|
||||
(|$self:ident: $Source:ty| $Target:ty = $cb:expr) => {
|
||||
impl From<$Source> for $Target {
|
||||
fn from (state: $Source) -> Self { $cb }
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,17 +5,11 @@ pub struct ArrangerVColSep {
|
|||
scenes_w: u16,
|
||||
sep_fg: Color,
|
||||
}
|
||||
|
||||
impl From<&ArrangerTui> for ArrangerVColSep {
|
||||
fn from (state: &ArrangerTui) -> Self {
|
||||
Self {
|
||||
cols: track_widths(state.tracks()),
|
||||
scenes_w: 3 + ArrangerScene::longest_name(state.scenes()) as u16,
|
||||
sep_fg: TuiTheme::separator_fg(false),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
from!(|source:&ArrangerTui|ArrangerVColSep = Self {
|
||||
cols: track_widths(state.tracks()),
|
||||
scenes_w: 3 + ArrangerScene::longest_name(state.scenes()) as u16,
|
||||
sep_fg: TuiTheme::separator_fg(false),
|
||||
});
|
||||
render!(<Tui>|self: ArrangerVColSep|render(move|to: &mut TuiOutput|{
|
||||
let style = Some(Style::default().fg(self.sep_fg));
|
||||
Ok(for x in self.cols.iter().map(|col|col.1) {
|
||||
|
|
@ -145,8 +139,18 @@ pub struct ArrangerVHead<'a> {
|
|||
timebase: &'a Arc<Timebase>,
|
||||
current: &'a Arc<Moment>,
|
||||
}
|
||||
from!(<'a>|state: &'a ArrangerTui|ArrangerVHead<'a>, { // A
|
||||
tracks: &state.tracks,
|
||||
cols: track_widths(state.tracks()),
|
||||
focused: true,
|
||||
selected: state.selected,
|
||||
scenes_w: 3 + ArrangerScene::longest_name(state.scenes()) as u16,
|
||||
header_h: 3,
|
||||
timebase: state.clock().timebase(),
|
||||
current: &state.clock().playhead,
|
||||
});
|
||||
|
||||
impl<'a> From<&'a ArrangerTui> for ArrangerVHead<'a> {
|
||||
impl<'a> From<&'a ArrangerTui> for ArrangerVHead<'a> { // B
|
||||
fn from (state: &'a ArrangerTui) -> Self {
|
||||
Self {
|
||||
tracks: &state.tracks,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue