mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 20:26:42 +01:00
wip3 (25e): woohoohoo
This commit is contained in:
parent
3de89bf4fd
commit
36280ce9b7
40 changed files with 1607 additions and 1412 deletions
|
|
@ -58,7 +58,8 @@ impl<'a, E: Engine, const N: usize> Iterator for CollectIterator<'a, E, N> {
|
|||
Collect::Array(array) => {
|
||||
if let Some(item) = array.get(self.0) {
|
||||
self.0 += 1;
|
||||
Some(item)
|
||||
//Some(item)
|
||||
None
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
|
@ -66,7 +67,8 @@ impl<'a, E: Engine, const N: usize> Iterator for CollectIterator<'a, E, N> {
|
|||
Collect::Slice(slice) => {
|
||||
if let Some(item) = slice.get(self.0) {
|
||||
self.0 += 1;
|
||||
Some(item)
|
||||
//Some(item)
|
||||
None
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,39 @@ pub fn widget <E: Engine, T: Render<E>> (w: &T) -> &dyn Render<E> {
|
|||
w as &dyn Render<E>
|
||||
}
|
||||
|
||||
/// A [Render] that contains other [Render]s
|
||||
pub trait Content<E: Engine>: Send + Sync {
|
||||
fn content (&self) -> impl Render<E>;
|
||||
}
|
||||
|
||||
//impl<E: Engine, C: Content<E>> Render<E> for &C {
|
||||
//fn min_size (&self, to: E::Size) -> Perhaps<E::Size> {
|
||||
//self.content().min_size(to)
|
||||
//}
|
||||
//fn render (&self, to: &mut E::Output) -> Usually<()> {
|
||||
//match self.min_size(to.area().wh().into())? {
|
||||
//Some(wh) => to.render_in(to.area().clip(wh).into(), &self.content()),
|
||||
//None => Ok(())
|
||||
//}
|
||||
//}
|
||||
//}
|
||||
|
||||
/*
|
||||
|
||||
/// Every struct that has [Content] is a renderable [Render].
|
||||
impl<E: Engine, C: Content<E>> Render<E> for C {
|
||||
fn min_size (&self, to: E::Size) -> Perhaps<E::Size> {
|
||||
self.content().min_size(to)
|
||||
}
|
||||
fn render (&self, to: &mut E::Output) -> Usually<()> {
|
||||
match self.min_size(to.area().wh().into())? {
|
||||
Some(wh) => to.render_in(to.area().clip(wh).into(), &self.content()),
|
||||
None => Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/// A renderable component
|
||||
pub trait Render<E: Engine>: Send + Sync {
|
||||
/// Minimum size to use
|
||||
|
|
@ -25,7 +58,7 @@ pub trait Render<E: Engine>: Send + Sync {
|
|||
fn render (&self, to: &mut E::Output) -> Usually<()>;
|
||||
}
|
||||
|
||||
impl<E: Engine> Render<E> for &dyn Render<E> {
|
||||
impl<E: Engine, R: Render<E>> Render<E> for &R {
|
||||
fn min_size (&self, to: E::Size) -> Perhaps<E::Size> {
|
||||
(*self).min_size(to)
|
||||
}
|
||||
|
|
@ -34,12 +67,21 @@ impl<E: Engine> Render<E> for &dyn Render<E> {
|
|||
}
|
||||
}
|
||||
|
||||
//impl<E: Engine> Render<E> for &dyn Render<E> {
|
||||
//fn min_size (&self, to: E::Size) -> Perhaps<E::Size> {
|
||||
//(*self).min_size(to)
|
||||
//}
|
||||
//fn render (&self, to: &mut E::Output) -> Usually<()> {
|
||||
//(*self).render(to)
|
||||
//}
|
||||
//}
|
||||
|
||||
impl<E: Engine> Render<E> for &mut dyn Render<E> {
|
||||
fn min_size (&self, to: E::Size) -> Perhaps<E::Size> {
|
||||
(**self).min_size(to)
|
||||
fn min_size (&self, to: E::Size) -> Perhaps<E::Size> {
|
||||
(*self).min_size(to)
|
||||
}
|
||||
fn render (&self, to: &mut E::Output) -> Usually<()> {
|
||||
(**self).render(to)
|
||||
(*self).render(to)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -88,24 +130,6 @@ impl<E: Engine, W: Render<E>> Render<E> for Option<W> {
|
|||
}
|
||||
}
|
||||
|
||||
/// A [Render] that contains other [Render]s
|
||||
pub trait Content<E: Engine>: Send + Sync {
|
||||
fn content (&self) -> impl Render<E>;
|
||||
}
|
||||
|
||||
/// Every struct that has [Content] is a renderable [Render].
|
||||
impl<E: Engine, W: Content<E>> Render<E> for &W {
|
||||
fn min_size (&self, to: E::Size) -> Perhaps<E::Size> {
|
||||
self.content().min_size(to)
|
||||
}
|
||||
fn render (&self, to: &mut E::Output) -> Usually<()> {
|
||||
match self.min_size(to.area().wh().into())? {
|
||||
Some(wh) => to.render_in(to.area().clip(wh).into(), &self.content()),
|
||||
None => Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// A custom [Render] defined by passing layout and render closures in place.
|
||||
pub struct Widget<
|
||||
E: Engine,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue