mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 04:06:45 +01:00
29 lines
645 B
Rust
29 lines
645 B
Rust
use crate::*;
|
|
|
|
pub struct Layered<'a>(Collection<'a>);
|
|
|
|
impl<'a> Layered<'a> {
|
|
pub fn new () -> Self {
|
|
Self(Collection::new())
|
|
}
|
|
}
|
|
|
|
impl<'a> Render for Layered<'a> {
|
|
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
|
|
for layer in self.0.0.iter() {
|
|
layer.render(buf, area)?;
|
|
}
|
|
Ok(area)
|
|
}
|
|
}
|
|
|
|
impl<'a> Collect<'a> for Layered<'a> {
|
|
fn add_box (mut self, item: Box<dyn Render + 'a>) -> Self {
|
|
self.0 = self.0.add_box(item);
|
|
self
|
|
}
|
|
fn add_ref (mut self, item: &'a dyn Render) -> Self {
|
|
self.0 = self.0.add_ref(item);
|
|
self
|
|
}
|
|
}
|