diff --git a/engine/src/output.rs b/engine/src/output.rs index 8cf71398..c17e849b 100644 --- a/engine/src/output.rs +++ b/engine/src/output.rs @@ -21,6 +21,14 @@ pub trait Output { Some($cb) } } + impl Render for $Struct $(<$($L,)* E, $($T),*>)? { + fn min_size (&self, to: E::Size) -> Perhaps { + self.content().map(|content|content.min_size(to)).unwrap_or(Ok(None)) + } + fn render (&self, to: &mut E::Output) -> Usually<()> { + self.content().map(|content|content.render(to)).unwrap_or(Ok(())) + } + } }; // Implement for a specific engine @@ -39,6 +47,20 @@ pub trait Output { Some($cb) } } + impl $(< + $($($L),+)? + $($($T$(:$U)?),+)? + >)? Render<$E> for $Struct $(< + $($($L),+)? + $($($T),+)? + >)? { + fn min_size (&self, to: <$E as Engine>::Size) -> Perhaps<<$E as Engine>::Size> { + self.content().map(|content|content.min_size(to)).unwrap_or(Ok(None)) + } + fn render (&self, to: &mut <$E as Engine>::Output) -> Usually<()> { + self.content().map(|content|content.render(to)).unwrap_or(Ok(())) + } + } } } diff --git a/engine/src/tui.rs b/engine/src/tui.rs index 52bca804..33ebafa6 100644 --- a/engine/src/tui.rs +++ b/engine/src/tui.rs @@ -367,7 +367,6 @@ pub fn buffer_update (buf: &mut Buffer, area: [u16;4], callback: &impl Fn(&mut C } } -/* /// Define a key pub const fn key (code: KeyCode) -> KeyEvent { let modifiers = KeyModifiers::NONE; @@ -391,6 +390,7 @@ pub const fn shift (key: KeyEvent) -> KeyEvent { KeyEvent { modifiers: key.modifiers.union(KeyModifiers::SHIFT), ..key } } +/* /// Define a keymap #[macro_export] macro_rules! keymap { ($T:ty { $([$k:ident $(($char:literal))?, $m:ident, $n: literal, $d: literal, $f: expr]),* $(,)? }) => { diff --git a/src/border.rs b/src/border.rs index 3de2a44c..522effa2 100644 --- a/src/border.rs +++ b/src/border.rs @@ -152,7 +152,7 @@ border! { "┃" "┃" "┗" "━" "┛" fn style (&self) -> Option