From c68562178881a768b6fd10bcbf026ca023a21c22 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Tue, 17 Dec 2024 11:59:22 +0100 Subject: [PATCH] implement Bsp::N --- crates/tek/src/layout/bsp.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/tek/src/layout/bsp.rs b/crates/tek/src/layout/bsp.rs index af3ac295..a8bffc3d 100644 --- a/crates/tek/src/layout/bsp.rs +++ b/crates/tek/src/layout/bsp.rs @@ -52,6 +52,11 @@ impl, Y: Render> Render for Bsp { let b = b.min_size(to)?.unwrap_or([0.into(), 0.into()].into()); [a.w() + b.w(), a.h().max(b.h())].into() }, + Self::N(a, b) => { + let a = a.min_size(to)?.unwrap_or([0.into(), 0.into()].into()); + let b = b.min_size(to)?.unwrap_or([0.into(), 0.into()].into()); + [a.w().max(b.w()), a.h() + b.h()].into() + }, _ => todo!() })) } @@ -85,6 +90,15 @@ impl, Y: Render> Render for Bsp { to.render_in(to.area().push_x(s_x).into(), a)?; to.render_in(to.area().shrink_x(s_x).into(), b)?; }, + Self::N(a, b) => { + let n = [0.into(), 0.into()].into(); + let s = to.area().wh().into(); + let s_a = a.min_size(s)?.unwrap_or(n); + let s_b = b.min_size(s)?.unwrap_or(n); + let s_y = (to.area().h() - s_a.h()).into(); + to.render_in(to.area().push_y(s_y).into(), a)?; + to.render_in(to.area().shrink_y(s_y).into(), b)?; + }, _ => todo!() }) }