mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 04:06:45 +01:00
thank rust for transpose and flatten
This commit is contained in:
parent
93ba611e33
commit
a52066f640
1 changed files with 35 additions and 25 deletions
|
|
@ -8,62 +8,72 @@ impl Rectangle<u16> for Rect {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R> Render<Tui> for Min<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
impl<R> Render<Tui> for Min<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
||||||
fn render (&self, engine: &mut Tui) -> Perhaps<Rect> {
|
fn render (&self, to: &mut Tui) -> Perhaps<Rect> {
|
||||||
self.layout(engine.area())?
|
self.layout(to.area())?
|
||||||
.map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h()))
|
.map(|area|to.with_area(area.x(), area.y(), area.w(), area.h()))
|
||||||
.map(|engine|engine.render(match self {
|
.map(|to|match self {
|
||||||
Self::W(_, inner) => inner,
|
Self::W(_, inner) => inner,
|
||||||
Self::H(_, inner) => inner,
|
Self::H(_, inner) => inner,
|
||||||
Self::WH(_, _, inner) => inner,
|
Self::WH(_, _, inner) => inner,
|
||||||
}))
|
}.render(to))
|
||||||
|
.transpose()
|
||||||
|
.map(|x|x.flatten())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R> Render<Tui> for Max<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
impl<R> Render<Tui> for Max<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
||||||
fn render (&self, engine: &mut Tui) -> Perhaps<Rect> {
|
fn render (&self, to: &mut Tui) -> Perhaps<Rect> {
|
||||||
self.layout(engine.area())?
|
self.layout(to.area())?
|
||||||
.map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h()))
|
.map(|area|to.with_area(area.x(), area.y(), area.w(), area.h()))
|
||||||
.map(|engine|engine.render(match self {
|
.map(|to|match self {
|
||||||
Self::W(_, inner) => inner,
|
Self::W(_, inner) => inner,
|
||||||
Self::H(_, inner) => inner,
|
Self::H(_, inner) => inner,
|
||||||
Self::WH(_, _, inner) => inner,
|
Self::WH(_, _, inner) => inner,
|
||||||
}))
|
}.render(to))
|
||||||
|
.transpose()
|
||||||
|
.map(|x|x.flatten())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R> Render<Tui> for Inset<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
impl<R> Render<Tui> for Inset<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
||||||
fn render (&self, engine: &mut Tui) -> Perhaps<Rect> {
|
fn render (&self, to: &mut Tui) -> Perhaps<Rect> {
|
||||||
self.layout(engine.area())?
|
self.layout(to.area())?
|
||||||
.map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h()))
|
.map(|area|to.with_area(area.x(), area.y(), area.w(), area.h()))
|
||||||
.map(|engine|engine.render(match self {
|
.map(|to|match self {
|
||||||
Self::W(_, inner) => inner,
|
Self::W(_, inner) => inner,
|
||||||
Self::H(_, inner) => inner,
|
Self::H(_, inner) => inner,
|
||||||
Self::WH(_, _, inner) => inner,
|
Self::WH(_, _, inner) => inner,
|
||||||
}))
|
}.render(to))
|
||||||
|
.transpose()
|
||||||
|
.map(|x|x.flatten())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R> Render<Tui> for Outset<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
impl<R> Render<Tui> for Outset<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
||||||
fn render (&self, engine: &mut Tui) -> Perhaps<Rect> {
|
fn render (&self, to: &mut Tui) -> Perhaps<Rect> {
|
||||||
self.layout(engine.area())?
|
self.layout(to.area())?
|
||||||
.map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h()))
|
.map(|area|to.with_area(area.x(), area.y(), area.w(), area.h()))
|
||||||
.map(|engine|engine.render(match self {
|
.map(|to|match self {
|
||||||
Self::W(_, inner) => inner,
|
Self::W(_, inner) => inner,
|
||||||
Self::H(_, inner) => inner,
|
Self::H(_, inner) => inner,
|
||||||
Self::WH(_, _, inner) => inner,
|
Self::WH(_, _, inner) => inner,
|
||||||
}))
|
}.render(to))
|
||||||
|
.transpose()
|
||||||
|
.map(|x|x.flatten())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R> Render<Tui> for Offset<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
impl<R> Render<Tui> for Offset<<Tui as Engine>::Unit, R> where R: Render<Tui> + Layout<Tui> {
|
||||||
fn render (&self, engine: &mut Tui) -> Perhaps<Rect> {
|
fn render (&self, to: &mut Tui) -> Perhaps<Rect> {
|
||||||
self.layout(engine.area())?
|
self.layout(to.area())?
|
||||||
.map(|area|engine.with_area(area.x(), area.y(), area.w(), area.h()))
|
.map(|area|to.with_area(area.x(), area.y(), area.w(), area.h()))
|
||||||
.map(|engine|engine.render(match self {
|
.map(|to|match self {
|
||||||
Self::X(_, inner) => inner,
|
Self::X(_, inner) => inner,
|
||||||
Self::Y(_, inner) => inner,
|
Self::Y(_, inner) => inner,
|
||||||
Self::XY(_, _, inner) => inner,
|
Self::XY(_, _, inner) => inner,
|
||||||
}))
|
}.render(to))
|
||||||
|
.transpose()
|
||||||
|
.map(|x|x.flatten())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue