turn Inset and Outset into Padding and Margin

This commit is contained in:
🪞👃🪞 2024-12-30 13:50:49 +01:00
parent e0e680eb7c
commit 9fa858f226
9 changed files with 57 additions and 57 deletions

View file

@ -40,26 +40,26 @@ impl Content for Demo<Tui> {
add(&Background(Color::Rgb(0,128,128)))?; add(&Background(Color::Rgb(0,128,128)))?;
add(&Outset::XY(1, 1, Stack::down(|add|{ add(&Margin::XY(1, 1, Stack::down(|add|{
add(&Layers::new(|add|{ add(&Layers::new(|add|{
add(&Background(Color::Rgb(128,96,0)))?; add(&Background(Color::Rgb(128,96,0)))?;
add(&Border(Square(border_style)))?; add(&Border(Square(border_style)))?;
add(&Outset::XY(2, 1, "..."))?; add(&Margin::XY(2, 1, "..."))?;
Ok(()) Ok(())
}).debug())?; }).debug())?;
add(&Layers::new(|add|{ add(&Layers::new(|add|{
add(&Background(Color::Rgb(128,64,0)))?; add(&Background(Color::Rgb(128,64,0)))?;
add(&Border(Lozenge(border_style)))?; add(&Border(Lozenge(border_style)))?;
add(&Outset::XY(4, 2, "---"))?; add(&Margin::XY(4, 2, "---"))?;
Ok(()) Ok(())
}).debug())?; }).debug())?;
add(&Layers::new(|add|{ add(&Layers::new(|add|{
add(&Background(Color::Rgb(96,64,0)))?; add(&Background(Color::Rgb(96,64,0)))?;
add(&Border(SquareBold(border_style)))?; add(&Border(SquareBold(border_style)))?;
add(&Outset::XY(6, 3, "~~~"))?; add(&Margin::XY(6, 3, "~~~"))?;
Ok(()) Ok(())
}).debug())?; }).debug())?;
@ -69,15 +69,15 @@ impl Content for Demo<Tui> {
Ok(()) Ok(())
})) }))
//Align::Center(Outset::X(1, Layers::new(|add|{ //Align::Center(Margin::X(1, Layers::new(|add|{
//add(&Background(Color::Rgb(128,0,0)))?; //add(&Background(Color::Rgb(128,0,0)))?;
//add(&Stack::down(|add|{ //add(&Stack::down(|add|{
//add(&Outset::Y(1, Layers::new(|add|{ //add(&Margin::Y(1, Layers::new(|add|{
//add(&Background(Color::Rgb(0,128,0)))?; //add(&Background(Color::Rgb(0,128,0)))?;
//add(&Align::Center("12345"))?; //add(&Align::Center("12345"))?;
//add(&Align::Center("FOO")) //add(&Align::Center("FOO"))
//})))?; //})))?;
//add(&Outset::XY(1, 1, Layers::new(|add|{ //add(&Margin::XY(1, 1, Layers::new(|add|{
//add(&Align::Center("1234567"))?; //add(&Align::Center("1234567"))?;
//add(&Align::Center("BAR"))?; //add(&Align::Center("BAR"))?;
//add(&Background(Color::Rgb(0,0,128))) //add(&Background(Color::Rgb(0,0,128)))
@ -87,13 +87,13 @@ impl Content for Demo<Tui> {
//Align::Y(Layers::new(|add|{ //Align::Y(Layers::new(|add|{
//add(&Background(Color::Rgb(128,0,0)))?; //add(&Background(Color::Rgb(128,0,0)))?;
//add(&Outset::X(1, Align::Center(Stack::down(|add|{ //add(&Margin::X(1, Align::Center(Stack::down(|add|{
//add(&Align::X(Outset::Y(1, Layers::new(|add|{ //add(&Align::X(Margin::Y(1, Layers::new(|add|{
//add(&Background(Color::Rgb(0,128,0)))?; //add(&Background(Color::Rgb(0,128,0)))?;
//add(&Align::Center("12345"))?; //add(&Align::Center("12345"))?;
//add(&Align::Center("FOO")) //add(&Align::Center("FOO"))
//})))?; //})))?;
//add(&Outset::XY(1, 1, Layers::new(|add|{ //add(&Margin::XY(1, 1, Layers::new(|add|{
//add(&Align::Center("1234567"))?; //add(&Align::Center("1234567"))?;
//add(&Align::Center("BAR"))?; //add(&Align::Center("BAR"))?;
//add(&Background(Color::Rgb(0,0,128))) //add(&Background(Color::Rgb(0,0,128)))

View file

@ -77,7 +77,7 @@ render!(<Tui>|self: PianoHorizontal|{
let cursor = move||PianoHorizontalCursor(self); let cursor = move||PianoHorizontalCursor(self);
let border = Fill::wh(Outer(Style::default().fg(self.color.dark.rgb).bg(self.color.darkest.rgb))); let border = Fill::wh(Outer(Style::default().fg(self.color.dark.rgb).bg(self.color.darkest.rgb)));
let with_border = |x|lay!([border, Inset::xy(0, 0, &x)]); let with_border = |x|lay!([border, Padding::xy(0, 0, &x)]);
with_border(lay!([ with_border(lay!([
Push::x(0, row!(![ Push::x(0, row!(![
@ -86,7 +86,7 @@ render!(<Tui>|self: PianoHorizontal|{
field("Length:", length.to_string()), " ", field("Length:", length.to_string()), " ",
field("Loop:", looped.to_string()) field("Loop:", looped.to_string())
])), ])),
Inset::xy(0, 1, Fill::wh(Bsp::s( Padding::xy(0, 1, Fill::wh(Bsp::s(
Fixed::h(1, Bsp::e( Fixed::h(1, Bsp::e(
Fixed::w(self.keys_width, ""), Fixed::w(self.keys_width, ""),
Fill::w(timeline()), Fill::w(timeline()),

View file

@ -210,7 +210,7 @@ render!(<Tui>|self: PoolView<'a>|{
Tui::bg(bg, lay!(move|add|{ Tui::bg(bg, lay!(move|add|{
add(&Fill::wh(Outer(Style::default().fg(color.base.rgb).bg(bg))))?; add(&Fill::wh(Outer(Style::default().fg(color.base.rgb).bg(bg))))?;
//add(&Lozenge(Style::default().bg(border_bg).fg(border_color)))?; //add(&Lozenge(Style::default().bg(border_bg).fg(border_color)))?;
add(&Inset::xy(0, 1, Fill::wh(col!(move|add|match mode { add(&Padding::xy(0, 1, Fill::wh(col!(move|add|match mode {
Some(PoolMode::Import(_, ref file_picker)) => add(file_picker), Some(PoolMode::Import(_, ref file_picker)) => add(file_picker),
Some(PoolMode::Export(_, ref file_picker)) => add(file_picker), Some(PoolMode::Export(_, ref file_picker)) => add(file_picker),
_ => Ok(for (i, phrase) in phrases.iter().enumerate() { _ => Ok(for (i, phrase) in phrases.iter().enumerate() {

View file

@ -296,7 +296,7 @@ pub enum Pull<E: Engine, T: Render<E>> {
by_axis!(+Pull); by_axis!(+Pull);
/// Shrink from each side /// Shrink from each side
pub enum Inset<E: Engine, T> { pub enum Padding<E: Engine, T> {
/// Decrease width /// Decrease width
X(E::Unit, T), X(E::Unit, T),
/// Decrease height /// Decrease height
@ -305,10 +305,10 @@ pub enum Inset<E: Engine, T> {
XY(E::Unit, E::Unit, T), XY(E::Unit, E::Unit, T),
} }
by_axis!(+Inset); by_axis!(+Padding);
/// Grow on each side /// Grow on each side
pub enum Outset<E: Engine, T: Render<E>> { pub enum Margin<E: Engine, T: Render<E>> {
/// Increase width /// Increase width
X(E::Unit, T), X(E::Unit, T),
/// Increase height /// Increase height
@ -317,7 +317,7 @@ pub enum Outset<E: Engine, T: Render<E>> {
XY(E::Unit, E::Unit, T), XY(E::Unit, E::Unit, T),
} }
by_axis!(+Outset); by_axis!(+Margin);
/// A cardinal direction. /// A cardinal direction.
#[derive(Copy, Clone, PartialEq)] #[derive(Copy, Clone, PartialEq)]

View file

@ -74,7 +74,7 @@ impl<E: Engine, T: Render<E>> Render<E> for Pull<E, T> {
} }
} }
impl<E: Engine, T: Render<E>> Inset<E, T> { impl<E: Engine, T: Render<E>> Padding<E, T> {
pub fn inner (&self) -> &T { pub fn inner (&self) -> &T {
match self { match self {
Self::X(_, i) => i, Self::X(_, i) => i,
@ -84,7 +84,7 @@ impl<E: Engine, T: Render<E>> Inset<E, T> {
} }
} }
impl<E: Engine, T: Render<E>> Render<E> for Inset<E, T> { impl<E: Engine, T: Render<E>> Render<E> for Padding<E, T> {
fn render (&self, to: &mut E::Output) -> Usually<()> { fn render (&self, to: &mut E::Output) -> Usually<()> {
match self { match self {
Self::X(x, inner) => Push::x(*x, Shrink::x(*x, inner)), Self::X(x, inner) => Push::x(*x, Shrink::x(*x, inner)),
@ -95,7 +95,7 @@ impl<E: Engine, T: Render<E>> Render<E> for Inset<E, T> {
} }
impl<E: Engine, T: Render<E>> Outset<E, T> { impl<E: Engine, T: Render<E>> Margin<E, T> {
pub fn inner (&self) -> &T { pub fn inner (&self) -> &T {
match self { match self {
Self::X(_, i) => i, Self::X(_, i) => i,
@ -105,7 +105,7 @@ impl<E: Engine, T: Render<E>> Outset<E, T> {
} }
} }
impl<E: Engine, T: Render<E>> Render<E> for Outset<E, T> { impl<E: Engine, T: Render<E>> Render<E> for Margin<E, T> {
fn min_size (&self, to: E::Size) -> Perhaps<E::Size> { fn min_size (&self, to: E::Size) -> Perhaps<E::Size> {
match *self { match *self {
Self::X(x, ref inner) => Grow::x(x + x, inner), Self::X(x, ref inner) => Grow::x(x + x, inner),

View file

@ -50,10 +50,10 @@
//let engine = TestEngine(area, vec![vec![' ';10];10]); //let engine = TestEngine(area, vec![vec![' ';10];10]);
//let test = TestArea(4, 4); //let test = TestArea(4, 4);
//assert_eq!(test.layout(area)?, Some([0, 0, 4, 4])); //assert_eq!(test.layout(area)?, Some([0, 0, 4, 4]));
//assert_eq!(Outset::X(1, test).layout(area)?, Some([0, 0, 6, 4])); //assert_eq!(Margin::X(1, test).layout(area)?, Some([0, 0, 6, 4]));
//assert_eq!(Align::X(test).layout(area)?, Some([3, 0, 4, 4])); //assert_eq!(Align::X(test).layout(area)?, Some([3, 0, 4, 4]));
//assert_eq!(Align::X(Outset::X(1, test)).layout(area)?, Some([2, 0, 6, 4])); //assert_eq!(Align::X(Margin::X(1, test)).layout(area)?, Some([2, 0, 6, 4]));
//assert_eq!(Outset::X(1, Align::X(test)).layout(area)?, Some([2, 0, 6, 4])); //assert_eq!(Margin::X(1, Align::X(test)).layout(area)?, Some([2, 0, 6, 4]));
//Ok(()) //Ok(())
//} //}
@ -71,24 +71,24 @@
////})).layout(area)?, ////})).layout(area)?,
////Some([3, 1, 4, 8])); ////Some([3, 1, 4, 8]));
////assert_eq!(Align::Center(Stack::down(|add|{ ////assert_eq!(Align::Center(Stack::down(|add|{
////add(&Outset::XY(2, 2, test))?; ////add(&Margin::XY(2, 2, test))?;
////add(&test) ////add(&test)
////})).layout(area)?, ////})).layout(area)?,
////Some([2, 0, 6, 10])); ////Some([2, 0, 6, 10]));
////assert_eq!(Align::Center(Stack::down(|add|{ ////assert_eq!(Align::Center(Stack::down(|add|{
////add(&Outset::XY(2, 2, test))?; ////add(&Margin::XY(2, 2, test))?;
////add(&Inset::XY(2, 2, test)) ////add(&Padding::XY(2, 2, test))
////})).layout(area)?, ////})).layout(area)?,
////Some([2, 1, 6, 8])); ////Some([2, 1, 6, 8]));
////assert_eq!(Stack::down(|add|{ ////assert_eq!(Stack::down(|add|{
////add(&Outset::XY(2, 2, test))?; ////add(&Margin::XY(2, 2, test))?;
////add(&Inset::XY(2, 2, test)) ////add(&Padding::XY(2, 2, test))
////}).layout(area)?, ////}).layout(area)?,
////Some([0, 0, 6, 8])); ////Some([0, 0, 6, 8]));
////assert_eq!(Stack::right(|add|{ ////assert_eq!(Stack::right(|add|{
////add(&Stack::down(|add|{ ////add(&Stack::down(|add|{
////add(&Outset::XY(2, 2, test))?; ////add(&Margin::XY(2, 2, test))?;
////add(&Inset::XY(2, 2, test)) ////add(&Padding::XY(2, 2, test))
////}))?; ////}))?;
////add(&Align::Center(TestArea(2 ,2))) ////add(&Align::Center(TestArea(2 ,2)))
////}).layout(area)?, ////}).layout(area)?,
@ -110,19 +110,19 @@
////fn test_outset () -> Usually<()> { ////fn test_outset () -> Usually<()> {
////let area: [u16;4] = [50, 50, 100, 100]; ////let area: [u16;4] = [50, 50, 100, 100];
////let test = TestArea(3, 3); ////let test = TestArea(3, 3);
////assert_eq!(Outset::X(1, test).layout(area)?, Some([49, 50, 5, 3])); ////assert_eq!(Margin::X(1, test).layout(area)?, Some([49, 50, 5, 3]));
////assert_eq!(Outset::Y(1, test).layout(area)?, Some([50, 49, 3, 5])); ////assert_eq!(Margin::Y(1, test).layout(area)?, Some([50, 49, 3, 5]));
////assert_eq!(Outset::XY(1, 1, test).layout(area)?, Some([49, 49, 5, 5])); ////assert_eq!(Margin::XY(1, 1, test).layout(area)?, Some([49, 49, 5, 5]));
////Ok(()) ////Ok(())
////} ////}
////#[test] ////#[test]
////fn test_inset () -> Usually<()> { ////fn test_padding () -> Usually<()> {
////let area: [u16;4] = [50, 50, 100, 100]; ////let area: [u16;4] = [50, 50, 100, 100];
////let test = TestArea(3, 3); ////let test = TestArea(3, 3);
////assert_eq!(Inset::X(1, test).layout(area)?, Some([51, 50, 1, 3])); ////assert_eq!(Padding::X(1, test).layout(area)?, Some([51, 50, 1, 3]));
////assert_eq!(Inset::Y(1, test).layout(area)?, Some([50, 51, 3, 1])); ////assert_eq!(Padding::Y(1, test).layout(area)?, Some([50, 51, 3, 1]));
////assert_eq!(Inset::XY(1, 1, test).layout(area)?, Some([51, 51, 1, 1])); ////assert_eq!(Padding::XY(1, 1, test).layout(area)?, Some([51, 51, 1, 1]));
////Ok(()) ////Ok(())
////} ////}
@ -145,35 +145,35 @@
////}).layout(area)?, ////}).layout(area)?,
////Some([0, 0, 5, 2])); ////Some([0, 0, 5, 2]));
////let area: [u16;4] = [1, 1, 100, 100]; ////let area: [u16;4] = [1, 1, 100, 100];
////assert_eq!(Outset::X(1, Stack::right(|add|{add(&"1")?;add(&"333")})).layout(area)?, ////assert_eq!(Margin::X(1, Stack::right(|add|{add(&"1")?;add(&"333")})).layout(area)?,
////Some([0, 1, 6, 1])); ////Some([0, 1, 6, 1]));
////assert_eq!(Outset::Y(1, Stack::right(|add|{add(&"1")?;add(&"333")})).layout(area)?, ////assert_eq!(Margin::Y(1, Stack::right(|add|{add(&"1")?;add(&"333")})).layout(area)?,
////Some([1, 0, 4, 3])); ////Some([1, 0, 4, 3]));
////assert_eq!(Outset::XY(1, 1, Stack::right(|add|{add(&"1")?;add(&"333")})).layout(area)?, ////assert_eq!(Margin::XY(1, 1, Stack::right(|add|{add(&"1")?;add(&"333")})).layout(area)?,
////Some([0, 0, 6, 3])); ////Some([0, 0, 6, 3]));
////assert_eq!(Stack::down(|add|{ ////assert_eq!(Stack::down(|add|{
////add(&Outset::XY(1, 1, "1"))?; ////add(&Margin::XY(1, 1, "1"))?;
////add(&Outset::XY(1, 1, "333")) ////add(&Margin::XY(1, 1, "333"))
////}).layout(area)?, ////}).layout(area)?,
////Some([1, 1, 5, 6])); ////Some([1, 1, 5, 6]));
////let area: [u16;4] = [1, 1, 95, 100]; ////let area: [u16;4] = [1, 1, 95, 100];
////assert_eq!(Align::Center(Stack::down(|add|{ ////assert_eq!(Align::Center(Stack::down(|add|{
////add(&Outset::XY(1, 1, "1"))?; ////add(&Margin::XY(1, 1, "1"))?;
////add(&Outset::XY(1, 1, "333")) ////add(&Margin::XY(1, 1, "333"))
////})).layout(area)?, ////})).layout(area)?,
////Some([46, 48, 5, 6])); ////Some([46, 48, 5, 6]));
////assert_eq!(Align::Center(Stack::down(|add|{ ////assert_eq!(Align::Center(Stack::down(|add|{
////add(&Layers::new(|add|{ ////add(&Layers::new(|add|{
//////add(&Outset::XY(1, 1, Background(Color::Rgb(0,128,0))))?; //////add(&Margin::XY(1, 1, Background(Color::Rgb(0,128,0))))?;
////add(&Outset::XY(1, 1, "1"))?; ////add(&Margin::XY(1, 1, "1"))?;
////add(&Outset::XY(1, 1, "333"))?; ////add(&Margin::XY(1, 1, "333"))?;
//////add(&Background(Color::Rgb(0,128,0)))?; //////add(&Background(Color::Rgb(0,128,0)))?;
////Ok(()) ////Ok(())
////}))?; ////}))?;
////add(&Layers::new(|add|{ ////add(&Layers::new(|add|{
//////add(&Outset::XY(1, 1, Background(Color::Rgb(0,0,128))))?; //////add(&Margin::XY(1, 1, Background(Color::Rgb(0,0,128))))?;
////add(&Outset::XY(1, 1, "555"))?; ////add(&Margin::XY(1, 1, "555"))?;
////add(&Outset::XY(1, 1, "777777"))?; ////add(&Margin::XY(1, 1, "777777"))?;
//////add(&Background(Color::Rgb(0,0,128)))?; //////add(&Background(Color::Rgb(0,0,128)))?;
////Ok(()) ////Ok(())
////})) ////}))

View file

@ -356,19 +356,19 @@ fn to_seek_command (input: &TuiInput) -> Option<TransportCommand> {
//Field("MSU ", format!("00m00s00u")) //Field("MSU ", format!("00m00s00u"))
//), //),
//), //),
//selected.wrap(TransportFocus::Bpm, &Outset::X(1u16, { //selected.wrap(TransportFocus::Bpm, &Margin::X(1u16, {
//row! { //row! {
//"BPM ", //"BPM ",
//format!("{}.{:03}", *bpm as usize, (bpm * 1000.0) % 1000.0) //format!("{}.{:03}", *bpm as usize, (bpm * 1000.0) % 1000.0)
//} //}
//})), //})),
//selected.wrap(TransportFocus::Sync, &Outset::X(1u16, row! { //selected.wrap(TransportFocus::Sync, &Margin::X(1u16, row! {
//"SYNC ", pulses_to_name(*sync as usize) //"SYNC ", pulses_to_name(*sync as usize)
//})), //})),
//selected.wrap(TransportFocus::Quant, &Outset::X(1u16, row! { //selected.wrap(TransportFocus::Quant, &Margin::X(1u16, row! {
//"QUANT ", pulses_to_name(*quant as usize) //"QUANT ", pulses_to_name(*quant as usize)
//})), //})),
//selected.wrap(TransportFocus::Clock, &{ //selected.wrap(TransportFocus::Clock, &{
//row!("B" , beat.as_str(), " T", msu.as_str()).outset_x(1) //row!("B" , beat.as_str(), " T", msu.as_str()).margin_x(1)
//}).align_e().fill_x(), //}).align_e().fill_x(),
//).fill_x().bg(Color::Rgb(40, 50, 30)) //).fill_x().bg(Color::Rgb(40, 50, 30))

View file

@ -3,7 +3,7 @@ use crate::*;
pub struct Bordered<S: BorderStyle, W: Render<Tui>>(pub S, pub W); pub struct Bordered<S: BorderStyle, W: Render<Tui>>(pub S, pub W);
render!(<Tui>|self: Bordered<S: BorderStyle, W: Render<Tui>>|{ render!(<Tui>|self: Bordered<S: BorderStyle, W: Render<Tui>>|{
Fill::wh(lay!([Border(self.0), Inset::xy(1, 1, widget(&self.1))])) Fill::wh(lay!([Border(self.0), Padding::xy(1, 1, widget(&self.1))]))
}); });
pub struct Border<S: BorderStyle>(pub S); pub struct Border<S: BorderStyle>(pub S);

View file

@ -91,6 +91,6 @@ impl Render<Tui> for Styled<&str> {
//impl<S: BorderStyle, W: Render<Tui>> Content<Tui> for Bordered<S, W> { //impl<S: BorderStyle, W: Render<Tui>> Content<Tui> for Bordered<S, W> {
//fn content (&self) -> impl Render<Tui> { //fn content (&self) -> impl Render<Tui> {
//let content: &dyn Render<Tui> = &self.1; //let content: &dyn Render<Tui> = &self.1;
//lay! { content.inset_xy(1, 1), Border(self.0) }.fill_xy() //lay! { content.padding_xy(1, 1), Border(self.0) }.fill_xy()
//} //}
//} //}